假设您的眼睛位于对象 A 上的表面点 P1 上,并且有一个目标对象 B,并且对象 B 后面有一个点光源。
问题:如果我看着光源并说“我在阴影中”,如果我因为物体 B 而看不到光,我是对的吗?然后我将对象 A 的那个点标记为“A 上 B 的阴影点之一”。
如果这是真的,那么我们是否可以在 A 的表面上构建一个“阴影几何”(黑色)对象,然后由于光、B、A 等的实时运动而不断改变它?假设一个球体(A)有 1000 个顶点,而其他球体(B)也有 1000 个顶点,那么这是否意味着 100 万个比较?(是阴影,O(N ^ 2)(时间)复杂度?)。我不确定复杂性,因为改变 P1(眼睛)也会改变 B 的可见点(在 P1 和光源点之间)。二阶或更高级别的阴影(例如灯光在两个物体之间多次反射)呢?
我现在正在使用 java-3D,但它没有影子功能,所以我想转移到其他与 java 兼容的库。
谢谢。
编辑:移动相机以构建阴影时,我需要禁用“相机”。我怎样才能做到这一点?这会严重降低性能吗?
新想法: java3D 有内置的碰撞检测。我将创建从光到目标多边形顶点的线(不可见),然后检查来自另一个对象的碰撞。如果发生碰撞,请添加该顶点corrd。到阴影列表,但这仅适用于点灯:(。
任何为 java3d 提供真正的阴影库的人都会很有帮助。
java3D 中非常小的样本 Geomlib 阴影/光线跟踪可能是最好的 光线跟踪示例?
我知道这有点难,但至少有一百人尝试过。
谢谢。