← チュートリアル目次へ戻る | ← 第9章: 高度な VRM 連携(Expression・Physics の設定と動作確認)
本章では、複数衣装の着用部位や優先順位を制御する Outfit Tag(タグ) と Priority(優先度) の設定方法、およびキャラクターの現在の着用・変形状態(Shape や Outfit)を丸ごとアセットとして保存・復元する Document(ドキュメント)保存・読み込み の手順を解説します。
Tops1)と下半身スカート(Skirt1)のセパレート衣装 VRM を準備して登録し、Tag(upperchest, lowerchest)と Priority を設定します。ShapeSyncDocumentA) および Document B(ShapeSyncDocumentB) として保存して、Template 解除状態からワンクリックで読み込み・復元できることを確認します。キャラクターに複数の衣装(トップス、ボトムス、ワンピースなど)を同時に着せる場合、「どの部位で競合するか」「競合したときにどちらを表示するか」を制御する必要があります。
upperchest、下半身 lowerchest)。同じ Tag を持つ Outfit 同士が競合の対象になります。.asset)に記録するデータ形式です。セパレート衣装として、上半身用の Tops1 と下半身用の Skirt1 を準備します。
Tops1(計 4 種類):
胸部変形(BreastSize PBM)の影響を受けるため、Base / FBM に加えて PBM follow 用を含めた計 4 種類を出力します。
BasicFemale.vroid に Tops を着用し、Tops1BasicFemale.vrm としてエクスポート(図 10-1, 図 10-2)。SampleI.vroid に Tops を着用し、Tops1SampleI.vrm としてエクスポート(図 10-3)。BreastSizeBasicFemale.vroid に Tops を着用し、Tops1BreastSizeBasicFemale.vrm としてエクスポート(図 10-4)。BreastSizeSampleI.vroid に Tops を着用し、Tops1BreastSizeSampleI.vrm としてエクスポート(図 10-5)。
▲図 10-1: BasicFemale に Tops 着用
▲図 10-2: Tops1BasicFemale.vrm 保存
▲図 10-3: Tops1SampleI.vrm 保存
▲図 10-4: Tops1BreastSizeBasicFemale.vrm 保存
▲図 10-5: Tops1BreastSizeSampleI.vrm 保存
Skirt1(計 2 種類):
胸部変形(BreastSize)の影響を受けないため、Base / FBM の計 2 種類を出力します。
BasicFemale.vroid に Skirt を着用し、Skirt1BasicFemale.vrm としてエクスポート(図 10-6, 図 10-7)。SampleI.vroid に Skirt を着用し、Skirt1SampleI.vrm としてエクスポート(図 10-8)。
▲図 10-6: BasicFemale に Skirt 着用
▲図 10-7: Skirt1BasicFemale.vrm 保存
▲図 10-8: Skirt1SampleI.vrm 保存
Outfits > Mesh Outfits で Tops1 を作成し、Outfit Id: Tops1、Outfit Name: Tops1、Outfit Prefab: Tops1BasicFemale を指定します。
▲図 10-9-1: Outfits > Mesh Outfits > Tops1 基本情報登録(Outfit Prefab: Tops1BasicFemale)
Materials 画面にて、顔・目・肌などの素体マテリアルを Exclude に分類します。
▲図 10-9-2: Tops1 > Materials で素体マテリアルを Exclude に分類
Tops_01_CLOTH)を Entry Name: Tops1、Classification: Include に設定して Save to Database をクリックします。
▲図 10-9-3: Tops1 マテリアルを Include に設定し Save to Database で保存
FBMs 画面にて、SampleI の FBM Prefab に Tops1SampleI を割り当てます。
▲図 10-9-4: Tops1 > FBMs で SampleI に Tops1SampleI を割り当て
PBMs 画面にて、Follow BreastSize を有効化し、Base Prefab に Tops1BreastSizeBasicFemale、SampleI Prefab に Tops1BreastSizeSampleI を指定して Save to Database をクリックします。
▲図 10-9-5: Tops1 > PBMs で Follow BreastSize を有効化し PBM Prefab を指定して保存
Outfits > Mesh Outfits で Skirt1 を作成し、Outfit Id: Skirt1、Outfit Name: Skirt1、Outfit Prefab: Skirt1BasicFemale を指定します。
▲図 10-10-1: Outfits > Mesh Outfits > Skirt1 基本情報登録(Outfit Prefab: Skirt1BasicFemale)
Materials 画面にて、素体マテリアルを Exclude に分類します。
▲図 10-10-2: Skirt1 > Materials で素体マテリアルを Exclude に分類
Bottoms_01_CLOTH)を Entry Name: Skirt1、Classification: Include に設定して Save to Database をクリックします。
▲図 10-10-3: Skirt1 マテリアルを Include に設定し Save to Database で保存
FBMs 画面にて、SampleI の FBM Prefab に Skirt1SampleI を指定します。(※Skirt1 は BreastSize の影響を受けないため、PBM Follow 設定は不要です)
▲図 10-10-4: Skirt1 > FBMs で SampleI に Skirt1SampleI を割り当て
VRM 画面にて、Physics Reference VRM に Skirt1BasicFemale を指定し、Save to Database をクリックします。
▲図 10-11: Skirt1 > VRM で Physics Reference VRM に Skirt1BasicFemale を指定し保存
Shape が選択できるタグ語彙(部位名)を登録します。
Shapes > Tags を選択します。Add Tag ボタンをクリックし、入力欄に upperchest と入力します。Add Tag ボタンをクリックし、入力欄に lowerchest と入力します。Save into Database ボタンをクリックしてタグ語彙を保存します。
▲図 10-12: Shapes > Tags で upperchest および lowerchest を作成し Save into Database で保存
作成したタグと優先度(Priority)を各 Outfit Shape に設定します。
outfitTops1 の新規作成:
Shapes ルート画面で Shape Id: outfitTops1、Shape Name: outfitTops1 を入力し、Create Outfit Shape Template をクリックします。Priority: 10 を入力します。Tags: ポップアップから upperchest を選択し、Add Tag をクリックします。Parts: Add Mesh をクリックし、Outfit Mesh ポップアップから Tops1 を選択します。Save to Database をクリックします。
▲図 10-13-1: Shapes > Outfit Shapes > outfitTops1 の Priority(10)および Tag(upperchest)設定
outfitSkirt1 の新規作成:
Shapes ルート画面で Shape Id: outfitSkirt1、Shape Name: outfitSkirt1 を入力し、Create Outfit Shape Template をクリックします。Priority: 15 を入力します。Tags: ポップアップから lowerchest を選択し、Add Tag をクリックします。Parts: Add Mesh をクリックし、Outfit Mesh ポップアップから Skirt1 を選択します。Save to Database をクリックします。
▲図 10-13-2: Shapes > Outfit Shapes > outfitSkirt1 の Priority(15)および Tag(lowerchest)設定
outfitSampleI(既存 Dress 用)の上書き更新:
Outfit Shapes から既存の outfitSampleI を選択します(※新規作成はしません)。Priority: 20 を入力します。Tags: ポップアップから upperchest と lowerchest の両方を追加します(上下両部位をカバー)。Save to Database をクリックします。
▲図 10-13-3: 既存 outfitSampleI の Priority(20)および両 Tag(upperchest, lowerchest)設定の上書き更新
| Shape Id | Priority | Tags | リンク先 Mesh Outfit | 役割 |
|---|---|---|---|---|
outfitTops1 |
10 |
upperchest |
Tops1 |
上半身セパレート |
outfitSkirt1 |
15 |
lowerchest |
Skirt1 |
下半身セパレート |
outfitSampleI |
20 |
upperchest, lowerchest |
Dress1 |
上下一体型ドレス(最高優先度) |
Generation セクションを選択します。Generate ボタンをクリックし、出力ルートフォルダー(Assets/ShapeSync/Generated)を選択して再生成を実行します。BasicFemale)を選択します。ShapeDirector コンポーネントの Template List に、以下の Template 群を登録します。
morphSampleIskinSampleIhairSampleIoutfitSkirt1outfitTops1outfitSampleI(Dress)Template List 上は Tops1・Skirt1・Dress1 の 3 つの衣装が論理登録されていますが、Priority 20 の Dress1(outfitSampleI)が upperchest と lowerchest の両 Tag を排他的に支配するため、画面上は Dress1 のみ が表示されることを確認します。
▲図 10-14: 3 つの衣装 Template 登録時に Priority 20 の Dress1 のみが排他表示される Play Mode 画面
ShapeDirector Inspector の Runtime Shapes (Authoritative) から OutfitShape — outfitSampleI を展開し、Remove Shape ボタンをクリックします。
▲図 10-15-1: Runtime Shapes の outfitSampleI から Remove Shape をクリック
Tops1(Priority 10) と Skirt1(Priority 15) が即座に画面上に現れ、上下セパレート衣装(セーラー服風トップス+プリーツスカート)の組み合わせで表示されることを確認します。
▲図 10-15-2: Dress Remove 後に Tops1 + Skirt1 が即座に表示される Play Mode 画面
Tops1 + Skirt1 が着用されている状態(Runtime Shapes)を確認します。ShapeDirector Inspector 下部にある Save ボタンをクリックします。Save Shape Document ダイアログが表示されたら、保存先フォルダーとしてプロジェクト内の Assets/ShapeSync を選択し、ファイル名に ShapeSyncDocumentA と入力して 保存 をクリックします。
▲図 10-16-1: Save Shape Document ダイアログで Assets/ShapeSync に ShapeSyncDocumentA として保存
Assets > ShapeSync 直下に ShapeSyncDocumentA(.asset)が作成されたことを確認します。
▲図 10-16-2: Assets/ShapeSync 直下に ShapeSyncDocumentA アセットが保存された Project ビュー
Template List の Sync 等により outfitSampleI(Dress)を適用し、Dress1 が着用されている状態(Runtime Shapes)を作ります。ShapeDirector Inspector 下部の Save ボタンをクリックします。Assets/ShapeSync を選択し、ファイル名に ShapeSyncDocumentB と入力して 保存 をクリックします。
▲図 10-17-1: Save Shape Document ダイアログで Assets/ShapeSync に ShapeSyncDocumentB として保存
Assets > ShapeSync に ShapeSyncDocumentB が追加保存されたことを確認します。
▲図 10-17-2: Assets/ShapeSync に Document A および Document B が揃って保存された Project ビュー
保存した Document を使って、衣装状態をワンクリックで復元できることを確認します。
ShapeDirector Inspector の Template List から、登録されている Template を 1 つずつ削除して全解除(空の状態)にします。ShapeDirector Inspector 下部にある Load ボタンをクリックします。Load Shape Document ダイアログで Assets/ShapeSync/ShapeSyncDocumentA.asset を選択し、開く をクリックします。
▲図 10-18-1: Load Shape Document ダイアログで ShapeSyncDocumentA.asset を選択
Tops1 + Skirt1(セパレート衣装)の状態へ復元されることを確認します。
▲図 10-18-2: Document A 読み込みにより Tops1 + Skirt1 状態に復元された Play Mode 画面
ShapeDirector Inspector 下部の Load ボタンをクリックします。Load Shape Document ダイアログで Assets/ShapeSync/ShapeSyncDocumentB.asset を選択し、開く をクリックします。
▲図 10-19-1: Load Shape Document ダイアログで ShapeSyncDocumentB.asset を選択
Dress1(ワンピースドレス)の状態へ復元されることを確認します。
▲図 10-19-2: Document B 読み込みにより Dress1 状態に切り替わり復元された Play Mode 画面
outfitSampleI(Dress)は Priority 20 かつ upperchest と lowerchest の両 Tag を持っているため、Priority 10 の outfitTops1 および Priority 15 の outfitSkirt1 は自動的に排他(非表示)となります。outfitSampleI を Remove してください。ShapeDirector の設定や Mesh Binding アセットの参照が外れている可能性があります。Save ボタンを押して Document を上書き保存し、再度 Load を試してください。← チュートリアル目次へ戻る | ← 第9章: 高度な VRM 連携(Expression・Physics の設定と動作確認)