2020年2月23日日曜日

焼とうきびぶつけんぞ

 線分描画作ろうと思ってたのに、なぜかYビルボードができてしまった……

 適当なテクスチャ貼ったら森作れるなーと思ったけど、いい感じに軸対称な画像がなかった。古い画像フォルダ漁ったら焼とうきびの写真が出てきたので並べてみた。い、いちおう、軸対称風の形だし?? 焦げ目? そんなものは知らん!



 シュールな絵面だ。
 5年前の画像。あのあと焼き肉やってないなー。と思ったけど、一昨年サバゲの時にやった。

 もちろんYビルボードなので視点変更に追従してくるし、上から覗けば短くなる。どうしてこうなった
 ライティングすれば、光線で陰影が出てくる。グローバル座標にポリ2枚置いてるだけなので、平面な色合いのテクスチャ貼って頂点ベクトル設定したら円柱みたいな表現もできるんじゃないかなぁ。
 テクスチャのαに非対応なので、周りが透過できない。やっぱりαはあったほうがいい。とはいえ、αはラスタライズ時に参照する必要があるので、ラスタライザの負荷が高くなるんだよなぁ。ラスタライザはパラレルで回してるので、ポストエフェクトの負荷がラスタライザに移動するだけなんだけど。

 Yビルボードは、内部処理としては、下の点と上の点を指定して、そこからある幅のボードを表示する、というような挙動になってる。この幅は、視点の位置に応じてスケーリングされるので、アス比は固定になる。
 上の点と下の点を入れ替えると、裏表逆のビルボードになる(ビルボード生成部以降で裏表判定はないので、ラスタライザがバグって少しゴミが表示される)。Yビルボードは、正常に使う限りにおいては、常に視線方向を向くが、四元数のカメラで上下角が90度を超えるように動かすと裏側に入り込める。
 YビルボードはY方向に大きさを与えて、幅をX方向に反映するが、X方向に大きさを与えてY方向に幅を反映すれば、「Xビルボード」が作れる。あんまり使いみちは思いつかないけど、蛍光灯みたいな細長い(軸対称な)物体が横方向に配置されている物体の表現には便利かもしれない。


 もともと、線分の描画をやりたかったんだよね。
 今のパイプラインだと、ポリゴン以外のデータをラスタライザに流せないので、線分をポリゴンに変換する処理を作りたかった。それに、ポリに変換すれば幅を作れるので、描画の自由度が高まる。
 とりあえず、ビルボードは色々使えそうなので、これはこれで残しつつ、本題の線分表現ができるように頑張ろう。。。

***

 いいかげん「衛星描画エンジン」みたいな名前も実態に合わないので、とりあえず暫定的にLightRenderと呼称してみた。というか、名前空間をそれにした。
 サクッと気軽に使えるし、コード量も小さいし、軽いのLightと光のLightにかかってて、いい名前かな、と思ってる。もちろん、そう考えるやつは他にもいて、Unityのエンジンとかでもこの種の名前があるらしい。

 今の所、データの読み込みとかを含まない、レンダー自体のコード数が1400行くらい。廃棄予定のコードもある程度あるけど、追加予定の機能も色々あるので、1000行台で行ったり来たりかな。
 Objの読み込みで200行、STLの読み込みは40行くらい。
 GUIで結構使ってるけど、チェックボックスとかラジオボタンのハンドラは機能の割に行数食うが、マウスドラッグで視点変更するだけならさほどコード量は必要ない。

 余裕を見ても、最低限レンダリングして表示しながらGUIで動かすくらいなら、レンダーとGUI合わせて2500行あれば、十分足りる。フレームレートは出ないけどね。

***

 あいえるたん、せっかく東北まで行ったのに、今度は南下するんだな。旅費も結構かかるぞ。。。
 津軽海峡渡れよ!!本社訪ねろよ!!!!

***







 飯テロ!!!と思ったけど、もう普通に昼食の時間帯だな……
 僕はこれから寝まーす。美味い肉食いたい。

 (´・ωゞ)oO(あ、タケノコのテクスチャ作れそう マシュマロもいけるか?)

0 件のコメント:

コメントを投稿