将morphTargets应用于ParticleSystem或PointCloud

时间:2014-07-25 14:50:19

标签: three.js webgl

我正在使用Three.js版本65。

我使用ParticleSystem在3D空间中显示@时间t = 0的一组点。而且我在时间t = 1时有下一组积分。现在我想像JSONLoader morphTarget动画一样制作动画?有人能建议我实现这个目标的最佳途径吗?

(或)

我可以为此选择WebGL着色器编程吗?请建议。

提前致谢。

1 个答案:

答案 0 :(得分:2)

是的,您可以使用着色器执行此操作。你是这样的,例如使用属性vec3 positionvec3 nextPosition和从0到1的统一float scale为粒子系统创建自定义着色器。 然后,您可以在着色器中添加一些逻辑,用于计算新位置,例如vec3 pos = position * scale + nextPosition * (1.0 - scale)(以及通常的广告牌/ GL_Point代码ofc)。当您达到比例1时,您将positionnextPosition交换,并使用相关关注者填充nextPosition。

祝你好运玩得开心:)

PS:我提到的代码仅用于线性插值。在您的情况下,您可能会考虑其他插值。甚至可以添加另外两个属性向量来指示前导点和后续点,以便使用贝塞尔曲线计算新位置。

最后,你迟早要考虑表演。如果你有10k粒子和1k"状态"你可能会遇到性能问题。