Facevarying attribute in PointsPolygons

by syoyo

MOSAIC(blender -> RIB) エクスポータの吐く RIB でハマりました.

テクスチャ座標を  s, t で与えるのだけれども、

これだとこんな絵になる(aqsis, 3delight)
st.png

が、MOSAIC の出す RIB は “facevarying” というキーワードも付くようになっていて、

これはべつに無視していいキーワードだろうと思って lucille で対応していたら、
じつはこんな結果に変わってしまうのが正解みたい(3deligt の結果).
facevarying_st.png

要は facevarying が付いていると、vertex index で間接参照されないでパラメータが各頂点に振られるという振る舞いになるようだ.
(0->3->2->1 の順でパラメータ s, t の各要素がアクセスされるのではなく、0->1->2->3 の順でアクセスされる)

RIB はもう限界

問題は、RI spec 3.2 では facevarying の仕様が定義されていないことなんですよね.
aqsis とか 3delight は prman のふるまいなどをインポートしたりして対応しているみたい.
逆に 3delight で発案された(?) 仕様が prman に入ることもあるみたい.
そんなわけでもう(公開されていない RIspec の)仕様は泥沼化しているような印象があり、
そのためかどうかは判りませんが、今公開されている RIspec ももうきちんとアップデートされることも期待できないと思います.

正直、今後はこんなフォーマットには付いていけないですね.
まあ、もともと仕様書として見てもかなり記述があいまいだし.
他のレンダラと比較して結果を確認できるという利点から RIB を採用してみましたが、
そろそろ RIB に見切りをつける時期だと思っています.
(互換レイヤとしてある程度は残しておくつもりですが)

かと言って他に良いフォーマットがあるかというと、じつはないわけで.
そのため、オープンで継続的にアップデートされる、次世代レンダラ向けなフォーマットを提案して、
lucille に限らず今後のレンダラ用フォーマットのデファクトスタンダードを狙おうと、
某プロダクションとかを巻込んで今画策しようとしています.

Advertisements