【发布时间】:2016-08-14 16:31:35
【问题描述】:
我设计了一个小型网络应用程序,用于在 Three.js 中查看海底的测深数据。基本上,我使用加载器将我的挤压测深的 JSON 模型引入我的场景,并允许用户旋转模型或单击下一步以加载海底的新部分。
我所有的模型都具有相同的 2D 足迹,因此在两个维度上都是相同的,只有高程和纹理因模型而异。
我的问题是:更新模型最经济有效的方法是什么?
使用
scene.remove(mesh);然后再次调用我的加载程序来加载一个新模型,然后使用scene.add(mesh);将其添加到场景中。通过调用我的加载程序来更新现有网格,以引入材质和几何图形,然后调用
mesh.geometry = geometry;、mesh.material = material,然后调用mesh.geometry.needsUpdate;。
我听说从计算的角度来看更新是相当密集的,但我读过的所有文章都指出这两种方法几乎相同。这些信息正确吗?在这种情况下,有没有更好的方法来处理我的代码?
我考虑过的另一种方法是跳过创建模型的步骤(在 Blender 中),而是使用置换贴图来更新顶点的 y 坐标。然后要更新,我可以在替换材料之前在现有平面几何上推送新顶点。这会是一个合理的方法吗?至少我认为置换贴图将是一个比 .JSON 文件更小的要加载的文件。我什至可以通过加载一个 GUI 元素来优化显示,以将网格划分为更多或更少的部分以实现高质量或低质量渲染......
【问题讨论】:
-
我认为这可能是题外话,因为答案可能完全基于意见。
-
我明白你的意思,我在最后有一点顿悟。使用置换贴图比加载新模型更有效。我的问题仍然存在。哪种方法更好,用新的纹理和几何图形更新现有网格,还是简单地从场景中删除和添加?
-
您最好在 3D 建模论坛上问这个问题?我会认为 SO 上的大多数 JS 用户都是网络开发人员......
标签: javascript 3d three.js mesh