首页 > 解决方案 > 如何使用带负近平面的 OrthographicCamera 的 Three.js Raycaster?

问题描述

我正在三个.js 中开发一个应用程序,其中我有一个像这样初始化的正交相机:

const orthographicCamera = new THREE.OrthographicCamera( -1, 1, -1, 1, -1000, 1000)

这是近平面参数 (-1000) 的非常规使用,文档中说必须将其设置为值 >= 0。将近平面参数设置为 -1000 允许我渲染场景中具有 z 坐标 > = 0 而不剪切对象,但它似乎也破坏了threejs raycaster,因为z 坐标> = 0 的网格上的三角形永远不会被raycaster 相交,即使它们被渲染。

我一直在检查光线投射器的代码,以了解它如何处理正交相机(尤其是近平面)。

我的主要问题是是否可以在负空间中设置近平面,但仍然有一个可以与 z 坐标 >= 0 的网格三角形相交的功能性光线投射器?

根据这个问题,我还想知道是否有人可以解释一下正交相机光线投射器背后的数学原理?特别是设置射线原点z位置的部分。它使用这个表达式来设置射线原点 z 位置的相机:

( camera.near + camera.far ) / ( camera.near - camera.far )

有人能解释一下这个表达式在做什么吗?

我将不胜感激任何人都可以分享这方面的见解。谢谢你。

标签: three.jsraycastingorthographic

解决方案


推荐阅读