我有一个工作的三个例子,其中使用程序函数通过画布将粒子渲染到球形对象上,如下所示:
var material = new THREE.ParticleCanvasMaterial( {
color: 0xffffff,
program: function ( context ) {
context.beginPath();
context.arc( 0, 0, 1, 0, PI2, true );
context.closePath();
context.fill();
}
} );
for ( var i = 0; i < 1000; i ++ ) {
particle = new THREE.Particle( material );
particle.position.x = Math.random() * 2 - 1;
particle.position.y = Math.random() * 2 - 1;
particle.position.z = Math.random() * 2 - 1;
particle.position.normalize();
particle.position.multiplyScalar( Math.random() * 10 + 600 );
initParticle( particle, i * 10 );
scene.add( particle );
}
但是,我想切换到webGL渲染器,以便运行得更快,但它没有程序选项。似乎我可能需要使用地图,但我不确定如何。任何人都有关于如何调整此代码以使用webGL渲染器完成相同操作的任何想法。
答案 0 :(得分:1)
这是一个示例,展示了如何使用WebGLRenderer在程序上为粒子创建纹理:http://jsfiddle.net/7yDGy/1/
但是,如果您希望使用自己的纹理,只需将所需的纹理加载到map
字段中:
var texture = THREE.ImageUtils.loadTexture('/images/my_texture.png');
// Do NOT set this flag. Explanation provided by WestLangley in the comments
// texture.needsUpdate=true;
var material = new THREE.ParticleBasicMaterial({
// ...
map: texture,
// add all relevant fields as described in the link above
});
// geometry should contain your particle vertices
var particle = new THREE.ParticleSystem(geometry, material);
scene.add(particle);