3d - 计算对象在 3D 场景中的可见程度以用于游戏逻辑/AI

标签 3d visibility shadow ogre3d light

我正在启动一个游戏项目,该项目将允许角色隐藏在黑暗区域。躲在黑暗的角落应该会让其他角色更难看到你。

我需要一种方法来计算角色所在位置的光照条件。

理想的情况是拥有一个

double getLightFactor(GameCharacter observer, GameCharacter target)

因为我认为可能存在光线照射的照明条件,因此目标的不同侧面会受到不同数量的光线照射。 但我很乐意满足

double getLightFactor(GameCharacter target)

无论您从何处观看,都可以获得特定角色的灯光

double getLightFactor(int x, int z)

仅获取地形中特定 map 点的光线。

该方法需要考虑到光照条件在游戏过程中可能会发生变化,但由于它是回合制的,因此可以允许进行一些繁重的计算。我打算使使用手电筒成为可能,因此也需要考虑它们(但可以单独建模和处理它们)。

我将使用 Ogre3d 来处理我的场景,但我会很乐意接受通用解决方案,甚至其他引擎的解决方案(我选择的引擎不是一成不变的)。

非常欢迎想法、论文或任何相关的东西!

最佳答案

考虑到当前的灯光设置,您可以从观察者的角度将场景渲染到屏幕外缓冲区(即使在相当低的分辨率下)。然后您可以计算目标字符中间周围的平均亮度值。

我不了解 Ogre3d 引擎,但这应该是处理您的问题的一种相当通用的方法(毕竟它只是从不同的角度渲染场景......)

关于3d - 计算对象在 3D 场景中的可见程度以用于游戏逻辑/AI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/924761/

相关文章:

jquery - 在某些情况下 overflow hidden

struct - 如何从函数访问结构的实例字段?

当 View 显示时 Android View.isShown() 返回 false

带有固定阴影的 CSS 下拉动画

svg - 在 svg 中创建内部阴影

objective-c - 返回 CATransform3D 将四边形映射到四边形

algorithm - 屏幕上的 3d 实体阵列绘图

css - 奇怪的阴影框随机出现 - CSS 错误?

c++ - 指向3d封闭体积内

opengl - 绘制 NURBS 曲线时节点的含义?