time: 00:15

初期設定

モデルデータのDL

今回はビタワンさんの社畜ちゃんを使います。
社畜ちゃん日記の下記のページ、「社畜ちゃんMMDモデルが完成しました!」項からDLします。
 http://syachiku-chan.com/?p=480
  →「(FBX)社畜ちゃん Ver1.0.zip」をDL

プロジェクト作成

下記のような感じで新規プロジェクトを作成
model_01.png

椅子や机は要らないので、消します。
model_02.png


time: 00:45

モデルの構築

  1. 「(FBX)社畜ちゃん Ver1.0.zip」を解凍した中にある、「Syachiku_chan.fbx」をコンテンツブラウザに投げ込んでインポートします。
    model_03.png
    ※「Import Morph Target」にもチェックを忘れないように
  2. インポート警告が出ますがスルー。
  3. とりあえずインポートしたまま。目のマテリアルが崩れてるくらいですね。
    model_04.png

time: 1:20

マテリアルの構築

  1. マテリアルインスタンスで構築していきます。その為のベースマテリアルを作成します。
  2. マテリアルを開いて、下記のように設定します。
    • 「シェーディングモデル」を「Unlit」に。
    • 「TextureSampleParameter2D」ノード作成し、「エミッシブカラー」に。(とりあえずテクスチャは適当)
      model_06.png
  3. 次にマテリアルインスタンスを作成していきます。
  4. マテリアルインスタンスを開いて、「一般」項の「Parent」欄に、(1)のベースマテリアルを指定。
  5. 「パラメータグループ」項に(2)の「TextureSampleParameter2D」の欄が出来るので、チェックを入れてテクスチャを指定します・
    model_07.png
  6. (3)〜(5)をとりあえずテクスチャ分作成します。(必要あれば後で分割する)
    model_08.png
  7. メッシュを開いて、読み込み時に付いていた「材質○」というマテリアルから、(6)で作成したマテリアルインスタンスに置き換えます。<br>
    model_09.png
エレメント名使用するテクスチャ
エレメント0Skin
エレメント1Clothes
エレメント2Face
エレメント3Face
エレメント4Face
エレメント5Face
エレメント6Face
エレメント7Face
エレメント8Hair1
エレメント9Hair2
エレメント10Eye
エレメント11Eye
エレメント12Face
エレメント13Face
エレメント14Facial

これでとりあえずUE4上のライティングを無効化できました。


time: 02:10

自前ライティング

  1. 次に自前でライティングを実装します。前項(1)のベースマテリアルを開いて、下記のように計算式を入れます。
  2. とりあえず下記のようになりました。このライティング計算をセルシェード用に弄っていきます。
    • ライティング結果が0.0〜1.0と線形になっているので、このままでは通常のシェーディングです。
    • (目のテクスチャが崩れているままだったので、モーフターゲットの「ハイライト無し」を1.0にしています)
      model_11.png
    1. 太もも辺りがパッキリしてるのが気になります。大抵法線が怪しいので、ビュー上部にある「表示」→「高度な設定」→「ノーマル」にチェックを入れて調べます。
      model_12.png
    2. ハードエッジになっています。(Blender的には「Flat」)法線が滑らかになっておらず、ライティングがパッキリなってしまいます。後で直します。要修正項目。
      model_13.png

time 02:40

リニアなライティング結果を2値に

  1. ライティングを弄ってセルシェードっぽくします。ベースマテリアルを開いて、ライティング計算の結果が0.0〜1.0のリニアな数値になっていたのを、2値化します。
    1. ランバート計算の後に、2値化するために「ValueStep」を入れます。
      • 「Value Step」ノードは、(Gradient + Mask Offet Value) < Number Before White Result なら1.0。でなければ0.0を返すノードです。
        今回は、(ランバート結果[0.0~1.0] + 0.5) < 1.0 なので、半分を1.0、もう半分を0.0にして線形な段階を消して2値化します。
  2. 意図とは結果が逆転しているので、「OneMinus」ノードで反転します。
  3. 影の色が真っ黒なのはセルシェードっぽくないので、「Max」ノードで0.3にします。
    model_14.png
  4. これで、光が当たっている所=1.0、光が当たっていない所0.3になりました。こんな感じの結果に。
    model_15.png

time: 04:40

色味の調整

ライティングは最低限は出来たので、色味を調整してみます。
ここは各担当者の調整力次第です。私はデザイン疎い系のプログラマーですのでそれなりに対応してみます。
今回はマテリアル内の計算でやりましたが、陰部分用のテクスチャを用意してもいいかもしれません。

  1. 先程までは陰を乗算で行っていたので、ただ単に暗くなるだけでした。
    • セルシェードでは暗くするだけでは良い感じになりません。明度だけじゃなくて彩度も弄ると良い、とイラスト界隈で小耳に挟んだりしましたので対応してみます。
    • また、社畜ちゃんTwitterスタンプ( http://syachiku-chan.com/ex/twitterstamp )のカラーイラストを見ると、陰が若干色相変わってるような気がするので、色相もいじれるようにします。
    • 色の濃さも違うようなのでガンマも弄れるようにしてみます。
    • という事で、個別にガンマ、明度、彩度、色相をマテリアル単位で弄れるようにします。
  2. ベースマテリアルを弄ります。前項の「ValueStep」〜「Multiply」辺りのノードを消します。
  3. 調整値は「ScalarParameter」ノードで配置します。「ScalarParameter」ノードにしておくと、マテリアルインスタンス側で値を弄れるようになります。(=マテリアルインスタンス単位で調整できる)
    • 「Power」ノードでガンマ補正
    • 「Multiply」ノードで明度(乗算)
    • 「Desaturation」ノードで彩度
    • 「HueShift」ノードで色相
      model_16.png
  4. 最後に「if」ノードで、光部分と陰部分の色味を分けて取得します。
    • 「A」にライティング結果
    • 「B」にライティング結果のどこから陰にするかの閾値
    • 「A >= B」に光部分の色
    • 「A < B」に陰部分の色
    • 一応、陰の閾値もパラメーター化しておきます。
      model_17.png
  5. ここまでをベースマテリアルに設定すると、マテリアルインスタンス側はこのような値が設定できるようになるハズです。
    model_18.png
  6. とりあえず下記な感じで調整しました。
    テクスチャ名Light PowerShadow DesaturationShadow Hue ShiftShadow PowerShadow ScaleShadow Threshold備考
    clothes1.20.01.01.20.30.5
    eye1.4-0.081.01.40.30.0目は陰要らないので、*Shadow Thresholdを0.0にして消す
    face1.8-0.50.951.80.30.5
    facial1.4-0.081.01.40.30.0陰要らないので、*Shadow Thresholdを0.0にして消す
    hair11.6-0.080.971.60.30.5
    hair21.6-0.080.971.60.30.5
    skin1.8-0.50.951.80.30.5
  7. 結果。前よりそれっぽくなったと思います。
    model_19.png

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS