javascript - 从 Three.js json 文件中删除点

标签 javascript json three.js data-processing

我有一个使用 BufferGeometry 从 Blender 导出的 Three.js json 模型文件及其纹理文件。

该对象上有一些噪音,我希望通过在导出后处理 json 文件本身来清理这些噪音(我需要删除一些顶点,但这不是平滑或抽取操作,即使用json 数据比其他地方的这项工作)。

因此,从数据 Angular 处理该文件时,我有两个/三个问题。

  1. 除了删除点数据之外,我还需要对文件执行什么操作?我认为相应的 UV 和法线应该消失?但指数呢?
  2. 不是从列表中删除点,而是可以将它们设置为空吗?即使那里没有数据,也要为索引提供一些可映射的内容?
  3. 假设我无法摆脱 2. 因此从 json 文件中一致地删除每个数组中的数据,有没有办法重新计算索引而无需返回到 Blender 或类似的?我是否需要这样做 - 我可以完全删除索引数组吗?

我应该补充一点,这一点的删除目前是在服务器端(当前是Python)而不是在浏览器中完成的,但如果这是解决这个问题的更好方法,则可能可以在浏览器中完成。而且该模型相当大,大约有 25 万个顶点

最佳答案

我认为您当前删除顶点(在服务器上)的方法是正确的方法,特别是在它处理重新索引的情况下。

  1. 对于每个顶点项,您不仅必须删除其关联的属性(法线、UV),而且您的索引也需要更新,而且可能需要大幅更新。考虑几个三 Angular 形之间的共享顶点。你将如何解释这一点?这听起来比我想在浏览器中解决的问题要困难得多。
  2. 没有。顶点列表必须填充值。如果您不希望您的方法完全具有破坏性,您可以随时调整索引以忽略您不需要的顶点,但同样,这不是一项小任务。
  3. 共有三种绘制模式:THREE.TrianglesDrawModeTHREE.TriangleStripDrawModeTHREE.TriangleFanDrawMode。对于 THREE.TrianglesDrawMode 中的共享顶点,您需要索引。要删除索引,您需要将每个三 Angular 形定义为离散的三元组顶点(可能有大量重复数据)。对于 THREE.TriangleStripDrawModeTHREE.TriangleFanDrawMode,某些顶点是共享的,但它们在缓冲区中的顺序至关重要。设置几何图形来执行此操作与重构索引一样困难。

但我需要问:为什么不尝试调整嘈杂的顶点,而不是删除它们?这是一个更简单的任务,数学也更容易,而且您无需担心重新索引。

关于javascript - 从 Three.js json 文件中删除点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43190798/

相关文章:

javascript - 三.js-未捕获引用错误 : scene is not defined

javascript - 从通过链接标记链接的页面中删除或禁用样式表

Javascript点击事件每次点击都会加倍

javascript - 从 json 对象中删除特定项目

json - 为什么 Aeson 将 () 编码为空数组?

javascript - 为绘制的元素添加模糊度和片段着色器的片段颜色

javascript - 支持 WebGL 但来自 Three.js 的等距柱状全景示例无法在设备上运行?

javascript - reselect如何影响组件的渲染

javascript - 为什么 getElementById().value 没有正确返回元素?

json - 从 UI 写入数据库之前进行检查