【问题标题】:Forge Viewer - Can't add lines to sceneForge Viewer - 无法向场景添加线条
【发布时间】:2019-03-14 21:22:11
【问题描述】:

我正在尝试在我正在构建的 Forge Viewer 应用程序中的 3D 模型场景中添加一些线条。我想在某些对象周围画一些边界框;我使用以下指南作为基准:

Getting bounding boxes of each component in the viewer

目前我只是在使用 drawLines 函数,因为我已经有了要在代码中的其他地方绘制一个框的对象的坐标数据。但是调用scene.add时,控制台出现如下错误:

WebGL: INVALID_OPERATION: drawArrays: no buffer is bound to enabled attribute

我已查找此错误,但找不到任何可以帮助我的内容。看来问题可能是由于我的应用程序已经在场景中添加了网格,并且当它添加线时,它使用相同的着色器,它没有正确设置属性来处理线。这只是一个猜测,我真的不知道究竟是什么导致了错误,或者我可以做些什么来修复它。我尝试了各种类型的 THREE.js 对象,使用 sceneAfter 等,但仍然无法在场景中画线。

【问题讨论】:

    标签: javascript autodesk-forge viewer


    【解决方案1】:

    您需要制作如下所示的新材质。

    var lineMaterial = new THREE.LineBasicMaterial ({
    color: new THREE.Color (0xFF0000),
    transparent: true,
    depthWrite: false,
    depthTest: true,
    linewidth: 10,
    opacity: 1.0
    })
    
    var lines = new THREE.Line (geometry,
    lineMaterial)
    scene.add (lines)
    

    【讨论】:

      【解决方案2】:

      如果您直接调用drawLines 函数,请确保使用与教程相同的材质类型:

      let material = new THREE.LineBasicMaterial({ color: 0xffff00, linewidth: 2 });
      viewer.impl.matman().addMaterial('MyLineMaterial', material, true);
      drawLines([{x:0,y:0,z:0}, {x:10,y:10,z:10}], material);
      

      【讨论】:

        【解决方案3】:

        啊哈,成功了!为了解决这个问题,我不得不使用 createOverlayScene 和 addOverlay 将线几何添加到场景中,而不是使用 scene.add,并且必须删除 matman().addMaterial。

        【讨论】:

          【解决方案4】:

          尝试新场景----代码抱歉我的英语不好

              const geometry = new THREE.Geometry ()
          
              geometry.vertices.push (new THREE.Vector3 ( 0,  0,  0))
              geometry.vertices.push (new THREE.Vector3 (100, 100, 100))
          
              var material = new THREE.LineBasicMaterial({
                  color: 0x0000ff,
                  linewidth: 2
              });
          
              var lines = new THREE.Line (geometry, material)
          
              viewer.impl.scene.add (lines)
          

          您需要确保您的场景可以创建线条。

          【讨论】:

            猜你喜欢
            • 2019-06-21
            • 2018-06-29
            • 2017-10-25
            • 2020-09-25
            • 2020-05-30
            • 2019-07-22
            • 1970-01-01
            • 1970-01-01
            • 2021-02-10
            相关资源
            最近更新 更多