いくつかモデルを作成。ただ、Fusionで作って直接STLで出すと、凄まじくポリ数が多く出てくる。
業務の作業フローだと、高ポリのモデルを読んで、低ポリに変換しつつ法線ベクトルや法線マップを作る、みたいな感じで低ポリを作るはずなんだが。
レンダリング結果
深度
ポリゴン
UVマップ
法線
ポリ割りが冒涜的なレベルでヤバい。
不自然なところに頂点が出てるのはただのバグ。
モデルの姿勢を変えるとレンダリングできない場合があるので、姿勢周りに不具合ありそう。
テクスチャID 0に、とりあえず8x8のテクスチャを設定している。x0y0が白で、テクスチャ未設定のオブジェクトはID0のUV0,0を読むので、この白色でレンダリングされる。バッファはID0, UV0.125,0で初期化するので、テクスチャのx1,y0を読み出す。このテクセルは黒が設定してあるので、背景が黒色になる。
他のテクセルは、自由に使える。例えばx0y1に赤、x1y1に緑、x2y1に青、みたいに色を設定して、読み込んだモデルのUVにその位置を与えれば、任意の色の表現ができる(マグカップやデスクライトはそのようにして色を設定している)。
テクセルの値を変えればUVが同じでも別の色になるので、カラーパレットと同じ使い方ができる。
テクスチャ解像度は縦と横が同じで2^n(n:0-15)である、という条件を設定している。これにより、1x1から32768x32768までのテクスチャを読み込むことができる。さすがに32kあれば十分だろ……
これによって、テクスチャサイズ-1の値(0から32767まで)を使ってUVマップのスケーリングと余剰演算ができるようになる。余剰はintにキャストしてからビットANDで取れるので、任意の解像度を%で計算するより、多少早く済むはず。気休め程度だろうけど。。。
UVの最小は0を想定しているが、最大は1を超えても問題ない。ただし、UV1で一番端のテクセルを読み出せるようにスケーリングしているので、UV2では端から2番目の、UV3では3番目の、と、少しずれたテクセルを読み出してしまう。
***
モデル自体の形は固定だが、元のデータはFusionで作ってるので、可動部はある程度正確に動かした結果を出力できる。FusionはFusionで使いづらいんだけどね。。。クリアランスとかどうやって作ればいいんだろうか。
***
とりあえず、線分のポリゴン化をはやく実装しておきたい。
あと、Yビルボードの頂点ベクトルの計算がバグってるのでどうにかしたい。
他にも、省略してるライティングの計算とか、諸々。
0 件のコメント:
コメントを投稿