首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >天空穹顶内的三支js Raycast

天空穹顶内的三支js Raycast
EN

Stack Overflow用户
提问于 2016-05-29 18:17:21
回答 1查看 449关注 0票数 0

所以,我在一个游戏世界工作,那里的一切都包含在一个天穹(巨大的球体和环境纹理应用)。

我试图找出天穹内射线的相交点,以便找出矢量播放器需要移动的方向。

到目前为止,我发现的唯一问题是光线不会被投射到天穹内,而是在它的外部放大的时候。

这就是我这边的光线传送器的样子。

代码语言:javascript
复制
        mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
        mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;

        // update the picking ray with the camera and mouse position
        raycaster.setFromCamera( mouse, camera );
        // raycaster.set(playerModel, c);

        // calculate objects intersecting the picking ray
        var intersects = raycaster.intersectObjects( scene.children, true );

        console.log(intersects);
        for ( var i = 0; i < intersects.length; i++ ) {

            intersects[ i ].object.material.color.set( 0xff0000 );

        }

另外,如果有人能解释我如何得到光线投射到的矢量,我将非常感激,不是通过使用raycaster.setFromCamera( mouse, camera );,而是raycaster.set(playerModel, targetVector);,目标向量需要是天穹的位置向量吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-30 09:48:02

我多次使用的工作示例:

代码语言:javascript
复制
var spaceplane = [];           
var spaceMaterial  = new THREE.MeshBasicMaterial();
    spaceMaterial.side = THREE.BackSide;
var meshSpace = new THREE.Mesh( new THREE.IcosahedronGeometry( 1000000, 1 ) , spaceMaterial );       
    meshSpace.rotation.order = 'XZY';
    spaceplane.push( meshSpace );
    //// add to the scene of course

//////////////// selection on mouse click etc...
var raycaster = new THREE.Raycaster();
    raycaster.setFromCamera( mouse, camera );
var intersects = raycaster.intersectObjects( spaceplane, true );


if ( intersects.length > 0 ) {                         
                            /// here you have intersection    
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37513332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档