【问题标题】:Orthographic Camera and pickingRay?正交相机和pickRay?
【发布时间】:2013-12-03 21:13:21
【问题描述】:

我尝试实现一个函数来选择和移动正交相机的舞台组合中的对象。

我想获得与以下相同的示例:http://threejs.org/examples/webgl_interactive_draggablecubes.html

但不能使用透视相机。

我已经换了:

var camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1000 );

与:

var camera =  new THREE.OrthographicCamera(window.innerWidth / -zoom, window.innerWidth / zoom, window.innerHeight / zoom, window.innerHeight / -zoom, -1000, 1000);

并替换了这个:

var ray = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );

通过这个:

var ray = projector.pickingRay( vector, camera );

但是,它似乎还不够运行。

那么,它缺少什么?

是否可以将投影仪和光线与 OrthographicCamera 一起使用??

谢谢。

【问题讨论】:

    标签: three.js orthographic picking


    【解决方案1】:

    请在您的示例中尝试此代码:

    event.preventDefault();
        if (event.button === 0) {
    
            var projector = new THREE.Projector();
            var vector = new THREE.Vector3((event.clientX / window.innerWidth) * 2 - 1, -(event.clientY / window.innerHeight) * 2 + 1, 0.5);
            // use picking ray since it's an orthographic camera
            var raycaster = projector.pickingRay(vector, camera);
            //ditermine whether any of the supplied objects are hit by this ray    
            var intersertsObj = raycaster.intersectObjects(_entities);
            // _entities : is array entities you put to scence
            // you can store this list before you entity to scence: 
            // _entities.push(entity);
            // scene.add(entity);
            if (intersertsObj.length > 0) {           
                var pickedObject = intersertsObj[0];               
            }       
        }
        event = null;
    

    它在我的项目中运行良好。

    【讨论】:

      【解决方案2】:

      有一个函数Raycaster.setFromCamera()是在最初提出这个问题后引入的。它专门处理正交相机,所以我认为现在这是解决这个问题的首选方法。

      【讨论】:

        猜你喜欢
        • 2019-10-07
        • 2014-07-31
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多