はいぬっかメモ

キャラクターモデルをVR空間で眺めたい

iPhoneトラッキング向けBlendShapeリスト

f:id:hinzka:20200821075712p:plain

 
FaceID対応のBlendShapeリスト(Apple Developer Center)
 
 

モデリングソフトで52個の新規シェイプキーを追加します

一部のBlendShapeは、モデル標準のBlendShapeから形状をコピーして作ることができます(Blenderの場合 頂点メニュー「任意のシェイプキーを選択部に合成」)

 

おすすめ便利ツール

 

sort_shapekeys 

Appleが定義したBlendShape文字列で空シェイプキーを52個一括作成できるアドオン

一部のアプリ・ツールは、この文字列が異なると動作しません。入力ミスを防ぐためにも便利なツールです
github.com

 

iFacialMocap

Blenderアドオンを使うと、Blender上で顔をリアルタイムに動かしながらBlendShapeを作成することができます

iFacialMocap

www.ifacialmocap.com

 

 

 

 

 

iPhoneラッキング向けBlendShapeリスト

 眉関連

browInnerUp

 
眉の内側を中心として眉全体を持ち上げる 眉尻の位置はあまり動かさない
左右の眉頭をすこし離すとリラックス感が出る
 
他のすべての眉シェイプキーと関連して動くため、合成したときの形状に注意すること
 眉にかかわる他のシェイプキーは以下の3種
 browDown(Left・Right)
 browOuterUp(Left・Right)
 noseSneer(Left・Right)

browDownLeft

browDownRight

眉全体を下げる 眉尻側をやや下げる
 

browOuterUpLeft

browOuterUpRight

眉山を持ち上げる 眉頭の位置は動かさない
 
 
 

視線関連

ほとんどのVRMで、眼球そのものの動きはボーンにより制御されている
これらのBlendShapeの設定はなくてもよいが、ボーンの動きに伴って目元も変化させることでより自然な表情にできる
(動かしすぎると まばたき・笑い目と重なったとき破綻するので注意)
 
 

eyeLookUpLeft

eyeLookUpRight

例:上下のまぶたをわずかに上げる
 

eyeLookDownLeft

eyeLookDownRight

例:上まぶたをわずかに下げる
 

eyeLookInLeft

eyeLookInRight

例:目頭側をわずかに開く
 

eyeLookOutLeft

eyeLookOutRight

例:目尻側をわずかに開く
 
 

eyeBlinkLeft

eyeBlinkRight

まばたき 目を閉じる形
モデル標準の閉じ目をそのまま流用可能
 
 

eyeSquintLeft

eyeSquintRight

笑い目
モデル標準でよくある「完全に閉じた笑い目」だと、まばたきと重なったとき破綻する 閉じ方を弱める必要がある
キャラクターの個性によるが、下まぶたをしっかり持ち上げると印象的な笑い目になる
 

eyeWideLeft

eyeWideRight

びっくり目
モデル標準のびっくり目をそのまま流用可能
 

cheekPuff

ほっぺプクー 空気が漏れないよう唇を閉じ気味にする
正面から見たときも膨らみがわかるよう、下方向にも膨らませるのがおすすめ
左右の頬だけでなく、口の部分も前に出す(歯と唇の間に空気を入れるイメージ)とよりかわいい感じになる

 歯や舌を動かしてしまわないよう注意

 

cheekSquintLeft

cheekSquintRight

口角を吊り上げる、口を横に広げる
Smileの口に動きを追加し、より大きな笑顔をつくる
笑ったときの口の形を決定する(口角を鋭角・鈍角にするなど)

 

noseSneerLeft

noseSneerRight

鼻をしかめる 鼻自体は目立たないため動かすメリットは少ない
眉をぎゅっとしかめる動作として実装することができる 眉頭を下げ、眉を内側に寄せる(このとき眉全体の位置は変えないこと)
追加メッシュを使い、眉間にシワを追加するなどの演出も可能
 
ほかの眉シェイプキーと合成したときの形状に注意
特にbrowDown(Left・Right)と合成したときに眉が下がりすぎないこと
 

jawOpen

顎を開いた状態の唇の開き、歯と舌の位置を決定するシェイプキー
 
口を開いた状態の歯の位置はここで設定する(他のBlendShapeでは動かさないこと!)
本来、上あごの歯は頭蓋骨に固定されていて一切動かないのですが
3Dモデルのウソとして上あごの歯が上に上がります
 
歯は目立たないほうが可愛い印象になります 上の歯をより上に・下の歯をより下に動かし、唇の裏に隠すのがおすすめ
 
 
口回りのあらゆるシェイプキーと関わってきます
・mouthPucker:メインの口のフォルムを形成する
 合成したときに口が丸形・やや縦長 の形になること
・mouthClose:唇を閉じたまま顎をひらいたとき、あいてしまう口を閉じる
 合成したときに口が閉じること
 
 
VRoidのMTH_Aの舌は丸めて収納されており、TongeOutで舌を出したときに口を開くと舌が自然に曲がってくれる

 

jawForward

下顎・下の歯・舌を前に出す  上の歯は動きません

jawLeft

下顎・下の歯・舌を左に動かす  上の歯は動きません

舌だけ単独でさらに左に動かすと、じっさいに舌をうごかしたとき、自然にモデルの舌が動きます (人間は舌を横に動かすとき顎が動くため)

jawRight

下顎・下の歯・舌を右に動かす  上の歯は動きません

舌だけ単独でさらに右に動かすと、じっさいに舌をうごかしたとき、自然にモデルの舌が動きます(人間は舌を横に動かすとき顎が動くため)

 

mouthFunnel

唇を剥き出してじょうごのように広げる形
口がすこし開きます
歯は動かないので単体だと人を威嚇するような表情です
mouthPuckerと同時に動かすとキスの口になります
 

mouthPucker

口の横幅を小さくすぼめ、唇が突き出る形 「う」の口
jaw openとともにメインの口のフォルムを形成します
 
「任意のシェイプキーを選択部に合成」を使うときれいに作ることができます
 メッシュ全体を選択し、初期状態の顔にjawOpenの形状を+1で追加する
  ⇒唇の頂点を選択し、やや前方に出す
  ⇒唇の頂点を選択し、幅を縮めて縦長に整える
  ⇒唇の中央部分を選択し、プロポーショナル編集でX方向にやや拡大する
   (これをしないと下唇が下に尖って▽のような口になりがち)
  ⇒メッシュ全体を選択し、jawOpenの形状を-1で削除する
 

 

mouthLeft

左の口角を左上に持ち上げるように動かす

舌だけ単独でさらにXZ座標上で左に回転させると、じっさいに舌をうごかしたとき、自然にモデルの舌が動きます (人間は舌を横に突き出すとき口が動くため)

mouthRight

右の口角を右上に持ち上げるように動かす
 舌だけ単独でさらにXZ座標上で右に回転させると、じっさいに舌をうごかしたとき、自然にモデルの舌が動きます (人間は舌を横に突き出すとき口が動くため)
 

mouthRollUpper

上の歯に上唇をかぶせて丸め込む ものを口に含んでモグモグするときの形
 

mouthRollLower

下の歯に下唇をかぶせて丸めこむ ものを口に含んでモグモグするときの形
 

mouthShrugUpper

上唇をぎゅっと引き結ぶ形
mouthShrugLowerと同時に動かしてきれいに引き結ばれること
mouthFrownと同時に動いてへの字の口を形成する

mouthShrugLower

下唇をぎゅっと引き結ぶ形
mouthShrugUpperと同時に動かしてきれいに引き結ばれること
 mouthFrownと同時に動いてへの字の口を形成する

mouthClose

唇を閉じた状態でjawOpenで顎を開くと口がぽっかり空いてしまうため これを閉じるためのシェイプキー
逆に、jawOpenに対してmouthCloseが大きすぎると口が埋もれてしまう
jawOpenと同時に動かしたとき口がぴったり閉じること
 
「任意のシェイプキーを選択部に合成」で、jawOpenの形状を唇にマイナス値で適用
 

mouthSmileLeft

左の口角を引き上げて笑顔の口をつくる
笑ったときの口の形を決定する(口角を鋭角・鈍角にするなど)
jawOpenと合成したとき自然な笑顔の口になること
 舌だけ単独で下に動かすと(MTH_Aなど口を開けたときの舌を流用)、じっさいに舌を出したとき、自然にモデルの舌が下に伸びます(人間は舌を伸ばすとき口角があがるため)

mouthSmileRight

右の口角を引き上げて笑顔の口をつくる
笑ったときの口の形を決定する(口角を鋭角・鈍角にするなど)
jawOpenと合成したとき自然な笑顔の口になること
 舌だけ単独で下に動かすと(MTH_Aなど口を開けたときの舌を流用)、じっさいに舌を出したとき、自然にモデルの舌が下に伸びます(人間は舌を伸ばすとき口角があがるため)
 
 

mouthFrownLeft

左の口角を引き下げ への字の口をつくる
jawOpenと合成したとき自然な「不機嫌そうな口」になること
 


mouthFrownRight

左の口角を引き下げ への字の口をつくる
jawOpenと合成したとき自然な「不機嫌そうな口」になること
 
 

mouthDimpleLeft

左の口角を奥側に引っ張る(横顔で確認)
横側から見たときの口の表情を形成する

mouthDimpleRight

右の口角を奥側に引っ張る(横顔で確認)
横側から見たときの口の表情を形成する
 
 

mouthUpperUpLeft

mouthUpperUpRight

上唇を上に引き上げて上の歯を剥き出す
サシスセソの口がくっきりする 変顔もできる

 

作成時は上唇全体で作成し、最後に左右に分ける

このとき、顔の中央の頂点はそのままだと合成されて2倍のウエイトがかかってしまう

Basisのシェイプキーを0.5かけてウエイトを半分に減衰させること

 

mouthLowerDownLeft

mouthLowerDownRight

下唇を下に引き下げて下の歯を剥き出す
サシスセソの口がくっきりする 変顔もできる

 

作成時は下唇全体で作成し、最後に左右に分ける

このとき、顔の中央の頂点はそのままだと合成されて2倍のウエイトがかかってしまう

Basisのシェイプキーを0.5かけてウエイトを半分に減衰させること

 

 

mouthPressLeft

mouthPressRight

口角を押し上げてつぶす 口元の生々しい動きに寄与する
 

mouthStretchLeft

mouthStretchRight

口角を斜め下に引き下げつつ広げる
人間は口を開けていくと口角も上がるため、そのままだと笑顔の口になってしまう
上がった口角を下げて口を丸く整えるためのシェイプキー
これにより、口を大きく広げたときにのびのびと気持ちよく開くことができる
jawOpenと合成したときやや口角が下がること
 

 

tongueOut

舌を出す 根本の位置は変えずに標準状態の舌をまっすぐ伸ばし、閉じた口から見えるサイズに調整する
 
以下、試行錯誤してみて効果的だった追加動作 ほかにもあるかも
jawOpen 下に曲げつつ下げる(MTH_Aの舌)
jawLeft/jawRight 左右に移動
mouthLeft/mouthRight 左右に回転
mouthSmileLeft/mouthSmileRight 下に曲げつつ下げる(MTH_Aの舌を追加)
 
 
 

パーフェクトシンク対応モデルにするには?

BlendShapeを作成したあと、さらにUnityで
BlendShapeClipを52個作成する必要があります
手動でぽちぽち作るのは大変なので以下のツールがおすすめです
 

Hana_Tool ClipBuilderツール

52個のBlendShapeClipを作成し、それぞれに同名BlendShapeを設定(すべて100%)
 

UniVRMExtensions CopyVRMSettingsツール

既存のVRMモデルから、ClipとBlendShape数値をコピー
(コピー元のモデルが必要)