はいぬっかメモ

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

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

f:id:hinzka:20200821075712p:plain

 

追記(2021/12/2)

調査の結果を反映して資料を作り直しました。GIFアニメーションつきで解説しています。

 

日本語版 

hinzka.hatenablog.com

 

 

English version

hinzka.hatenablog.com

 

 

 

スマホだと表示が崩れます!上記記事内のリンクからGoogleDocsのファイルをご利用ください

  シェイプ名      

1

browInnerUp

 

▶ARKit資料

f:id:hinzka:20211216061510g:plain

f:id:hinzka:20211216071202g:plain



眉の内側を上げる

眉尻は動かさない

困った眉

眉に関連するシェイプキーは全部で4種

 - browInnerUp

 - browDownLeft / browDownRight

 - browOuterUpLeft / browOuterUpRight

 - noseSneerLeft / noseSneerRight

 

目の表情に関するシェイプキーは全部で3種

 - eyeBlinkLeft / eyeBlinkRight

 - eyeSquintLeft / eyeSquintRight

 - eyeWideLeft / eyeWideRight

 

目のシェイプ3種だけでは目元の表情を十分にカバーできない

眉のや頬のシェイプキーに目元の動きも含めることでバリエーションを豊かにすることができる

 

眉の複数のシェイプを同時に動かしたとき、顔のメッシュに埋まらないように注意

 

 

 

browInnerUpでは眉尻の位置を維持する

browInnerUpとbrowOuterUpLeft/browOuterUpRightはそれぞれ100%で合成すると「自然に上がった眉(=びっくりした眉)」の形になる

f:id:hinzka:20211216073917g:plain

(browInnerUp+browOuterUp)

2

browDownLeft

 

▶ARKit資料

f:id:hinzka:20211216061422g:plain

f:id:hinzka:20211216071321g:plain

f:id:hinzka:20211216071354g:plain




左眉全体を下げる

訝しむ眉

 

browDownでは眉全体を傾斜しつつ下降させる

f:id:hinzka:20211216073930g:plain

(browDown+browInnerUp)

 

上まぶたをわずかに押し下げる

上まぶたの動きは、まばたきと重なったときに目が埋もれて消えない程度にする

3

browDownRight

 

▶ARKit資料

f:id:hinzka:20211216061526g:plain

f:id:hinzka:20211216061537g:plain




f:id:hinzka:20211216071406g:plain

f:id:hinzka:20211216071414g:plain




右眉全体を下げる

訝しむ眉

同上

4

browOuterUpLeft

 

▶ARKit資料

f:id:hinzka:20211216061555g:plain



f:id:hinzka:20211216071434g:plain

f:id:hinzka:20211216071442g:plain




左眉の外側を上げる

眉頭の位置は維持

 

browOuterUpでは眉頭の位置を維持する

上まぶたの目尻側をわずかに持ち上げる

 

 

browInnerUpとbrowOuterUpLeft/browOuterUpRightはそれぞれ100%で合成すると「自然に上がった眉(=びっくりした眉)」の形になる

f:id:hinzka:20211216073959g:plain

(browInnerUp+browOuterUp)

 

5

browOuterUpRight

 

▶ARKit資料

f:id:hinzka:20211216061907g:plain

f:id:hinzka:20211216061915g:plain




f:id:hinzka:20211216071454g:plain

f:id:hinzka:20211216071502g:plain




左眉の外側を上げる

眉頭の位置は維持

同上

6

eyeLookUpLeft

 

▶ARKit資料

f:id:hinzka:20211216061936g:plain


※眼球の動きはボーン制御です

f:id:hinzka:20211216071521g:plain

f:id:hinzka:20211216071531g:plain




左目の瞳を上に向ける

※ここでは参考のために眼球を動かしています。実際には眼球は動きません。

ボーン制御の眼球を持つモデルでは、シェイプキーに眼球の動きを入れてはいけません。

 

左の上まぶたの中央を見開く

下まぶたの中央を持ち上げる

 

頂点が中央よりになるほど変化量が大きくなるように、Surprised目のシェイプキーを合成

 

上瞼全体を一様に上げ下げするのではなく、中央部を重点的に動かすことで、眼球をみまわしたとき目元がなめらかに動く

 

f:id:hinzka:20211216074050g:plain



7

eyeLookUpRight

 

▶ARKit資料

f:id:hinzka:20211216061955g:plain

f:id:hinzka:20211216062003g:plain

※眼球の動きはボーン制御です

片目だと見た目が怖いので両目を動かしています

f:id:hinzka:20211216071543g:plain

f:id:hinzka:20211216071552g:plain




右目の瞳を上に向ける

※ここでは参考のために眼球を動かしています。実際には眼球は動きません。

 

右の上まぶたの中央を見開く

下まぶたの中央を持ち上げる

 

同上

8

eyeLookDownLeft

 

▶ARKit資料

f:id:hinzka:20211216062014g:plain


※眼球の動きはボーン制御です

片目だと見た目が怖いので両目を動かしています

f:id:hinzka:20211216071622g:plain

f:id:hinzka:20211216071631g:plain




左目の瞳を下に向ける

※ここでは参考のために眼球を動かしています。実際には眼球は動きません。

 

左の上まぶたの中央を下げる

下まぶたの中央を下げる

 

頂点が中央よりになるほど変化量が大きくなるように、Surprised目のシェイプキーを合成

 

中央部を重点的に動かすことで、眼球をみまわしたとき目元がなめらかに動く

9

eyeLookDownRight

 

▶ARKit資料

f:id:hinzka:20211216062026g:plain

f:id:hinzka:20211216062034g:plain

 

※眼球の動きはボーン制御です

片目だと見た目が怖いので両目を動かしています



f:id:hinzka:20211216071643g:plain

f:id:hinzka:20211216071652g:plain




右目の瞳を下に向ける

※ここでは参考のために眼球を動かしています。実際には眼球は動きません。

 

右の上まぶたの中央を下げる

下まぶたの中央を下げる

 

同上

10

eyeLookInLeft

 

▶ARKit資料

f:id:hinzka:20211216062157g:plain

 

※眼球の動きはボーン制御です

片目だと見た目が怖いので両目を動かしています

f:id:hinzka:20211216071705g:plain

f:id:hinzka:20211216071712g:plain




左目の瞳を内側に向ける

※ここでは参考のために眼球を動かしています。実際には眼球は動きません。

 

左の目頭部分を見開く

目の頂点の中央から目頭側だけを動かす

 

頂点が目頭よりになるほど変化量が大きくなるように、Surprised目のシェイプキーを合成

 

変化量に傾斜をつけることで、眼球をみまわしたとき目元がなめらかに動く

11

eyeLookInRight

 

▶ARKit資料

f:id:hinzka:20211216062220g:plain

f:id:hinzka:20211216062235g:plain

※眼球の動きはボーン制御です

片目だと見た目が怖いので両目を動かしています




f:id:hinzka:20211216071726g:plain

f:id:hinzka:20211216071734g:plain

右目の瞳を内側に向ける

※ここでは参考のために眼球を動かしています。実際には眼球は動きません。

 

右の目頭部分を見開く

目の頂点の中央から目頭側だけを動かす

 

同上

12

eyeLookOutLeft

 

▶ARKit資料

f:id:hinzka:20211216062310g:plain

 

※眼球の動きはボーン制御です

片目だと見た目が怖いので両目を動かしています

f:id:hinzka:20211216071806g:plain

f:id:hinzka:20211216071814g:plain




左目の瞳を外側に向ける

※ここでは参考のために眼球を動かしています。実際には眼球は動きません。

 

左の目尻部分を見開く

目の頂点の中央から目尻側だけを動かす

 

頂点が目尻よりになるほど変化量が大きくなるように、Surprised目のシェイプキーを合成

 

変化量に傾斜をつけることで、眼球をみまわしたとき目元がなめらかに動く

13

eyeLookOutRight

 

▶ARKit資料

f:id:hinzka:20211216062157g:plain

f:id:hinzka:20211216062321g:plain

※眼球の動きはボーン制御です

片目だと見た目が怖いので両目を動かしています



f:id:hinzka:20211216071827g:plain

f:id:hinzka:20211216071836g:plain



左目の瞳を外側に向ける

※ここでは参考のために眼球を動かしています。実際には眼球は動きません。

 

右の目尻部分を見開く

目の頂点の中央から目尻側だけを動かす

 

同上

14

eyeBlinkLeft

 

▶ARKit資料

f:id:hinzka:20211216062412g:plain



f:id:hinzka:20211216071902g:plain

f:id:hinzka:20211216071910g:plain




左目を閉じる

 

ラッキングの際、まぶたの下降に伴う瞳の遮蔽を、iPhoneセンサーが瞳の下回転として検知する

このため、まばたきと同時に瞳がバウンドするような動きになることがある

 

 

通常の閉じ目

 

ここに、まばたきではなく「Joy目閉じ」を設定しておくと、フェイストラッキングで簡単に笑い目閉じができる(通常の閉じ目はできなくなる)

 

ラッキングによるアニメーションでは、目が閉じかけても瞳の回転は継続するため、

モデルによってはまばたき時に瞳メッシュがはみ出す場合がある

閉じ目のシェイプに瞳のスケールを入れることで貫通対策ができる

15

eyeBlinkRight

 

▶ARKit資料

f:id:hinzka:20211216062424g:plain

f:id:hinzka:20211216062432g:plain




f:id:hinzka:20211216072144g:plain

f:id:hinzka:20211216072152g:plain




右目を閉じる

 

ラッキングの際、まぶたの下降に伴う瞳の遮蔽を、iPhoneセンサーが瞳の下回転として検知する

このため、まばたきと同時に瞳がバウンドするような動きになることがある

通常の閉じ目

 

同上

16

eyeSquintLeft

 

▶ARKit資料

f:id:hinzka:20211216062444g:plain



f:id:hinzka:20211216072219g:plain

f:id:hinzka:20211216072227g:plain




左目を笑顔にする

 

左の下まぶたを持ち上げて笑った目

 

ARKitのリファレンスでは瞳は閉じておらず、いわゆる『Joy目閉じ』ではないことに注意

閉じ目と合成されるため、単純にJoy目閉じを設定すると破綻する

 

フェイストラッキングのみで『Joy目閉じ』をつくるには

 ①「閉じ目」のシェイプ100%をマイナス

 ②「Joy目閉じ」のシェイプ100%をプラス

することで可能

 

 ただし、円弧状の「Joy目閉じ」はフィクションなので、通常の目から変形させると中間で不自然な表情になりがち

 フェイストラッキングではこの中間の表情が中心となるため相性がよくない。一瞬で切り替わるキー入力を採用したほうが無難

 

下まぶただけを押し上げると目の大きいキャラクターは顔の印象が変わってしまいがち(面長になる)

 

17

eyeSquintRight

 

▶ARKit資料

f:id:hinzka:20211216062524g:plain

f:id:hinzka:20211216062532g:plain




f:id:hinzka:20211216072239g:plain

f:id:hinzka:20211216072246g:plain




右目を笑顔にする

右の下まぶたを持ち上げて笑った目

 

同上

18

eyeWideLeft

 

▶ARKit資料

f:id:hinzka:20211216062541g:plain



f:id:hinzka:20211216072300g:plain

f:id:hinzka:20211216072316g:plain




左目を見開く

左目を見開く

 

瞳の大きなキャラクターの場合、まぶたを開いただけでは白目の見え方が十分でない場合がある

瞳を縮小して白目が適度に見えるように調整する

19

eyeWideRight

 

▶ARKit資料

f:id:hinzka:20211216062553g:plain

f:id:hinzka:20211216062602g:plain




f:id:hinzka:20211216072325g:plain

f:id:hinzka:20211216072333g:plain




右目を見開く

右目を見開く

 

同上

20

cheekPuff

 

▶ARKit資料

f:id:hinzka:20211216062616g:plain

f:id:hinzka:20211216062624g:plain




f:id:hinzka:20211216072348g:plain

f:id:hinzka:20211216072357g:plain




頬を膨らませる

頬を膨らませるシェイプキー

正面から見てもわかるようにふくらませるとよい

唇は少し前に出る。とがらせると可愛い

狭めすぎるとmouthPuckerと同時に動いたとき破綻するので注意

 

 

狙って発動しやすい表情

mouthPucker以外の他シェイプと混ざりにくいためキメ顔を工夫しやすい

21

cheekSquintLeft

 

▶ARKit資料

f:id:hinzka:20211216062635g:plain



f:id:hinzka:20211216072409g:plain

f:id:hinzka:20211216072416g:plain




左頬をもちあげる

 

左頬で笑顔を作る 頬の上昇に伴った動き

 

アニメ風モデルでは、頬全体を動かすより「口角」「下まぶた」などパーツを動かした表現のほうが破綻が少ない

 

横に伸ばすと笑ったときの口がのびのび広がる

このとき口角付近は伸ばさないほうが口の印象を維持できる

22

cheekSquintRight

 

▶ARKit資料

f:id:hinzka:20211216062647g:plain

f:id:hinzka:20211216062656g:plain




f:id:hinzka:20211216072430g:plain

f:id:hinzka:20211216072440g:plain




右頬をもちあげる

右頬で笑顔を作る 頬の上昇に伴った動き

 

同上

23

noseSneerLeft

 

▶ARKit資料

f:id:hinzka:20211216062709g:plain



f:id:hinzka:20211216072457g:plain

f:id:hinzka:20211216072505g:plain




左の鼻と眉をしかめる

 

眉を顔の中心にぎゅっと寄せる表情

鼻をしかめる動きに付随した動きとして左眉をしかめる

眉頭を下げて寄せる

眉全体の位置は維持

 

browDownと合成されるので下げすぎに注意

f:id:hinzka:20211216074126g:plain

(browDown+noseSneer)

24

noseSneerRight

 

▶ARKit資料

f:id:hinzka:20211216062722g:plain

f:id:hinzka:20211216062731g:plain




f:id:hinzka:20211216072516g:plain

f:id:hinzka:20211216072524g:plain




右の鼻と眉をしかめる

 

眉を顔の中心にぎゅっと寄せる表情

鼻をしかめる動きに付随した動きとして右眉をしかめる

 

同上

25

jawOpen

 

▶ARKit資料

f:id:hinzka:20211216062751g:plain

f:id:hinzka:20211216062803g:plain




f:id:hinzka:20211216072546g:plain

f:id:hinzka:20211216072554g:plain




口を開く

キャラクターの顔の印象を左右するシェイプキー

 

大きく口を開いた状態を設定する

この開きが小さいと口パクがあまり動かない

 

mouthCloseと対になり、双方100%のときに「顎を開けたまま口を閉じる」形になる。顎のみが動くことで咀嚼する動作となる

f:id:hinzka:20211216062824g:plain

(jawOpen+mouthClose)

 

 

 

基本的に、歯を動かすのは顎にかかわるシェイプキーのみ

・jawOpen

・jawForward

・jawLeft

・jawRight

 

・jawOpenとmouthUpperUp/mouthLowerDownを合わせたシェイプが、縦方向の口の開きの最大値

・jawOpenとmouthDimple、mouthStretchなどをそれぞれ合わせたシェイプが、横方向の口の開きの最大値

26

jawForward

 

▶ARKit資料

f:id:hinzka:20211216062955g:plain

f:id:hinzka:20211216063003g:plain




f:id:hinzka:20211216072607g:plain

f:id:hinzka:20211216072615g:plain




顎を前に動かす

 

下顎全体が前に動く

顎と舌・下顎の歯を同時に動かす

27

jawLeft

 

▶ARKit資料

f:id:hinzka:20211216063017g:plain



f:id:hinzka:20211216072627g:plain

f:id:hinzka:20211216072635g:plain




顎を左に動かす

 

下顎全体が左に動く

顎と舌・下顎の歯を同時に動かす

 

通常あまり動くことがなく、意識的にコントロールしやすい動きのため、特定の表情を意図的に発動させることも可能

28

jawRight

 

▶ARKit資料

f:id:hinzka:20211216063058g:plain



f:id:hinzka:20211216072649g:plain

f:id:hinzka:20211216072659g:plain




顎を右に動かす

 

下顎全体が右に動く

顎と舌・下顎の歯を同時に動かす

 

同上

29

mouthFunnel

 

▶ARKit資料

f:id:hinzka:20211216063123g:plain

f:id:hinzka:20211216064351g:plain




f:id:hinzka:20211216072719g:plain

f:id:hinzka:20211216072731g:plain




ウの口

唇をとがらせてわずかに開き、閉じた歯を見せる

唇をつきだしてじょうごのように広げる形

サシスセソの歯を見せる表情を構成する

 

歯は一切動かさない

★キャラクター表現として、歯を極力見せたくない場合はこのシェイプキーに歯を隠す動きを追加

 

口角を狭めて鋭角にすると口元に力が入っている雰囲気が出る

唇をめくりあげて突き出す

 

舌先を少し持ち上げる(人がこの口の形をつくるとき舌先が縮まるため)

 

歯が埋まらないよう口内のメッシュを調整する

30

mouthPucker

 

▶ARKit資料

f:id:hinzka:20211216064415g:plain

f:id:hinzka:20211216064424g:plain




f:id:hinzka:20211216072746g:plain

f:id:hinzka:20211216072754g:plain




唇の横幅を狭める

唇の横幅を狭める

狭めた分、くちびるがふっくらして前に出る

mouthFunnelとの合成でキスの口になる

f:id:hinzka:20211216074153g:plain

(mouthFunnel+mouthPucker)

 

jawOpenと合成したとき、口を細めた形状が縦に細長くなりすぎないよう注意

 

唇と同時に舌を狭める(口角の貫通対策)

 

 

31

mouthLeft

 

▶ARKit資料

f:id:hinzka:20211216064436g:plain

 

 

f:id:hinzka:20211216072812g:plain

f:id:hinzka:20211216072820g:plain




口角ではなく、口全体を左に寄せる

口全体を左上に寄せる

歯は一切動かさない

 

舌のみを口に追従して回転させることで自然に舌を動かすことができる

f:id:hinzka:20211216074308g:plain

(tongueOut+mouthLeft)

32

mouthRight

 

▶ARKit資料

f:id:hinzka:20211216064449g:plain

f:id:hinzka:20211216064637g:plain

f:id:hinzka:20211216072835g:plain

f:id:hinzka:20211216072843g:plain




口角ではなく、口全体を右に寄せる

口全体を右上に寄せる

歯は一切動かさない

舌のみを口に追従して回転させることで自然に舌を動かすことができる

 

 

33

mouthRollUpper

 

▶ARKit資料

f:id:hinzka:20211216064723g:plain

f:id:hinzka:20211216064733g:plain




f:id:hinzka:20211216072910g:plain

f:id:hinzka:20211216072919g:plain




上唇を噛む

 

特にトゥーン調のモデルではテクスチャが埋まると口自体が消えてしまう

上唇のエッジが見えている状態を維持しつつ唇を噛む形状をつくる

 

mouthRollLowerとセットで動作し、口元のもぐもぐした表情をつくる

実際に動くときはjawOpenが少し混ざるため、作成したシェイプよりは浅い動きになる

f:id:hinzka:20211216074345g:plain

(mouthRollUpper+mouthRollLower)

34

mouthRollLower

 

▶ARKit資料

 

f:id:hinzka:20211216064830g:plain

f:id:hinzka:20211216064838g:plain




f:id:hinzka:20211216072935g:plain

f:id:hinzka:20211216072945g:plain




下唇を噛む

同上

35

mouthShrugUpper

 

▶ARKit資料

f:id:hinzka:20211216064901g:plain



f:id:hinzka:20211216073010g:plain

f:id:hinzka:20211216073018g:plain




上唇をぎゅっと持ち上げる

上唇を持ち上げるシェイプ

mouthShrugLowerとセットで動作し、口元をしかめて閉じた「への字の口」を作る

 

さらにmouthPressと同時に動くと口元をぎゅっと引き結ぶ表情になる

f:id:hinzka:20211216064943g:plain



(mouthShrug+mouthPress)

 

口角を引き下げる動きは、上唇・下唇に均等に分けると口角がガタつくため、上唇・下唇のどちらかにまとめて入れること

36

mouthShrugLower

 

▶ARKit資料

f:id:hinzka:20211216064924g:plain



f:id:hinzka:20211216073034g:plain

f:id:hinzka:20211216073042g:plain




下唇をぎゅっと持ち上げる

下唇を持ち上げるシェイプ

mouthShrugUpperとセットで動作し、口元をしかめてへの字を作る

37

mouthClose

 

▶ARKit資料

f:id:hinzka:20211216065006g:plain



 

f:id:hinzka:20211216073110g:plain

f:id:hinzka:20211216073119g:plain




顎を開いたまま口を閉じる

ラッキング上でこのシェイプが単体で動作することはない

 

口を閉じたまま顎を開閉することで、咀嚼する顎の動きになる

f:id:hinzka:20211216073149g:plain



(jawOpen+mouthClose)

破綻したシェイプに見えますがモデルの異常ではありません

 

顎を開いたまま口を閉じる動作

jawOpenと対になり、双方100%のときに「顎は全開だが、口はぴったり閉じている」形になる

 

jawOpenの顔から、口の周りを選択して徐々に選択範囲を狭めながら口だけ閉じさせ、「顎が全開で口がぴったり閉じている」形に整える

この状態からさらにjawOpenをマイナスすることでmouthCloseのシェイプを作成できる

 

女性モデルは顎が伸びるとあまり可愛くないので、サンプルモデルFemaleでは顎の開きを控えめにしています

f:id:hinzka:20211216070459g:plain

f:id:hinzka:20211216070212g:plain

 

舌を出したとき下唇を貫通しないよう、舌先を上向きに移動

 

38

mouthSmileLeft

 

▶ARKit資料

f:id:hinzka:20211216070657g:plain



f:id:hinzka:20211216073216g:plain

f:id:hinzka:20211216073224g:plain




左の口角を上げる

 

 

左の口角を引き上げた笑顔の表情

笑ったときの口の形を構成する(口角を鋭角・鈍角にするなど)

jawOpenと合成したとき自然な笑顔の口になること

f:id:hinzka:20211216074435g:plain



(jawOpen+mouthSmile)

 

中央から単純に左右に分割すると不自然な動きになる

左右のシェイプを足して100%になるように変化量をグラデーションさせる

 

舌をやや下げる(人が強く舌を出すときは口角が上がるため)

f:id:hinzka:20211216074508g:plain



(tongueOut+mouthSmile)

 

口角が上がることにより口全体が上にずれ、キャラクターとしての顔の印象が変わってしまうことがある

適宜口全体を下げ、位置を維持するようにバランスをとる

 

歯は一切動かさない

★キャラクター表現として、歯を極力見せたくない場合はこのシェイプキーに歯を隠す動きを追加

39

mouthSmileRight

 

▶ARKit資料

f:id:hinzka:20211216070713g:plain



f:id:hinzka:20211216073236g:plain

f:id:hinzka:20211216073243g:plain




右の口角を上げる

右の口角を引き上げた笑顔の表情

 

歯は一切動かさない

★キャラクター表現として、歯を極力見せたくない場合はこのシェイプキーに歯を隠す動きを追加

 

同上

 

40

mouthFrownLeft

 

▶ARKit資料

f:id:hinzka:20211216070726g:plain



f:id:hinzka:20211216073259g:plain

f:id:hinzka:20211216073308g:plain




左の口角を下げる

主に口を閉じた状態で動作する

 

左の口角を引き下げた不快の表情

jawOpenと合成したとき自然な口の形状になること

f:id:hinzka:20211216074524g:plain



(jawOpen+mouthFrown)

41

mouthFrownRight

 

▶ARKit資料

f:id:hinzka:20211216070737g:plain



f:id:hinzka:20211216073320g:plain

f:id:hinzka:20211216073328g:plain




右の口角を下げる

主に口を閉じた状態で動作する

 

右の口角を引き下げた不快の表情

 

同上

42

mouthDimpleLeft

 

▶ARKit資料

f:id:hinzka:20211216070751g:plain



f:id:hinzka:20211216073347g:plain

f:id:hinzka:20211216073355g:plain




左の口角を後ろに引っ張る

開いた口をさらに大きく横に開く

左の口角を横に広げる

 

mouthSmileなどと合成した際に口角の形状を変えないためには、口角付近ではなく「唇の中央部分」を伸ばす

f:id:hinzka:20211216074546g:plain



(jawOpen+mouthDimple)

43

mouthDimpleRight

 

▶ARKit資料

f:id:hinzka:20211216070802g:plain



f:id:hinzka:20211216073407g:plain

f:id:hinzka:20211216073415g:plain




右の口角を後ろに引っ張る

開いた口をさらに大きく横に開く

右の口角を横に広げる

 

同上

44

mouthUpperUpLeft

 

▶ARKit資料

f:id:hinzka:20211216070827g:plain



f:id:hinzka:20211216073430g:plain

f:id:hinzka:20211216073438g:plain




左の上唇を持ち上げ、歯をむき出す

 

顎を動かさずにmouthFunnel(ウの口)の状態で歯をむき出し、口を横に広げたときに最も歯がよく見える

f:id:hinzka:20211216074608g:plain

(mouthFunnel+mouthUpperUp

+mouthLowerDown

+mouthDimple)

左の上唇を持ち上げる

歯は一切動かさない

 

下唇と比べて、人の上唇は口角部分がより大きく上がる

上唇全体が落花生のような形になる

 

中央から単純に左右に分割すると不自然な動きになる

左右のシェイプを足して100%になるように変化量をグラデーションさせる

 

jawOpenとmouthUpperUp/mouthLowerDownを合わせたシェイプが、縦方向の口の開きの最大値

 

 

 

45

mouthUpperUpRight

 

▶ARKit資料

f:id:hinzka:20211216070837g:plain



f:id:hinzka:20211216073450g:plain

f:id:hinzka:20211216073458g:plain




右の上唇を持ち上げ、歯をむき出す

右の上唇を持ち上げる

 

同上

46

mouthLowerDownLeft

 

▶ARKit資料

f:id:hinzka:20211216070856g:plain



f:id:hinzka:20211216073531g:plain

f:id:hinzka:20211216073539g:plain




左の下唇を引き下げ、歯をむき出す

 

左の下唇を引き下げる

歯は一切動かさない

 

上唇と比べて、人の下唇は中央部分がより大きく下がる

 

中央から単純に左右に分割すると不自然な動きになる

左右のシェイプを足して100%になるように変化量をグラデーションさせる

 

jawOpenとmouthUpperUp/mouthLowerDownを合わせたシェイプが、縦方向の口の開きの最大値

47

mouthLowerDownRight

 

▶ARKit資料

f:id:hinzka:20211216070906g:plain



f:id:hinzka:20211216073553g:plain

f:id:hinzka:20211216073604g:plain




右の下唇を引き下げ、歯をむき出す

右の下唇を引き下げる

 

同上

48

mouthPressLeft

 

▶ARKit資料

f:id:hinzka:20211216070918g:plain



f:id:hinzka:20211216073617g:plain

f:id:hinzka:20211216073626g:plain




口を閉じた状態で、左の口角をぎゅっと持ち上げる

 

アヒル口をつくると認識されやすい

左の口角を押し上げてつぶす

口をぎゅっとした時のみに動作するため、意識的にコントロールしやすい

猫口やアヒル口などのニュアンスを追加することができる

f:id:hinzka:20211216074637g:plain

(mouthShrug+mouthPress 猫口バージョン)

 

猫口は、左右対称でないと歪な口元になる

あらかじめ用意した猫口シェイプを左右のmouthPressに均等に追加することで左右対称にできる

49

mouthPressRight

 

▶ARKit資料

f:id:hinzka:20211216070927g:plain



f:id:hinzka:20211216073638g:plain

f:id:hinzka:20211216073646g:plain




口を閉じた状態で、右の口角をぎゅっと持ち上げる

 

アヒル口をつくると認識されやすい

左の口角を押し上げてつぶす

 

同上

50

mouthStretchLeft

 

▶ARKit資料

f:id:hinzka:20211216070939g:plain



f:id:hinzka:20211216073703g:plain

f:id:hinzka:20211216073712g:plain



左口角を下に引き下げる

mouthFrownに比べ、口が開いているときにより大きく動く

 

 

左口角を引き下げて口をさらに開く

 

口を大きく開けたとき、口角が上がってしまうのに対して口角を下げてバランスをとるような動き

 

閉じた状態で口角を下げて作ると綺麗な動きになりにくい

 

jawOpen100%のシェイプから理想的な形になるよう口角を引き下げ、そこからjawOpenを‐100%することで適切な動きになる

f:id:hinzka:20211216074700g:plain

(jawOpen+mouthStretch)

51

mouthStretchRight

 

▶ARKit資料

f:id:hinzka:20211216070950g:plain



f:id:hinzka:20211216073816g:plain

f:id:hinzka:20211216073835g:plain

右口角を下に引き下げる

mouthFrownに比べ、口が開いているときにより大きく動く

右口角を引き下げて口をさらに開く

 

同上

52

tongueOut

 

▶ARKit資料

f:id:hinzka:20211216071000g:plain



 

舌を出す

舌を唇からまっすぐに突き出す

 

口を開いたときに下方向に曲げる変形はjawOpenで行う

jawOpenと合成して舌が曲がったとき、アーチが下唇を越えられるように出幅を調整

 

 

 

 

 

 

以下はリサーチ経過の資料として残しています。

間違ってるところも多いのでそのうち整理します。

--------------------------------------------------------------

 

 
 
 
 
 
 
 
 
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リスト

項目名からAppleDeveloperCenterの各項目にリンクしています

リンク先に各シェイプの参考図があり、具体的な形状を確認できます

f:id:hinzka:20210525104049p:plain

 

 

 眉関連

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

左の口角を引き下げ への字の口をつくる
口を開いた状態のときより、口を閉じた状態のときに大きく動く
mouthShrugUpper(上唇をぎゅっと引き結ぶ形)
mouthShrugLower(下唇をぎゅっと引き結ぶ形)と同時に動くことが多い
JawOpen、またはmouthShrugUpper・mouthShrugLowerと合成したとき自然な「不機嫌そうな口」になること
 


mouthFrownRight

左の口角を引き下げ への字の口をつくる
口を開いた状態のときより、口を閉じた状態のときに大きく動く
mouthShrugUpper(上唇をぎゅっと引き結ぶ形)
mouthShrugLower(下唇をぎゅっと引き結ぶ形)と同時に動くことが多い
JawOpen、またはmouthShrugUpper・mouthShrugLowerと合成したとき自然な「不機嫌そうな口」になること
 
 

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ツール

Unityアセット
52個のBlendShapeClipを作成し、それぞれに同名BlendShapeを設定
 
HANA_App パーフェクトシンク化ボタン
Windowsアプリ
52個のBlendShapeClipを作成し、それぞれに同名BlendShapeを設定