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
node.js环境中的THREE.js_Node.js_Three.js_Collision Detection - Fatal编程技术网

node.js环境中的THREE.js

node.js环境中的THREE.js,node.js,three.js,collision-detection,Node.js,Three.js,Collision Detection,由于制作了一些简单的多人游戏,我选择了THREE.js在浏览器端实现图形。在浏览器上,一切正常 然后我想: 服务器必须签出大多数用户操作。所以我需要将world copy放在服务器上,与用户交互,然后将其状态返回给用户 因此,由于这段代码是为客户端编写的,我只是让它与node.js兼容,然后继续。(良好的碰撞检测,可以使用对象。几何体-是我非常想要的) 结果,碰撞检测代码停止工作。在服务器端,Raycaster在上退出 弦 } else if ( object instanceof TH

由于制作了一些简单的多人游戏,我选择了THREE.js在浏览器端实现图形。在浏览器上,一切正常

然后我想: 服务器必须签出大多数用户操作。所以我需要将world copy放在服务器上,与用户交互,然后将其状态返回给用户

因此,由于这段代码是为客户端编写的,我只是让它与node.js兼容,然后继续。(良好的碰撞检测,可以使用
对象。几何体
-是我非常想要的)

结果,碰撞检测代码停止工作。在服务器端,Raycaster在上退出 弦

    } else if ( object instanceof THREE.Mesh ) {

        var geometry = object.geometry;

        // Checking boundingSphere distance to ray

        if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();

        sphere.copy( geometry.boundingSphere );
        sphere.applyMatrix4( object.matrixWorld );

        if ( raycaster.ray.isIntersectionSphere( sphere ) === false ) {
            return intersects; // _HERE_

        }
这是因为
object.matrixWorld
Identity矩阵。 但是进行了对象初始化<代码>网格。位置
网格。旋转
在服务器和客户端上是相同的(在浏览器中,raycaster是一个魔咒)

我想,
object.matrixWorld
会在
renderer.render(self.three\u scene,self.camera)中的某个地方更新。但当然,这不是我在服务器端想要做的

所以问题是:如何在服务器端的每次模拟中更新
object.matrixWorld

或者,也许是建议,如果有其他方法可以得到我想要的东西。

好的

这很简单

renderer.render
递归更新整个场景的矩阵。递归的入口是Object3D实例的函数


因此,在服务器端使用Raycaster之前,我们应该为可碰撞网格列表中的每个网格调用此方法。

为此苦苦挣扎了两个小时“为什么我的Raycaster在本地工作,但在服务器端不工作?”非常感谢,这使它现在也可以在服务器端工作:)