【图形学】View矩阵的理解
·
一、目的
在逻辑上,渲染肯定应该在“相机”所处的位置进行,如下图,O点为世界坐标系原点,i,j,k是向量基;O’点是相机位于的点,i’,j’,k’分别为相机的右侧向量、上侧向量和前侧向量

但是在代码设计过程中,虽然在相机点开始渲染是可行的,但实际上让所有的渲染都在原点完成才更加方便,于是需要想一个办法,使得在原点渲染出的结果等效于在某个特定的相机处渲染的结果,这个办法就是:通过在逻辑上调整相机的位置和角度让相机与原点完全重合,且其三个向量基i’,j’,k’也和i,j,k完全重合,并且在此过程中场景中所有的其他模型都在通过进行相应的变换来使得这些模型与相机的相对位置保持不变,这样一来,从原点渲染当然也就是从相机渲染。但是从物理上,内存中根本不存在什么相机实体,所以,我们要做的仅仅只是将场景中所有的其他模型都在通过进行相应的变换来使得这些模型与相机的相对位置保持不变,找出可以进行这种变换的矩阵并应用于每一个模型,这个矩阵就是View矩阵。
View矩阵的书写方法:

其中:
z = (center - eye).normalized();
x = cross(up,z).normalized();
y = cross(z, x).normalized();
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)