Graphics-PA1
算法框架
遍历每一个像素点,使用透视相机模型,根据当前像素点的坐标生成真实世界坐标系的光线,与空间中所有物体求交:
没有交点,就将这个像素设置为背景颜色
有交点,根据求交算法的具体逻辑,此时hit中会存与起始点最近的交点,根据此交点着色即可。着色时,遍历所有光源,对于单个光源,根据光源到交点的位置、光源颜色以及物体材质利用Phong模型计算即可。
细节实现
透视相机模型
这个模型主要使用小孔成像原理,根据图像上一个点的坐标,计算出真实场景中光线的参数。
图像坐标到相机坐标系光线
将相机坐标系中相机到画布的距离定为1,给定angle后,可以得知相机空间中一个单位距离对应画布上的像素数
则相机空间中光线R的参数为:
相机坐标系到真实坐标系
根据相机的外参对光线参数进行变换。则在真实坐标系下,光线的参数为
求交算法
直线与球面求交
球有三个参数,圆心位置
解方程
即
令
则
若
直线与平面求交
平面方程
所以一个平面有三个参数,A,b以及材质material,其中A也是平面的法向量。
直线与平面可以直接由方程解出
若
直线与三角形求交
三角形有三个参数,三个顶点的坐标
根据三个顶点的坐标,可以得到其所在平面的法向量
=P_0-R_o
$
若
Phong 模型着色
直接应用公式即可