Forge Viewer - 无法向场景添加线条

Forge Viewer - Can't add lines to scene

我正在尝试将一些线条添加到我正在构建的 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 等,但仍然无法在场景中绘制线条。

您需要创建一个新的 Material,如下所示。

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)

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

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);

啊哈,成功了!要修复它,我必须使用 createOverlayScene 和 addOverlay 将线几何体添加到场景中,而不是使用 scene.add,并且必须删除 matman().addMaterial.

做一个新的场景试试---- 只是代码抱歉我的英语不好

    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)

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