2015年09月02日

(SimPeople)オブジェクトを3Dで修正しよう - 一発自動修正もあるよ -

さて、Zバッファについて色々と書いてきましたが、一番の問題は「直観的でない」という事でしょう。白黒の画像を見て3次元をイメージしろと言われても無茶ぶりすぎます。
自作のオブなら初めから3Dで作るという手もありますが、3Dモデルを作るのは結構大変ですし、既に完成しているオブジェクトを修正しようとなると手の出しようがありません。

それならオブジェクトを3Dで見れるようにしてしまえば良いじゃない、という事で、オブジェクトの画像から3Dモデルを復元、移動や編集を出来るようにしてみました。

3Dモデルを扱うのでBlender用のプラグインとなっていますが、基本的な操作は専用のパネルから行えるのであまり詳しくなくても手順通りにやれば大丈夫だと思います。



まあ、とにかくどんなものか見てみましょう。静止画だと分かり辛いので動画にしてあります。
後半は使用法となっているので、とりあえず最初の部分だけ見てもらえればどんなものかは分かるかと思います。
字が細かいので、全画面で最高画質にしてご視聴ください。重いかもしれませんが。


作成したプラグインですが、見ての通り"The Sims Transmogrifier"(以下トラモグ)の表示、移動を3次元にした様なものです。
干渉するオブジェクトの修正用に、簡易的な自動修正を行うことも出来ます。



まずはインストールです。いつも通り、Blender2.49b用となっています。
プラグインのダウンロードはこちらからどうぞ。
シムピープル用オブジェクト3Dインポータ・エディタ v0.1

Blender2.49bをインストールした後、
\Users\<ユーザー名>\AppData\Roaming\Blender Foundation\Blender\.blender\scripts\

以下に、ダウンロードした import_sims_3Dedit.py を入れてください。
なんか面倒な場所ですが、Vista以降のUACのせいでこんな場所になっています。
※ "AppData"フォルダが隠しフォルダになっているので、エクスプローラの設定で"隠しファイルを表示する"設定にしないと見えないので注意してください。

また、画像処理用にPIL(Python Image Library)を使用しているので、こちらもインストールが必要です。
PILは長らく更新が無いので、互換性のあるPillowというライブラリから、Windows用のPython2.6-32bit版をダウンロード、インストールするのがいいでしょう。Blender2.49は32ビットなので、32ビット版が必要です。

Pillowのダウンロードはこちらからどうぞ
配布ページ
Windows用インストーラ版



さて、使用法ですが、大体の事は動画で分かると思います。
この後では動画には書ききれなかったことを含めてもうちょっと詳しい解説をしていきますが、動画で力尽きたのでこの後は画像とか無しです。動画と大体同じ流れなので、そちらを見ながらでもどうぞ。面倒なら読まなくてもたぶん大丈夫です。



トラモグからの出力とBlenderでの読み込み


まずは読み込むファイルを用意しなくてはいけません。このプラグインはトラモグからExportしたXMLと画像を読み込むようになっています。
必ず修正したいオブのバックアップを取ってから、トラモグでそのオブを選択して、"Export Object File..."を実行、オプションは動画と同じにして下さい。

出力できたら、Blenderを起動して左右どちらのサブウインドウでもいいのでScriptウインドウに切り替えて、Script->Import->Sims3DEdit で起動します。
上のFileメニューのImportからでも起動できますが、このスクリプトは起動しっぱなしで使用する & 縦長のサブウインドウを前提でレイアウトしているので、サブウインドウを指定して起動した方がいいです。


起動するとファイル選択ボタンが出てくるので、先程出力したxmlを開けばオブジェクトが3Dで表示されます。

テンキーの"0"でゲーム上で見た視点の固定カメラで見ることが出来ます。当然ながらゲームでの表示と大体同じはずです。固定カメラなので、そのままだと視点移動できないので、もう一度"0"を押すとフリーカメラに戻ります。
他に、テンキーの"1" で左前、"3" で右前、"7"で上から、"5"でパースのON/OFFができます。"2468"は上下左右の回転なので、好きな方向から見てみて下さい。

表示される方向から見たデータしかないので、影の部分や裏側は表示されません。
また、仕様上マルチタイルのオブジェクトを表示するとつなぎ目の部分に隙間がありますが、ゲーム上では繋がっているので移動して繋げたりはしないでください。
画像上の1ピクセルを1頂点に変換しているので、面積のあるピクセル→面積の無い点になり、結果つなぎ目部分が空いているように見えています。1ピクセルを四角の面にすれば繋がって見えますが、頂点数が4倍になるので重くなりますし、色々不都合があるのでこうなっています。


画像の方向やDrawGroup(ベッドメイク済み・寝てる時・使用後などの切り替え)の選択はトラモグと大体同じですが、マルチタイルのオブジェクトの場合はトラモグと違い全タイルをまとめて移動できます。個別に移動したい時は、上の方の"All Tiles"ボタンで切り替えることが出来ます。

一応チェックはしていますが、万一何かのエラーでプラグインが終了してしまった時は、そのままプラグインを再実行してください。エラーで落ちる直前の状態に戻ります。おかしなことになったら、ResetボタンかBlenderを再起動してください。



初級編 - とりあえず干渉を自動修正する -


さて、Blenderなんて触ったことが無い、3Dなんてやったことが無い、でもオブどうしの干渉や壁へのめり込みを何とかしたいという方。
オブが読み込めたら、右下の方にある"Full AutoFix"ボタンを押しましょう。
確認のポップアップが出るので、"Yes"を押すと勝手に読み込んで修正、勝手に保存します。
終了のポップアップが出ればBlenderでの作業は終了です。もうBlenderは閉じて構いません。
後はトラモグで先ほど選択したオブを選んで、"Import Object File..."で読み込めば壁や隣のオブジェクトへの干渉は直っているはずです。ゲーム上で確認してみてください。

余程おかしなことをしていなければ、大抵はこれで直るはずです。



中級編 -トラモグの3D版 -


自動修正は壁への干渉は直してくれますが、シムがオブを使う時にめり込むのは直してくれません。簡単な物なら、オブ全体を移動することで直すことが出来ます。
自動修正は何をやっているのかよくわからないから嫌だ、見た目で分からなくてもきちんとした場所に置きたい、という几帳面な方もこちらです。

まずは読み込んだオブを見てみましょう。明らかに場所がおかしいなら、ここで移動するだけで修正できます。
マウスなりテンキーなりで表示を回転させて見やすい位置にしたら、右の"+Z" "-Z"ボタンで移動します。"X" "Y" は普通使用しません。なぜなら、XYはトラモグで修正できるので、大抵はすでに正しい位置になっているからです。
"+-Z"ボタンで移動すると、オブが斜めに移動していきます。これで正しい位置に移動してください。
ゲーム視点の固定カメラで見ると、Zを変えてもオブには何の変化も見られません。視線の方向に沿って移動しているので、遠い近いの分からないモニター上では同じに見えるんです。これがZバッファが難しいことの一因でもあります。


この時、オブの表示されている3Dウインドウはクリックしない方がいいです。誤って右クリックすると、オブジェクトの選択が解除されてしまうことがあります。プラグインのボタンは選択されているオブジェクトのみを移動するので、マルチタイルだと一部分しか移動しなくなります。
一度別な方向などに切り替えて戻すと、再度すべて選択された状態に戻ります。
理解しているなら、マルチタイルの一部のみを選択して移動することも出来るので、必要に応じて利用してください。

移動の際は、"View SampleWalls"ボタンを押しておくと壁を表す枠線が表示されるので、基本はみ出さないように移動してください。オブの形がおかしい・大きすぎてはみ出す時は、壁への干渉は後で修正できるので、シムが干渉しない事を優先して移動しましょう。

もし、この移動で壁や床からはみ出しているときは、下にある"Wall Fix"ボタンを押してください。壁からはみ出している部分が、自動的に壁の前/後 に移動します。
3Dで見るとすごい形になっているかもしれませんが、カメラ視点にすると普通に見えるので心配しないでください。


移動が終了したら、"Save Changes"ボタンで保存します。トラモグと違い、自動保存はされません。また、方向やDrawGroupごとに毎回保存する必要があります。保存せずに切り替えようとすると警告が出るので、保存するか変更を破棄するか選んでください。

Blenderの操作になれている方なら、オブのモデルを直接3Dウインドウで移動しても構いません。この場合も、ゲーム上での位置を変更したい場合でない限り、XYは変更しません。移動モードになったら、キーボードの"z"キーを2度押せばオブのローカルZ軸に沿って移動できます。



上級編 - オブジェクトの形を変更する -


さて、壁へのめり込みや場所の移動で直せるものは修正できましたが、これで直せないものも中にはあります。寝ると体がはみ出してしまうベッドが一番多いパターンでしょうか。この場合は、直接オブの形状を変更する必要があります。
Blenderをそれなりに使える知識が必要ですので注意してください。

ここでは、ベッドの修正を例に解説します。
まずは、付属の修正用.blendファイルを開いてください。中には、いくつかのマネキンが用意してあります。立ち姿、座った姿、寝ている姿です。必要なもの以外は削除するか非表示にするといいでしょう。

この状態で、修正したいベッドを読み込みます。表示は当然 "Sleeping" にして下さい。マネキンを移動してベッドに寝かせるんですが、その際にマネキンの高さを変えないように注意してください。テンキーの"7"で上から見た状態で移動するなりすれば良いでしょう。回転も90度単位で回して下さい。

寝ている位置まで移動させると、当然体がはみ出しているはずです。はみ出している部分のオブを選択して、EditModeに入ります。
EditModeにしたら、はみ出している部分の頂点を選択して移動すれば良いんですが、その際にXY座標を絶対に変えないように注意してください。XY座標はそのまま画像上のXY座標となるので、移動するとZ画像自体がおかしくなってしまいます。
ショートカットで言うと、頂点選択後に "G"(移動モード) "ZZ"(Zを2回でローカルZ座標に沿って移動)となります。移動時に3Dウインドウ左下に "〜 along local Z"と表示されていればOKです。

3D上で凸凹していても大丈夫です。しつこいようですが、Zを変えてもゲーム上の見た目は変わりませんから。ただ、壁は超えないようにして下さいね。

修正が終わったら、忘れずに"Save Changes"で保存してください。これを4方向すべてで行えば終了です。
Blenderの操作が出来れば、手間は多少かかりますがそれほど難しくはないと思います。





今回の記事はここまでです。
後半は投げやり感がすごいですが、まあ動画見れば大体行けるでしょう。
ではまた次回に。



.
この記事へのコメント
初めまして、FReiHeiTと申します。ぐだぐだ置き場様のプラグインを使わせていただき、シムピのスキンとオブジェクトを製作しています。
全盛期に比べプレイヤーが減ってしまったシムピですが、未だにこうしてプラグインを作ってくださったり記事を書いてくださる方がいるというのは大変ありがたいことだと思っております。ぐだぐだ置き場様の存在に心から感謝しております。

今回こちらのプラグインを使わせていただきZバッファ画像の修正を試みたのですが、プラグイン実行後にBMPファイルを見ても変化が見られず、またゲーム上でも壁に侵食したままの状態になっていました。修正後の保存に失敗した(?)と考え調べてみたのですが原因がわからず、自分の力ではどうにもできないと思いお問い合わせさせていただきました。

お忙しいところ大変申し訳ありませんが、何卒ご返信のほどよろしくお願いいたします。
Posted by FReiHeiT at 2016年05月08日 17:13
申し訳ありません、上にコメントさせていただいた内容は自己解決いたしました。

画像がなぜか仮想フォルダ(C:/Users/(ユーザー名)/AppData/Local/VirtualStore)に出力されており、そのためBMP画像に変化が見られないという結果になっていました。
尚、仮想フォルダに出力された画像は壁に侵食しない画像が正常に出力されていました。

お騒がせしてしまい大変申し訳ありませんでした。ありがとうございます。
Posted by FReiHeiT at 2016年05月10日 13:15
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。