我正在使用Three.js版本65。
我使用ParticleSystem
在3D空间中显示@时间t = 0的一组点。而且我在时间t = 1时有下一组积分。现在我想像JSONLoader
morphTarget
动画一样制作动画?有人能建议我实现这个目标的最佳途径吗?
(或)
我可以为此选择WebGL着色器编程吗?请建议。
提前致谢。
答案 0 :(得分:2)
是的,您可以使用着色器执行此操作。你是这样的,例如使用属性vec3 position
,vec3 nextPosition
和从0到1的统一float scale
为粒子系统创建自定义着色器。
然后,您可以在着色器中添加一些逻辑,用于计算新位置,例如vec3 pos = position * scale + nextPosition * (1.0 - scale)
(以及通常的广告牌/ GL_Point代码ofc)。当您达到比例1时,您将position
与nextPosition
交换,并使用相关关注者填充nextPosition。
PS:我提到的代码仅用于线性插值。在您的情况下,您可能会考虑其他插值。甚至可以添加另外两个属性向量来指示前导点和后续点,以便使用贝塞尔曲线计算新位置。
最后,你迟早要考虑表演。如果你有10k粒子和1k"状态"你可能会遇到性能问题。