どうも星姫です。
今回こそ興味深い話になるはずなので、ぜひ楽しんでいってください。
長らくお待たせしました。
ここのところ、シンプルスター先生は個人でサーバを立ち上げたり
ネットワーク周りの勉強をしていたりして、回り道をしていました。
以下の記事は Blender 2.49b のものなので、最新の Blender 2.55(2010/12現在)の情報は載ってません。
誰でも簡単に解析できるXML形式で Blender 2.55 からモデルデータを手に入れたい方はダウンロードへお越しください。
以下は、エクスポーターを作りたいと思う方の道しるべ程度の内容なので、特に読む必要はありません。
さて本題に入ります、Blenderのエクスポーターを触り、モデルデータを出力するのが今回のレッスンです。
まず本レッスンの概要を説明しましょう。
この三つです。
では、@既存のエクスポーターを調べることから始めてみましょう。
エクスポーターがある場所は、ディフォルトならば以下の場所になっています↓
C:\Users\ユーザ名\AppData\Roaming\Blender Foundation\Blender\.blender\scripts
こちらはフォルダの中の様子です、.pyという拡張子のファイルがいっぱいありますね。
この中で、赤枠で示したDirectX用のエクスポーターを開いてみましょう。
読解していくと、最初の部分はユーザインタフェース(UI)の設定であることがわかります。
UIとはコレのことね↓
UIを縦長に作ると使いづらいと思ったので…
上記のように横長に変更してみました。
(pythonは良く知らないけど、時間をかけて読めば、誰でもUIの形を変更するくらい簡単です!)
さて、基本どんなエクスポーターにも「シーンの解析」という一文が書かれます。
探してみると以下の文が見つかりました。↓
シーンからオブジェクトリストを取り出しているようです。
もう少し読み進めていくと、メッシュの出力を行っている部分
を発見できます。
…と、こんな感じで解析を続けていき、ある重大なことに気付きました。
なんと、マルチテクスチャのUV座標情報はエクスポーターからは取り出せないらしいのです。
もっと調べれば、解決策があるのかもしれませんが…なんだか面倒なので諦めました。
その代わり、自分でテクスチャ設定を行えるツールを用意しましょう。(いやいや、そっちも面倒だろうと…)
さてさて、エクスポーターの解析の次はA独自フォーマットを考える番です。
形式はXMLに決めているのですが、何故XML形式が良いか説明しましょう。
それは…次のサイトで説明されている通りです(雑で申し訳ない!)
「@IT:XMLの基礎を理解しよう〜これだけ知っていれば大丈夫〜」
XML形式に利点を感じるのは、C#アプリにおいてXmlElementクラスを使って要素に簡単にアクセスできるからです。
ということでXML形式でいきましょう。
以下がSimplestarが独自で考え出した、Blenderからの中間モデルデータフォーマットです。
もっと下の方でデータを確認する方法があるので、こちらは参考程度にどうぞ。
中間!?と聞いて驚く方もいると思いますが、とりあえずBlenderからデータを全部出してしまいます。
必要に応じてゲームに必要なモデルデータをこのファイルから作成するのです
実際に使用するデータを得るにはコンバーター(データ変換器)が必要になりますが、それは次回にやりましょう。
Simplestar中間モデルデータフォーマット
さてさて、フォーマットが決まったらエクスポーターを作ってみましょう!
ということで、上記のフォーマットを出力できるエクスポーターを作ってみました。
コードを読解して、必要な部分を修正しただけなので制作過程はパスします。
使い方は先ほど紹介した、.pyファイルがいっぱい入っているscriptsフォルダの中に、SimpleStarExporter.pyファイルを置きます。
その後Blenderを再起動すると、File→Exportで次の
SimpleStar (.xml)の項目が現れます。 これを選択して、XMLファイルを出力してください。
XMLファイルを確認するには、「XML Notepad」を使います。
使い方については以下のサイトを参照
こんな感じで、モデルデータを確認することができます。
これを見てフォーマットを確認した方が確実で、分かりやすいですね。
上の方で、定義した文書は参考程度に留めておいてください。
実際に使用するデータを出力するコンバータの作成と、モデルデータの確認は次回にやりましょう。
それでは次回をお楽しみに!
2010/08/13 初記。
2010/08/22 追加。
2010/09/05 追加。
2010/09/23 修正。