LoginSignup
9
5

More than 5 years have passed since last update.

BufferGeometry 等でインスタンス化されたオブジェクトを大量に「広範囲に」表示する際の罠

Last updated at Posted at 2016-07-17

GitHubのパーティクルサンプルを、ちょっとだけ修正&公開しました

動くサンプルはコッチ↓
http://www001.upp.so-net.ne.jp/adrs2002/JenParticle/splashtest.html

前回からの修正は、たった1行。
294行目に、 

 mesh.frustumCulled = false;

を追加しただけです。

こいつが何なのかというと、「視錐台カリングを有効にするかどうか」という設定で、じゃあ視錐台カリングってなんなのさというと、「カメラから見えているかどうかを判断する。カメラから外れていたら、描画対象(DrawMesh)から外す」という、一見して便利なものです。

本来であれば「Meshを作成した後に当たり判定を作成(↓のメソッド)」し、

 geometry.computeBoundingBox();

んで、それが表示範囲の判定にも使われるのが正しいのですが、
ゲームに使うようなパーティクルとか、毎回位置が変わるのが常なわけで、その度にコレすんの?重くない?ということで、そもそもの「表示判断を無効にし、とりあえず表示させる。見えてるか見えてないかは知らん!」ということを行うための設定が、上記の frustumCulled = false になります(デフォルトは true になってる)

これで、原点(0,0,0 = メッシュの中央) が表示対象から外れていても表示されるようになりましたとさ。

めでたしめでたし。

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5