蒼水技術録

蒼水家技術録

蒼水が普段制作とか勉強とかして覚えたことを復習としてまとめてるものです。 それが最適解かどうかはわからないけど、何を目的として始めて、何が必要で、実際何をやって、どうなったか、まで全部過程を残すための技術ブログです。

Blender Tips編 #1 -シェイプキーの諸々覚書-

どうも蒼水です。
やっとこさ本職としてるものの記事となります。

初回のためあらかじめお伝えしておきますと、自分の書いていくBlenderの記事は中級者以降向けの記事となります。そしてあくまでも自分用メモ書きです。
基本的なことはすっとばします。
同じ道を今後たどる誰かの参考になれば~というものです。

今回はキャラクターの表情関係、つまるところシェイプキーに関するTipsみたいな内容になります。
元の表情はこんなかんじです
f:id:Yui_Aomi:20200209223518p:plain

今回の目的

「ベースをいじると一部シェイプキーが壊れる場合がある」現象。
これを回避(復元)する方法がまず一つ目。

「ベースを後から入れ替えたくなった」場合の対処方法。
これが二つ目。

今回は二つをピックアップして書いていこうと思います。

おまけとしてBlender2.8の色あいなんかおかしくない?な件。解決したのでそちらも。

なんてニッチな....。
あまり遭遇しないシチュな気がしますが、自分が遭遇したのでその覚書です。

そもそもシェイプキーとは

シェイプキーはMAYA/MAXなどでいうブレンドシェイプのことです。
Unityに持って行った際もBlendShapeとしてSkinedMeshRendererに含まれます。

これは簡単に言うと移動前の頂点座標と、移動後の頂点座標の二点を線形補完してパラメータによってその位置を制御することができる機能です。
キャラクターの表情でいえば、真顔から目を閉じた状態に遷移させたり、笑顔にしたり、といった具合に利用されます。

ベースをいじると一部シェイプキーが壊れる場合がある現象の対処

例えばこれは上がもとの目が小さくなるシェイプキー。
次にベースの目をもともと小さくする。
すると目が小さくなるシェイプキーはその影響を受けてさらに小さくなる。(壊れる)
みたいなことが起こります。

f:id:Yui_Aomi:20200209215441p:plain
こわれたシェイプキー

これの対処をしていきます。

任意のシェイプキーを選択部に合成

という機能がBlenderにはもともとあったりします。
これは、ベースを含む既存のシェイプキーの一部だけを現在編集中の頂点座標として適用させることができます。
これを使ってこの壊れた目のシェイプキーを直していきます。

f:id:Yui_Aomi:20200209225347p:plain
任意のシェイプキーを選択部に合成

1)適用したい頂点の未選択状態にする
2)上にある頂点メニューから「任意のシェイプキーを選択部に合成」を選択。
3)左下に出てくるプロパティの「追加」のチェックをはずす。
4)適用したい頂点座標のあるシェイプキーを選択。(完了)

f:id:Yui_Aomi:20200209222216p:plain
目の大きさがもとの大きさに戻っている

今回は解説用に用意したものなのでちょっとアレですが、これだけでこわれた頂点情報を復元可能です。
やってることは、別のシェイプキーから頂点座標をコピーしてくるだけです。
似たケースにだいたいこれで対応できます。

ほか、別のシェイプキーからコピペしてきたい、もできるわけです。
頂点一個一個動かすのはダルいので元はあのシェイプキーから持ってきてそこからいじりたい!とかもできる。
復元だけでなくやりようによっては結構使えるけど影の薄い機能.....。もっと使われてもいいと思うんだ....。

ベースを後から入れ替える

これ、実際やるとわかると思うんですがベース入れ替えると元になる頂点情報が変わってしまうので全体的にシェイプキーがぶっ壊れます。(ベースが変わったため変更された頂点座標情報がズレる)
ベースを変えること自体はいたって簡単で、ベースにしたいシェイプキーを作成、それを最上段(ベースと入れ替え)にしてやるだけです。
下記画像ではJito(ジト目)が最上段に来ており(Basisと入れ替えた)、デフォルトがジト目になっていることがわかるかと思います。

f:id:Yui_Aomi:20200209223219p:plain
JitoとBasisが入れ替わり、ジト目がデフォルトになっている。

それでここである問題は2点。
①全体的に壊れたシェイプキーの修正の必要性
②もとのベースをシェイプキーとして残したい

というパターン。
①に関していうとこれは前項の「任意のシェイプキーを選択部に合成」で対応が可能です。が、1個ずつやらないといけないのでちょっとめんどくさいです...。

②については、これちょっと面倒で元のベースのシェイプキーは2点の情報を持っているわけではないためか反応しなくなります。
これに関しても「任意のシェイプキーを選択部に合成」が活躍してくれて次の手順を踏むことで一つのシェイプキーとして持たせることが可能です。

1)新規でシェイプキーを追加する
2)本来のデフォルトであったBasisから新規シェイプキーに合成を行う。
f:id:Yui_Aomi:20200209224109p:plain
この過程を踏むことでBasisの頂点情報が、ベース変更後の頂点の差分として認識されきちんと動作してくれるようになります。
上画像でも値が1になっており、また表情ももとのデフォルト表情になっていることがわかるかと思います。

まとめ

「任意のシェイプキーを選択部に合成」は影は薄いけどいいぞ。

おまけ

Blender2.8になってからなんかUnlit時の色がおかしいなぁ...と思っていてシェーダーの方で色弄って対応してたんですがもっと簡単な方法があった....
プロパティにあるカラーマネジメントのビュー変換という項目。
これデフォルトだとFilmicというものになっているのでこれを標準にしてあげるだけだったみたいですね...。
f:id:Yui_Aomi:20200209224921p:plain