https://linen.dev logo
tessellationをループ処理で簡略化する
# forum
r
車内LCDのように等間隔で同じ内容のものを複数作成する場合、一つ一つ座標を指定しているより関数等を使用して移動量を入れるだけでループ処理させる方法はRTMでも適応できるのでしょうか (Tessellation,pos1,uv1)←この処理方法しかわからないのですがこれだとpos差分の分だけ書かなければならないのでどうしても重くなってしまったりするのではと思ってしまいます
m
同じ画面を複数個所で描画するという点では、ループさせた方がコードがすっきりして良いと思います。 ”この処理方法”というのはよく分かりませんが、同じ処理を5回書くのと、1回だけ書いて5回ループ文を回すのとはほぼやってることは変わらないので重くなるということは無いと思います。 以前どこかにも書いたと思いますが、重い原因の多くが、dataMapの過剰setや高解像度又は多数のテクスチャ読み込みです。
r
なるほどです。スクリプトのコードが長くなる=重くなるではなく、処理のほうにかかってくるんですね。それ以上にテクスチャ関係が重さにつながるとのことで視野に入れつつ作業したいと思います。
p
ただ、車両モデルを初読み込みするときにスクリプトを一通り読み込んでると思います。
スクリプトが長いとそのロード時間が伸びる(車両選択するときですね)
r
上記の件について以下の形に落ち着いたので共有しておきます
Copy code
for (var i = 0; i < 4; i++) {
            var yOffset = -4.8 * i;
            var pos = [
                [1.2158, 2.3468, 6.8991 + yOffset],
                [1.2444, 2.1224, 6.8991 + yOffset],
                [1.2444, 2.1224, 7.2159 + yOffset],
                [1.2158, 2.3468, 7.2159 + yOffset]
            ];
            tessellatorLED(1, pos, uv1);
            var pos1 = [
                [-1.2158, 2.3468, 7.2159 + yOffset],
                [-1.2444, 2.1224, 7.2159 + yOffset],
                [-1.2444, 2.1224, 6.8991 + yOffset],
                [-1.2158, 2.3468, 6.8991 + yOffset]
            ];
            tessellatorLED(1, pos1, uv1);
        }