我有一个几何形状为TubeBufferGeometry的网格。动画周期的每一帧,TubeBufferGeometry的路径都会改变(路径将由运行时提供的值决定),所以我想用新的TubeBufferGeometry更新每一帧的几何体。当然,我可以像这样更新网格的几何形状:
mesh.geometry.dispose()
mesh.geometry = new THREE.TubeBufferGeometry(newPath, params)但这是浪费的,因为它需要为每一帧分配一个全新的BufferGeometry。理想情况下,我可以简单地给TubeBufferGeometry构造函数一个现有的几何图形来覆盖,而不是分配一个全新的几何图形,而不是将其内容写入该几何图形的缓冲区中。如下所示:
THREE.TubeBufferGeometry.overwrite(mesh.geometry, newPath, params)(因为它们使用相同的params,所以旧几何体的缓冲区将足够大,以存储新几何体。)
这样的事情有可能发生吗?让TubeBufferGeometry为我计算顶点位置比手工计算要方便得多,但我只需要一种方法来让它在现有的缓冲区中计算它们,而不是每帧分配一个新的。
发布于 2021-01-14 01:48:50
three.js的几何图形生成器用于一次性创建几何图形。它们不打算在每帧中使用它们来设置网格结构的动画。
即使没有分配新的缓冲区,这种方法通常也是浪费的。您应该考虑在Blender中将动画作为变形目标动画进行创作。
https://stackoverflow.com/questions/65705681
复制相似问题