2017/03/15(水) [n年前の日記]
#1 [ruby] Wavefront形式ファイルを読み込むスクリプトを手直し中
Wavefront形式(.obj)の3Dモデルデータファイルを読み込んで、Rubyで扱いやすい形に整形するスクリプトを手直し中。json や yaml というフォーマットで標準出力に出力できるように変更しているところ。
しかし、出力結果を Ruby + gosu + opengl で描画しようとしたら、テクスチャを貼ったモデルはちゃんと表示されたものの、テクスチャを貼ってないモデルはおかしな表示になってしまって。データを整形するところにバグがあるのだろうか…。
整形部分のバグではなくて、表示に使っていたシェーダがよろしくなかったらしい。テクスチャがあることを前提にして色の計算をしてるから、テクスチャが無いと珍妙な色になってしまうのだな…。
そういう場合はシェーダ自体を切り替えないとダメ、なのかな…。でも、シェーダってそう頻繁に切り替えるものだろうか。モデルデータ側で、必ず何かしらのテクスチャを貼ること、みたいな制限でもつけたほうがいいのだろうか。
しかし、出力結果を Ruby + gosu + opengl で描画しようとしたら、テクスチャを貼ったモデルはちゃんと表示されたものの、テクスチャを貼ってないモデルはおかしな表示になってしまって。データを整形するところにバグがあるのだろうか…。
整形部分のバグではなくて、表示に使っていたシェーダがよろしくなかったらしい。テクスチャがあることを前提にして色の計算をしてるから、テクスチャが無いと珍妙な色になってしまうのだな…。
そういう場合はシェーダ自体を切り替えないとダメ、なのかな…。でも、シェーダってそう頻繁に切り替えるものだろうか。モデルデータ側で、必ず何かしらのテクスチャを貼ること、みたいな制限でもつけたほうがいいのだろうか。
[ ツッコむ ]
以上です。