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を勉強して頂点シェーダとピクセルシェーダを、などと夢想。
_mieki256/tinydaeparser
モデルデータを json で出力して使ってもいいし、require_relative 'tinydaeparser' して daeファイルを直接読んでもいいし…。まあ、好きなやり方で使える、かなと。
モデルデータを読み込むだけなら、先日、 _Wavefront形式(.obj, .mtl)の3Dモデルを読み込むスクリプト を書いているので、ソレを使えばいいけれど。Wavefront形式は頂点カラーを含めることができないようで。COLLADA形式なら頂点カラーを含めることもできる点が大きな違い、だろうか。たぶん。
もっとも、現状では複数オブジェクトに対応してないし、複数のマテリアルを使った場合にも対応できてないので…。あくまで、描画の実験用に使えなくもないですよ、てな状態ですが。
ひとまず、頂点配列や頂点カラー配列は取得できるようになったから…。HLSLを勉強して頂点シェーダとピクセルシェーダを、などと夢想。
◎ blenderからdaeファイルをエクスポートする際の注意点。 :
最初、blender から .dae をエクスポートして描画しようとしたところ、全然違う場所に描画されて悩んだり。
オブジェクトを移動・回転・拡大縮小すると、一見そこに存在するように見えても、内部では全然違う別の場所、異なる座標で存在している、という状態になるのだな…。
そんな時は、オブジェクトを選択した状態で、下のほうのメニューから、オブジェクト → 適用 → 位置・回転・拡縮、を選んでやればいいらしい。
Wavefront形式(.obj)でエクスポートした際は、そのあたり適用した状態でエクスポートしてくれるようで、先日実験していた時はモデルデータの位置がおかしいことに気づかなかったのだけど。COLLADA形式(.dae)でエクスポートすると、内部で持ってる座標値等は極力弄らず、座標変換するためのMatrix情報を付加した状態でエクスポートするっぽい。故に、今回変な位置に描画されてしまったのだろう。たぶん。
オブジェクトを移動・回転・拡大縮小すると、一見そこに存在するように見えても、内部では全然違う別の場所、異なる座標で存在している、という状態になるのだな…。
そんな時は、オブジェクトを選択した状態で、下のほうのメニューから、オブジェクト → 適用 → 位置・回転・拡縮、を選んでやればいいらしい。
Wavefront形式(.obj)でエクスポートした際は、そのあたり適用した状態でエクスポートしてくれるようで、先日実験していた時はモデルデータの位置がおかしいことに気づかなかったのだけど。COLLADA形式(.dae)でエクスポートすると、内部で持ってる座標値等は極力弄らず、座標変換するためのMatrix情報を付加した状態でエクスポートするっぽい。故に、今回変な位置に描画されてしまったのだろう。たぶん。
[ ツッコむ ]
#2 [prog] NVIDIA FX Composer を試用してみたり
NVIDIA FX Composer なるソフトを使うと、HLSLを書いてその場でコンパイルと表示確認ができる、てな話を見かけたので試用してみようと。環境は Windows10 x64。
_FX Composer | NVIDIA Developer から、FX_Composer2_Shader_Debugger_Bundle_2.53.0524.1905.exe をダウンロードして実行。ウイザード形式でインストールが進む。途中で名前と所属の入力を求められるけど…。以下を参考にして入力。
_ぼく用あれこれまとめ - NVIDIA FX Composer 導入メモ
インストール後、以下を参考にしながら操作。
_FX Composer 2.5再入門: 新 masafumi's Diary
_ぼく用あれこれまとめ - NVIDIA FX Composer 2 の使い方
まずはモデルデータをインポート。インポートできるフォーマットは、.dae、.obj、.x、.fbx、.3ds等。先日から実験に使ってる .dae を流用することにする。
インポートの仕方は、左側の下のほうのタブの中に「Assets」てのがあるからソレに切り替えて、Modelsを右クリック → Import。
次にシェーダ(?)を追加。Effects → Add Effect。色々な種類が選べるけど、ひとまず HLSL FX を選択 → Next → Phong を選択 → Next → Finish。これで、あらかじめ同梱されているのであろうシェーダのサンプルが追加される。同時に、対応したマテリアル(Material)も追加される。
追加された Material をドラッグして、右下のほうで3D表示されているモデルの上で落とすと、マテリアルが反映される。
テクスチャ画像を変更したい時は…。まずは画像を追加。Textures を右クリック → Add Texture From File → 画像を選択。
マテリアル設定を変更してテクスチャを差し替える。先ほど追加されたマテリアルをクリックすると、Propertiesウインドウの中に Diffuse Texture てのがあるから、ファイル名をクリック → 右の「...」ボタンをクリック → 先ほど追加した画像を選択。これでテクスチャが変更される。
要するに、何かを追加したい時は、Assets に並んでる何かを右クリック、みたいな。Lights 等も追加できる。
と、書いたところで気がついた。コレ、ほとんどは、メニューの Create から追加できるのだな…。
_FX Composer | NVIDIA Developer から、FX_Composer2_Shader_Debugger_Bundle_2.53.0524.1905.exe をダウンロードして実行。ウイザード形式でインストールが進む。途中で名前と所属の入力を求められるけど…。以下を参考にして入力。
_ぼく用あれこれまとめ - NVIDIA FX Composer 導入メモ
インストール後、以下を参考にしながら操作。
_FX Composer 2.5再入門: 新 masafumi's Diary
_ぼく用あれこれまとめ - NVIDIA FX Composer 2 の使い方
まずはモデルデータをインポート。インポートできるフォーマットは、.dae、.obj、.x、.fbx、.3ds等。先日から実験に使ってる .dae を流用することにする。
インポートの仕方は、左側の下のほうのタブの中に「Assets」てのがあるからソレに切り替えて、Modelsを右クリック → Import。
次にシェーダ(?)を追加。Effects → Add Effect。色々な種類が選べるけど、ひとまず HLSL FX を選択 → Next → Phong を選択 → Next → Finish。これで、あらかじめ同梱されているのであろうシェーダのサンプルが追加される。同時に、対応したマテリアル(Material)も追加される。
追加された Material をドラッグして、右下のほうで3D表示されているモデルの上で落とすと、マテリアルが反映される。
テクスチャ画像を変更したい時は…。まずは画像を追加。Textures を右クリック → Add Texture From File → 画像を選択。
マテリアル設定を変更してテクスチャを差し替える。先ほど追加されたマテリアルをクリックすると、Propertiesウインドウの中に Diffuse Texture てのがあるから、ファイル名をクリック → 右の「...」ボタンをクリック → 先ほど追加した画像を選択。これでテクスチャが変更される。
要するに、何かを追加したい時は、Assets に並んでる何かを右クリック、みたいな。Lights 等も追加できる。
と、書いたところで気がついた。コレ、ほとんどは、メニューの Create から追加できるのだな…。
◎ シェーダのソースを眺めてみる。 :
なんだかよく分からない情報が並んでるな…。と思ったら、コレ、Properties に表示する項目の情報も列挙されているのだな。
[ ツッコむ ]
#3 [prog] Live Coder の HLSL版もあるらしい
Live Coder というのは、OpenGL の GLSL をビシビシ書けばその場で結果を出してくれるツール、という説明でいいのだろうか。
_Live Coder
_2013/06/12 頃に、Windows7環境でインストールして試用していた模様。
HLSL版も公開されてることに今頃気が付いた。気になる。lc_hlsl20121228.zip をDLして解凍。
_githole/Live-Coder: Live Coder is a realtime GLSL editor/viewer mainly for demosceners. によると、
_OpenAL: Cross Platform 3D Audio
_Simple DirectMedia Layer - SDL version 1.2.15 (historic)
_The OpenGL Extension Wrangler Library - Browse /glew/1.7.0 at SourceForge.net
livecoder.exe を実行。凄い感じの映像が出てきた。このソースでどうしてこうなるのか分からないけど、とにかく凄い。しばらく映像に見入ってしまった…。
_Live Coder
_2013/06/12 頃に、Windows7環境でインストールして試用していた模様。
HLSL版も公開されてることに今頃気が付いた。気になる。lc_hlsl20121228.zip をDLして解凍。
_githole/Live-Coder: Live Coder is a realtime GLSL editor/viewer mainly for demosceners. によると、
Requirement: OpenAL 1.1 SDK, SDL 1.2, GLEW 1.7.0と書いてある。インストールしておいたほうがいいのかな…。lc20121208.zip をDLして解凍したら、oalinst.exe とか入ってたけど…。githole/Live-Coder: Live Coder is a realtime GLSL editor/viewer mainly for demosceners. より
_OpenAL: Cross Platform 3D Audio
_Simple DirectMedia Layer - SDL version 1.2.15 (historic)
_The OpenGL Extension Wrangler Library - Browse /glew/1.7.0 at SourceForge.net
livecoder.exe を実行。凄い感じの映像が出てきた。このソースでどうしてこうなるのか分からないけど、とにかく凄い。しばらく映像に見入ってしまった…。
[ ツッコむ ]
以上、1 日分です。