バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事では、赤面テクスチャや赤面オブジェクトとかの、赤面させる方式について考察するよ。
あくまでも自己流で考えてみた感じだから、参考程度にね。
同じところを調べている人は参考にしてね。
- 赤面させるには色々な方式があるみたい。どれも一長一短かも?
- 赤面させる方式を思いつく限り挙げて考察
- 方式1:赤面テクスチャを貼ったFaceメッシュを複製してモデル内部に仕込んでおき、シェイプキーで前に出して赤面させる
- 方式2:Plane(平面の板)に赤面テクスチャを貼ってモデル内部に仕込んでおき、シェイプキーで前に出して赤面させる
- 方式3:↑のPlaneを左右の頬ごとに分けて、別々に動かして赤面させる
- 方式4:方式2と3を併用し、正面から見ても横から見ても赤面しているように見せる
- 方式5:頬の形状に沿った曲面状のオブジェクトを作って赤面テクスチャを貼っておき、モデル内部に仕込んでおいてシェイプキーで前に出す
- 方式6:赤面したり戻したり操作することは諦め、いっそ割り切って手動でテクスチャ切り替えて対応する
- 方式7:Unityでスクリプト書いて、キー入力などでマテリアルごと赤面後のテクスチャに切り替える
- やっぱり原始的でシンプルな方法が一番かな?具体的には方式2~4あたり
赤面させるには色々な方式があるみたい。どれも一長一短かも?
私はVRoid製で、blenderやunityで使ってるんだけど、MMDモデルでも形状はほぼ同じだから問題は同じかな。
一番簡単なのはテクスチャを変えることだけど、それだとずっとそのままで切り替えできないんだよね(-_-;)
unityならスクリプトでマテリアルを変えられるみたいだけど、あんまりスマートではないかも…。
こちらの紳士向けMMDerの頭のいい先輩がまとめてくれてるけど、赤面させるにはいくつか方式があるんだよね。

赤面させる方式を思いつく限り挙げて考察
方式1:赤面テクスチャを貼ったFaceメッシュを複製してモデル内部に仕込んでおき、シェイプキーで前に出して赤面させる
これはこれまで私がやってた方法。
顔のFaceメッシュを複製しておいて、顔の前面だけのマスクみたいなオブジェクトを作っておいて顔内部に仕込んでおき、シェイプキーで前に出すっていう。
これだと赤面したVRoidのFaceテクスチャを貼っておけば、前に出して僅かに浮かせることで赤面させられる。
通常なら結構いい感じに作用するし、眉あたりにまでかかる赤面も可能。
おお、結構いいじゃん!ともーじゃん?
しかし、目を閉じるブレンドシェイプを使うと破綻してしまいますΣ( ̄ロ ̄lll)ガーン
赤面部分をわずかに浮かせているだけなので、目の下が上がってくると赤面部分を貫通してしまうみたい(-_-;)
合わせて上に上げるシェイプキーも作ってみたんだけど、どうしても目の下あたりが不自然になっちゃってダメだった。
目さえ動かなければ問題ないんだけどね( ̄▽ ̄;)
やるなら頬の前に配置しないとダメかも。でもそれだと横やナナメから見た時に不自然になると思う。
あとはもしかしたら、Faceと赤面部分を結合して同一オブジェクトにして、目を閉じるシェイプキーの時は上手く破綻しないように位置調整するシェイプキーを作ればいけるかも?
調整がかなりめんどくさそうだけど……この方式は透過を使わなくて済むから、透過が使えないVRChatのモバイルシェーダーとかでも使えるかもしれない。
方式2:Plane(平面の板)に赤面テクスチャを貼ってモデル内部に仕込んでおき、シェイプキーで前に出して赤面させる
一番手軽だから、これでやってる人は多いかも。
私も最初はこれをやってたんだけど、これ前から見た時はいいんだけど、横から見ると宙に浮いているように見えてしまうんだよね( ̄▽ ̄;)
人間の顔ってカーブや起伏があるから、単純な平面だけだとどうしても不自然になっちゃうんだよね。
でも、ただのPlaneだからUV展開とかシーム分けとかもあまり気にする必要がなく、テクスチャ作成も簡単。故にテクスチャ改変も簡単。
前からしか見ないなら、これがシンプルで一番いいんだけどね…。
平面なので、真横から見たら何も見えません( ̄▽ ̄;)
方式3:↑のPlaneを左右の頬ごとに分けて、別々に動かして赤面させる
これは昨日思いついた( ̄▽ ̄;)
これ左右別々に動かす必要があるんだけど、角度調整も別々にできるから、調整次第で横から見ても違和感なくできる。
ただ、鼻の上を赤面させられないので、赤面レベル(笑)が低いのがデメリット。
鼻の上は起伏があるので、どう角度調整しても不自然になってしまった。
下の肌が赤面テクスチャを貫通してしまうと、やはり不自然になるね(;^_^A
でも単に赤面させたいだけならこれが一番原始的な方法で違和感がなく、モデルごとの調整もしやすいかもしれない。
方式4:方式2と3を併用し、正面から見ても横から見ても赤面しているように見せる
これそんなに簡単に行かないだろうと思ったんだけど、思いのほかいい感じ。
ちょっと浮いてるのが見えはするけどそこまででもないし、これでいいんじゃないかな?
これなら目が動いても問題ないね。
上から見ると正面のやつが浮いてるけど、左右二つのは許容範囲かな。というか多分調整次第で違和感なく行けると思う。
正面から見る時以外は、左右二つだけにしておいたほうがいいかも。
重なると不自然になったり、乗算されて暗くなったりしちゃうのかなと予想してたんだけど、MTOONのTransparentなら大丈夫だった。
前から思ってたけど、MTOONってかなり透過処理が優秀なのかも。
特に設定も必要なく、PNGの透過部分をそのまま反映してくれるね。
方式5:頬の形状に沿った曲面状のオブジェクトを作って赤面テクスチャを貼っておき、モデル内部に仕込んでおいてシェイプキーで前に出す
これ、やろうとしたけどblenderでカーブの微調整が難しそうだったからやってない( ̄▽ ̄;)
ただ、曲面状になるとUV展開した時に平面になっちゃって、何も考えずに赤面部分を作って適用すると、赤面部分に角度がついて微妙な感じになりそう。
Faceメッシュから頬~鼻の頭あたりだけ抽出してUV展開してやってみた時はそうなっちゃって、調整がめんどくさいから辞めた(;^_^A
でも上手くやれば、一番違和感なく自然にできるかもしれない。
作るのがめんどくさそうだからやらないけどね( ̄▽ ̄;)
方式6:赤面したり戻したり操作することは諦め、いっそ割り切って手動でテクスチャ切り替えて対応する
めんどくさいこと考えたくないならこれが一番楽。
Unityなら実行中に手動でテクスチャやマテリアル変更できると思うし。
3D分野なんて他にもやることが無限にあるので、赤面なんて割り切って簡単に済ませて、他にリソース割くのが賢いかもしれません( ̄▽ ̄;)
方式7:Unityでスクリプト書いて、キー入力などでマテリアルごと赤面後のテクスチャに切り替える
これもいいかもしれない。
VRoidだとFaceメッシュに複数のマテリアルが設定されてるけど、こちらの頭のいい先輩によると、複数のマテリアルも変更できるみたい。
ただ、わざわざスクリプトで切り替えるのもなぁ…。
私はできればブレンドシェイプで、アニメーションクリップで切り替えたいかな?
でもこの方式はやり方次第で、複数モデルの赤面管理がしやすくなるというメリットはあるかもしれない。
赤面オブジェクトを仕込む場合は、キャラによって座標に微妙なずれが生じて、アニメーションクリップを使いまわすと赤面がズレそうだし。
やっぱり原始的でシンプルな方法が一番かな?具体的には方式2~4あたり
つまりは赤面テクスチャを貼ったplaneをモデル内部に仕込んでおき、前に出す方式。
方式4みたいに併用する方式なら、横から見た時の見た目もある程度解決できる。
つまりは、
- 正面用の平面大1枚
- 横から見る用に左右小二枚
みたいな感じ。
一番違和感がないのが左右小二枚だけだけど、まぁ少し赤面させるだけなら左右小二枚だけで十分だね。
角度によって使い分けるといいかもしれません。
BOOTHにアップしたよ
とりあえず一枚作っておけばunityのtransformで簡単に拡大縮小できるから、一枚あればいいかな。
内部に出す用に前進、一応後退も、あとは位置微調整用の上下左右とかに移動するシェイプキーを作っておけば、大抵は対応できそう。
イイ感じに作れたら後でBOOTHにアップしておくよ。
ーーーーーーーーーーーー
追記:アップしました
