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
Javascript 确定一个网格是否位于3JS中的另一个网格内_Javascript_Three.js_Geometry_Mesh - Fatal编程技术网

Javascript 确定一个网格是否位于3JS中的另一个网格内

Javascript 确定一个网格是否位于3JS中的另一个网格内,javascript,three.js,geometry,mesh,Javascript,Three.js,Geometry,Mesh,我正在玩三个JS,想确定一个网格是否完全位于另一个网格内。我写了一个小机器人,它应该运行到一个由玩家导航的主框中。我知道如何检测碰撞,但有没有一种简单的方法来检测一个物体是否在另一个物体内 我可以计算homebox的中心位置并与robot的位置进行比较,但如果您为“robot”和“home”都创建一个边界框(THREE.Box3),则threejs可能内置了一些东西。比如说: var robotBB = new THREE.Box3().setFromObject(robot); var hom

我正在玩三个JS,想确定一个网格是否完全位于另一个网格内。我写了一个小机器人,它应该运行到一个由玩家导航的主框中。我知道如何检测碰撞,但有没有一种简单的方法来检测一个物体是否在另一个物体内

我可以计算homebox的中心位置并与robot的位置进行比较,但如果您为“robot”和“home”都创建一个边界框(
THREE.Box3
),则threejs可能内置了一些东西。比如说:

var robotBB = new THREE.Box3().setFromObject(robot);
var homeBB = new THREE.Box3().setFromObject(home)
其中
home
robot
是您的对象。现在您可以执行以下操作:

var robotIsHome = homeBB.containsBox(robotBB);

如果
robotBB
完全在
homeb
内,那么
robotIsHome
将是正确的。这样的事情并不简单。这取决于“内部”是什么意思,它需要有多精确,以及网格有多不规则。内部意味着机器人应该在盒子里装满,这样机器人的任何部分都不会在盒子外面。顺便说一句,这两个对象都固定为零,因此事实上它们可以在地面上重叠。通过比较边界框或更快地比较对象的边界球体,您可以获得粗略的近似值。很多人都竖起了大拇指!谢谢:)请务必注意,边界框是轴对齐的边界框。因此,如果你的“家”和/或“机器人”没有轴对齐,在很多情况下都会产生错误的结果。