MRが楽しい

MRやVRについて学習したことを書き残す

HoloLens特化のホロ恋子モデルを作成する その13(顔の調整とローポリゴン化)

本日はホロ恋子モデル2の作成枠です。
顔のモデリングが一通り完了したので、全体の調整と不要な頂点削除によるローポリゴン化を行います。
f:id:bluebirdofoz:20181212084421j:plain

顔の調整

額と頬について斜めから見たときの立体感が足りなく感じたので頂点位置を再調整しました。
額の前面を中心に、より顔の平面を意識した形にしています。
f:id:bluebirdofoz:20181212084435j:plain

今回のトポロジー修正に合わせて三面図の下絵も再修正しました。
特に横から見たときの眉のラインと位置が変化しているのが分かると思います。
f:id:bluebirdofoz:20181212090601j:plain
自身が話していた「顔の平面をより意識する」が眉にまで行き届いていませんでした。
細かい差異に見えますが、立体化したときにはこの違いで印象が大きく変わります。

修正後の三面図をアップしておきます。
・全体
f:id:bluebirdofoz:20181212090618j:plain
・顔
f:id:bluebirdofoz:20181212090639j:plain

ローポリゴン化

今回のホロ恋子モデルは更なるローポリゴン化を目指しているので、不要な頂点を頂点結合([Alt+M]キー)で削除していきます。
当然ながら、特にローポリゴン化を目指していない方はこの作業は不要です。

シェイプキーのために作成した頂点は削除せず、固定の頂点をなるべく形を損なわないよう減らしていきます。
以下の通り、頂点を結合してメッシュを削減しました。
f:id:bluebirdofoz:20181212090652j:plain

頂点結合を行うと四角形以上の面は大きく歪むことがあり、斜め方向から見ると面が凹んでいることがあります。
f:id:bluebirdofoz:20181212090706j:plain

こういった場合は面をカットして三角面とし、面の形を整える必要があります。
f:id:bluebirdofoz:20181212090719j:plain

歪み箇所を三角面に変更し、最終的なトポロジーは以下のようになりました。
顔のモデリングはこれで完了とします。
f:id:bluebirdofoz:20181212090729j:plain

HoloLens特化のホロ恋子モデルを作成する その12(顔の残りパーツのモデリング)

本日はホロ恋子モデル2の作成枠です。
今回は顔パーツで残る口内と眉のモデリングをまとめて行っていきます。
f:id:bluebirdofoz:20181211000325j:plain

口内のモデリング

口のモデリングに続けて、口内にもメッシュを張っておきます。
口内の作り込みを見易くするため、ミラーモディファイアを一旦非表示にしてモデルを断面で確認します。
「モディファイア」タブを開き、対象のパネルの目玉ボタンを押すと、表示/非表示が切り替えられます。
f:id:bluebirdofoz:20181211000334j:plain

唇部分を選択し、内側方向へ押し出し([E]キー)で口内のメッシュを生成します。
f:id:bluebirdofoz:20181211000345j:plain

後は面張り([F]キー)でメッシュを閉じれば口内のメッシュができました。
面を広げて口内の大きさに余裕を持たせます。
f:id:bluebirdofoz:20181211000357j:plain

歯のモデリング

ローポリモデルなら、ほとんど見えない口内はこのくらいのモデリングで十分です。
更に言えば口内は1つの頂点でまとめてしまってもいいかもしれません。
しかしシェイプキーで多様な表情を見せたい場合、どうしても歯を見せる表現が必要になります。

今回のモデルはなるべく表情豊かにしたいので口内の上下でカットを行い、面を1つ追加しました。
f:id:bluebirdofoz:20181211000408j:plain

この面に白いテクスチャを描き込み、シェイプキーで面を動かすことで歯を表現します。
f:id:bluebirdofoz:20181211000421j:plain

ローポリゴンで最大限の効果を考えた苦肉の策なのでポリゴン数に余裕がある場合は口内もしっかりモデリングした方が良いです。
歯の見せ隠しができるトポロジーを組んだ方が表情を豊かにできます。

眉のモデリング

今回のホロ恋子モデルは眉もテクスチャとして書き込みます。
現状のままシェイプキーで眉を動かしてしまうと、テクスチャが伸びてしまうので睫毛と同様に固定する面を作ります。
f:id:bluebirdofoz:20181211000432j:plain

眉は特に「鼻根筋」と「眉毛下制筋」という筋肉の動きによって大きく変化します。
f:id:bluebirdofoz:20181211000441j:plain

眉の変形が顕著なのが哀しみの表情です。
哀しみの表情の時、「鼻根筋」は上に引き上げられ、「眉毛下制筋」は大きく押し下げられます。
この表情に変化したとき、なるべく無理な形にならないようトポロジーに注意します。
f:id:bluebirdofoz:20181211000451j:plain

次回は顔の調整とローポリゴン化です。
bluebirdofoz.hatenablog.com

HoloLens特化のホロ恋子モデルを作成する その11(口のモデリング)

本日はホロ恋子モデル2の作成枠です。
顔のパーツを作り込んでいきます。今回は口のモデリングです。
f:id:bluebirdofoz:20181210085739j:plain

口も目と同様にどういった表情付けを行うかを考えてモデリングを行う必要があります。
今回は表情の喜怒哀楽、リップシンク「あいうえお」を表現できることを目指します。

口のモデリング方法

[編集モード]で口のモデリングを行っていきます。
口が閉じて繋がった状態ですので、最初に口を開きます。
口部分の頂点を選択し、切り裂き([V]キー)を実行します。
f:id:bluebirdofoz:20181210085749j:plain

これで頂点を動かすと以下のように頂点が分割されています。
分かりやすいよう、下唇の頂点を少し下げた状態で作業していきます。
f:id:bluebirdofoz:20181210085804j:plain

唇の形に沿ってメッシュをナイフカット([K]キー)していきます。
口角をあげる、さげるの表現に加えて、口角を広げる表現をしたいため、口角部分の頂点を合わせて増やしておきます。
f:id:bluebirdofoz:20181210085817j:plain

シェイプキーで必要な頂点

表情の喜怒哀楽、リップシンク「あいうえお」を作るには最低限、以下の5つの頂点が必要になります。
・上唇の中央と端
・下唇の中央と端
・口角
f:id:bluebirdofoz:20181210085856j:plain

更に目のモデリングと同様に、テクスチャを固定するための面として唇の面を利用します。
f:id:bluebirdofoz:20181210085911j:plain

期待する動きができるかどうか頂点を動かして試してみます。
唇の端の頂点は口を開く表現で、口を上下に伸ばすために利用します。
f:id:bluebirdofoz:20181210085927j:plain

唇の中央や口角の頂点は特に口をすぼめる表現で、丸い形を表現するのに使います。
f:id:bluebirdofoz:20181210085943j:plain

トポロジーの調整

最後にラインをもう一周追加しました。
f:id:bluebirdofoz:20181210085951j:plain

これは口輪筋のラインです。
これがあることでシェイプキーでは唇を突き出す形が作成でき、立体感のある唇が作れます。
ローポリゴンには不要かもしれません。
悩みましたが、顔の輪郭が効果的に良くなるため、入れることにしました。
f:id:bluebirdofoz:20181210090015j:plain

最終的に上唇・下唇・口輪筋、これらを意識したトポロジーとなりました。
f:id:bluebirdofoz:20181210090024j:plain

次は顔の残りのパーツのモデリングを実施します。
bluebirdofoz.hatenablog.com

HoloLens用のオリジナルモデルを作成する その44(モデルをHoloLensの3DViewerで表示する)

本日は(第一作目の)ホロ恋子モデルの作成枠です。
以前、HoloLens の RS5 で追加された、簡易に3Dモデルを表示する「MixedRealityViewer」を紹介しました。
※ 2018/12/08現在では名称が「3DVeiwer」になっているようです。
bluebirdofoz.hatenablog.com

今回はこの「3DVeiwer」でホロ恋子モデルを表示する方法についてまとめます。

「3DViewer」でキャラクタモデルを出力するにあたって主に気を付けるのは以下の5点です。
・三角ポリゴン数が 10,000 以下であること
・アーマチュアを含まないデータであること
・マテリアルで透過を行っていないこと
・放射が1を超える(発光する)モデルでないこと
・テクスチャを用いる場合、画像が埋め込み形式であること

必要なデータと環境の準備

サンプルにホロ恋子モデルを用います。
サンプルとして利用できるよう以下のダウンロードファイルにFBX形式のデータを追加しておきました。
3d.nicovideo.jp

画像を埋め込み形式とするため、今回「3DViewer」で使用するモデル形式は GLB を使います。
アドオンを設定することで Blender からエクスポートが可能です。以下の記事を参考にしてください。
bluebirdofoz.hatenablog.com

3DViewerで表示可能なモデルの設定

Blender プロジェクトを開き、ホロ恋子モデルの FBX ファイルをインポートします。
f:id:bluebirdofoz:20181209154854j:plain

カメラやランプの設定は「3DView」では利用されないので特に変更は不要です
f:id:bluebirdofoz:20181209154903j:plain

FBX形式で取り込んだモデルはマテリアルの透過設定がONになっています。
「マテリアル」タブを開き、「透過」パネルのチェックを外して透過を無効化します。
f:id:bluebirdofoz:20181209154914j:plain

次にアーマチュアを除く必要があります。
アーマチュアオブジェクトを選択肢て削除します。
f:id:bluebirdofoz:20181209154923j:plain

ポーズを設定する場合は

ただしアーマチュアを削除してしまうとキャラクタのポージングができなくなります。
キャラクタにポーズを取らせたい場合は、予めポージングを固定してからアーマチュアオブジェクトを削除します。

アーマチュアオブジェクト内の[ポーズ]を選択し、[ポーズモード]に切り替えます。
f:id:bluebirdofoz:20181209154934j:plain

ボーンを操作してキャラクタのポーズを作成します。
f:id:bluebirdofoz:20181209154945j:plain

ポーズによって変形したメッシュオブジェクトを選択します。
「モディファイア」タブを開き、「アーマチュアオブジェクト」の[適用]ボタンをクリックします。
f:id:bluebirdofoz:20181209154956j:plain

これでメッシュの状態が固定されます。
ポーズが定まったら、アーマチュアオブジェクトを削除します。
f:id:bluebirdofoz:20181209155009j:plain

GLBファイルでの出力

最後にメニューから ファイル -> エクスポート -> glTF 2.0 (.glb) で出力を行います。
f:id:bluebirdofoz:20181209155018j:plain

後は MixedRealityViewer の記事に従って GLB ファイルを HoloLens にアップロードすれば「3DViewer」でモデルを Home 空間に配置できます。
f:id:bluebirdofoz:20181209155029j:plain

HoloLens用のオリジナルモデルを作成する その43(アニメーション用FBXファイルをUnityに取り込む)

本日は(第一作目の)ホロ恋子モデルの作成枠です。
HoloLens の基本操作である「タップ」と「ブルーム」のアニメーションを作成しました。
・タップ
f:id:bluebirdofoz:20181208085728g:plain
・ブルーム
f:id:bluebirdofoz:20181208085917g:plain
公開中のファイルにこのアニメーションデータを追加します。

アニメーションデータの出力

アニメーションを Blender で作成した場合、FBX ファイルでそのまま出力すればアニメーションを出力できます。
しかし、今回の修正はアニメーションを追加したのみで、ポリゴンの修正は行っていません。
アニメーションを追加するたび、モデルデータ全てを更新するは面倒なので、見た目のメッシュデータとアニメーションは分けて管理したいところです。
f:id:bluebirdofoz:20181208085947j:plain

そこでアニメーションデータだけを FBX ファイルで出力して Unity 上でモデルデータと組み合わせます。
まずはメニューから ファイル -> エクスポート -> FBX(.fbx) を選択します。
f:id:bluebirdofoz:20181208090012j:plain

アニメーションデータは「アーマチュア」に紐づいています。
「FBXをエクスポート」の出力選択で「アーマチュア」のみを選択してエクスポートします。
f:id:bluebirdofoz:20181208090052j:plain

Unityへの取り込み

出力した FBX ファイルを Unity に取り込みます。
ファイルを確認すると、アニメーションデータが出力されていることが分かります。
f:id:bluebirdofoz:20181208090102j:plain

既存の Unity 向けホロ恋子モデルは Humanoid リグにアニメーションタイプを設定しています。
互換性を持たせるため、取り込んだファイルの[Animation Type]を[Humanoid]に変更します。
切り替え後、[Apply]ボタンを押して変更を反映します。
f:id:bluebirdofoz:20181208090111j:plain

※ Humanoid リグの割り当ても互換性を持たせる必要があります。
  ホロ恋子モデルは「UpperChest」を設定していないため、これを外しました。
  Humanoid リグの関連付けは[Configure]ボタンから設定可能です。
f:id:bluebirdofoz:20181208090119j:plain

これでアニメーションデータの Humanoid リグへの関連付けが完了しました。
この状態でアニメーションデータを選択すると、Humanoid リグのアバターでアニメ―ションが確認できます。
f:id:bluebirdofoz:20181208090127j:plain

ホロ恋子モデルへの反映

試しにホロ恋子モデルにアニメーションデータを反映してみます。
Project フォルダで右クリック -> Create -> AnimatiorController を選択します。
f:id:bluebirdofoz:20181208090207j:plain

NewAnimatorController.controller ファイルが作成されるので、これをダブルクリックします。
「Animator」パネルが表示されます。
f:id:bluebirdofoz:20181208090215j:plain

「Animator」パネルに確認したいアニメーションデータをドラッグします。
これにより、起動時に対象のアニメーションデータを再生する設定ができました。
f:id:bluebirdofoz:20181208090222j:plain

シーン上に配置したホロ恋子モデルの Animator コンポーネントの[Cotroller]変数に作成したコントローラを設定します。
f:id:bluebirdofoz:20181208090232j:plain

これで[再生]ボタンを押すと……。
f:id:bluebirdofoz:20181208090240g:plain
既存のホロ恋子モデルにタップアニメーションが適用できました。

モデル配布ページにてアニメーションデータを追加したパッケージを公開しました。
是非、試してみてください。
3d.nicovideo.jp

HoloLens特化のホロ恋子モデルを作成する その10(目のモデリング)

本日はホロ恋子モデル2の作成枠です。
顔のパーツを作り込んでいきます。今回は目のモデリングです。

今回から「トポロジー」という言葉が頻出します。
トポロジー」はモデリングにおいてはメッシュの割り方を指す言葉です。
面が綺麗に整理されたオブジェクトなどは「トポロジーが綺麗」などの言い回しをします。
f:id:bluebirdofoz:20181207080421j:plain

前回、シェーディング項目を「スムーズ表示」に切り替えましたが、記事中ではこのトポロジーの分かりやすさのため、「フラット表示」に戻して進めます。

顔パーツのモデリングを行う前に

目のモデリングを行うには最終的にキャラクタの表情付けをどう行うか決めておく必要があります。
今回のホロ恋子モデルは前回同様にシェイプキー(頂点移動)で表情変化を作る予定です。
この場合、形の作り込みだけでなく、表情を作るための頂点をモデリングで用意しておく必要があります。
f:id:bluebirdofoz:20181207080512j:plain

ローポリゴンを目指すならば、表情の変化にはテクスチャのオフセットを使ったり、シェイプキーにしても最低限の頂点とするのがセオリーのようです。
今回、表情のためのトポロジーを作り込むのはローポリゴンモデルでも表情の細かな変化を出したいという私の好みです。
少々アンバランスな作り込みかもしれません。

目のモデリング

[編集モード]で目のモデリングを行っていきます。
まずは眼球の形に沿ってメッシュをナイフカット([K]キー)します。
f:id:bluebirdofoz:20181207080527j:plain
このラインは目の固定頂点になります。シェイプキーで瞼が動いてもこのラインは動かさず、全体の形が崩れないようにします。

次にシェイプキーで動かすための瞼の頂点を作り込みます。
こちらは下絵の瞼の形に沿ってメッシュをナイフカット([K]キー)します。
f:id:bluebirdofoz:20181207080537j:plain

これで固定する頂点と動かす頂点が用意できました。
しかし今回はここで最後にもう一つ、下瞼にラインを追加します。
f:id:bluebirdofoz:20181207080847j:plain

これは睫毛のテクスチャ部分を保護するためのラインです。
イメージが湧きづらいと思いますので、前回のホロ恋子モデルを使って解説します。

シェイプキーを利用する際の注意点

シェイプキーで頂点移動を行うと、その頂点に接する面の大きさが変わります。
キャラクタにテクスチャを用いている場合、その部分のテクスチャは引き延ばされることになります。

例えば前回のホロ恋子モデルは目の下に薄く影を描き込んでいました。
f:id:bluebirdofoz:20181207080856j:plain

こちらも下瞼にラインを引いており、表情変化を行うと以下のように動きます。
f:id:bluebirdofoz:20181207080905j:plain

このとき、下瞼のラインがないと以下のようになります。
f:id:bluebirdofoz:20181207080914j:plain

思いっきり目の下の影が伸びてしまいました。
つまりシェイプキーを作成する場合、形を崩さないために固定する頂点の他、テクスチャを崩さないための頂点も必要になります。

トポロジーの調整

今回のモデルは上下の睫毛をテクスチャに書き込む予定なので最終的に以下のようなトポロジーにしました。
上下の瞼の頂点は丁度重なるよう調整しています。
正直なところ、ローポリゴンを目指すには打ち込み過ぎですが、やはり表情を作り込むならこれくらいの頂点は欲しいところです。
f:id:bluebirdofoz:20181207080923j:plain

試しに頂点を移動して笑顔の形が作れるかを確認しておきます。
元のトポロジーの状態を保存してから試しています。
ここをしっかりしておけば後々の表情作成時に幸せになれます。
f:id:bluebirdofoz:20181207080932j:plain

因みに、こういった人型モデルの動きを考える際に役立つのが人体解剖学です。
例えば今回の目のモデリングは以下の筋肉の形に沿ってメッシュを切ったと言えます。
・眼輪筋
・上眼瞼筋
・下眼瞼筋
f:id:bluebirdofoz:20181207080941j:plain

人体は筋肉で動くため、筋肉に沿った変形をします。
トポロジーを筋肉の形に切っておけば人間らしい変形が行えるという訳です。

次は口のモデリングを行います。
bluebirdofoz.hatenablog.com

HoloLens特化のホロ恋子モデルを作成する その9(スムーズ表示と細分割曲面)

本日はホロ恋子モデル2の作成枠です。
前回、顔のモデリングを行いました。
ここでモデルの見た目を精細にする「スムーズ表示」と「細分割曲面」の機能についてまとめます。
f:id:bluebirdofoz:20181206085108j:plain

どちらもモデルの仕上がりに大きく影響し、かつ、今後のモデリング方針を決める重大な要素です。
それぞれの機能について説明します。

スムーズ表示

「スムーズ表示」は光の反射による色の変化を滑らかにして、メッシュ全体を曲面に見せる機能です。

デフォルトでは「フラット表示」が有効になっています。
「フラット表示」ではポリゴンの面がそのまま平らに光を反射するため、メッシュ全体がポリゴンによって角ついて見えます。
f:id:bluebirdofoz:20181206085127j:plain

表示を切り替えるには、スムーズ対象のオブジェクトを選択して「オブジェクトモード」に切り替えます。
3Dビューの「ツール」タブに、シェーディング:[スムーズ]のボタンがあるのでこれをクリックします。
f:id:bluebirdofoz:20181206085140j:plain

メッシュ全体が滑らかな陰影になり、ポリゴンの角つきが抑えられました。
色の変化が滑らかになっているだけなので、メッシュの頂点数は変わりません。
横視点の鼻の辺りを見ると、頂点の形状が変わっていないことがよく分かります。

細分割曲面

「細分割曲面モディファイア」という機能で、頂点数を増やすことでメッシュ全体を曲線にする機能です。

一旦「フラット表示」に戻し、先ほどの顔オブジェクトに「細分割曲面モディファイア」を設定してみます。
対象のオブジェクトを選択してプロパティウィンドウにある[モディファイア]タブを開きます。
[追加]のプルダウンを開き、[細分割曲面]モディファイアを選択します。
f:id:bluebirdofoz:20181206085154j:plain

すると、頂点数が増えて全体的に滑らかな形になりました。
頂点数を確認すると、三角面:208 から 三角面:856 に増加しているのが分かります。
また、陰影は滑らかにならないため、細分割されたポリゴンの角つきが確認できます。
f:id:bluebirdofoz:20181206085210j:plain

「細分割曲面モディファイア」は頂点そのものを平均化して滑らかにしているため、ディテールが損なわれるという欠点があります。
例えば、顔オブジェクトの鼻部分に注目すると、かなり高さが抑えられてしまったことが分かります。
f:id:bluebirdofoz:20181206085223j:plain

この「縮み」は特に頂点数が少ない箇所や角張った箇所で顕著に発生します。
以前、この「細分割曲面モディファイア」で発生する「縮み」についてまとめた記事があるので興味があれば参照してください。
bluebirdofoz.hatenablog.com

両方の機能を用いた場合

「スムーズ表示」と「細分割曲面」を併用することも可能です。
「細分割曲面モディファイア」を設定した状態で「スムーズ表示」を有効にしたものが以下になります。
f:id:bluebirdofoz:20181206085241j:plain

元のメッシュと比較すると、これらの機能を利用するだけでかなり滑らかなメッシュ形状となります。
f:id:bluebirdofoz:20181206085249j:plain

ローポリゴンモデル作成時は「細分割曲面」は利用しない

「スムーズ表示」も「細分割曲面」もモデルの完成度を上げる重要な機能です。
同時に見た目が大きく変わる可能性があるため、適宜機能を有効化して、完成系をイメージしながら作成する必要があります。

今回のホロ恋子モデルではローポリゴンモデルを目指しているので「スムーズ表示」のみを利用していきます。
f:id:bluebirdofoz:20181206085302j:plain
「細分割曲面」は頂点数が増えてしまう事に加えて、前述の「縮み」事象がローポリゴンだと顕著に発生するためです。

因みにこれらの機能はオブジェクトに設定する効果です。
現在はまだ Plane オブジェクトしかありませんが、「スムーズ表示」も「細分割曲面」もオブジェクト作成毎に設定を行う必要があります。
f:id:bluebirdofoz:20181206085312j:plain

次は目のモデリングです。
bluebirdofoz.hatenablog.com