three.js - 如何使用带负近平面的 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 )
有人能解释一下这个表达式在做什么吗?
我将不胜感激任何人都可以分享这方面的见解。谢谢你。
解决方案
推荐阅读
- opencart-3 - 在第 52 行的 /storage/modification/system/library/template/twig.php 中找不到类“Twig_Extension_DTwigManager”
- sha256 - 将一串数字生成的 hash-256 转换为 Java 中的 64/32 位唯一数字
- kubernetes - 列出 kubernetes 中一项服务的调用者的最佳方法是什么?
- android - 活动未自动从后台启动
- makefile - make 命令只构建第一个目标 - Makefile
- reactjs - 通过单击某个条件 Ant Design 表格展开表格的一行
- css - 尝试使用顺风容器使图像居中时遇到问题 - 图像右侧的不可见填充
- django - 如何自定义 Django 项目的管理页面?
- java - 如何在 Java 中组织单元测试?
- apache-spark - PySpark Kafka py4j.protocol.Py4JJavaError: 调用 o28.load 时出错