首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三维模型下的轮廓

三维模型下的轮廓
EN

Computer Graphics用户
提问于 2020-12-02 06:28:58
回答 3查看 165关注 0票数 1

有些3D应用程序可以在3D模型下投射阴影或轮廓。它们的渲染速度非常快,而且非常平滑。我想知道什么样的技术是获得三维模型阴影/轮廓的标准程序。

例如,是否有像libiglCGAL这样的C0库可以相当快地获得阴影/轮廓?或者可能是用GLSL遮阳?任何提示都将在标准技术栈中得到赞赏。

EN

回答 3

Computer Graphics用户

发布于 2020-12-04 16:26:13

像这样的阴影有一个窍门,但只有这个正确的用法。当然,你可以用很多技巧画出一个真实的影子。诀窍是你可以把物体平放在地板上。

所以你所需要做的就是用一个矩阵一次绘制2次物体,这个矩阵在地板轴上被缩放为零。您也可以使用此技术来绘制不完全自上而下的阴影,方法是添加倾斜以对抗现在旋转的阴影。

这是非常容易实现的。没有额外的摄像头。但只能在一架飞机上工作。这是阴影卷的特殊情况,无需绘制卷。

票数 3
EN

Computer Graphics用户

发布于 2020-12-03 10:36:28

我不知道每个3d建模软件是如何计算阴影的,因为我不知道它们的实现。然而,我想通常的候选实时阴影计算是使用的。它们是:

据我所知,第二种并不流行,因为它更复杂,而且通常计算成本更高。如果你只想把一个轮廓像阴影一样投射到一个平面上,而不关心位于阴影中的其他物体的正确照明,你可以使用这样的简单方法:

选择一个(单通道)纹理作为渲染目标,并清除其内容.现在,在没有透视投影的情况下,从顶部画出所有的对象。片段着色器总是返回与清晰颜色不同的颜色。最后,您有一个包含对象的所有轮廓的纹理。现在你只需要渲染一个四边形,在正确的位置使用这个纹理到你的场景中,稍微高于平面。将片段着色器的输出颜色设置为黑色。如果当前片段处的纹理颜色等于透明颜色,则alpha通道设置为0,如果不相同,则设置为您喜欢的值。(这需要启用混合)

这基本上是一个非常专门和简化的阴影映射特例,它使用纹理而不是z缓冲区。

注:

我最初建议为此使用模具缓冲区,但是它会增加一个不必要的间接方向,让它按预期工作可能会很痛苦(至少在OpenGL中是这样)。

票数 1
EN

Computer Graphics用户

发布于 2020-12-16 04:27:37

我刚才听到的这种东西的一种方法是在简单的解析形状上进行射线行进,这些形状近似于网格,所以你基本上创建了一个抽象的,粗糙的SDF来表示所讨论的网格,并对一些阴影进行射线行进。我听说过I igo Quilez提到它,并谈到他是如何召开会议的,但我还没有找到,我想不是Gamescon就是SIGGRAPH。

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

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

复制
相关文章

相似问题

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