2017-04-03 101 views
1

我有一个three.js json模型文件使用BufferGeometry从blender加上它的纹理文件导出。从three.js json文件中删除点

该对象有一些噪音,我正在寻找通过处理json文件本身后导出清理(我需要删除一些顶点,但这不是一个平滑或抽取操作,即更容易做到这一点json数据比这个工作的其他地方)。

因此,从数据的角度来看,使用该文件时有两个/三个问题。

  1. 除了删除点数据,还需要对文件做些什么?我认为相应的紫外线和法线应该去?但是索引呢?
  2. 而不是从列表中删除点可以将它们设置为空?即使没有数据,也要给索引映射一些东西?
  3. 假设我无法摆脱2,因此在json文件中一致地从每个数组中删除数据,有没有办法重新计算索引而不回到搅拌机或类似的?我是否需要这样做 - 我可以完全删除索引数组吗?

我要补充,这点移除目前正在做服务器端(目前蟒)未在浏览器中,但可能它可以在浏览器中完成,如果这是一个更好的办法来解决这个。此外,该模型是相当大的在大约25万的顶点

回答

0

我认为你目前的方法去除顶点(在服务器上)是正确的方法,尤其是如果它处理重新索引。

  1. 对于每个顶点项目,您不仅必须删除其关联属性(法线,UV),但是,您的索引需要更新,并且可能会非常激烈。考虑几个三角形之间的共享顶点。你打算如何解释?这听起来像是一个比我想在浏览器中解决更难的问题。
  2. 否。顶点列表必须填入值。如果你不想让你的方法具有完全的破坏性,你可以随时调整索引来忽略你不想要的顶点,但这又不是一件小事。
  3. 有三种绘制模式:THREE.TrianglesDrawModeTHREE.TriangleStripDrawModeTHREE.TriangleFanDrawMode。对于THREE.TrianglesDrawMode中的共享顶点,您需要建立索引。要删除索引,您需要将每个三角形定义为顶点的离散三元组(可能包含大量重复数据)。对于THREE.TriangleStripDrawModeTHREE.TriangleFanDrawMode,一些顶点是共享的,但它们在缓冲区中的顺序非常重要。设置你的几何体来做到这一点与重构索引一样困难。

虽然我需要问:为什么不尝试调整噪声顶点,而不是去除它们?这是一个简单得多的任务,数学要容易得多,而且不需要担心重新编制索引。

+0

为了回答你的问题,我们在这里解决了一些问题,降噪和完全去除模型中被认为不相关的部分(因为模型很复杂并由另一个系统生成)。 所有的事情都认为通过Blender编写脚本比整个手动处理原始的三维数据都要快。 单独在三个数据中尝试它是很好的,但Blender对我们来说是最好的/最快的选项,而且已经完成的python工作很容易转移回搅拌机。 – CoderChris