【发布时间】:2013-12-19 08:08:17
【问题描述】:
我在 Three.JS 中使用CanvasRenderer和Particle。我正在使用这种方法生成一些随机粒子:
texture = THREE.ImageUtils.loadTexture("img.png");
material = new THREE.ParticleBasicMaterial({
map : texture,
transparent : true,
});
for (var i = 0; i < pointCount; i++) {
var particle = new THREE.Particle(material);
particle.position.x = Math.random() * (max - min) + min;
particle.position.y = Math.random() * (max - min) + min;
particle.position.z = Math.random() * (max - min) + min;
// Set the size of the particle
particle.scale.x = particle.scale.y = particle.scale.z = Math.floor(Math.random() * 6) + 2;
particles.push(particle);
scatterPlot.add(particle);
}
我希望(如果可能)能够更改单个 Particles 的不透明度,因为我在绘图中使用透明度作为维度(即粒子的透明度反映了变量的大小)。我知道我可以使用particle.material.opacity,但这会改变所有粒子的不透明度。我试过particles[i].material.opacity但得到了相同的结果。
当然,一种可能性是拥有一系列具有不同不透明度的材料。但我不确定是否有更简单的方法可以做到这一点?
非常感谢!
【问题讨论】:
-
这段代码看起来很旧。你用的是什么三个.js 版本?在three.js 示例中搜索
Sprite、SpriteCanvasMaterial、SpriteMaterial。 -
Particle已弃用。现在是Sprite。ParticleBasicMaterial已弃用。将SpriteMaterial与CanvasRenderer一起使用。 -
我选择
Particle的原因是因为它看起来不像ParticleSystem或Sprite可以与RayCaster一起使用。这有点破坏交易,因为我需要能够检测到交叉点。我会看看Sprite现在是否支持光线投射。感谢您的信息! -
对
THREE.Sprite和SpriteMaterial进行了更改,似乎一切正常。虽然 ThreeJS 页面上的Canvas演示仍然有使用Particle的示例。感谢您指出此信息,WestLangley。一如既往,非常感谢!
标签: three.js