ここでは、他のゲームからのコンバートや独自に作成した衣装をPlayClub内で表示させる方法を紹介する。
今回は別のゲームでModとして作成されたBlackLotusという衣装をコンバートする作業を例とする。
- 3Dモデリングソフト
やることは他のソフトでもさほど変わらない。
- SB3UGS
ここでは1.0.13αで説明する。
操作が複雑になるためStep2:テクスチャの入れ替え(SB3)などで操作に慣れておくことをお勧めする。
- バイナリエディタ&テキストエディタ
プレイクラブのサイズの基準となるボディMesh(ここでは素体と呼ぶ)を取り出す。
ただしメタセコイアではボーン、ウェイトの書き出しができないので注意。後の作業が面倒になる場合があります。
▼書き出し形式の違い
- SB3UGSを開き、resorce.assetsを開く。
- 左タブ群からcf_body_01を展開し、中央タブ群からMeshタブを選択する。
- 中心タブ群からcf_O_Upperbody_00とcf_O_Lowerbody_00を選択し右タブ群にあるExportをする。
- 選ぶFormatはモデリングソフトによって異なるが、メタセコイアではMqoが基本拡張子なのでフォーマットMqoで書きだす。
ただしメタセコイアではボーン、ウェイトの書き出しができないので注意。後の作業が面倒になる場合があります。
▼書き出し形式の違い
UVマップ | Texture | ボーン | ウェイト | |
.mqo | ○ | × | × | |
.obj | ○ | ○ | ○ | |
.fbx | ○ | ○ | ○ | |
.dae | ○ | ○ | ○ |
素体をモデリングソフトにインポートする。
この時、サイズを変更してインポートするとゲーム内でのサイズが変わってしまうので
必ず素体は1倍でインポートすること。インポートを終えたら編集できないようLockをかけておくとよい。
この時、サイズを変更してインポートするとゲーム内でのサイズが変わってしまうので
必ず素体は1倍でインポートすること。インポートを終えたら編集できないようLockをかけておくとよい。
素体に合わせて通常通りモデリングを行う。
インポートしている場合は素体に合わせてサイズ調整していけばよい。
UVマップ、Textureも同時に作成する。
▼注意事項
SB3UGSではSubMeshという概念が存在するが、ゲーム内ではSubMeshが読み込まれない。
[0]を名前につけておかないとImport時にTargetoptionが-1になり、SubmeshとしてImportされてしまう。
TargetoptionはImportする際、SB3UGS内でも0に編集することが可能だが、
度々Importすることがあるのでモデリングソフト内で済ませておくことをお勧めする。
インポートしている場合は素体に合わせてサイズ調整していけばよい。
UVマップ、Textureも同時に作成する。
▼注意事項
- Meshは全て三角形で構成すること
- 頂点数の最大値は65000くらい
- Textureのサイズは1024×1024以下を目安に。データ量が多いと読み込めない
- オブジェクトの数は少ない方が作業が少なくて済むが、
胴体と足が繋がる衣装の場合UpperBodyとLowerbodyの境目でオブジェクトを分けておくこと - ゲーム上とソフト上では左右が逆転する(鏡で見たような状態)ため、非左右対称の衣装を作る場合注意が必要
- オブジェクトの名前は英数字であればなんでもよいが、最後に[0]をつけておくこと
SB3UGSではSubMeshという概念が存在するが、ゲーム内ではSubMeshが読み込まれない。
[0]を名前につけておかないとImport時にTargetoptionが-1になり、SubmeshとしてImportされてしまう。
TargetoptionはImportする際、SB3UGS内でも0に編集することが可能だが、
度々Importすることがあるのでモデリングソフト内で済ませておくことをお勧めする。
illusion\PlayClub\PlayClub_Data\StreamingAssets\Wear\Cos
↑格納されている場所
■探す際にチェックするポイント(優先順位順)
1.オブジェクト数以上のMeshが存在するかどうか
現在のSB3UGSではMesh、Frameを追加することができないため元のデータのMesh数がオブジェクト数の限界となっている。
2.透過するTextureが使用できるかどうか
透過するTextureを使用しない場合は無視してもらって構わない。
使用する場合、Materialに○○_siru_〇〇などShaderがMarmoset Bumpedのものがあるかどうかを確認する必要がある。このShaderでないとTextureが透過されない。
Materialをインポートして対応するという方法もあるが、手間がかかるのでできればこのタイミングで探しておきたい。
なにをいってるかわからねーとおもうが透過するTextureを使いたい人は[[[プレイクラブ・UNITY初級改造]>http://www.geocities.jp/dataspace_2000/]]を熟読しておくこと。
3.見た目、形状に近いものがあるかどうか
キャラカスタマイズやアニメーション時、Boneに合わせてつけられたWeightによって衣装も変形する。
Importする際、Weightは元の衣装から引き継いで使用する形になるためできるだけ近い形状がよい。
近い物がない場合、「3-4:衣装の形状に近いMeshがなかった場合」を参照。
▼何を選んだらいいかわからない人へ
テンプレートファイルを作成したのでそちらを参照。
※参考※ 各Cosの内容とMesh数(ボディ、爪を除く。また半脱ぎの場合、数は同じか少なくなるので注意)
今回のBlackLotusでは上半身4、下半身2で首元にオブジェクトがあるためCos_13のスーツを使用する。
↑格納されている場所
■探す際にチェックするポイント(優先順位順)
1.オブジェクト数以上のMeshが存在するかどうか
現在のSB3UGSではMesh、Frameを追加することができないため元のデータのMesh数がオブジェクト数の限界となっている。
2.透過するTextureが使用できるかどうか
透過するTextureを使用しない場合は無視してもらって構わない。
使用する場合、Materialに○○_siru_〇〇などShaderがMarmoset Bumpedのものがあるかどうかを確認する必要がある。このShaderでないとTextureが透過されない。
Materialをインポートして対応するという方法もあるが、手間がかかるのでできればこのタイミングで探しておきたい。
なにをいってるかわからねーとおもうが透過するTextureを使いたい人は[[[プレイクラブ・UNITY初級改造]>http://www.geocities.jp/dataspace_2000/]]を熟読しておくこと。
3.見た目、形状に近いものがあるかどうか
キャラカスタマイズやアニメーション時、Boneに合わせてつけられたWeightによって衣装も変形する。
Importする際、Weightは元の衣装から引き継いで使用する形になるためできるだけ近い形状がよい。
近い物がない場合、「3-4:衣装の形状に近いMeshがなかった場合」を参照。
▼何を選んだらいいかわからない人へ
テンプレートファイルを作成したのでそちらを参照。
※参考※ 各Cosの内容とMesh数(ボディ、爪を除く。また半脱ぎの場合、数は同じか少なくなるので注意)
今回のBlackLotusでは上半身4、下半身2で首元にオブジェクトがあるためCos_13のスーツを使用する。
複製方法についてはStep1:衣装の複製を参照
SB3UGSにはUndo(戻る)がなく、ミスが許されない。
バックアップをこまめにとることも大事だが、あらかじめ計画を立ててから取り組んだ方が効率が良い。
▼参考 BlackLotusの場合
Mesh | 内容 | オブジェクト | 内容 | |
cf_O_buttonP_00_d | スーツボタン | ⇒ | Metal | 金具 |
cf_O_shirtP_00_d | Yシャツ | ⇒ | collar | 首輪 |
cf_O_shirtP_00_d_u | Yシャツ内側 | ⇒ | collarrmetal | 首輪のトゲ |
cf_O_suit_00_d | スーツ | ⇒ | strap1 | 皮ベルト1 |
cf_O_suit_00_d_u | スーツ内側 | ⇒ | strap2 | 皮ベルト2 |
cf_O_suitpantu_00_d | パンツ | ⇒ | strap_lower | 皮ベルト下 |
cf_O_suitpantu_00_d_u | パンツ内側 | ⇒ | Metal_lower | 金具下 |
1.SB3UGSにて2-2で複製したUnity3Dファイルを開く
2.左タブ群からcosb13(複製の際リネームしたもの)をダブルクリックし、中央タブ群に展開する。
2.1-5で作成したモデルを左タブ群にD&Dする
3.中央タブ群でcosb13(複製したもの)のObjectTreeを展開し、2-3で決めた対象に従って各オブジェクトをD&Dする
4.下図のような画面が出るので、下図の通りにチェックしOK、またはOK&Automaticallyを押す
この時、各Meshに折りたたまれているSkind Mesh Rendererを展開し、適切にImportされているかをレンダリング画面を見て確認する。
前のMeshが残っていたり、Skind Mesh Rendererに折りたたまれている〇〇Boneが見つからない場合、なんらかの理由でImportがミスっている可能性がある。
その場合、1-3の注意事項を確認すること
2.左タブ群からcosb13(複製の際リネームしたもの)をダブルクリックし、中央タブ群に展開する。
2.1-5で作成したモデルを左タブ群にD&Dする
3.中央タブ群でcosb13(複製したもの)のObjectTreeを展開し、2-3で決めた対象に従って各オブジェクトをD&Dする
4.下図のような画面が出るので、下図の通りにチェックしOK、またはOK&Automaticallyを押す
この時、各Meshに折りたたまれているSkind Mesh Rendererを展開し、適切にImportされているかをレンダリング画面を見て確認する。
前のMeshが残っていたり、Skind Mesh Rendererに折りたたまれている〇〇Boneが見つからない場合、なんらかの理由でImportがミスっている可能性がある。
その場合、1-3の注意事項を確認すること
この方法を使うと乳首、乳輪と衣装を同時に表示させることができる。
透過する衣装などにオススメだが、キャラカスタムで乳首が高いと衣装を貫通して表示される恐れがある。
▼方法
1.左タブ群からMonoB&Otherタブを選び、該当するTextAssetをExportする
2.下図のように「noBody = "true"」を加えて保存する
3.先ほどの場所にReplaceFileを行う
こうすることで上半身が完全に表示される形になる。
▼参考 そのほかtextAssetに追加することで効果があるもの
透過する衣装などにオススメだが、キャラカスタムで乳首が高いと衣装を貫通して表示される恐れがある。
▼方法
1.左タブ群からMonoB&Otherタブを選び、該当するTextAssetをExportする
2.下図のように「noBody = "true"」を加えて保存する
3.先ほどの場所にReplaceFileを行う
こうすることで上半身が完全に表示される形になる。
▼参考 そのほかtextAssetに追加することで効果があるもの
skirtDynamic = "true" | スカートが動くように |
skirtDynamic = "false" | スカートが全く動かなくなる |
pants = "true" | パンツが消える? |
swimsuit = "true" | パンツが消える |
onepiece = "true" | 不明 |
この方法を使うと衣装から乳首が飛び出すことはなくなるが、透過する衣装などの場合乳首が表示されない。
▼方法
1.resource.assetsからcf_O_Upperbody_00をエクスポートする。(0-2:素体の確保と同じ流れ)
この際、mqo形式以外のもので書き出す。(fbxやobjなど)
こうすることでMeshだけでなく、ボーンとウェイトをそのままエクスポートすることができる。(骨抜きと呼んでる)
2.特にモデリング編集することなく、そのままD&Dし読み込む。
3.既にある素肌部分(大体は〇〇Bodyと書かれたMeshが素肌部分)にcf_O_Upperbody_00をImportする
4.Importのオプションは他のMeshと異なり、下図の通りに行う
▼骨抜きをする理由
元々あったBodyMeshは素肌が見える部分だけポリゴンが入っており、衣装が入っている部分は空洞になっている。
その空洞部分にはボーンとウェイトが設定されておらず、mqo形式(ボーンが入っていないMesh)で上書きすると変な形になってしまう。
これを防ぐために骨抜きし、上書きOptionをCopyNear(近い場所にコピー)からReplace(置き換え)にすることで
トラブルを回避することができる。この技は次に説明する3-4:衣装の形状に近いMeshがなかった場合でも生かすことができる。
▼方法
1.resource.assetsからcf_O_Upperbody_00をエクスポートする。(0-2:素体の確保と同じ流れ)
この際、mqo形式以外のもので書き出す。(fbxやobjなど)
こうすることでMeshだけでなく、ボーンとウェイトをそのままエクスポートすることができる。(骨抜きと呼んでる)
2.特にモデリング編集することなく、そのままD&Dし読み込む。
3.既にある素肌部分(大体は〇〇Bodyと書かれたMeshが素肌部分)にcf_O_Upperbody_00をImportする
4.Importのオプションは他のMeshと異なり、下図の通りに行う
▼骨抜きをする理由
元々あったBodyMeshは素肌が見える部分だけポリゴンが入っており、衣装が入っている部分は空洞になっている。
その空洞部分にはボーンとウェイトが設定されておらず、mqo形式(ボーンが入っていないMesh)で上書きすると変な形になってしまう。
これを防ぐために骨抜きし、上書きOptionをCopyNear(近い場所にコピー)からReplace(置き換え)にすることで
トラブルを回避することができる。この技は次に説明する3-4:衣装の形状に近いMeshがなかった場合でも生かすことができる。
例えば現段階の状態をゲーム上で確認すると、一部のMeshの位置がかなりずれている。ここでは首輪のトゲと下半身のベルトが大きくずれている。
これは、Yシャツの内側やスーツのボタンなどに各Meshを上書きしているためボーンとウェイトがずれているから起きる現象である。
これを正しい状態にするために以下の手順を行う。(3-3-2で行った骨抜きを行う)
1.Cos_13を開き、Yシャツ、スーツ、パンツなど近い形状のMeshをmqo形式以外でExportする。
2.各MeshをD&Dで読み込み、表示がおかしかったMeshにD&Dで上書きする。
3.Importのオプションは3-3-2と同じく、下図の通りに行う
4.上書きされた状態からさらにBlackLotusの各Meshを上書きする。
説明のためあえて二度手間なことをしたが、最終的にはこのようになった。
Metal(金具)はcos_13に丁度いいMeshが見つからなかったため、チャイナ服を持ってきた。
Mesh | 内容 | 骨抜きMesh | 内容 | オブジェクト | 内容 | ||
cf_O_buttonP_00_d | スーツボタン | ⇒ | cf_O_china_00_d | チャイナ服 | ⇒ | Metal | 金具 |
cf_O_shirtP_00_d | Yシャツ | ⇒ | ⇒ | ⇒ | ⇒ | collar | 首輪 |
cf_O_shirtP_00_d_u | Yシャツ内側 | ⇒ | cf_O_shirtP_00_d | Yシャツ | ⇒ | collarrmetal | 首輪のトゲ |
cf_O_suit_00_d | スーツ | ⇒ | ⇒ | ⇒ | ⇒ | strap1 | 皮ベルト1 |
cf_O_suit_00_d_u | スーツ内側 | ⇒ | cf_O_suit_00_d | スーツ | ⇒ | strap2 | 皮ベルト2 |
cf_O_suitpantu_00_d | パンツ | ⇒ | ⇒ | ⇒ | ⇒ | strap_lower | 皮ベルト下 |
cf_O_suitpantu_00_d_u | パンツ内側 | ⇒ | cf_O_suitpantu_00_d | パンツ | ⇒ | Metal_lower | 金具下 |
0.現在のTexture、Mtarial、Meshの割り当て関係を把握する
どのTextureをどのMaterialに割り当てるか目途を立てておく。
できるだけ作業量を減らす工夫をしておくことでトラブルを回避することができる。
1.Materialタブに切り替え、Textureを設定していく。
Aはプレクラ・アンスコで試したのですが、値を0.5未満にすると、急に消える、らしい。
光沢度。高くすると金属光沢の様になるらしい?
2.Materialが不足している場合、Copy->Newで追加する。
▼注意
こうすることで追加したTexture、Materialに新たにIDが振られ、設定しやすくなる。
どのTextureをどのMaterialに割り当てるか目途を立てておく。
できるだけ作業量を減らす工夫をしておくことでトラブルを回避することができる。
1.Materialタブに切り替え、Textureを設定していく。
- MainTex
- BumpMap
- SpecTex
- Color
Aはプレクラ・アンスコで試したのですが、値を0.5未満にすると、急に消える、らしい。
- Spec
光沢度。高くすると金属光沢の様になるらしい?
- Shiniess
- SpecInt,Fresnel 不明
2.Materialが不足している場合、Copy->Newで追加する。
▼注意
- 不要なMaterialがあってもRemoveしない、リネームもしないほうがいい
こうすることで追加したTexture、Materialに新たにIDが振られ、設定しやすくなる。
Meshタブを開き、SubmeshesからMaterialを選択する。
名前が変更できないだけに何のTextureを割り当てたかわかりにくいかもしれない。
その場合、TexturesUsedに使用されているTextureが表示されるのでそれを参考にするとよい。
名前が変更できないだけに何のTextureを割り当てたかわかりにくいかもしれない。
その場合、TexturesUsedに使用されているTextureが表示されるのでそれを参考にするとよい。
モデリングソフトで半脱ぎ状態のMeshを作成し、同様の手順を行う。
基本的にやることは同じになるが、上書きするMeshは語尾に_nとつけられたものになり、ObjectTreeが分けられたものになる。
基本的にやることは同じになるが、上書きするMeshは語尾に_nとつけられたものになり、ObjectTreeが分けられたものになる。
このページへのコメント
はじめましてPSI18といいますm(_ _)m
イリュのゲームは結構前からやってるんですが、メッシュの”骨抜き”という技を知らずモデルの変形に長年悩んでいたんですが、このwikiのお陰でやっと前進することが出来ました。大感謝しております。
で、その骨抜きとは全然関係ない話なのですが、被り物を作っていたところサブメッシュが使えました。衣装では試していないのですが一応ご報告だけ。
ttp://capricious18.blog.fc2.com/blog-entry-4.html
衣装じゃなければ使えるのは当たり前ということでしたら僕の勘違いということで申し訳ありませんということで。。。
http://capricious18.blog.fc2.com/
いくつか追記しました。
1)Step:0 SB3UGSの導入に画面説明の画像を掲載。そのルールにのっとり「タブ群」という形で画面を説明する形で追記
2)0−2:素体の確保の対象をcf_body_01に変更
3)4−2:マテリアルの設定に紫色のAnimatorの編集作業を追記
Txt.assetのSkirtのところを修正しました。
他にもいくつか勘違いをしていたところがあるみたいで、実機で検証してから追記したいと思います。