2013年6月7日金曜日

スカルプテッドプリムについて

webを適当に見た感じ日本語でまともな解説やってるサイトがほぼ無いです
あっても情報が2008年代とかで
大規模な仕様変更が2009年以降におきてるんだけど
その後のまとめ解説が見つけられなかったですよ


というわけで軽く解説



どういうものかってのを3Dやってる人ならこれでわかるって表現だと

UV座標上のピクセルにオブジェクトの位置座標を
RGBで対応させたものがスカルプです




んじゃ実際のスカルプについて適当に

まずはデータ形式から

SLの画像データは32bitのbitmap(RGBA)なので
そこから頂点精度は8bitとなります

んで昔のドキュメントだと頂点数は32*32って解説されてたと思うんですが
実際の形状データは32*32"面"ですので
頂点は33*33です

これは最初のスカルプの仕様が球体のみで
全部のポリゴン終端が収束されてる前提での仕様でした



その後ご存知の通り仕様変更がおきました


データ上33*33ですがプリムパラメータにより

球体         32*33
シリンダー 32*33
トータス     32*32
平面        33*33

とデータ解釈が行われます

其の関係でUVマップは格子状で数量固定にせざるをえないので

昔言われてた"スカルプは頂点の切り貼り厳禁"って話になるわけですな
仕様さえ理解してりゃ制限があるにはあるけど
実際にはいくらでも出来るんですけどね


昔のチュートリアル自由形状UV展開して配置して
アップロードしたものの見た目がいまいちよろしくないってのがあったと思いますが
あれはピクセルデータリード解釈についてきちんとした情報がなかった時代に
試行錯誤到達したですので
最初から仕様通りのUV頂点配置のオブジェクト作ってしまえば
綺麗なデータが作れるというお話です



次はビューワー上の実装でのお話

スカルプマップの画像は最低64*64でないと正常にリードされません
これは前記のとおり頂点解釈が33*33であるためです

んでリードされるピクセルですが
33ってことは基本一個おきリードですが片方の終端は連続リードされます
んで連続リードされる頂点ですが
SLビューワのデータリードは左下原点です

なので上端と右端が2ピクセル分連続リードされます

ってなところですな


次アス比スカルプ

現在ガチ勢が使ってるのは大抵アス比スカルプですな
LOD安定性ってことだと正方形アス比のスカルプはいまいち使いにくいので
アス比スカルプ使う場合がどうしても多くなります

アス比スカルプといっても奇数は配列に出来ないです
あとは四角面総数が1024にならないとあかんです

面数配置のリストはこんな感じ

4*256
8*128
16*64
32*32
64*16
8*128
256*4


んでもってLODについて

LODってのは要は遠距離オブジェクトのポリゴン省略して
レンダリング負荷を減らすための仕組みです

LODはちょいめんどくさい話になるんですが
アス比の場合長い方からLODがかかります

んでもって(シリンダーにした場合の)断面方向は
4頂点以下には絶対にならないようになってます
(テロとかで右クリック選択出来ないオブジェクトを使われないようにするため)
なので角材を組み合わせたオブジェクトとかは
極端なアス比スカルプのほうがいいってことになります




実際にモデリングする際のtips

テクスチャ解像度のコントロールのために
UVを調整するってのが"ほぼ"出来ません
(気合と根性で出来るっちゃ出来るけどツールと腕に依存する)
なので頂点配置数で解像度コントロールすることになります

あとはLODが弱い頂点は形状のアウトラインとしては使いものにならないので
実際に形状として使える頂点数は全体の50%から25%になります
それ以外の頂点は曲線表現の中間調点とかそんくらいの用途です

ってなところかな

あと細かい部分の質問はコメントにでも書いてもらえれば
わかる範囲で返答するかもしれません

以上