1/1
Metasequoia→OBJ→python cgkit
metasequoia pythonを触りはじめて、勉強になっています。メタセコイアからOBJ出力をしておいて、cgkitでのシーンをメタセコイアから出力するスクリプトがなんとかできた。
ドキュメント内の一つのオブジェクトにマテリアルが複数割り当てられている場合、cgkit側で、matidをつかって調整する。
うまくいかないのは、三角ポリゴンに分割されていないからだということに気づくのに時間かかりました。
メタセコイアでつくったモデルをすべて選択して「三角形化」しておくこと。それから、OBJエクスポートする。
つぎに、metasequoia pythonでcgkitシーンを出力する。
若干、models[4].geom.newVariable("matid", UNIFORM, INT)とmatidを設けてあげなければならない部分もあるが、サンプルのタンクは3Delightでレンダリングできました。
ありがとうございます。
matid
各オブジェクトのジオメトリがmatidを持っているかどうかを調べてみた。
なるほど、本家のチュートリアル参考になりました。これでメタセコイアpythonを使って、cgkitのシーン出力できそうです。ありがとうございます。
>>> from cgkit.all import *
>>> load("sample.obj")
>>> listWorld()
Root
+---obj1 (TriMesh/TriMeshGeom)
+---obj2 (TriMesh/TriMeshGeom)
+---obj3 (TriMesh/TriMeshGeom)
>>> objs=["obj1","obj2","obj3"]
>>> model=worldObjects(objs)
>>> model
[
,
0x0330E8A0>, ]
>>> for s in model[0].geom.iterSlots():print s
...
N
cog
faces
inertiatensor
matid
st
verts
>>> for s in model[1].geom.iterSlots():print s
...
N
cog
faces
inertiatensor
st
verts
>>> for s in model[2].geom.iterSlots():print s
...
N
cog
faces
inertiatensor
st
verts
>>>
matidを確かめる
>>> model[0].geom.hasSlot("matid")
True
>>> model[1].geom.hasSlot("matid")
False
>>> model[2].geom.hasSlot("matid")
False
>>>
Metasequoia→OBJ→python cgkit 完成!!
メタセコイアのPythonを使って、cgkitのシーンファイルを作成するスクリプトを作ってみた。メタセコイア・ドキュメント内のオブジェクトは三角形化しておく。カメラ位置を決めて、metasequoia pythonスクリプトを起動。マテリアル数と、オブジェクト数を確認し、カメラ位置を元にcgkitのシーンファイルを出力する。
ライトについては適当。スポットライト1つとポイントライト2つの計3つ。
シェーダを書き換えたり、レイトレーシングなど、レンダリングの細かい設定は後で、好きなように調整できる。カメラ位置を調整しながら、3Delightでレンダリング、便利になりました。
メタセコイアから別途、OBJ出力しておかなければならない。オプションはすべてチェックを入れておく。また、テクスチャ画像ファイルは、cgkitシーンファイルと同じところにおいておかなくてはいけない。
OBJMaterialを利用しているので、Viewer.pyでのOpenGLビューワではテクスチャは表示されない。毎回レンダリングすることになります。サクッと表示されるとうれしいですね。後は出力サイズを調整したり、試していくことで勉強になります。
メタセコイア python cgkit出力
metasequoia pythonでcgkitのシーンファイルを出力するテストをしてみる。影や光の具合は、レンダリングして調整していく必要がある。
メタセコイアのサンプル、tankをOBJで出す。三角形化しておく。カメラ位置を決めて、メタセコイアpythonでcgkit出力。3Delightでレンダリングした。
面白くなってきました。ありがとうございます。
1/1