Three.js结合粒子

时间:2015-03-20 07:55:55

标签: three.js particle-system

我遇到了three.js的问题。我有两个似乎相互冲突的粒子系统设置。

第一个场景加载没有问题,但是当第二个场景加载时,第一组粒子消失。如果第一个场景的其余部分仍然出现在整个场景中,那么这不会太混乱。

是否有一种简单的方法可以重命名或调用两组粒子?

我环顾四周但却无法找到答案。

我认为可能导致这种情况的一件事是PARTICLE_COUNT调用 - 这两个脚本都有这个功能......

一个是

var PARTICLE_COUNT = 15000;
var MAX_DISTANCE = 1500;
var IMAGE_SCALE = 5;

接着是

for(var i = 0; i < PARTICLE_COUNT; i++) {
    geometry.vertices.push(new THREE.Vertex());
    var star = new Star();
    stars.push(star);
}

和第二个

AUDIO_FILE        = 'songs/zircon_devils_spirit',
PARTICLE_COUNT    = 250,
MAX_PARTICLE_SIZE = 12,
MIN_PARTICLE_SIZE = 2,
GROWTH_RATE       = 5,
DECAY_RATE        = 0.5,

BEAM_RATE         = 0.5,
BEAM_COUNT        = 20,

GROWTH_VECTOR = new THREE.Vector3( GROWTH_RATE, GROWTH_RATE, GROWTH_RATE ),
DECAY_VECTOR  = new THREE.Vector3( DECAY_RATE, DECAY_RATE, DECAY_RATE ),
beamGroup     = new THREE.Object3D(),
particles     = group.children,
colors        = [ 0xaaee22, 0x04dbe5, 0xff0077, 0xffb412, 0xf6c83d ],
t, dancer, kick;

接着是

dancer = new Dancer();
  kick = dancer.createKick({
    onKick: function () {
      var i;
      if ( particles[ 0 ].scale.x > MAX_PARTICLE_SIZE ) {
        decay();
      } else {
        for ( i = PARTICLE_COUNT; i--; ) {
          particles[ i ].scale.addSelf( GROWTH_VECTOR );
        }
      }
      if ( !beamGroup.children[ 0 ].visible ) {
        for ( i = BEAM_COUNT; i--; ) {
          beamGroup.children[ i ].visible = true;
        }
      }
    },
    offKick: decay
  });

  dancer.onceAt( 0, function () {
    kick.on();
  }).onceAt( 8.2, function () {
    scene.add( beamGroup );
  }).after( 8.2, function () {
    beamGroup.rotation.x += BEAM_RATE;
    beamGroup.rotation.y += BEAM_RATE;
  }).onceAt( 50, function () {
    changeParticleMat( 'white' );
  }).onceAt( 66.5, function () {
    changeParticleMat( 'pink' );
  }).onceAt( 75, function () {
    changeParticleMat();
  }).fft( document.getElementById( 'fft' ) )
    .load({ src: AUDIO_FILE, codecs: [ 'ogg', 'mp3' ]})

  Dancer.isSupported() || loaded();
  !dancer.isLoaded() ? dancer.bind( 'loaded', loaded ) : loaded();

在大海捞针中丢失了一针#34;我知道......

但也许有人可以看到我的方式错误!

我已经尝试更新three.js的修订版,但是r47是最新的,因为我可以得到它 - 我对three.js和dancer.js的了解非常有限......

我也尝试创建一个jsfiddle - 但是最早的版本就是r54 jsfiddle在我把它放在一起时工作了......只显示了整个事情的一部分......而不是工作版本。 ..

但也许只是裸骨可能是......

这一个http://jsfiddle.net/wwfc/3L5z5mx ...... 用于文件min。&#39; s(驱动从一种形状到另一种形状的动画/移动粒子......

这一个http://jsfiddle.net/wwfc/v96L3kq ...... 是调用和设置音频反应粒子的那个...... 这是一个粒子(不是光束只是粒子)从最小的时候消失的。...

我可以看到两个脚本在哪里创建了冲突的粒子,但不知道如何解决它: - (

有什么明显的东西我需要解决吗?

0 个答案:

没有答案