calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
<< November 2019 >>

categories

archives

PV3D:Particleで空間に点を打つ

0
    前回のエントリで、3D空間に線を引くことを覚えたので、じゃあ点を打つ方法もあるだろうと思ってちょっと調べたら、普通にありました。

    で、作ってみたデモ↓↓↓

    デモはこちら

    空間に打つ点の事を「Particle(粒子という意味)」と呼ぶらしい。
    デモでもわかるとおり、点といっても近くに来ると、正方形である事がわかります。じゃあPlaneと同じジャン?と思いきや、Planeは回転(rotation)があるのに対し、Particleは回転という概念が無く、プロパティは座標(x,y,z)とサイズだけです。どんな座標にいても常に正面を向いているPlaneみたいな感じ?です。

    つまりデモの様な動きをPlaneでやろうとすると、常にこっちを向いているように回転角度を自分で計算しなくてはいけないので大変です。(今まで知らなかった自分はまあ苦労してた訳ですが)

    あとデモ作ってみて思ったのは、ものすごく軽いということ。3D周りは常にパフォーマンスで苦しんでいるだけに、これは使わない手はないです。

    で、肝心の使い方。
    下記がParticle関連のインポート

    import org.papervision3d.materials.special.ParticleMaterial;
    import org.papervision3d.objects.special.ParticleField;
    import org.papervision3d.core.geom.renderables.Particle;
    import org.papervision3d.core.geom.Particles;

    オブジェクトの配置方法は主に以下の2通り。
    ^貪世困頂舵犬鮖慊蠅靴毒枌屬靴討い方法

    var pcs:Particles = new Particles(); //パーティクルを追加するコンテナ
    scene.addChild(pcs);

    var mp:ParticleMaterial = new ParticleMaterial(0xFF0000, 1); //パーティクルの色
    var pc:Particle = new Particle(mp, 10, 0, 0, 0); // 一粒、マテリアル、サイズ、x座標、y座標、z座標を引数で指定
    pcs.addParticle(pc);


    範囲と数を指定して、ランダムに一気にドバッと追加する方法

    var mf:ParticleMaterial = new ParticleMaterial(0xFFFFFF, 1); //色
    var pf:ParticleField = new ParticleField(mf, 3000, 10000, 10000, 10000); //パーティクルのコンテナ マテリアル、数、空間幅、空間高さ、空間奥行を指定
    scene.addChild(pf);


    2008/9/3 追記:Papervision3D Alpha 2.0 を使っています。 現時点での最新版であるPapervision3D Beta 2.0では、デモの通り動作しないようなので注意してください。


    コメント
    コメントする








       
    この記事のトラックバックURL
    トラックバック