Unityとか備忘録サークル獏の佐藤敏がUnityとかで知ったTipsを書いておく備忘録です。2.0.5Test版を適用したものである。設定は割と単純で、眉毛貫通とかもしていない。github.comこれに、R1N4さんの顔のUVを参考にしつつ作ったOutline_Samplerを適用するとこんな感じになる。口元にあった変な線が消えた。ついでに顔の輪郭線も強弱ができた。(カラダは別マテリアルなのでそのまま)なんでそんなことをしたくなったか:後半ところがここに、自作のアレなBlendShapeを適用するとまた変な線がでてきてしまう。(口の下のところ)恐らく原因はBlenderでBlendShapeを作ったとき、ポリゴンの配置がヘンになってしまったからだ。モデリング技術がアレなのはどうにもならないし、トゥーン系の表現ならこの線さえ消えてくれればどうにか妥協できないこともない。ちなみにこの線、Outline由来なのは間違いない(Outline_Colorの色を変えるとそれに従って変わる)。Outline_Widthを0にしてもこのように残ってしまう。画像を見てもわかる通り、顔の他の輪郭線は消えたのに口の周りだけ線が残る。してみるそこで、「UCTS_Outline.cginc」をのぞいてみる(以前のバージョンでは「MyUCTS_Outline.cginc」だった模様)。試行錯誤した結果、以下のようにしたらうまくいった。(うまくいった結果を先に貼っておく)(以下の改造は自己責任でお願いします。)VertexOutputに、1つ値を追加する。};vert関数の後半をこのように変える。_OUTLINE_POSfrag関数の冒頭のこのように変える。//ここまでこれで、Set_Outline_Widthが0以下のときは頂点シェーダでdisableFlag.rに1が入る。フラグメントシェーダの冒頭でdisableFlag.rが1ならdiscardで表示が破棄される。(Set_Outline_Widthはアレコレ計算した結果の主線の太さらしい)(before→afterで再掲)その結果、↑のようにヘンな線が消えてくれる。綺麗な適切な書き方はないのかしかし色とナンの関係もないのにColorセマンティクスをムリヤリ加え、それをフラグとして使って値を放り込むというのは気持ちが悪い。if文はシェーダーを遅くする原因というのも聞いたことがある。frag関数のほうはともかく、vert関数までifを使っていいものかという疑問が残る。»プロフィールid:VinSatooサークル獏の佐藤敏がUnityとかで知ったTipsを書いておく備忘録です。月別アーカイブはてなブログをはじめよう!VinSatooさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。