2024/04/11(木) [n年前の日記]
#1 [prog][cg_tools] OpenGLでモデルデータを読み込めそうか調べてる。その3
C/C++ とOpenGLでモデルデータを読み込みたい。
wavefront形式(.obj)を読み込んでC言語の配列の形で出力する Pythonスクリプトを書き始めた。頂点情報、UV情報、法線情報を配列の形にして出力するところまではできたけど、複数のマテリアルを割り当てた .obj を読み込んだ際に面情報をどう並べたらいいのかで悩んでしまった。
wavefront形式(.obj)を読み込んでC言語の配列の形で出力する Pythonスクリプトを書き始めた。頂点情報、UV情報、法線情報を配列の形にして出力するところまではできたけど、複数のマテリアルを割り当てた .obj を読み込んだ際に面情報をどう並べたらいいのかで悩んでしまった。
- ポリゴンの各頂点にマテリアル情報(.mtl)から読み込んだRGB値を割り当てるか。
- それとも、マテリアル毎に面情報を分けて持っておいて、マテリアル個数分ループを回して各面情報を処理していくか。
◎ Wings3Dでobjをエクスポート :
Wings3D 2.3 x64 で wavefront (.obj) をエクスポートしてみたら、中に「s 1」という行があって悩んだ。blender でエクスポートした .obj には、そんな行は無いのに…。
_Wavefront .objファイル - Wikipedia
「s 1」はスムージングを有効にする指定らしい。たしかに、Wings3D でエクスポートした .obj を blender 3.6.9 x64 LTS にインポートすると、なんだかスムージングがかかっているような見た目になる。「s 1」が入っていたから ―― スムージングを有効にする行が入っていたから、そんな状態になっていたのか…。
Wings3D上でスムージングを無効にする方法はないのだろうか…。TABキーを叩くとウインドウ上でスムージングの有効無効が切り替わるけれど、これはあくまで作業ウインドウ上の見た目を変えるためだけの機能のようで、エクスポートした .obj には反映されなかった。
線を全選択して、右クリック → エッジ属性の切替 → ハードエッジにする、を選んだら、スムージングがかかってない見た目になった。しかし、コレを .obj としてエクスポートすると、「s 2」「s 3」という行が盛り込まれてしまう…。「s off」になるわけではないのか…。
_Wavefront .objファイル - Wikipedia
「s 1」はスムージングを有効にする指定らしい。たしかに、Wings3D でエクスポートした .obj を blender 3.6.9 x64 LTS にインポートすると、なんだかスムージングがかかっているような見た目になる。「s 1」が入っていたから ―― スムージングを有効にする行が入っていたから、そんな状態になっていたのか…。
Wings3D上でスムージングを無効にする方法はないのだろうか…。TABキーを叩くとウインドウ上でスムージングの有効無効が切り替わるけれど、これはあくまで作業ウインドウ上の見た目を変えるためだけの機能のようで、エクスポートした .obj には反映されなかった。
線を全選択して、右クリック → エッジ属性の切替 → ハードエッジにする、を選んだら、スムージングがかかってない見た目になった。しかし、コレを .obj としてエクスポートすると、「s 2」「s 3」という行が盛り込まれてしまう…。「s off」になるわけではないのか…。
[ ツッコむ ]
以上です。