MMD

【MMD】 CS:Sのメガネを歩かせる(IKボーン組み込み作業)

MMDで作業をしていたら日曜が終わってました僕ですこんばんは。

先日、MMDでCS:Sスキンを導入する記事を書きましたが、それだけではボーンが十分に導入されているとはいえませんでした。
今回はIKボーンと呼ばれる多関節が同時に動く仕組みを足に割り当ててみました。続きを読む

CS:SモデルをMikuMikuDanceへ

簡易メニュー
1.CS:Sのモデルデータを抽出・変換する
2.3Dモデルテクスチャの出力
3.BlenderのDLと拡張プラグインを導入する
4.Blenderを使って3Dデータを変換する
5.PMD Editorでファイルを合成する
6.MMDで確認を行う

この記事ではCS:SモデルをMMDで読み込めるようにする為に、.mdl→.smd→.x→.pmx と変換を行っていく。



1.CS:Sのモデルデータを抽出・変換する

この章ではCS:Sのモデルデータ抽出し変換する。(.mdlを.smdに変換)


leet_krew今回はt_leetというテロリストのメガネモデルを使って説明していく。

まずはGCFScapeというソフトでモデルデータを抽出する。
\Steam\SteamApps にある counter-strike source shared.gcf を開き、

\models\player

\materials\models\player
をとりあえず保存しておく。

======2015/2/18追記======
定期的アクセスがあるので追記
フォルダ構造がlinuxOS対応アップデートの時に変わったのでmodels系gcfファイルとmaterial系gcfファイルが別々になっている可能性があります(未確認
=========追記終=========



出力した前者「models\player\t_leet」のフォルダ内に「t_leet.mdl」
というキャラクターの3Dデータが存在する。
これをコンパイルソフト「mdldecompiler」を使って.smdに変換する。

「mdldecompiler」は
\Steam\SteamApps\ユーザーネーム\sourcesdk\bin\ep1\bin
に入れて使うとおそらくエラーが出ない。dllが足り無いとか言われたらググってみて下さい。



するとこのようなものが出てくる
lod1_t_leet_reference.smd
lod2_t_leet_reference.smd
lod3_t_leet_reference.smd
lod4_t_leet_reference.smd
lod5_t_leet_reference.smd
lod6_t_leet_reference.smd
mdldecompiler.qc ←コンパイル用定義ファイル
phymodel.smd ←衝突判定用モデル
ragdoll.smd ←ボーンの定義ファイル?
t_leet_reference.smd ←キャラクターモデル

基本的に使うのはt_leet_reference.smdのみなので他は捨てても良い。
出力先はC直下に「0」フォルダを作る。これは後々文字数制限が面倒なので短くしといたほうが無難。

・補足事項
.SMDは3Dの形状のみ含まれるのでテクスチャは含まれていない点に注意。



2.3Dモデルテクスチャの出力

この章では.vtf→.tga変換を行う。

先に書いた通り、3Dモデルのボーンは抽出出来たが、表面に貼られているテクスチャはまだ出力されていない。この3Dモデルのテクスチャは.vftという別のファイルに含まれている。これを再びくっつけてやりたいのだが、あいにく.vtfファイルは普通のソフトでは認識出来無いので、専用のソフトでテクスチャを抽出して変換する必要がある。

抽出は「VTFEdit」というソフトを使い、同ソフトでTGA形式に変換する。
.vtfファイルの場所は、一番最初にGCFScapeで出力した後者のフォルダの中の
\materials\models\player\t_leet にある。

作業効率をよくする為、テクスチャを含む元データ「t_leet.vtf」及び「t_leet_glass.vtf」をあらかじめ「0」フォルダにをコピーしておく。
次に「VTFEdit」で「t_leet.vtf」を開いたらFile-Exportを押し、「t_leat.tga」という名前で同フォルダに保存する。
同様の手順でt_leet_glass.vtfを抽出する。抽出が終わったらvtfファイルは削除して構わない。

現在0フォルダ内には
t_leet_reference.smd
t_leat.tga
t_leat_glass.tga
がある。



3.BlenderのDLと拡張プラグインを導入する

この章ではBlenderで.smd→.x変換を行う準備を行う。

まずはBlenderをDLしてインストールする。
Blenderを起動させたら次に.smd形式をImport出来るようにする。

旧方式の為削除
https://code.google.com/p/blender-smd/downloads/list から
Blender SMD ToolsをC直下等後々パスが選びやすいところにDLする。
上部メニューからFile-User Preferencesを選ぶと小ウィンドウが出てくるのでAdd-Onsタブに移動する。
下の方にあるInstall Add-Onを選択し、先ほどDLしたプラグインを選択。有効になっている事を確認して保存。


BlenderSourceToolsをDLしzip形式のまま保存しておく。
Blenderに戻り、上部メニューのFile > User Preferencesを選択し、出てきた小window内にあるAddonsタブに移動。
下部にあるClick Install From Fileをクリックして先ほどDLした「blender_source_tools_1.10.3.zip」を選択すると自動インストールされる。
終わったらAddonsタブにあるリストから「Import-Export :Blender Source Tools」を探しチェックを入れて有効にする。



次に.xファイル出力を有効にする。先ほどのBlender Source Toolsの2つほどしたにある(記事投稿現在)、
「Import-Export :DirectX X format」を探しチェックを入れるとFire-Exportの選択肢に出てくるようになる。。
2013-03-27_035819




・おまけ
本来はBlenderでpmd,pmx形式に直接変換出来るBlender to pmdというアドオンがあるのだが、
そのまま出力してもおそらくこんなエラーが出てきて使えない。

2013-03-29_063746error

この記事を見ると、
エクスポートできる条件は
・マテリアルが設定されている(無ければ新規で作成しておく)
・ボーンのあるモデルはオブジェクトモードなどでボーン(アーマチュア)を選択した状態でエクスポートする
となっているが、どうにも原因がよくわからないのでとりあえず省略する。
このへん見れば解決するかも? http://bmania.blog70.fc2.com/blog-entry-57.html (念のため画像backup)




4.Blenderを使って3Dデータを変換する

準備が出来たら実際にデータを変換する。
File-Importから先ほど抽出したt_leet_reference.smdを選択するとキャラクター及び、Boneが出現する。

まずは大きさを変更するのでキャラクター及び、線状になっているBoneを右クリで選択、Nキーを押して右にメニューを表示させScaleをそれぞれ0.3にする。
2013-03-29_153920_scale
これでキャラクター・ボーン双方が小さくなったと思う。



その次はキャラクターにテクスチャを適用させる。

キャラクターを右クリックで選択しBlender手探りメモ:テクスチャはるの手順を参考にテクスチャを適用させる。この時キャラクターは真っ暗になっているかもしれないが、ライトが当たっていないだけなので気にしないでok。それでも気になるという人は、明るく写るようにする。テクスチャのメニューの下部にあるInfulence-Shading-Emitにチェックを入れ、Nキーを押して出てきたメニューの中からDisplayを探しShading部分を「GLSL」に変更すれば明るく映る。

2013-03-29_154733emit2013-03-29_154733emit0



そして出力。File-Exportで.x形式を選び、左下のほうに表示されるExport Armatures(Boneの情報が入っている)にチェックを入れる。
2013-03-29_153500_ex
名前をt_leet.xにして0フォルダに保存する。



5.PMD Editorでファイルを合成する

この章ではPMX Editorで.x→.pmx変換を行う。

PMXEditorをDLして起動する。
File-Importから先ほどのt_leet.xを読み込む。
インポート形式は「追加」、サイズは「任意」で「1」にしておく。

インポートした際、地表面に対して水平にキャラクターモデルが出現してしまい、テクスチャが出ない事や暗い状況になった。これを一つずつ解決していく。

====追記====
上のBlenderでの最後の出力でRotate X90 Degressのチェックが入っているのでモデルが回転していると思われます。なのでチェックを外して問題なければ(未確認)この章のテクスチャの確認まで飛ばして構いません。
===追記終===

2013-03-31_071517


・水平になっているキャラクターをデフォルト位置に修正する。
最初にview画面を表示する。view画面が出ていない場合はCtrl+Wで開く。上部メニューにある選択を「頂」(頂点)及び「骨」(ボーン)を有効にさせ、Ctrl+Aで全選択する。
2013-03-29_160618_sentaku
(画像は移動済みのものです)

選択した状態のまま、F4キーを押してオブジェクト操作ウィンドウを出し、画面下の値タブを選択、回転を行いキャラクター及びボーンが正面になるよう調整する。(数値を入力したら上のボタンを押すこと)
2013-03-29_160905_obj
270、90度にするとちょうど正面にくると思う。



・テクスチャの確認
テクスチャの確認はPMDメイン画面となる「PMX編集」の「材料タブ」から行う。
テクスチャのTex欄にグラフィック名が表示されているので合っているか確認する。
2013-03-29_110954_pmdE
同フォルダに保存していてテクスチャが出てこなかったら一度PMDEditorで保存してみてください
ここは文字数制限があるのとフルパス指定不可(=同フォルダに入れる必要がある)なので注意すること。



・見た目の調整
テクスチャが出たら見た目の調整を行う。このソフトの中で表示される状態がMMDにそのまま反映されるので、Blenderのライトの時のようにスルーしてはいけない。

おそらく、現在はキャラが真っ黒でろくに見えないであろうから、材質0(キャラクター全体)の「環境色」を「白」にする。そして材料0および材質1の「描写」-「両面描写」にチェックを入れること。これをチェックし忘れると裏面のみの描写になってしまう。
2013-03-29_162157_zairyo
調整が終わったらt_leat.pmxの形で保存する。



6.MMDで確認を行う

先ほど出力したt_leat.pmxと画像類をMikuMikuDanceのデフォルト読み込みフォルダ
\UserFile\Model に入れておく。
最後にMMDを立ち上げキャラクターデータをロードして、きちんと読み込まれるか、テクスチャが表示されているか、関節が動くか、確認をする。
これでうまくいったら成功です。

ちなみにミクさんの身長は158cmだそうです。
2013-03-29_170535_mmd

さぁこれであなたもCS:S MMDライフを!





MMDでCSスキンを使いたい

・追記2 - 2013/03/29
アクセスがあるようなのでもう1回挑戦して出来ました。
こちらの記事
CS:S modelをMikuMikuDanceへ(仮)へどうぞ。

・追記1
結論から申し上げると出来なかった。以下は実験内容。
---------------------------------------------------------------------------------------
MMDをやるならCSスキンでやりたいなぁ…ということで、以前CSスキンを動画を見た覚えがあったのでDLフォルダを探してようやく動画を見つけた。しかしそこから落とせるなんて甘い考えだった… 
動画であるという以上、何処かしらに入手方法があるのだろうと検索を掛けたが出ないこと出ないこと…
モデルデータとか扱ってるところやらとりあえず大御所らしきところみても無いといわれ、グーグルさんを頼りに検索ワードを変えても、どこかのモデルデータ詰め合わせに入ってる。以上の成果が得られなかった。ここまで数時間。

そこで、今度は発想を変えてモデルデータから現物を作るということにした。本来であればCSのファイルをGCScapeやらで読み込んでキャラデータを吸いだすことから始めないといけないが、ググルったららぴお氏がCSモデルデータをアップロードしてくれていたので省略する。CSのモデルの拡張子は独自の.mdl。そのまま使えないので基本的な3Dに対応したものに変換してやる必要がある。そこで変換ツールを探さないといけないわけだが、とりあえずCS:S向け?のMDLDecompilar0.5(.smdに変換)を突っ込んでみた。が・・・説明通りにやっても下記のエラーを吐いて実行すら出来無い。

プロシージャ エントリポイント Q_AppendSlash がダイナミックリンクライブラリ vstdlib.dllから見つかりませんでした

ググッたら唯一ヒットしたサイトに解決策が書いてあった。
http://www.avgas-bb.com/wp/?p=417

C:\Program Files\Steam\SteamApps\ %username% \sourcesdk\bin\ep1\bin

ep1フォルダのほうに入れてやればいいらしい。一応起動した。
早速.mdlデータを突っ込んで試してみる。
無題1
ロード出来無いらしい。やはり・・・CS:S⇔CSの互換性の無さからいっても無理か。
結論としてこの作業ではCSのは無理そうだがCS:Sのモデルは変換出来そうだ。

ということで調べなおしたところ、CSの.mdlデータはHL1 MDL Compiler & Decompilerを使えばいいらしい。
>mdldec.exeにmdlをドロップするとデコンパイルされてモデルとアニメーション(.smd) テクスチャ(.bmp) mdlの設定ファイル(.qc)が出てきます
参考モデル改造 - M14EBRにTAR-21のホロサイトのっけてみる
これで.mdlデータの.smdへの変換が完了した。しかしキャラデータはモーションが多い分データ量が半端ない。

しかしよくよく調べてみるとsmdという拡張子のファイルはMMDの変換系ツールに含まれていなかった。
どうやらいくらかの3D系ソフトでは.smdが読み込めるようだ。

smdは
1)milkshape3Dで変換する
2)smdinporterを用いて3dsmaxから変換する
3)Lightunwrapで.mdlを読みこみ各種3Dソフトに読込める形式に変換する。
4)PMD/SMD converterを利用してSMD→PMDにする
などが見つかったが動くかどうかは補償しない。

極力フリーで済ませたいので有償3Dソフトは体験版も含めてカットする。そこで、4で進めたいと思う。
まずはPMD/SMD converterをDLする。
解凍したら即起動が出来るはずです。
ものは試しにと早速HL1 MDL Compiler & Decompilerでデコンパイルしたidol1.smdというデータを使ってみた。
無題2

ご覧の有様。エラーが出ている。どうもsmdのトライアングルうんぬん言われてるからSMDファイルがいけないようだが、他のファイルでも同様なのでどうすればいいのかわからん…

というわけで、諦めてCS:Sのデータを用いる事にした。
無題4

smdへのデコンパイルは成功。

続いてpmdへの変換。
無題5

あっさり成功した。

これでMMD側で読み込めるはず…
PMDはMMDver3以降が必要なのでMMDの一番上に置いてある古いタイプだと対応していない。
DirectX版のを新たにDLして先ほど出力したPMDファイルを MikuMikuDance_v739dot\UserFile\Model に突っ込んだ。
結果
2012-03-06_184050


・・・ダメっぽい。

アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

月別アーカイブ
記事検索
プロフィール
Auther:TEBA
・Play FPS Games
SA
・プレイ保留中
CSO/CS1.6/SF2/CS:P/
・Played FPS games
AVA/CS:S/CF/Sting/S.O.W/AD/トイウォーズ

  • ライブドアブログ