目录
旋转模型
本文分为两部分,第一部分是对于原始模型以下方的命令形式调用,通过键入a或d对模型进行旋转,观察模型结果。
./Rasterizer
如果模型旋转无变化,注意未必是电脑渲染结果慢,而是angle角度变化太小了,可以设置anlgle = 10,如下图所示。
如此便可以任意旋转,下图是我旋转到某一角度的截图。
如果想要使用其他的着色模型,需要修改active_shader为你想要使用的着色模型,注意如果要想使用texture纹理着色,还需要同步修改texture_path,即纹理的路径。如果纹理出现裂缝,可以参考如下链接:作业3:小牛正面或背面正对镜头时出现缝隙 – 计算机图形学与混合现实研讨会
如果仍然渲染很慢,可以参考这个帖子:
改用其他模型
作业的提高部分有一项是使用其他模型,作业框架里也给出了其他的模型,这里来说一下在使用它们时会出现的一些问题。
首先是如何改模型,其实只需要更改模型位置和纹理位置。
模型位置 :
纹理位置:
注意,模型都是.obj结尾,但是纹理有.jpg格式,还有.tif格式,修改时要完善。
下面展示一下我的结果,rock:
cube:
bunny,这个模型的结果可能会特别小,需要是因为人眼位置距离模型太远了,初始人眼位置为{0,0,10},人眼朝-Z方向观看,如果想要把模型变大,需要把人眼往-Z方向移动,即减小Z值,我这里选择使用{0,0,1},结果如下所示:
Crate模型有些问题如果直接使用原始模型会导致出现深度问题:
原因在于.obj文件有问题,它的obj是以四个顶点的矩形记录的,但是在我们的代码里是以三个顶点一个小三角形的方式读取的,导致模型缺少、错位,详见:
作业3换模型—crate出大问题 – 计算机图形学与混合现实研讨会
解决方式是重新配置.obj文件,将其分成若干个小三角形:
f 5/1 2/3 6/2
f 5/1 1/4 2/3
f 6/1 3/3 7/2
f 6/1 2/4 3/3
f 7/1 4/3 8/2
f 7/1 3/4 4/3
f 8/1 1/3 5/2
f 8/1 4/4 1/3
f 1/1 3/3 2/2
f 1/1 4/4 3/3
f 8/1 6/3 7/2
f 8/1 5/4 6/3
即可得到正确答案:
参考链接
作业3:小牛正面或背面正对镜头时出现缝隙 – 计算机图形学与混合现实研讨会