← チュートリアル目次へ戻る | ← 第4章: Outfit 登録と着脱動作確認
本章では、キャラクターの体型・衣装・髪型・テクスチャ(見た目)を連動して変化させる 各種 Shape(Morph / Hair / Skin / Outfit) を ShapeSync Editor に登録し、ShapeDirector を使用して Scene 上で一括制御・動作確認を行う手順を解説します。
ShapeDirector で動作確認を行います。Hair1)の適用を定義する Shape です。SampleI)を定義する Shape です。Dress1)とマテリアル衣装(Stocking)の組み合わせを定義する Shape です。まずは VRoid Studio を使用して、モデルのレッグウェアからストッキングのテクスチャ画像を PNG として書き出します。
AvatarSample_I を開きます。衣装 タブを選択し、左側メニューから レッグウェア を選択して テクスチャ編集 をクリックします。
▲図 5-1: AvatarSample_I を開き、衣装 > レッグウェア > テクスチャ編集を開く
▲図 5-2: ストッキングのテクスチャ画像をエクスポート
Assets/Textures/ 等)を指定し、ファイル名を Stocking.png として保存します。
▲図 5-3: Unity プロジェクト内に Stocking.png として保存
Stocking.png を選択して Inspector を開きます。Alpha is Transparency にチェックを入れて ON に設定し、右下の Apply ボタンをクリックして適用します。
▲図 5-4: Unity Inspector で Alpha is Transparency を ON にして Apply を押し、透過を確認
Stocking)の登録書き出したストッキング PNG を、ShapeSync Editor にテクスチャ差し替え用の Material Outfit として登録します。
Outfits を選択します。Outfit Id に Stocking、Outfit Name に Stocking と入力し、Create Material Outfit ボタンをクリックします。
▲図 5-5: Outfits で Outfit Id と Outfit Name に Stocking を入力し Create Material Outfit をクリック
Outfits > Material Outfits > Stocking を選択します。Texture Entry Name に、Material Outfit 内で扱うテクスチャ名として Body と入力します(※ここでは Figure の Material Entry は指定しません)。Texture Preview フィールドに、Project ウィンドウの Stocking.png をドラッグ&ドロップして指定し、Add Texture Entry ボタンをクリックします。
▲図 5-6: Texture Entry Name に Body、Texture Preview に Stocking.png を指定し Add Texture Entry をクリック
Body と指定した画像が表示されていることを確認し、画面下部の Save to Database をクリックして保存します。
▲図 5-7: 一覧に Body と画像が表示されていることを確認し Save to Database で保存
[!NOTE] Material Outfit はテクスチャ名と画像を登録するものです。Figure の Material Entry を指定する手順、身体マテリアルを直接指定するフィールド、
Include/Exclude分類、ブレンド設定はありません。保存時に Texture Resource(Stocking_Body等)が自動生成されるため、Texturesセクションへの別登録も不要です。
morphSampleI)体型変形(FBM)を制御する Morph Shape を作成します。
Shapes を選択します。Shape Id に morphSampleI、Shape Name に morphSampleI と入力し、Create Morph Shape Template ボタンをクリックします。
▲図 5-8: Shapes で Shape Id と Shape Name に morphSampleI を入力し Create Morph Shape Template をクリック
Shapes > Morph Shapes > morphSampleI を開きます。Morphs 一覧に登録済み FBM 軸が表示されます。SampleI 行の重みを 1 に設定します。Save to Database をクリックして保存します。
▲図 5-9: SampleI の重みを 1 に設定し Save to Database で保存
hairSampleI)髪型 Outfit(Hair1)を適用する Hair Shape を作成します。
Shapes を選択します。Shape Id に hairSampleI、Shape Name に hairSampleI と入力し、Create Hair Shape Template ボタンをクリックします。Shapes > Hair Shapes > hairSampleI を開きます。Parts (authoring order) セクションで Add Mesh ボタンをクリックします。Outfit Mesh ドロップダウンで Hair1 を選択します。Save to Database をクリックして保存します。
▲図 5-10: Parts (authoring order) で Outfit Mesh に Hair1 を指定し Save to Database で保存
skinSampleI)体型軸 SampleI の肌・顔テクスチャを適用する Skin Shape を作成します。
Shapes を選択します。Shape Id に skinSampleI、Shape Name に skinSampleI と入力し、Create Skin Shape Template ボタンをクリックします。Shapes > Skin Shapes > skinSampleI を開きます。Add Texture ボタンを 9 回 クリックし、9 つの Texture part を作成します。Target(所有先: Figure、Proxy Entry)と Texture(所有元: SampleI、Main Texture リソース)を以下の表の通りに設定します。| # | Target(所有先 / Proxy Entry) | Texture(所有元 / リソース名) |
| :— | :— | :— |
| 1 | Figure / Mouth | SampleI / SampleI_Mouth |
| 2 | Figure / Iris | SampleI / SampleI_Iris |
| 3 | Figure / Highlight | SampleI / SampleI_Highlight |
| 4 | Figure / Face | SampleI / SampleI_Face |
| 5 | Figure / EyeWhite | SampleI / SampleI_EyeWhite |
| 6 | Figure / Brow | SampleI / SampleI_Brow |
| 7 | Figure / Eyelash | SampleI / SampleI_Eyelash |
| 8 | Figure / Eyeline | SampleI / SampleI_Eyeline |
| 9 | Figure / Body | SampleI / SampleI_Body |
[!IMPORTANT] 対象は各マテリアルの Main Texture のみです。
_2以降の MatCap 等の補助テクスチャ(SampleI_Face_2やSampleI_Body_2等)は含めないでください。
Save to Database をクリックして保存します。
▲図 5-11: 9 件の Main Texture を対応付け、Save to Database で保存
outfitSampleI)メッシュ衣装(Dress1)とマテリアル衣装(Stocking)を組み合わせた Outfit Shape を作成します。
Shapes を選択します。Shape Id に outfitSampleI、Shape Name に outfitSampleI と入力し、Create Outfit Shape Template ボタンをクリックします。Shapes > Outfit Shapes > outfitSampleI を開きます。Add Mesh ボタンをクリックし、Outfit Mesh に Dress1 を設定します。Add Texture ボタンをクリックして Texture part を追加します。
Target: 所有先に Figure、Proxy Entry に Body を選択します(※ここで初めて Figure の適用先 Material Entry を指定します)。Texture: 所有元に Stocking を選択し、リソースに Material Outfit の Body エントリから生成された Stocking_Body を選択します。
[!NOTE] Material Outfit は Target(適用先)ではなく、Texture の所有元(Source)として選択します。Figure のどの部位に適用するかは、Target で
FigureのBodyを指定して決定します。
Save to Database をクリックして保存します。
▲図 5-12: Dress1 と Stocking_Body を設定し、Save to Database で保存
登録した Shape 設定から Shape Template アセットを生成します。
Generation セクションを選択します。Registries/、Bindings/、Materials/、Textures/、Outfits/)は 既定値のまま変更しません。Generate ボタンをクリックします(※Save to Database は使用しません)。Assets/ShapeSync/Generated)を選択して「フォルダーの選択」をクリックします。
▲図 5-13: Generate を押し、出力先フォルダーに Assets/ShapeSync/Generated を指定
morphSampleI.asset (MorphShapeTemplate)skinSampleI.asset (SkinShapeTemplate)hairSampleI.asset (HairShapeTemplate)outfitSampleI.asset (OutfitShapeTemplate)ShapeSyncShapeCatalog.txt
▲図 5-14: Assets/ShapeSync/Generated 直下に Shape Template アセット群とカタログが出力された状態
生成した Shape Template を Figure の ShapeDirector に登録し、Play Mode で連動動作を確認します。
BasicFemale)を Scene(または Hierarchy)に配置します。ShapeDirector コンポーネントの Inspector を確認します。Template List に、生成された 4 つの Shape Template アセット(morphSampleI.asset, skinSampleI.asset, hairSampleI.asset, outfitSampleI.asset)をドラッグ&ドロップして追加します。
▲図 5-15: Figure の ShapeDirector Inspector で Template List に 4 つの Shape Template を登録
[!NOTE] Play Mode に入る前のエディットモードでは、Template List に登録しても Runtime Shapes には同期されず、
Sync Template List to Runtime Shapesボタンも機能しません。Runtime Shapes への同期は Play Mode 開始時に自動的に実行されます。
Animator に Walking.controller を割り当てます。Runtime Shapes (Authoritative) に各 Shape が表示されるとともに、Game ビューのキャラクターに髪・衣装・肌・ストッキングが適用されます。Sync Template List to Runtime Shapes ボタンを押すことで即座に反映できます)
▲図 5-16: Play Mode に入ると Runtime Shapes に同期され、髪・衣装・肌・ストッキングが適用される
ShapeDirector の Runtime Shapes (Authoritative) 内にある morphSampleI(SampleI)を展開し、重み(weight)スライダー を動かします。
▲図 5-17: 歩行アニメーション再生中に SampleI の重みを変更し、体型・衣装・髪・肌が連動して変化することを確認
Sync Template List to Runtime Shapes ボタンも機能しません。Stocking.png の Inspector で Alpha is Transparency が有効になっていないか、Outfit Shape の Target / Texture 紐付けが誤っている可能性があります。Stocking.png を選択し、Inspector の Alpha is Transparency が ON になっていることを確認して Apply を押してください。また、ShapeSync Editor の Shapes > Outfit Shapes > outfitSampleI で Target = Figure / Body、Texture = Stocking / Stocking_Body になっていることを確認して再生成してください。