在场景中获取查看器 3D 对象
Getting Viewer 3DObjects in Scene
我正在尝试从改编 threejs-pdf-renderer 库的查看器生成 pdf。
此 PDFRenderer 在其渲染方法中需要一个场景和一个相机 object。
根据库示例,我应该创建或传递一个包含 children 的场景,但是当我尝试使用我的 autodesk-Viewer 示例应用程序时,观众的场景 children 数组(viewer.impl.scene
和 viewer.impl.sceneAfter
) 总是空的,我总是得到一个空白的 PDF。
观察者的场景 children 是否像预期的那样是空的?如果是这样,我如何获取所有绘制的元素以便将其添加到新场景,以便我可以将此参数传递给 PDfRenderer 的渲染方法?
我一直在尝试不同的解决方案但没有成功,甚至尝试添加
viewer.model.getConsolidation().meshes
数组到一个场景,但我认为这不是正确的方法。
提前致谢。
您得到的空场景符合预期,Forge 查看器基于 three.js,但它没有像 three.js 中那样组织场景和 3D 网格。在 Forge 查看器中,它有 dbid 和 fragid。一个 dbId 表示在模型结构(父或子)中可以看到或在查看器中可以看到 select 的单个组件的 id,一个 dbId 可以映射到 0 个或多个 fragId。 FragId其实就是保存geometry和material信息的,你可以通过API分别获取geometry和material,如下:
var renderProxy = viewer.impl.getRenderProxy(viewer.model, fragId)
var fragmentproxy = viewer.impl.getFragmentProxy(viewer.model, fragId)
有关更多信息,您可以查看 的 post。
也就是说,不是直接用viewer.impl.scene那么简单,需要遍历所有的fragment,根据每个fragment创建Mesh,填充geometry和material信息。
我正在尝试从改编 threejs-pdf-renderer 库的查看器生成 pdf。
此 PDFRenderer 在其渲染方法中需要一个场景和一个相机 object。
根据库示例,我应该创建或传递一个包含 children 的场景,但是当我尝试使用我的 autodesk-Viewer 示例应用程序时,观众的场景 children 数组(viewer.impl.scene
和 viewer.impl.sceneAfter
) 总是空的,我总是得到一个空白的 PDF。
观察者的场景 children 是否像预期的那样是空的?如果是这样,我如何获取所有绘制的元素以便将其添加到新场景,以便我可以将此参数传递给 PDfRenderer 的渲染方法?
我一直在尝试不同的解决方案但没有成功,甚至尝试添加
viewer.model.getConsolidation().meshes
数组到一个场景,但我认为这不是正确的方法。
提前致谢。
您得到的空场景符合预期,Forge 查看器基于 three.js,但它没有像 three.js 中那样组织场景和 3D 网格。在 Forge 查看器中,它有 dbid 和 fragid。一个 dbId 表示在模型结构(父或子)中可以看到或在查看器中可以看到 select 的单个组件的 id,一个 dbId 可以映射到 0 个或多个 fragId。 FragId其实就是保存geometry和material信息的,你可以通过API分别获取geometry和material,如下:
var renderProxy = viewer.impl.getRenderProxy(viewer.model, fragId)
var fragmentproxy = viewer.impl.getFragmentProxy(viewer.model, fragId)
有关更多信息,您可以查看
也就是说,不是直接用viewer.impl.scene那么简单,需要遍历所有的fragment,根据每个fragment创建Mesh,填充geometry和material信息。