当前位置: 首页 > news >正文

卡通渲染总结《二》

关于技术的方面,一方面就是其轮廓边缘检测:

主要的方法可以被分为基于图片空间和对象空间,对象空间比图片空间会多一些立体坐标位置的信息。

轮廓类型分类

首先我们顶一下轮廓是什么,从一个视角看去如果一条边相邻的两个面其恰好对应于正面和反面,则认为这条边为轮廓,如下图所示:
在这里插入图片描述
折痕则根据相邻两个多边形的二面角可以被分为山脊边缘和山谷边缘,对于山脊边缘,角度值小于阈值,对于谷边缘,角度值大于指定阈值。
材质边则是建模过程中艺术家能确定的不同材质之间的边界
还有一种轮廓类型为非固体对象边,就比如一张纸它的四周就是边缘。下面这幅图就全面的体现和分类了对应的边
在这里插入图片描述

图像空间方法

所以现在的方法使用深度值和法线图来判断边缘,

  • 深度缓冲的利用中:通常认为同一个物体的深度值变化是小的,而不同物体间深度变化会变大,相当于通过0阶导的形式来判断,但是无法检测出一阶导变化大的边例如上图的C,其就相当于函数|x|
  • 法线图:法线图能弥补深度无法检测一阶导变化的轮廓线,但发现生成的方式有多种。比如使用渲染管线中的顶点着色器传输法线到片段着色器插值。

最终通过两者相加来组成结果 如下图 上面是深度,下面是法线,右边是最终结果。
在这里插入图片描述
但图像空间毕竟无法使用3D的信息,在物体的远近变化处,可能出现边缘宽度不一致的情况。

对象空间方法

对象空间可以获得更多的3D信息,但在计算上也会相应的更复杂,所以面对实时渲染时需要进一步的提高效率。

其中对于光滑的表面可以计算视角方向和法线方向的点乘判断折痕边,

在这里插入图片描述
n i ∗ ( x i − C ) = 0 n_i * (x_i - C) = 0 ni(xiC)=0
其中 C C C表示视角方向 n i n_i ni 表示表面发现方向 x i x_i xi表示视角点。

对于多边形网格,计算两条边和视角的方向,在第一步中,他们计算每个顶点的表面法线和视图向量的点积。两个垂直向量的点积为 0,因此目标是找到它们。因为点积的值在表面上平滑变化,所以只有点积的符号有趣。如果两条边顶点的符号不同,则该边上一定存在轮廓点。该点的位置是通过沿指定边缘的线性插值计算的。最后在三角形网格的确定的轮廓点之间生成轮廓。
在这里插入图片描述

我们把图中的边符号圈了出来,然后对该边中的点进行判断,确定点乘为0后对所有边缘点进行连接插值。

但我们这些生成的边终归是黑线,其实我们可以用不同的纹理生成各种样式的边,比如根据相邻两边E1 E2的角度选择不同的纹理,d是自己定义的角度值
在这里插入图片描述
在这里插入图片描述

这样生成的效果也是有一定的味道。

http://www.lryc.cn/news/254575.html

相关文章:

  • 严蔚敏数据结构p17(2.19)——p18(2.24) (c语言代码实现)
  • 0007Java程序设计-ssm基于微信小程序的在线考试系统
  • php 使用多线程
  • 基于MapBox的方法封装及调用
  • 华为OD机试真题-虚拟游戏理财-2023年OD统一考试(C卷)
  • 解决 video.js ios 播放一会行一会不行
  • 排序分析(Ordination analysis)及R实现
  • Tomcat主配置文件(server.xml)详解
  • Python实现简单的区块链,实现共识算法、Merkle Tree(默克尔树)、冲突解决、添加交易等功能
  • 深入理解 Java 虚拟机(JVM)从入门到精通
  • 哔哩哔哩自动评论软件,其成果展示与开发流程和代码分享
  • Qt OpenCV 学习(一):环境搭建
  • Redis——某马点评day02——商铺缓存
  • prometheus|云原生|轻型日志收集系统loki+promtail的部署说明
  • MySQL 临时数据空间不足导致SQL被killed 的问题与扩展
  • 文心一言大模型应用开发入门
  • C++新经典模板与泛型编程:SFINAE替换失败并不是一个错误
  • 基于若依的ruoyi-nbcio流程管理系统支持支持定时边界事件和定时捕获事件
  • 递归-极其优雅的问题解决方法(Java)
  • VSCode搭建STM32开发环境
  • 解决CentOS下PHP system命令unoconv转PDF提示“Unable to connect or start own listener“
  • 软件测试外包干了2个月,技术进步2年。。。
  • Linux-网络服务和端口
  • Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)读书笔记 目录
  • 阿里云Arthas使用——通过watch命令查看类的返回值 捞数据出来
  • Redis中持久化策略RDB与AOF优缺点对比
  • 通用plantuml 时序图(Sequence Diagram)模板头
  • Domino多Web站点托管
  • 防火墙补充NAT
  • 配置和管理VLAN