Javascript 如何确定大对象前面的小对象何时对摄影机可见?
我是three.js和WebGL的新手 在我的应用程序中,有一个包含两个对象的3D场景Javascript 如何确定大对象前面的小对象何时对摄影机可见?,javascript,three.js,webgl,Javascript,Three.js,Webgl,我是three.js和WebGL的新手 在我的应用程序中,有一个包含两个对象的3D场景 物体-它是一个大球体 对象-位于第一个对象表面上的较小球体 大球体绕其轴旋转。还有一种可能性是围绕球体旋转摄像机 因此,作为大球体表面上的一个小球体,它也会随之旋转。当大球体转向相机时,我们可以看到小球体,而当一个大球体在它前面时,它将不可见 问题是,我如何确定一个小球体何时对相机可见,何时不可见 另外,我需要得到小球体的二维坐标。我如何做到这一点?这可以通过three.js内置的raycaster和proj
另外,我需要得到小球体的二维坐标。我如何做到这一点?这可以通过three.js内置的
raycaster
和projector
功能来实现。首先,试着看一看它的代码和源代码。这是。通过这种方式,可以确定哪些对象更靠近从摄影机位置发射的不可见线
否则,如果您只是想知道两个对象中哪一个更靠近摄影机,则只需检查它们的位置值中哪一个与摄影机坐标的距离较小。三维距离公式将派上用场:
bigSphereDistance = Math.sqrt( Math.pow(camera.position.x - big.position.x,2) +
Math.pow(camera.position.y - big.position.y,2) +
Math.pow(camera.position.z - big.position.z,2) );
smallSphereDistance = Math.sqrt( Math.pow(camera.position.x - small.position.x,2) +
Math.pow(camera.position.y - small.position.y,2) +
Math.pow(camera.position.z - small.position.z,2) );
//then check...
bigSphereDistance > smallSphereDistance ? /*case*/ : /*case*/;
直观地说,当小球体的距离小于大球体的距离时,小球体是可见的,缓冲区为小球体的半径
要回答第二个问题,请查找任何对象的二维坐标。你好,迈克,欢迎来到stackoverflow:)这个问题似乎研究得很好,但需要您进行一些编辑才能得到建设性的答案。如果您能指出球体跟踪其空间位置所使用的部分实现,那就太好了。谢谢:)您是对的-少格式就是少答案。