Blenderを用いたVRMLとBVHファイルの作成

以下の説明はBlender2.49bで動作確認しています.現在(2010夏)Blenderの新しいバージョンの2.5では VRMLでのエクスポートができないようですが, BVHの出力は下記サイトのPythonスクリプトを使用することで可能です.

はじめに

このドキュメントでは,Acerola3Dフォーマットの 3Dオブジェクトファイルを作成する時に必要となる VRMLとBVHファイルを,フリーの3DCGソフトであるBlenderを使って作成する方法を紹介します.

素材ファイルからAcerola3Dフォーマットのファイルを作成する方法については以下のページを参照して下さい.

このドキュメントではBlenderを使用しますが,他の3DCGソフトでもVRML97での 3Dデータの出力と,BVHによるモーションデータの書き出しに対応していればBlenderと同様に使用することができます.

VRML,BVHについては以下のページで確認しておいて下さい.特にVRMLファイルの拡張子は「.wrl」であるということは覚えておいて下さい.

また,Blenderを使用して実際に3Dオブジェクトを作成する方法についても,このドキュメントでは説明しきれないので,以下のようなサイトを参考にして事前に練習しておいて下さい.

Blenderで金太郎作成

いきなりですが,まずBlenderで作成したいキャラクタを作ります.

ss010_KintaroVrml.png

実際,このドキュメントの作者は3DCGの素人なので,この程度しか作れませんが,上手い人ならもっとずっとましなキャラクタを簡単に作れると思います.

しかし,3DCGをはじめたばかりの人などは,ここまでの作業を完成させるために学ばなければならないことが多数あり,非常に時間がかかる作業になると思います.ですが,この作業については上述した他のページで勉強してもらうこととします.

とりあえずキャラクタ作成作業を省略したい時は以下のファイルを使ってみて下さい.

ここで,いくつかの注意点があるので箇条書きでまとめておきます.

パーツごとにVRMLでエクスポート

次に,Acerola3Dではキャラクタの各パーツ(腕,足,頭,胴体,など)をそれぞれVRML形式でべつべつに書き出す必要があります.

この作業を行いやすくするために以下の図の赤マルでかこってあるボタンを使用してViewport ShadingをWireframeにすると良いかもしれません.

ss020_SelectHead.png

blenderではオブジェクトを選択するにはマウスの右クリックを使います.パーツが複数のオブジェクトで構成される場合はシフトキーを押しながら選択して下さい.あるいはキーボードの「b」を押してからドラッグして範囲選択するとよいでしょう.

選択した部分をVRMLファイルに書き出すには「File」から「Export」を選択し,その中の「VRML97」を選んでVRMLファイルを書き出します.

ss030_ExportVrml1.png

そうすると書き出しの設定をするための小さなダイアログが表示されます.

ss040_ExportVrml2.png

初めてこの機能を使用する時は上の図の赤マルのように「Selection Only」ボタンを押しておいて下さい.

次に保存する時のフォルダとファイル名を指定します.ドライブを変更するには以下の図の赤マルの部分を押して選択して下さい.

ss050_ExportVrml3.png

日本語フォルダなどは文字化けしますが,保存は問題なくできるようです.ここで上手く書き出すことができたかどうかVRMLのビュアで確認してみると良いでしょう.VRMLのビューアは多数ありますが,Acerola3Dを作成するのが目的ならば j3dvrml を使うことをお勧めします.

ss060_VrmlViewer.png

blenderでも他の3DCGソフトでも,そのソフトが提供している機能の全てが書き出したVRMLファイルに反映されるとはかぎらないので,この段階で良くチェックしておくと良いでしょう.

参考までに,実際の上記の作業を行って作成したVRMLファイルをリンクしておきます.

最後の「kin.png」は,胴体部分で使用しているテクスチャ画像です.「body.wrl」を正しく表示させるには,このファイルと同じフォルダの中に「kin.png」を置いておいて下さい.

今回の金太郎では,右腕-左腕,右足首-左足首,右足-左足は同じ形なので,上のファイルのように片方だけ出力して共有して使うことにします.

モーションデータのBVHを作成

今回モーションデータもBlenderを用いて作成してみます.昔はBlenderにデフォルトでBVHを出力する機能があったのですが,現在は利用できないようです.そこで, Blenderでキャラクタなどのアニメーションを作成する時に使用するArmatureというオブジェクトのモーションデータを出力するスクリプトを作成しました.このスクリプトに関するページは以下の場所にあります.

このスクリプトをBlenderの中に読み込むことでArmatureで作成したアニメーションをBVH形式で出力できます.今回は7つの簡単なアニメーションを作ります.それぞれのアニメーションとBVH出力のためのスクリプトが埋め込まれたファイルをリンクしておきます.

上のkintaro_default.blendを開くと以下の図のようなウィンドウが表示されます.

ss070_KintaroBVH.png

上の7つのファイルに保存されているArmatureには11個の骨(Bone)が入っておりそれぞれ名前が付いています.Acerola3Dファイルを作成する時にはその名前も知っておく必要があるので,以下の図に示しておきます.

ss080_KintaroBones.png

これらのArmatureを実際に動かしてみるには「Alt-A」(Altキーを押しながらAキー)を押します.停止するには「Esc」キーを押して下さい.このようなアニメーションを作成する方法については,このドキュメントでは説明しきれないので,blenderの解説サイトなどで調べてみて下さい.これらのモーションデータを書き出すためは,このファイルを開いた時にウィンドウの右側に表示されるテキストエディタの上で「Alt-P」(Altキーを押しながらPキー)を押して下さい.

ss090_ExportBVH1.png

上の図のようにテキストエディタが紫色にかわりBVH書き出しの設定ができるようになります.今回用意したファイルはデフォルトで適切な設定がなされるように調節してあるので,あとは「Export」ボタンを押せばBVHファイルを出力することができます.

ここで一つ注意点があります.書き出される BVHファイルですが,拡張子blendのファイルがblenderに関連付けされており,kintaro_???.blendをダブルクリックして起動した時にはそのファイルと同じフォルダにBVHファイルが生成されるのですが,blenderを起動してからblenderのメニューのOpenで開いた場合にはblenderをインストールしたフォルダに BVHファイルが出力されるようなので,作成したBVHファイルがどこにいったかわからない時は,blenderのインストール場所も探してみて下さい.

今回は変更の必要はありませんが,BVH出力スクリプトの設定項目の意味は以下のようになっています.

BVHファイルが上手く出力されているのが確認できたら「Exit」ボタンを押してスクリプトを終了して下さい.

BVHファイルも書き出しが上手くいっているかどうか BVHビュアを使って確認しておくと良いでしょう.これもAcerola3Dで使用するのが目的のBVHであるならば j3dbvhビュアを使用することをお勧めします.

ss100_BVHViewer.png

参考までに,上記方法で作成したBVHファイルをリンクしておきます.

追加素材

Acerola3Dを作るための素材は主にVRMLとBVHですが,効果音のためのサウンドファイルやサムネール画像なども入れられます. A3EditorによるAcerola3Dファイルの作成(tutorial2) で使用している追加の素材ファイルもリンクしておきます.

サウンドファイルなどの作成方法はここでは説明できないので,他の資料を参考にして下さい.

素材確認

ここまでの作業がすんでいれば金太郎のAcerola3Dファイルを作成するための素材がすべて出揃います.

ss110_SozaiFiles.png

Acerola3Dファイルを作成するのにblenderのファイルは必要ありませんが,ここに置いておいても害はありません.実際自分で0からキャラクタを作る場合は,表示確認をしながら何度も修正する作業が必要になってくるので,同じ場所に置いておくのが楽だと思います.金太郎のbodyのテクスチャファイルの kin.pngも忘れず入れておいて下さい.

おまけ

BlenderのVRML97書き出しプラグインは少し不完全なところがあります.ポリゴンのデコボコが気になります.そんな時は,Blenderの VRML97出力の非公式なプラグインを公開してくれている以下のサイトを利用してみると良いみたいです.

このサイトのプラグインを利用すると以下の図のようにポリゴンの出力をなめらかにすることができるようになります.

kintaro2.a3.png