无法在3D查看器中绘制线条?

时间:2017-02-18 22:06:42

标签: autodesk-viewer

http://adndevblog.typepad.com/cloud_and_mobile/2015/12/understand-the-coordinate-system-of-view-and-data-api-with-axishelper-extension.html

1,以上似乎并不适用于当前的观众,思想?

2,Augusto说:https://stackoverflow.com/a/39123356/5410501

但是,3D边界框扩展似乎在演示页面中起作用: http://viewer.autodesk.io/node/gallery/embed?id=560c6c57611ca14810e1b2bf&extIds=Autodesk.ADN.Viewing.Extension.BoundingBox

我想(需要)在3D查看器和2D查看器中绘制线条。我怎么能这样做?

V2.11中的以下代码似乎没有画线。试试http://viewer.autodesk.io/node/gallery/#/viewer?id=57ecc0fc21f5a6ec046dd0fd

以下粘贴到控制台中。

var drawLine = function(start, end, material) {

        var geometry = new THREE.Geometry();

        geometry.vertices.push(new THREE.Vector3(
            start.x, start.y, start.z));

        geometry.vertices.push(new THREE.Vector3(
            end.x, end.y, end.z));

        var line = new THREE.Line(geometry, material);

        NOP_VIEWER.impl.scene.add(line);
        //refresh NOP_VIEWER
        NOP_VIEWER.impl.invalidate(true);

        return line;
}

var _axisLines = [];

    //get bounding box of the model
    var boundingBox = NOP_VIEWER.model.getBoundingBox();
    var maxpt = boundingBox.max;
    var minpt = boundingBox.min;

    var xdiff =    maxpt.x - minpt.x;
    var ydiff =    maxpt.y - minpt.y;
    var zdiff =    maxpt.z - minpt.z;

    //make the size is bigger than the max bounding box 
    //so that it is visible 
    var size = Math.max(xdiff,ydiff,zdiff) * 1.2; 
    //console.log('axix size :' + size);


    // x-axis is red
    var material_X_Axis = new THREE.LineBasicMaterial({
        color: 0xff0000,  //red 
        linewidth: 2
    });
    NOP_VIEWER.impl.matman().addMaterial('material_X_Axis',material_X_Axis,true);
    //draw the x-axix line
    var xLine = drawLine(
        {x : 0, y : 0, z : 0} ,
        {x : size, y : 0, z : 0} , 
        material_X_Axis);

    _axisLines.push(xLine);


    // y-axis is green
    var material_Y_Axis = new THREE.LineBasicMaterial({
        color: 0x00ff00,  //green 
        linewidth: 2
    });
    NOP_VIEWER.impl.matman().addMaterial('material_Y_Axis',material_Y_Axis,true);
    //draw the y-axix line
    var yLine = drawLine(
        {x : 0, y : 0, z : 0} ,
        {x : 0, y : size, z : 0} , 
        material_Y_Axis);

    _axisLines.push(yLine);


    // z-axis is blue
    var material_Z_Axis = new THREE.LineBasicMaterial({
        color: 0x0000ff,  //blue 
        linewidth: 2
    });
    NOP_VIEWER.impl.matman().addMaterial('material_Z_Axis',material_Z_Axis,true);
    //draw the z-axix line
    var zLine = drawLine(
        {x : 0, y : 0, z : 0} ,
        {x : 0, y : 0, z : size} , 
        material_Z_Axis);

    _axisLines.push(zLine);

console.log(_axisLines);

1 个答案:

答案 0 :(得分:0)

我可以知道您正在测试哪个版本吗?

我创建了一个简单的测试来使用AxisHelper的代码。它看起来可以使用当前默认版本的Viewer(2.10)。我也明确地将版本设置为2.11,它也可以工作。 https://github.com/xiaodongliang/TempTest

正如博客所示,要向查看器添加其他几何图形,将创建本机Three.js对象,然后将其添加到查看器场景中,最后通过viewer.impl.invalidate刷新视图。

希望这个测试样本可以帮到你。如果您使用的是v2.10或v2.11,但仍有问题,是否可以提供小型演示代码?