ちらつくパーティクルの原因

harayoki

2007年05月06日 02:07




ギャラリーの2Fで配布しているparticleProjector(しつこいPOPプロジェクター)に、場合によってチラチラと
断続的に画像が消えてしまう現象が確認されたので
原因はなんだろうと思い調べてみました。


(画面はイメージです。パーティクル表示が消えた時は画面上に何の絵もなくなります。)

どうやらこの現象は近くで他のパーティクルの描画が
派手めに行われている場合に起こるようです。

preferencesのDraw distanceの値を256など大きめの値にしてみると
画像のちらつきがかなり増えました。
最低の64にするとほぼなくなります。

lslWikiパーティクルページにこのような説明がある事から

Most clients are configured to display 4096 particles within their draw distance (default: 96 m). If the number of particles within your client's draw distance is close to the limit, you may not see your particles or only see it sporadically.


このちらつき現象は、設定された描画エリア内で4096近くのパーティクルが
表示されている事が原因でおきているのではないかと思われます。

激しくパーティクルを作りまくるとご近所さんに迷惑がかかるということですね。
自分の島であれば問題ないと思われますが…。

演出で瞬間的にパーティクル数を消費するのはしょうがないとして、
llListenの使いすぎ同様、継続的なパーティクル描画を行う演出は
控えたほうがよさそうです。

島の土地が16区画の分割なのであれば
自分の土地での同時発生パーティクルは
4096個/16区画=256個/区画
という事で256個程度まで、といったあたりがガイドラインとする事ができるでしょう。
(島全部のプリムを描画可能にしている人はそうはいないと思われますが。)

このparticleProjectorについては、5秒毎に1つのパーティクルしか
表示しない処理になっているので、
パーティクル数はほとんど消費していないはず、です。

particleProjectorでの画像ちらつきを防ぎたい場合は、
StableParicleモジュールのコードを変更することになりますが
パーティクルの寿命(PSYS_PART_MAX_AGE)を、
パーティクルの発射間隔(PSYS_SRC_BURST_RATE)の何倍かに設定し
同時に表示されるパーティクルの数を近所の迷惑がかからない程度…
3~10程度でしょうか…に増やすと良いと思います。

↓こんな感じに変更
//about a ptcl
float lifetime = 1.0;
dat += [PSYS_SRC_BURST_RATE,lifetime];
dat += [PSYS_PART_MAX_AGE,lifetime*3];// multiplied by 3.

研究