即墨市网站建设,设计与绘制一个网站首页,网站营销站点有你想,科技有限公司起名大全Lecture 13 ~ 16
Shadow mapping
一种图像空间算法生成阴影时不需要知道场景中的几何信息会产生走样现象
最重要的思想#xff1a;如果有的点不在阴影里你又能看到这个点#xff0c;那么说明摄像机可以看到这个点#xff0c;光源也可以看到这个点
经典的Shadow mapping …Lecture 13 ~ 16
Shadow mapping
一种图像空间算法生成阴影时不需要知道场景中的几何信息会产生走样现象
最重要的思想如果有的点不在阴影里你又能看到这个点那么说明摄像机可以看到这个点光源也可以看到这个点
经典的Shadow mapping 只能处理电光源
步骤
从光源看像场景记录看到的任何点的深度Project visible points in eye view back to light source 眼睛看向场景将看到的场景投影回光源查看记录的深度是否一致。如果只被光线看到不被相机看到就不会被渲染如果被相机看到没被光线看到就是阴影。
问题画面会脏数值精度问题浮点数的相等不好判断可以改判大小或加个bias但效果不好受限于shadow mapping的分辨率只能产生硬阴影。 应用所有的3d游戏和早期动画 光栅化的问题
光栅化的渲染是将场景的渲染任务按层次拆解物体——三角面——像素。这种拆解会导致全局信息的丢失因此光栅化实现不了软阴影、间接光照等。
shadow mapping
光栅化没法考虑全局光照GI只能计算直接光照没法考虑光源与物体间的遮挡无法计算阴影。那怎么产生阴影的效果用shadow mapping但是只能处理点/方向光源只能产生硬阴影要么在阴影里要么不在。光栅化是快速的近似的效果 Ray Casting 光线投射by Author Appel
光线追踪 -- 实时很慢经常用来进行离线的制作比如用来制作电影
Light Rays 假设
光线沿着直线传播 本身是错误的光线不会互相碰撞 也是错误的光线是从光源发射出来然后经过反射最终到达人眼 利用了光线的可逆性
假设
人的眼睛是针孔摄像机光源是点光源光线打到场景物体上会发生完美的反射/折射
Eye Ray 从眼睛开始往成像屏幕的任何一个像素投射打到场景中某个位置最近的交点因为人眼肯定是看到最近的东西从而也解决了深度测试的问题
Shadow Ray 再从这个交点往光源连一条线如果这条线上没有任何东西阻挡那我们就认为该点被光线照亮如果有就认为该点在阴影中
从相机出发对于每个像素点向场景投射光线直到光线与场景中第一个物体相交在交点处根据物体本身性质、光源属性和光照模型等来计算像素点的颜色
光线投射只考虑投射光线光线与物体相交后不会继续跟踪不考虑后续的折射、反射等。 whitted-style 光线追踪 递归 Whitted 主要说在任何一个点光线可以继续传播
计算折射反射每一个和场景相交的点都与光源做连线进行着色
技术问题
Ray - Surface Intersection 求光线与表面的交点
数学上的光线有一个起点有方向就是一条射线 光线与物体求交 推广到隐式表面 得到的根必须具有实际意义
必须是正的必须是实数不能是虚数
那么对于显式的表面呢
可以判断是否在物体内一个点在封闭的图形内往任意方向打一束光线储出去
奇数个交点 -- 物体内偶数个交点 -- 物体外
光线和三角形求交 -- 太慢了 做法分解
求光线与平面的交点判断交点是否在三角形内部
定义一个平面一条法线一个点
法线与平面上任意一条线段垂直
定义点 p 的要求任何一个在平面上的点 p 与给定 p的连线都与 N 法线垂直 重心坐标求解 左边式子光线方程 右边式子用中心坐标表示的三角形内的任意一点
求解t ,b1,b2 三个未知量三个式子 -- 克莱姆法则
要求t 是正数1 - b1 - b2 非负 b1 ,b2 非负
光线与表面求交的加速算法
不可能光线与每个三角形求一次交加速的重要概念 -- 包围盒 Bounding Volumes )
如果连包围盒都碰不到就更不可能碰到里面的物体 但是效果有限
3D中长方体的理解上下前后左右三个对面形成的交集 通常常用的Axis-Aligned Bounding Box AABB 轴对齐包围盒
沿着xyz轴的对应2d情况长方形的边一定是横平竖直
从二维情况考虑
光线是否和AABB相交长方形两个对面的交集求光线进出的时间如何求进出时间 三维
逻辑光线进入了三个对面才算进入了包围盒。只要离开了任一的对面就算离开了包围盒计算三组 xyz 的 tmintmaxT enter光线进入最晚对面的时间 -- tmin 的最大值t exit 最早离开对面的时间 --tmax的最小值光线与包围盒有交点进入时间 离开时间
特殊情况
t exit 0 表示盒子在光线背后光线向后延申才进入盒子
进入时间 0,离开时间 0光线在盒子里一定有交点
当且仅当光线进入时间小于光线离开时间并且离开时间大于等于0的时候光线与包围盒有交点 参考文章GAMES101 梳理 / 个人向图形学笔记-CSDN博客
13_Ray Tracing_Whitted Style Ray Tracing (yuque.com)