首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理光线泄漏?

如何处理光线泄漏?
EN

Computer Graphics用户
提问于 2018-05-22 19:24:55
回答 1查看 571关注 0票数 3

我在挣扎着通过网格(特别是薄的)漏光,因为在这些网格的对立面的探针之间进行了内插。

我采取的第一种方法是将所有静态几何映射到1 lightmap,然后为每个可以映射到某个三角形的纹理中心生成光探针。计算探针的世界位置,利用一个质体质点的重心在一个相应的静态几何三角形上,然后,在碎片着色器中,用碎片的UV坐标在探针之间进行二次插值。不幸的是,我不得不放弃所有这些,因为自动UV映射(例如Blender中所有可用的工具)绝对不适合这项任务,手工UV制作太繁琐,不可能可行。

然后我看到了一场游击游戏的演示,介绍了Killzone中的GI技术,它利用影子地图(某种程度上)来存储每个探针的遮挡数据。我想也许我可以做些类似的事。我所做的是对每个探针进行射线跟踪遮挡,并在一个巨大的纹理地图集中存储各自射线方向的遮挡距离,然后,在碎片阴影中,通过比较从探针到像素的距离和最近射线的遮挡距离,确定当前像素的遮挡探针,并将遮挡探针的插值权重设置为0。但是,这种方法存在两个严重的问题,这是我在实现算法之后才发现的。

1)让我们考虑一下,当从当前像素到探针的距离与射线3相比时(见附图)。对于位于“L”范围内的像素,探测器的探测距离将大于光线3的遮挡距离,探针将被视为遮挡,但它不是!

2)让我们想象第一个问题解决了。现在出现了一个细网格的问题。对于这样的网格像素在它的对面将有几乎相同的世界位置和距离测试将导致从双方的探针对两个像素的充分内插。我想解决这一问题需要像素的正常,但也许它会在第一个问题解决后出现。

我非常感谢在解决这些问题方面提供任何帮助。或者有人可以用更可行的算法代替?

EN

回答 1

Computer Graphics用户

发布于 2018-05-29 01:21:52

我也花了很多时间思考这个问题的解决方案。这似乎是一个基本的不匹配,采取一个稀疏的,较低的频率结构(探针网格,即使增加了深度图)和照明表面,每像素本身是排他性。

如果您查看CoD:IW (http://advances.realtimerendering.com/s2017/index.html)中的SIGGRAPH'17预计算照明,您将看到它们将预置照明划分为大表面(有大量遮挡)的光映射,并对小型静态对象和字符使用探测网格。他们采用类似的方法来存储每一个四面体面的遮挡深度图,但是由于他们没有用探针网格点亮封堵器,所以引入的不连续性很可能不明显。

试图用同样的地图点亮封堵器是非常棘手的,因为探针网格面可能与封堵器不对齐。也就是说,“拐角”情况下,3架飞机相遇并不能很好地编码成深度图。我感觉他们仍然有轻微的泄漏,但他们的密度可能是相当高的,他们的评估点是足够远的病理坏的病例。

有时,要求水平艺术家不要制作单面网格或薄墙XD可能是值得的,至少暂时是这样。

祝你好运,如果你找到了一个强有力的解决方案,你应该向一个会议提交一篇论文,并成为图形行业的知名人物:D。

票数 1
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/7658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档