使用飞行控制时,三个js突出显示框

时间:2014-08-27 11:43:12

标签: three.js

使用飞行控件时是否可以突出显示对象?与this类似,但是单击它们时突出显示的框。我最终希望它做的是点击一个对象,然后进入一个网站。但是目前我尝试在点击对象时突出显示一个对象:

        function onDocumentMouseDown( event ) {

            event.preventDefault();

            var vector = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1, 0.5 );
            projector.unprojectVector( vector, camera );

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

            var intersects = raycaster.intersectObjects( mesh );

            if ( intersects.length > 0 ) {

                intersects[ 0 ].object.material.color.setHex( Math.random() * 0xffffff );


            }

            /*
            // Parse all the faces
            for ( var i in intersects ) {

                intersects[ i ].face.material[ 0 ].color.setHex( Math.random() * 0xffffff | 0x80000000 );

            }
            */

但是,当我使用飞控制时,这似乎不起作用吗?如果没有,可以突出显示该对象以显示一些文字吗?

1 个答案:

答案 0 :(得分:1)

我刚用飞控制测试了它,它的工作正常。在这种情况下,请确保对包含网格数组进行光线投射或仅convenience init()

scene.children

Three.js r.71

考虑结帐https://github.com/jeromeetienne/threex.domevents,轻松将var raycaster = new THREE.Raycaster(); var mouse = new THREE.Vector2(); function onDocumentMouseDown( event ) { event.preventDefault(); mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1; mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1; raycaster.setFromCamera( mouse, camera ); // calculate objects intersecting the picking ray var intersects = raycaster.intersectObjects( scene.children ); if ( intersects.length > 0 ) { intersects[ 0 ].object.material.color.setHex( Math.random() * 0xffffff ); } } container.addEventListener( 'mousedown', onDocumentMouseDown, false ); click等DOM事件添加到您的网格中。