我有一个搅拌机模型,上面有一些形状键。我导出这个模型并在threejs中使用它。可以说这是一个立方体。然后我创建了 Three.Points,在这个模型(即立方体)的顶点上绘制小球体。
var cube = loadGLTFFromBlender(gltfFile); // This loads the model
var points = new THREE.Points(cube.geometry, pointMaterial); //got my points
现在使用 morphTargets,我为立方体设置了动画。到目前为止,一切都很好。
//Some code that uses the shapee keys
cube.morphTargetInfluences[0] = 0.2; // <-- I animate this value
但我期待这些点也会变形/动画,因为这些点使用相同的几何图形。但似乎不能开箱即用。
一些谷歌搜索表明,变形发生在 GPU 级别,并且对象中的几何数据并未真正修改。在 StackOverflow 的其中一个问题(Three.js: Get updated vertices with morph targets)中,@WestLangley 建议在 CPU 上进行相同的几何更新,然后使用它。
我的问题:
- 在解决这个问题时还有其他选择吗?
- CPU 变形计算似乎更慢,我想看看是否有任何其他方法可以让我的 Three.Points 与变形立方体保持同步?立方体用 morphtargets 动画,我期待 Three.Points 做同样的事情。
如果搅拌机中的形状键动画涉及更多,我想#1不是一个真正的选择?
理想情况下,以下内容会有所帮助:
cube.morphTargetInfluences[0] = 0.2; // <-- I animate this value
var morphedGeometry = getMorphedGeometry(cube);
syncPointsGeometry(morphedGeometry);