はいぬっかメモ

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

パーフェクトシンク対応モデルをつくろう! iPhone顔トラッキング用 52BlendShapes制作メモ

f:id:hinzka:20211202003921p:plain

 

English version

 

 

 

 

Apple ARKitに対応したブレンドシェイプ52個について、トラッキングのターゲットとなる現実側の表情、およびモデリング上の要点と思われる内容をまとめました。

 

f:id:hinzka:20211201134113g:plainf:id:hinzka:20211201143610g:plainクリックすると大きくなります

 

サンプルを試作する中で気づいた点や工夫したところを、52個すべてのシェイプについてGIFアニメーションを付記して解説しています。

 

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

f:id:hinzka:20211202013840p:plain

iPhoneトラッキング向けBlendShape資料 - Google ドキュメント

docs.google.com

 

ブレンドシェイプ一覧

  シェイプ名      

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:20211221211907g: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と合成して舌が曲がったとき、アーチが下唇を越えられるように出幅を調整

 

サンプルモデル

VRoid正式版VRMから作成したサンプルモデルの最新版は以下のGithubで公開しています。リリース欄の最新版をお使いください。

github.com

 

リアルな顔モデルはFaceCapのサンプルモデルです(許可を得てお借りしています)。こちらからダウンロードできるプロジェクトに同梱されています。

github.com

FaceCapiPhoneフェイストラッキングアプリで、アイドリッシュセブンYoutubeコンテンツ制作でも採用されています。パーフェクトシンク対応ではありませんが、パーフェクトシンク対応のBlendShapes52個を用意すればFaceCapでも動きます。顔のキャリブレーション機能により、表情があまり動かない人でも、ワンタップでモデルがくっきり動くようになります。

 

 

用語集

Apple ARKit

iPhoneiPadなどのiOS機器で利用できる開発キット。その一つとして高度なフェイストラッキング機能が提供されている。これを活用するためには、対応する52個のblendshapeを備えた3Dモデルが必要となる。

 

VRM

VRMコンソーシアムによって策定された、人型の3Dモデルのフォーマット。既存の表情ブレンドシェイプをClipで合成することで、新たな表情をユーザー自身で自由に追加できる。

 

パーフェクトシンク(通称)

iPhoneを使ったフェイストラッキングを、VRMの仕様と組み合わせて動かすしくみ。モデルに52個のClipを追加し、それらをARKitのトラッキングに対応した52種のシェイプとして扱う。表情Clipはユーザー自身で調整することができる。

hinzka.hatenablog.com