Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 加载Obj文件和测量工具_Three.js - Fatal编程技术网

Three.js 加载Obj文件和测量工具

Three.js 加载Obj文件和测量工具,three.js,Three.js,我成功加载了一个obj文件,但我正在尝试添加一个测量工具,用两点标记三维模型,并在它们之间画一条直线。类似Potree的东西(不幸的是,它不支持.obj文件)。当我使用three.js时,如何做到这一点 添加一个mousedown侦听器 从相机到鼠标位置的光线投射 将交点A、B另存为Vector3 计算A和B之间的距离 缩短代码: function onDocumentMouseDown( event ) { var vector = new THREE.Vector2(); v

我成功加载了一个obj文件,但我正在尝试添加一个测量工具,用两点标记三维模型,并在它们之间画一条直线。类似Potree的东西(不幸的是,它不支持.obj文件)。当我使用three.js时,如何做到这一点

  • 添加一个
    mousedown
    侦听器
  • 相机
    到鼠标位置的光线投射
  • 将交点A、B另存为
    Vector3
  • 计算A和B之间的距离
  • 缩短代码:

    function onDocumentMouseDown( event ) {
        var vector = new THREE.Vector2();
        vector.set(
            ( event.clientX / window.innerWidth ) * 2 - 1,
            - ( event.clientY / window.innerHeight ) * 2 + 1 );
    
        var raycaster = new THREE.Raycaster();
        raycaster.setFromCamera( vector, camera );  
    
        var intersects = raycaster.intersectObjects( model.children );
    
        if ( intersects.length > 0 ) {
    
            pointA = intersects[ 0 ].point;
            // some logic to save pointB
            // on the second click...
            //pointB = intersects[ 0 ].point;
    
            var distance = pointA.distanceTo( pointB );
    
            // draw Line
            var geometry = new THREE.Geometry();
            geometry.vertices.push( pointA );
            geometry.vertices.push( pointB );
            var material = new THREE.LineBasicMaterial();
            line = new THREE.Line( geometry, material );
            scene.add(line);
    
        }
    }
    
    例如,距离输出在控制台中:


    Three.js r107

    发布您已经尝试过的内容,我需要这样做:(不幸的是,这个工具还不支持.obj文件)。