3D 场景中的物体描边效果是怎么做的? 您所在的位置:网站首页 3dmax取消物体边缘线 3D 场景中的物体描边效果是怎么做的?

3D 场景中的物体描边效果是怎么做的?

2023-01-30 20:42| 来源: 网络整理| 查看: 265

这类技术通常称作轮廓渲染(silhouette rendering)。

传统的做法主要分开 3 类:

材质着色:如用 pixel shader 或环景贴图 [1] 检测屏幕空间的法线方向来决定是否接近边缘。这只适合曲面为主的物体,不能细致地控制轮廓的粗幼。其实和 rim light 是相似的,只不过是变暗而不是变亮。几何空间:如 shell method [2],正常地渲染场景后,再渲染几何物体一次,这次把顶点位置沿法线方向 extrude 来扩大几何体,然后剔除正向的面,即只剩下扩大后的几何体背面,用单色渲染。坏处是轮廓线通常使用世界空间的单位,会有远细近粗的问题。而且有些凹形的部分会有穿插问题。Image courtesy of David R. Walton Silhouette Rendering

屏幕空间:如 [3],正常地渲染场景后,以后处理形式过滤深度和法线信息,判断相邻像素的深度和法线差异,超过阈值的当作是轮廓线,然后再把这个「edge detection」的图象结果在屏幕空间扩展。优点是可以处理法线变化大但深度变化不大的线条。坏处是阈值不好设,而且所有物体的轮廓线颜色必须相同。好处是性能上与场景复杂度无关(只与分辨率相关),而且容易加入现有的渲染管道内。

这些都是比较老的技术,在 RTR3 [4] 里都有提及到。较新的硬件应该可以在 geometry shader 直接生成轮廓线,做到更多的判断,并减少顶点数目及填充率。等其他人补充。

[1] Gooch, Bruce, et al. "Interactive technical illustration." Proceedings of the 1999 symposium on Interactive 3D graphics. ACM, 1999.

Interactive Technical Illustration

[2] Hart, Evan, Dave Gosselin, and John Isidoro. "Vertex shading with direct3d and opengl." Game Developers Conference. Vol. 207. 2001.

[3] Mitchell, Jason L., Chris Brennan, and Drew Card. "Real-time image-space outlining for non-photorealistic rendering." ACM SIGGRAPH 2002 conference abstracts and applications. ACM, 2002.

[4] Haines, Eric, and Tomas Akenine-Moller. "Real-time rendering." (2002).



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有