【问题标题】:Cover cuts in cut planes覆盖切割平面中的切口
【发布时间】:2017-10-05 09:15:39
【问题描述】:

当我使用函数viewer.setCutPlanes()时,被切割的平面没有被覆盖:

但是使用查看器的截面分析工具平面切割,它们确实会被覆盖(每个覆盖物都是其自己节点的一部分,这很好):

使用viewer.setCutPlanes()时如何将这些封面添加到模型中?

PS:我在查看器中找到了部分工具扩展,但它的所有相关功能似乎都是私有的。我应该尝试复制这个扩展并在那里公开必要的功能吗?有 ES6 版本的 repo 吗?

【问题讨论】:

    标签: autodesk autodesk-forge autodesk-viewer


    【解决方案1】:

    很遗憾,Forge Viewer 没有 ES6 模块。 Viewer3D.setCutPlanes() 是一种仅用于制作ThreeJS 剪裁平面的实用方法,现在Autodesk.Viewing.Extensions.Section.SectionTool 存档了剪切覆盖功能。

    如果您想在自我控制下执行此功能,则必须从 SectionTool 扩展名中复制以下列出的功能:

    1. getDiffuseColor()
    2. init_three_triangulator()
    3. init_three_intersector()
    4. updateCapMeshes()

    此外,上述私有函数中的_viewer 变量应替换为Viewer3DImpl 实例,即Viewer3D.impl。或者您可以更改updateCapMeshes 的函数声明,如下所示:

    function updateCapMeshes( _viewer, plane ) {
    
      init_three_triangulator();
      init_three_intersector();
    
      // ... Original content of updateCapMeshes below ...
    }
    

    像这样调用修改后的updateCapMeshes函数来创建cut-cover:

    //-- Helper function to create your own cut planes.
    function createMyOwnPlane( _viewer, _sectionPlanes ) {
      if (_sectionPlanes.length === 1) {
         updateCapMeshes(_viewer, new THREE.Plane().setComponents(_sectionPlanes[0].x, _sectionPlanes[0].y, _sectionPlanes[0].z, _sectionPlanes[0].w));
      }
      _viewer.setCutPlanes(_sectionPlanes);
    }
    
    
    //-- Call functions here.
    var viewer = viewerApp.getCurrentViewer();
    createMyOwnPlane( viewer.impl, [ new THREE.Vector4(0, 0, 1, 0) ] );
    

    如果没有TransformControl,你会得到这样的结果: Result of createMyOwnPlane

    顺便说一句,这样就可以去掉cut-cover~

    var oldsection = viewer.impl.sceneAfter.getObjectByName("section");
    if (oldsection)
      viewer.impl.sceneAfter.remove(oldsection);
    
    viewer.setCutPlanes();
    

    【讨论】:

    • @eason-kang 你知道这是否计划在未来成为一个公共的 Viewer3D API 吗?复制私有实现有点脆弱。谢谢。
    猜你喜欢
    • 2013-01-05
    • 2022-06-14
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 2018-08-09
    相关资源
    最近更新 更多