2013-04-26 76 views
0

我有这应该制作一个简单的火焰效果以下简单的功能,我建立了代码的实际显示部分从这里开始:three.js所Sparks.js - “断言失败,池跑出”

http://jeromeetienne.github.io/sparkseditor/

每当我运行该函数,它似乎耗尽池(最大粒子),然后死亡,在屏幕上没有可见的痕迹。我使用r53,而很多(如果不是全部)sparks.js示例使用r47,不知道这是否相关。

你可以找到在这里产生错误的实际文件:

http://jeromeetienne.github.io/threex/docs/threex.sparks.html

而对于我下面的火焰代码:提前

var position = data.status.position; 
    var group = new Object3D(); 

    scene.add(group); 

    var sparks = new THREEx.Sparks({ 
    maxParticles : 10, 
    counter : new SPARKS.SteadyCounter(300) 
    }); 

    var emitter = sparks.emitter(); 

    var color = function() { 
    this.initialize = function(emitter, particle) { 
     particle.target.color().setHSV(0.4, 0.8, 0.4); 
     particle.target.size(100); 
    }; 
    }; 

    emitter.addInitializer(new color()); 
    emitter.addInitializer(new SPARKS.Position(new SPARKS.PointZone(new THREE.Vector3(

    position.x, position.y, position.z 

)))); 
    emitter.addInitializer(new SPARKS.Lifetime(0, 0.8)); 
    emitter.addInitializer(new SPARKS.Velocity(new SPARKS.PointZone(new THREE.Vector3(

    position.x, position.y-100, position.z 

)))); 
    emitter.addAction(new SPARKS.Age()); 
    emitter.addAction(new SPARKS.Move()); 
    emitter.addAction(new SPARKS.RandomDrift(1000,0,1000)); 
    emitter.addAction(new SPARKS.Accelerate(0,-200,0)); 

    emitter.addCallback('created', function(particle) { 
    group.add(particle); 
    }); 
    emitter.addCallback('dead', function(particle) { 
    particle.target.visible = false; 
    group.remove(particle); 
    }); 

    emitter.start(); 

感谢,任何帮助是非常赞赏: )

+1

Spark.js已过时,与最新版本的Three.js不兼容。我强烈建议使用最新的Three.js版本,但对老版本的支持并不多。这可能意味着你只需要使用没有spark.js的Three.js粒子系统。 你应该使用'ShaderMaterial'。 – 2013-05-28 02:39:25

+0

我得到了同样的问题,因为你有。我搜索了这个问题,而不是去了解'SPARK-js'不再被支持,对于'particle system'我们应该使用最新版本或者去'shaders' – 2013-05-28 02:43:56

回答