2016年現在、この記事の内容は古くなっています。新しいバージョンのBlenderを使う方法は、"Blender zバッファ シムピ"で検索してください。
3DCGの統合ソフトウェアBlenderを使って、3Dでモデリングしたオブジェクトのシムピ用Zバッファ画像を得る試み
ここではBlenderのインストールや初期設定はすでに済んでいるものとして、出来上がった3DモデルのZバッファを画像ファイルとして出力する流れを追ってみます。
機能の名称直後に記述した( )内の英語表記は、英語表示時の名称です
ここで使用しているBlenderのVarsionは、旧版の 2.49b(2.4系の最終Varsion)
Ver.2.5以後のものとは、インターフェイスや操作が異なる部分があります
このページではノードを使った方法を試していますが、Mistを利用したレンダリング画像(world背景色を白[FFFFFF]、objectのマテリアルを黒[000000]でspecular0、光源無し)を作成するほうが、濃度の調整などしやすいようです。(2012/04/15 追記)
準備
- Blender窓はデフォルトでは起動すると画面いっぱいの大きさになります
Blender窓とこのページなど並べて見比べながら操作したい場合は、起動オプションを指定してBlenderを立ち上げる必要あり- Windows版
blender.exeのショートカットを作成、プロパティを表示して、「リンク先」のファイルパスの後ろに半角スペースを1つ入れた後に起動オプションを書き込む(Blenderのフォルダパス)\blender.exe -p 0 0 1280 1024
exeの後の-pからが書き込む分。
数字は左から、x, y, 窓横幅, 窓高さ。(xとyはモニタ上での表示開始位置。左下がx0,y0なようです)
- Windows版
- アウトライナーウインドウを表示しておくと、3Dビューに何があるのか見やすいらしい
(オブジェクトなどの名称がツリー状に並んで表示される) - 3Dビューでオブジェクトにパースがついている状態だったら、テンキーの5を1度押す
3Dビュー上での視点がシムピと同じパースのつかない平行投影(Orthographic)になりました
(カメラの視界設定は別になってます。後の項目で説明)
レンダリング画像の出力設定
画像の出力サイズ設定を行います
- F10キーを押しボタンウインドウをシーンに。ボタンウインドウヘッダのアイコンから、オレンジの空の写真のようなレンダーボタンを押す。下に出たタブのうちフォーマットを選択。
- 画像出力サイズを設定。通常のレンダリング画像もZバッファ画像もここで設定した大きさに。トラモグで扱う画像サイズの136×384pxに設定します
- 画像出力ファイル形式。通常のレンダリング画像をオブジェクトに使用する場合に設定します。
そのまま使用する場合はBMP、ペイントソフトなどで加工する場合はアルファチャンネルも保存できるPNGあたりに(Zバッファ画像のファイル形式は別途設定になります)
BMPの場合はアルファチャンネルの設定は無効になります
通常レンダリング画像をシムピオブジェクトに使用する場合、大きめに出力して画像縮小専用ソフトで縮小した方が精細になる場合があります。その場合は倍率を計算して大きく出力するのがよいでしょう(1/2に縮小するなら272×768px)
Zバッファの画像は原寸で出力しておいた方が、縮小時のぼけが奥行きに影響という心配がなくなるかもしれない
アンチエイリアスの設定
Zバッファ画像の出力自体には関係ない設定です。
通常のレンダリング画像をオブジェクトに使用する場合に設定します
- 画像形式の設定を行ったのと同じ、ボタンウインドウのシーン(F10)-レンダーボタンを開く
レンダータブのOSAボタンがオンになっています。これがアンチエイリアスの設定です
出力した画像をペイントソフトでレタッチする予定がある場合など、アンチエイリアスを効かせたくない場合はOSAボタンをOFFに
- アンチエイリアスを使用する場合は、OSAボタン直下の数字ボタンで、アンチエイリアスの品質を設定
数字が大きくなるほど品質はよくなりますが、レンダリングの時間は多少長くなります - アンチエイリアス使用時はもうひとつ、背景色とアンチエイリアスの関係について選択。左下の3つ並んだスイッチをキー(Key)ボタンをON
基準の立方体を作る
シムピ1タイル分の比率で立方体を作り、カメラ設定やモデルの配置の基準にします
- 起動した時に表示されている立方体(Cube)を使います。
- Blenderでモデリングしていた場合など初期の立方体が無い場合は新たに作成
まず追加される位置を原点にするために、3Dビュー上でshift+C→Cキーを押す。
スペースキー→追加(Add)→メッシュ(Mesh)→立方体(Cube)で、立方体が作成されます
- Blenderでモデリングしていた場合など初期の立方体が無い場合は新たに作成
- 立方体を選択してTABキーを押しエディットモードにはいります
- 辺の長さを表示するために、ボタンウインドウを編集(Edit)にし、タブのツール2(Mesh Tools More)内の右側、辺の長さボタン(Edge Rength)をクリック。選択中の立方体に辺の長さが表示されました
- ここで立方体の一辺の長さが2.000になっていない場合はSキーで拡大縮小してください
- 立方体の底面がZ軸(高さ)0になるように移動します
- 1タイル四方の比率になるように、立方体の高さを調節
- もういちどAキーなどで一度選択解除し、立方体の上の面だけ選択したあと、テンキー1の視点にします
ビュー→平行視点(Orthographic)にしてあります - 選択した上の面を移動して縮めます。Gキー(移動)を押す→Zキーを押す(Z軸上の移動に制限)→-0.36と入力してEnterキー
トラモグのオブジェクト画像の後ろに表示されているグリッドの大体の比率、幅奥行き2:高さ1.64の大きさができました。これをシムピ上と同じ俯瞰角度のカメラで見ると、あのグリッドにすっぽり収まる形になりました
出力画像を縮小してトラモググリッドと重ねてみました
辺の長さが表示されたままだと画面が見づらいので、辺の長さボタン(Edge Rength)をもう一度クリックして非表示に。
- もういちどAキーなどで一度選択解除し、立方体の上の面だけ選択したあと、テンキー1の視点にします
1.65でもいいかも
カメラの設定
次はカメラの設定です。シムピ内の視点と同じになるように調整します。
3Dビュー上にカメラがない時は、スペースキー→追加(Add)→カメラ(Camera)でカメラを出しておいてください。
カメラの位置と角度を調整
- 3DビューをTABキーでオブジェクトモードにし、Nキーを押してプロパティ(Transform Properties)の小窓を表示しておきます
- カメラを選択し、位置と角度を調整します
ここでテンキーの0を押し3Dビューをカメラ視点にしても、上で作った1タイル四方のcubeにパースがついている上に、レンダリングする範囲からはみ出してしまっている状態です
カメラの投影方法の設定は3Dビューのものとは別なので、次はそちらを設定します
カメラの投影方法と縮尺の調整
引き続きオブジェクトモードでカメラを選択した状態でF9を押し、ボタンウインドウの編集(Edit)タブを表示します
- ボタンウィンドウに、カメラ(Camera)というタブが表示されています。
左上の平行投影(Orthographic)のボタンをONに - この平行投影ボタンをONにすると、ボタンすぐ上の項目がScaleに変わります
ここの数値を調整し縮尺を変更して、トラモグ上で1タイルのオブジェクトとして丁度いい大きさになるようにします
レンダリングと微調整を繰り返し、以下の数値にしましたScale: 8.45
Zバッファを表示する
ノードエディター(Node Editor)を使ってZバッファを表示します
ノードを追加する
ウインドウのひとつをノードエディター(Node Editer)に変更。
開いたばかりのノードエディターウインドウには何もありません
- メニューバーのコンポジットノードボタンを押し、その右に現れるノード使用ボタンを押す
Render Layersとcomposite、ふたつの小窓(ノード)が出現
(これまでの作業でレンダリングを行っていた場合、この2つのノード内にレンダリング画像が小さく表示されていることもあります) ここにZバッファ画像出力の為のノードを足していきます- ノードエディター内の何もないところで、右クリック→追加(Add)→ベクトル(Vector)→マップ値(MapValue)。MapValueノードを追加
- 同じように、右クリック→追加(Add)→変換(Convertors)→グラディエーション(ColorRamp)。ColorRampノードを追加
- もうひとつ、右クリック→追加(Add)→出力(Output)→ファイル出力 (File Output)。File Outputノードを追加
- ノードを繋いでいきます
上の手順で追加したノードを、画像のような順番で並べます。(左からRender Layers、MapValue、ColorRamp、File Outputの順)
- Render LayersノードのZの隣の丸をドラッグすると線が延びるので、Map Valueの左Value丸に接続
- Map Valueノードの右上Valueから ColorRampノードの左下Facに接続
- ColorRampノードの右上のImage丸からFile OutputノードのImage丸に接続
これで接続は完了。
次はノード内の各パラメータを設定していきます
ノードの値を設定
各ノードの設定。
上の項目で右クリックから追加した、Map Varue、Color Ramp、File Outputの3つのノードを設定していきます
- File Outputノードの設定
最初に、Zバッファ画像の保存先などを決めておきましょう- File Outputノード中にあるフォルダアイコンをクリックして、ファイル出力先を指定します
日本語のフォルダは文字化けしてしまうので、英数字名のフォルダを選択
(フォルダアイコン右の欄に、ファイルパスを文字入力することもできます) - 保存先のすぐ下の欄が保存画像形式の選択です。初期値はPNGになっています
欄をクリックするとドロップダウンが出るので、そのまま使えるようにBMPを選択します
- File Outputノード中にあるフォルダアイコンをクリックして、ファイル出力先を指定します
- Map VarueノードでZバッファ画像を表示
まずは1度Zバッファ画像を見てみましょう。
一番左に配置したRender Layersノード右下のアイコンをクリックすると、Render Layersノードとcompositeノード、File Outputノードに画像が表示されます。
このうち、File Outputノードに表示されているものがZバッファ画像なのですが、真っ白です- Map VarueノードのSize:を調整します
初期値は1.000ですが、これを一度最小の0.001まで下げてもう一度をクリックすると、File Outputノードに黒一色のシルエットが表示されました - Map VarueノードのSize:の値を上げていきます
0.01ずつ数値を上げていくと、白背景に黒く塗りつぶされていたZバッファ画像が白黒グラデーションの見慣れたZバッファ画像になってきます
シムピデフォルトのオブジェクトのZバッファ画像と比較して、大体似たグラデーションになるように調整します(数値大→薄くなる)
以下の数値で止めて、あとはColor Rampノードで調節することにしましたSize: 0.072 - Color Rampノードの調節
Color Rampノードの白黒グラデーションのバーの左右端に、1ドット幅の移動できるラインがあります
これの幅を狭めてZバッファ画像の白黒の濃淡を調節し、シムピデフォルトオブジェクトのZバッファ画像と同じか近くなるようにします
(ラインが掴みづらい場合は、マウスホイールでノードエディターの表示を最大化)
デフォルトオブのZ画像と比較調整して、以下のようにしました
- Map VarueノードのSize:を調整します
上記の濃淡の調整は、x2.00 y2.00 z0.00の平面(plane)でZバッファ画像を出力したものと、丁度1タイル平面のデフォルトオブジェクト"「ブーティーバウンス」ダンスフロア"(トラモグでdancefloor)のZバッファ画像を比較して行いました
Render LayersノードのAlphaのところにもFile Outputをつなげるとアルファチャンネル画像を出力できます
あとで縮小や加工をする必要がない時は便利かも
Zバッファ画像を出力する
基準の立方体に合わせ、オブジェクト用の3Dモデルを配置し、Zバッファ画像を出力します
同じファイル内にすでにオブジェクト用のモデルがある場合は、オブジェクトモードで基準の立方体をガイドに配置し、ノードエディターからZバッファ画像を出力です。(再出力時も同じファイル名で出力され、上書き警告は出ないので気をつけて)
Zバッファの画像を出力するだけでしたら、光源やマテリアルの設定は必要ありません
ノードの設定を行ったBlenderファイルに、別のファイルからモデルを読み込んでZバッファ画像を出力することもできます。専用のセーブファイルとしてとっておくと便利。
他のファイルのモデルを読み込む
別のモデラーで作ったデータや、他の.blendファイルにあるモデルを読み込む方法
- 他の.blendファイルから
3Dビューをオブジェクトモードにし、ウインドウ上部のメニュー→ライブラリ を選択(ショートカットはShift+F1キー)- ファイル選択時のような画面が出るので、一番上の欄で読み込みたいモデルのあるファイルを指定
- 中ごろの、Camera Image Ramp等と並んでいる欄からObjectを選択。ファイル内に存在するオブジェクトの一覧がでるので、読み込みたいモデルを選択
- ウインドウのヘッダーにAppendとリンクというボタンがあるので、AppendをONにしておきます
- 右上のLoad Libraryをクリック。モデルが読み込まれました
この方法で、他のblendファイルに存在するカメラやライト、マテリアルのみ読み込むこともできます
Appendはオブジェクト等をコピーします。リンクで読み込んだ場合はセーブデータは大きくならないのですが、編集を再開した場合読み込み元ファイルがないとオブジェクト等が見えなくなります
- Metaseqoiaで作ったモデルを読み込む
MQOファイルはデフォルトではインポートできないので、有志作成のスクリプトを導入します
(導入の方法は各スクリプトの説明を)
アドオンを導入したら、ファイル(File)→インポート(Import)からスクリプトを呼び出して使用します- Blenderは「高さ:Z軸, 幅:X軸, 奥行き:Y軸」ですが、
Metaseqoiaでは「高さ:Y軸, 幅:X軸, 奥行き:Z軸」です
アドオンの設定で、読み込み時に回転させることができるものもあります - Blenderの基本メッシュの立方体(cube)は一辺の長さ2.000ですが、
Metaseqoiaで特に指定せずに追加した立方体は一辺200.0です
そのまま読み込むとたいてい大きいので、importアドオンの設定に縮小設定があるようなら利用すると便利
- Blenderは「高さ:Z軸, 幅:X軸, 奥行き:Y軸」ですが、
- OBJファイルはアドオンを追加しなくてもインポートすることができますが、テクスチャはBlenderで指定しなおすことになるかもしれません(うろおぼえ)
参考用ファイル
ここまでのBlender設定を行ったセーブファイルを用意しました
参考にどうぞ。
関連リンク
スクリプトはBlender2.49b、Python2.6.2で動作確認
Metaseqoia(.mqo)のファイルを扱うスクリプト
- MQOインポーターv1.04
豆腐アラモード :入力のみ。2.49bで動作確認。Blenderカテゴリ内。 - メタセコイア(.mqo)インポーター/エクスポーター
Work List - とあるPGの研究記録Ⅱ(レコーダー) : 読み込み書き出し両方可。2.4x用と2.5~2.6x用があります