Autodesk Viewer RenderProxy vb 获取 NaN
Posted
技术标签:
【中文标题】Autodesk Viewer RenderProxy vb 获取 NaN【英文标题】:Autodesk Viewer RenderProxy vb getting NaN 【发布时间】:2021-03-01 14:52:44 【问题描述】:我正在尝试从 RenderProxy.Geometry 中的 vb 数组中获取几何信息。但是,数组中的某些元素返回 NaN。我应该如何处理? 该模型是从 Revit .rvt 文件转换而来的,我尝试获取几何图形的网格是 Revit 中的曲面。 下面是我说的 vb 数组的截图。 非常感谢你们的帮助
【问题讨论】:
【参考方案1】:“渲染代理”网格中的几何数据可在mesh.geometry
下获得。要解析它,您需要了解更多关于 THREE.BufferGeometry
类的信息,但简而言之,三角形的位置可以这样解析:
function enumerateTriangles(model, dbid)
const tree = model.getInstanceTree();
const frags = model.getFragmentList();
tree.enumNodeFragments(dbid, function (fragid)
const mesh = frags.getVizmesh(fragid); // Obtain the THREE.Mesh object
const indexBuffer = mesh.geometry.ib; // Typically Uint16Array in Forge
const vertexBuffer = mesh.geometry.vb; // Typically Float32Array in Forge
const positionItemOffset = mesh.geometry.attributes['position'].itemOffset; // The vertex buffer may contain other data in vertex buffer, not just positions
for (let i = 0; i < indexBuffer.length; i += 3)
const i1 = indexBuffer[i];
const i2 = indexBuffer[i + 1];
const i3 = indexBuffer[i + 2];
const p1 = new THREE.Vector3(vertexBuffer[i1 + positionItemOffset], vertexBuffer[i1 + positionItemOffset + 1], vertexBuffer[i1 + positionItemOffset + 2]);
const p2 = new THREE.Vector3(vertexBuffer[i2 + positionItemOffset], vertexBuffer[i2 + positionItemOffset + 1], vertexBuffer[i2 + positionItemOffset + 2]);
const p3 = new THREE.Vector3(vertexBuffer[i3 + positionItemOffset], vertexBuffer[i3 + positionItemOffset + 1], vertexBuffer[i3 + positionItemOffset + 2]);
console.log('Triangle has vertices', p1, p2, p3);
, true);
【讨论】:
以上是关于Autodesk Viewer RenderProxy vb 获取 NaN的主要内容,如果未能解决你的问题,请参考以下文章
Autodesk Forge Viewer 适合查看纵向/横向
如何在 Forge Viewer 中激活“Autodesk.MemoryLimited”扩展?
Autodesk Forge 查看器 - 从“viewer.model.search”和“viewer.getSelection()”获取不同的值 dbId