gpt4 book ai didi

opengl - "Radar approach"到视锥体剔除 : fail at first simple test?

转载 作者:IT王子 更新时间:2023-10-29 01:21:41 24 4
gpt4 key购买 nike

尝试至少获得非常简单 part 1 of the Lighthouse3D Radar Frustum Culling tutorial工作......并且我什至无法在我的渲染器中使该部分工作而感到非常困惑。

所以第一步是:测试一个点是在近平面前面还是在远平面后面,如果是这样的话就提前剔除。 (如果没有,您将执行进一步的测试,但我只停留在第一部分。)

我使用 2x2 立方体的世界空间中心 (x1y2z3),并有一个可以自由移动和旋转的相机。我所有的矢量和矩阵东西都必须相当可靠,因为渲染器否则工作得很好。所以这是我对第一部分的看法(在 Go 中),简单的“Z vs near-or-far”测试:

func (cam *Camera) frustumHasPoint(point *Vec3) bool {
var pc Vec3
v := point.Sub(&cam.Controller.Pos) // point minus camPos
ref := cam.Controller.dir // take a copy of camDir
ref.Z = -ref.Z
ref.Normalize() // camDir was already normalized but anyway...
pc.Z = v.Dot(&ref)
if pc.Z > cam.Perspective.ZFar || pc.Z < cam.Perspective.ZNear {
return false
}
return true
}

现在为什么要反转 ref 的 Z?因为在教程中他们写道:“请注意图中的引用不是右手系统(如在 OpenGL 中),因为 Z 的方向已颠倒以使教程更直观”——好吧,在 GL 教程中当然这会产生相反的效果......

好吧,如果像上面那样反转 Z,它会剔除超过 50% 的时间;如果我不这样做,那么它会在大约 98% 的时间内“过度剔除”..

我错过了什么?

最佳答案

已解决。原因是脑部故障...教程清楚地写了关于首先获取 x/y/z 轴来描述平截头体,不知何故我错过了......

关于opengl - "Radar approach"到视锥体剔除 : fail at first simple test?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15262048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com