コンテンツにスキップ

VRC Stocking Generator マニュアル

VRC Stocking Generator は、アバターの体からストッキングを作成するUnityエディタ拡張です。ニーハイ、パンティストッキング、全身タイツ、腕ストッキングのほか、コライダーによる範囲除去で好きな形のストッキングを作成できます。

Modular Avatar、lilToonの導入を推奨します。Modular Avatarが導入されていない場合、Blendshape SyncとMerge Armatureは設定されません。lilToonが導入されていない場合、プリセットで使われるマテリアルが読み込めません。

基本的な使い方

  1. ツール(Tools) > Stocking Generator からツールを開きます。
  2. ボディ > Skinned Mesh Renderer に、アバターの体の Skinned Mesh Renderer を指定します。
  3. マテリアル 項目でプリセットを選ぶか、自分でマテリアルを指定します。
  4. ストッキングを生成 をクリックします。
  5. ストッキングが生成されます。必要に応じて色やマスクの設定を変えて、繰り返し生成して調整してください。

生成されたストッキングオブジェクトは、元のボディオブジェクトの隣に作成されます。メッシュ、テクスチャ、マテリアル、Prefab は指定した出力フォルダーに保存されます。

作成例

  • ニーハイ
作り方

マスクモード を ニーハイ に設定し、必要に応じて ストッキング高さオフセットで高さを調整します。

  • パンティストッキング
作り方

マスクモード を パンティストッキング に設定し、必要に応じて ストッキング高さオフセットで高さを調整します。下着が貫通するときは 出力 > 詳細設定 > 法線オフセット を少し上げてください。

  • 腕ストッキング
作り方

腕ストッキング を有効にして、必要に応じて 腕ストッキング長さオフセット で長さを調整します。

  • 全身タイツ
作り方

全身タイツ を有効にして、必要に応じて 首マスク で首周辺をカットします。ニーハイ・パンティストッキング・腕ストッキングが有効な時は、境界が濃くなります。

  • 左右で高さの違う/片方だけのニーハイ・腕ストッキング
作り方

左右の高さオフセットを分ける を有効にして、左右それぞれのオフセットを調整します。片方だけにする場合は、無効にしたい方のチェック(右ニーハイ・左ニーハイ・右腕ストッキング・左腕ストッキング)を外してください。

  • 網タイツ
作り方

網目パターン を有効にして、必要に応じて 網目サイズ、網目線の太さ、円周方向の網目数 を調整します。

  • ノースリーブ
作り方

除去コライダー を使用します。

全身タイツ を有効にして、首マスク を有効にします。ヒエラルキーに空のGameObjectを追加して、その子に空のGameObjectをいくつか追加します。子オブジェクトに球体、カプセル、ボックスコライダーのコンポーネントを追加します。

球体コライダーで腕を覆い、カプセルコライダーで側面を、ボックスコライダーで背中を覆うと、きれいにノースリーブになります。コライダーの位置やサイズを調整して、好みの袖口の形にしてください。

除去コライダー を有効にして、作成したコライダーオブジェクトのルートオブジェクトを ルート に指定します。濃くする長さ を調整して、袖口の暗い境界の幅を調整してください。

  • かかと、つま先を切り取る
作り方

除去コライダー を使用します。

ヒエラルキーにGameObjectを追加して、子オブジェクトにカプセルコライダーを追加します。カプセルコライダーを横に並べます。

除去コライダー を有効にして、作成したコライダーオブジェクトのルートオブジェクトを ルート に指定します。濃くする長さ を調整して、かかと・つま先周辺の暗い境界の幅を調整してください。

  • 破れタイツ
作り方

除去コライダー を使用します。

ヒエラルキーに Assets/ranhai613/StockingGenerator/Colliders/ripping_mold.prefab を追加します。子オブジェクトにメッシュコライダーが複数配置されているので、位置やサイズを調整して、破れタイツの形を作ります。メッシュ同士の位置が近すぎると、除去範囲がつながってしまうので注意してください。

除去コライダー を有効にして、作成したコライダーオブジェクトのルートオブジェクトを ルート に指定します。濃くする長さ を0にしてください。もし他の部分の切り抜きで暗い境界を設定しているときは、2つ目のルート を有効にして、破れタイツ用のルートを指定し、2つ目の濃くする長さ を0にしてください。

色の変更

ストッキングの色は、ストッキング色 項目で変更できます。通常色 が基本のストッキング色で、濃い色 は境界やつま先などの暗い部分に使われます。マテリアル > プリセット を選ぶと、これらの色もプリセットに合わせて変わります。

色の例(プリセット)

  • 白

  • ネイビー

  • ワインレッド

自分でマテリアルを用意する

マテリアル 項目で カスタム を選ぶと、ストッキング生成に使うマテリアルを自分で指定できます。ストッキング生成時に指定したマテリアルがコピーされ、メインカラーテクスチャ、アルファマスクテクスチャが差し替えられます。元のマテリアルには影響しません。

好きなシェーダーを使う

デフォルトでlilToonがサポートされています。他のシェーダー(Poiyomiなど)も動きますが、シェーダーによってはテクスチャの差し替え方法が異なるため、完全な互換性は保証できません。差し替えが失敗した場合は、コピーされたマテリアルのテクスチャとアルファマスクを手動で差し替えてください(生成されたテクスチャは、デフォルトで Assets/ranhai613/StockingGenerator/Generated に生成されます)。

制限

  • Humanoidボーン以外の動作は保証しません。
  • 近くで見るとストッキングの境界が荒く見える場合があります。マテリアル > 詳細設定 > メインカラーテクスチャサイズ や ストッキングアルファマスク > 詳細設定 > マスクテクスチャサイズ を大きくすると改善する場合があります。
  • 体のメッシュを利用しているため、足がいわゆる「5本指ソックス」になります。
  • 爪などの鋭いメッシュ部分でメッシュが繋がらず、破綻することがあります。また、爪のメッシュが重なり、不自然に色が濃くなることがあります。

各項目の説明

項目 説明
表示言語 エディタUIの表示言語を選択します。
ボディ ストッキングメッシュとマスク生成に使う元のボディを指定します。元のレンダラーには有効なメッシュが必要です。
パラメータ 説明
Skinned Mesh Renderer 参照元のボディレンダラーです。Humanoidボーン以外の動作を保証しません。必須項目です。
マテリアル 生成ストッキングに使うマテリアルと、メインカラーテクスチャの生成設定です。
パラメータ 説明
プリセット 色プリセットを選択します。カスタム、黒、茶、白、ネイビー、ワイン が利用できます。
マテリアル 生成ストッキング用にコピーされる元マテリアルです。プリセットから既定マテリアルを読み込めない場合、この項目は必須です。
詳細設定
パラメータ 説明
メインカラーテクスチャサイズ 生成されるメインカラーテクスチャの解像度です。大きいほど細かくなりますが、ファイルサイズも大きくなります。
ストッキング色 ストッキングの基本色と、境界やつま先などの暗色表現を調整します。
パラメータ 説明
通常色 生成ストッキングテクスチャの基本色です。
濃い色 境界、つま先、首、除外コライダー周辺を暗くするために使う色です。
境界部分を濃くする ストッキングの境界付近に暗い帯を追加します。
境界の濃さの幅 境界の暗い帯の幅です。境界部分を濃くする が有効な場合に表示されます。
つま先を濃くする つま先付近を暗くします。
つま先の濃さオフセット つま先の暗色化範囲を足方向に前後させます。つま先を濃くする が有効な場合に表示されます。
ストッキングアルファマスク ストッキングの表示範囲を決めるアルファマスクを設定します。
パラメータ 説明
全身タイツ 通常の下半身ストッキングではなく、全身タイツ風のマスクを生成します。
首マスク 全身タイツ が有効な場合に表示され、首周辺でマスクをカットします。
パラメータ 説明
有効 全身タイツの首除外を有効にします。
高さオフセット 首カット位置の高さを調整します。
濃くする長さ 首カット周辺に暗い境界帯を追加します。
マスクモード なし は脚のストッキング領域を作らないモードです。ニーハイ はニーハイ用マスク、パンティストッキング は下半身のパンティストッキング風マスクを生成します。
足先を除外 足先部分をマスクから除外します。
足先境界オフセット 足先除外の境界位置を調整します。足先を除外 が有効な場合に表示されます。
左ニーハイ / 右ニーハイ 左右それぞれのニーハイ生成を有効・無効にします。マスクモード が ニーハイ の場合に表示されます。
左右の高さオフセットを分ける 左右で別々の高さオフセットを使います。
パラメータ 説明
左ストッキング高さオフセット 左側のニーハイ高さオフセットです。
右ストッキング高さオフセット 右側のニーハイ高さオフセットです。
ストッキング高さオフセット 左右を分けない場合に使う共通の高さオフセットです。
腕ストッキング 腕ストッキング領域を追加します。
パラメータ 説明
有効 マスクに腕ストッキング領域を追加します。
左腕ストッキング / 右腕ストッキング 左右それぞれの腕ストッキングを有効・無効にします。
左右の腕オフセットを分ける 左右の腕で別々の長さオフセットを使います。
左腕長さオフセット / 右腕長さオフセット 左右それぞれの腕ストッキング長さオフセットです。
腕長さオフセット 左右を分けない場合に使う共通の腕ストッキング長さオフセットです。
網目パターン アルファマスクに網タイツ風の穴を生成します。手、足先、濃い境界帯は網目にせず、通常のタイツとして残します。全身タイツ には対応していません。
パラメータ 説明
有効 網目パターン生成を有効にします。
網目サイズ 網目セルの縦方向の大きさを調整します。小さい値ほど細かい網目になります。
網目線の太さ 網目線の太さを調整します。
円周方向の網目数 身体の円周方向に並ぶ網目セル数を調整します。
除外コライダー 指定したルート配下のコライダーを使い、生成アルファマスクから範囲を除外します。
パラメータ 説明
有効 除外コライダー機能を有効にします。
ルート 除外に使うコライダーを含むTransformです。このルート配下の有効なコライダーが再帰的に検出されます。
濃くする長さ 除外されたコライダー範囲の周辺に、メインカラーテクスチャ上で描画される暗い境界の幅です。
2つ目のルート 2つ目のコライダールートを有効にします。別のコライダーグループに異なる暗色境界幅を設定したい場合に使います。
2つ目の濃くする長さ 2つ目のコライダーグループに使う暗い境界の幅です。
詳細設定
パラメータ 説明
マスクテクスチャサイズ 生成されるアルファマスクテクスチャの解像度です。
マスク余白ピクセル 継ぎ目を減らすため、生成されたマスク境界を指定ピクセル数だけ拡張します。網目パターンでは、UVシーム周辺の網目マスクにも余白を追加します。
出力 生成オブジェクト名、保存先、メッシュ処理、出力形式を設定します。
パラメータ 説明
オブジェクト接尾辞 生成されるストッキングオブジェクト名に追加される接尾辞です。
出力フォルダー 生成アセットの保存先フォルダーです。
ヒエラルキー内の以前生成したストッキングを削除 同じベース名の生成済みストッキングがヒエラルキー内にある場合、新しく生成する前に削除します。
詳細設定
パラメータ 説明
法線オフセット クリッピングを減らすため、生成ストッキングメッシュを法線方向に押し出します。
スムーズ反復回数 生成メッシュに適用するスムージング回数です。
スムーズ強度 メッシュスムージングの強度です。
各BlendShapeフレームにスムーズ処理を適用(低速) ベースメッシュだけでなくBlendShapeフレームにもスムージングを適用します。変形の一貫性が上がる場合がありますが、処理は遅くなります。
完全に透明な面を削除 生成されたアルファマスクで完全に透明なメッシュ面を削除し、ポリゴン数を減らします。
Unity FBX ExporterがあればFBXを書き出す Unity FBX Exporter が利用可能な場合、FBXを書き出します。
未使用の生成済みアセットを削除 出力フォルダー内の生成済みアセットのうち、現在の生成ストッキングから参照されていないものを削除します。
ストッキングを生成 ストッキングオブジェクトと生成アセットを作成します。

高度な使い方: 除去コライダー

除去コライダーは、指定したコライダーの範囲内の布を切り取る機能です。自動生成マスクに含まれてほしくない範囲を削ったり、複雑な形状の周辺をきれいにカットしたい場合に便利です。3Dビューでコライダーを確認するには、右上のGizmosを有効にしてください。

基本ワークフロー

  1. アバター付近に空のGameObjectを作成します。
  2. その子にも空のGameObjectを追加し、それにコライダーのコンポーネントを追加し、除外したい範囲を覆うように配置します。

  1. ツール側で 除去コライダー を有効にします。
  2. 親オブジェクトを ルート に指定します。

  1. 濃くする長さ を調整して、除外範囲周辺の暗い布表現の幅を決めます。
  2. ストッキングを生成し、結果を確認してください。

有効なGameObject上の有効なコライダーだけが使用されます。対象コライダーはルートとその子以下です。

2つ目のルート を使う場合

あるコライダーグループと別のコライダーグループで、境界の暗さの幅を変えたい場合に 2つ目のルート を使います。たとえば、

  • ルート: 大きな除外範囲に通常の 濃くする長さ を使う。
  • 2つ目のルート: 穴あき、破れ表現などの除去範囲に長さ0の 濃くする長さ を使う。

どちらのルートもアルファマスクからピクセルを除外します。暗い境界幅はメインカラーテクスチャに対して別々に適用されます。

Tips

  • できるだけ単純なコライダー形状を使うと、調整と確認がしやすくなります。
  • メッシュコライダーでは、 Convex を有効にすると、コライダーの形状が単純化され、除外範囲が変わる場合があります。
  • テクスチャサイズを大きくすると、除去コライダーの境界がより正確になります。
  • 何も変わらない場合は、コライダーのGameObjectがアクティブで、Colliderコンポーネントが有効になっているか確認してください。

Q&A

ストッキングの生成に時間がかかりすぎます。

テクスチャサイズが大きい、スムージング回数が多い、各BlendShapeフレームにスムーズ処理を適用 が有効になっているなどの理由が考えられます。これらの設定を下げると、生成時間が短くなります。調整するときはテクスチャサイズを1024などに減らして、完成形を出力するときだけ大きくするのもおすすめです。

  • マテリアル > 詳細設定 > メインカラーテクスチャサイズ と ストッキングアルファマスク > 詳細設定 > マスクテクスチャサイズ を小さくする。
  • 出力 > 詳細設定 > スムーズ反復回数 を減らす。
  • 出力 > 詳細設定 > 各BlendShapeフレームにスムーズ処理を適用(低速) を無効にする。

Generate Stocking ボタンが押せません。何を確認すればいいですか?

Skinned Mesh Renderer が指定されていること、レンダラーにメッシュがあること、有効なマテリアルが指定されていることを確認してください。

生成されたマスクが空、または作成されません。

元メッシュにUV0が無い、想定したボーンが見つからない、選択した Mask Mode がアバターのリグに合っていない可能性があります。別の Mask Mode を試し、メッシュにUVがあるか確認し、コンソールの StockingGenerator 警告を見てください。

下着がボディにめり込みます。

法線オフセット を少し上げてください。

BlendShape が完全に合いません。

スムージングを使っている場合は、Apply Smooth Iterations to each BlendShape frame (slow) を有効にしてください。時間はかかりますが、BlendShape変形がより安定する場合があります。

腕ストッキングだけ作るには?

マスクモード を なし にし、腕ストッキング を有効にして、左腕または右腕のオプションを有効にします。

パンティストッキングや全身タイツを作るには?

下半身のパンティストッキングには マスクモード > パンティストッキング を使います。全身タイツにしたい場合は 全身タイツ を有効にし、必要に応じて 首マスク で首周辺をカットします。

足先を裸足にしたい場合は?

足先を除外 を有効にし、足先境界オフセット でカット位置を調整します。

除去コライダー が効きません。

除去コライダー が有効か、ルート が指定されているか、コライダーのGameObjectがアクティブか、Colliderコンポーネントが有効かを確認してください。また、コライダーが除外したいボディメッシュ範囲に実際に重なっているかも確認してください。

2つ目のルート はいつ使いますか?

暗い境界幅が異なる2つのコライダーグループを使いたいときに使います。両方のグループで同じ暗色境界幅を使えるなら、ルート は1つで十分です。

生成アセットはどこに保存されますか?

Output Folder に保存されます。既定では Assets/ranhai613/StockingGenerator/Generated です。