在Three.js中禁用粒子旋转

3

我正在尝试使用Three.js创建“小行星带”,使用粒子系统或点云等东西。其中一个问题是当相机绕z轴旋转时,粒子会随着相机单独旋转,保持相同的方向,无论相机如何旋转。我希望模拟看起来像用户飞过一堆小行星,显然小行星不会在你倾斜头部时神奇地旋转,所以我想知道有没有办法防止它们随着相机的旋转而旋转。必须让粒子始终保持竖直吗?


你是否正确理解3D网格和精灵之间的区别? - Martin
@Martin 我也这么认为... 有没有办法制作一个可以单独控制的大型3D对象组? - gameninja
“粒子单独随着相机旋转,无论相机如何转动都保持相同的方向。” 这句话的意思是什么?您是指当相机旋转时,粒子在空间中移动(点云对象与相机一起旋转),还是您每个粒子都有一些图像,并且想知道为什么粒子在相机旋转/移动期间仍然朝向相机,但每个粒子在相机旋转/移动期间都在同一位置上? - Martin
@Martin 更像是第二个选项。无论相机如何旋转,图像始终保持正立,而我希望粒子表现得像它们是实际物体一样,无论如何观察它,都不会总是呈现正确的方向。或者,有没有办法设置粒子的旋转? - gameninja
正如我所说,你是否正确理解3D网格和精灵之间的区别?这是精灵的标准行为,因为它在2D空间中呈现。我不确定旋转精灵图像是否会对你有所帮助。它将作为图像而非对象进行旋转。 - Martin
@Martin,对精灵图像进行2D旋转就可以了。我该怎么做? - gameninja
1个回答

1
如果您想旋转精灵,可以使用属性SpriteMaterial.rotation:
 var sprite = new THREE.Sprite( new THREE.SpriteMaterial({map: texture,rotation: Math.PI/4}));

看这个http://threejs.org/examples/webgl_sprites.html

在你的情况下,所有精灵的旋转应该等于相机的旋转。


谢谢。我想这算是一个单独的问题(我已经尝试过询问,但没有人回答),但是如何单独旋转粒子呢(我希望它们指向不同的随机方向)?我读到这与着色器和自定义属性有关,但我不知道如何使用它,如果有更简单的解决方案或者您能解释如何正确实现着色器,那就太好了。 - gameninja
你应该提出正确的问题,但我认为所有这些,包括单独的粒子旋转,在示例http://threejs.org/examples/webgl_sprites.html中都已经包含了。 - Martin
似乎上面链接中的示例使用了THREE.Group而不是THREE.PointCloud,这会导致在我的代码中应用时出现其他问题。有没有办法对PointCloud做同样的事情? - gameninja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接