mieki256's diary



2017/03/31(金) [n年前の日記]

#1 [dxruby][gosu][ruby] COLLADA形式の3Dモデルを読み込むRubyスクリプトを書いた

ここ最近、 DXRuby や gosu + opengl を使って3Dモデルの描画を試しているのだけど、3DCGソフトで作成したモデルデータを読み込んで描画できると、実験としては色々都合がいいので、COLLADA形式(.dae)の3Dモデルデータを読み込めるRubyスクリプトを書いてみたり。

_mieki256/tinydaeparser



モデルデータを json で出力して使ってもいいし、require_relative 'tinydaeparser' して daeファイルを直接読んでもいいし…。まあ、好きなやり方で使える、かなと。

モデルデータを読み込むだけなら、先日、 _Wavefront形式(.obj, .mtl)の3Dモデルを読み込むスクリプト を書いているので、ソレを使えばいいけれど。Wavefront形式は頂点カラーを含めることができないようで。COLLADA形式なら頂点カラーを含めることもできる点が大きな違い、だろうか。たぶん。

もっとも、現状では複数オブジェクトに対応してないし、複数のマテリアルを使った場合にも対応できてないので…。あくまで、描画の実験用に使えなくもないですよ、てな状態ですが。

ひとまず、頂点配列や頂点カラー配列は取得できるようになったから…。HLSLを勉強して頂点シェーダとピクセルシェーダを、などと夢想。

blenderからdaeファイルをエクスポートする際の注意点。 :

最初、blender から .dae をエクスポートして描画しようとしたところ、全然違う場所に描画されて悩んだり。

オブジェクトを移動・回転・拡大縮小すると、一見そこに存在するように見えても、内部では全然違う別の場所、異なる座標で存在している、という状態になるのだな…。

そんな時は、オブジェクトを選択した状態で、下のほうのメニューから、オブジェクト → 適用 → 位置・回転・拡縮、を選んでやればいいらしい。

Wavefront形式(.obj)でエクスポートした際は、そのあたり適用した状態でエクスポートしてくれるようで、先日実験していた時はモデルデータの位置がおかしいことに気づかなかったのだけど。COLLADA形式(.dae)でエクスポートすると、内部で持ってる座標値等は極力弄らず、座標変換するためのMatrix情報を付加した状態でエクスポートするっぽい。故に、今回変な位置に描画されてしまったのだろう。たぶん。

以上です。

過去ログ表示

Prev - 2017/03 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project