D3D11 加载静态3D模型(.obj格式)

本章节将学习如何从.obj文件加载静态3D模型。通常在游戏内不会想要使用.obj文件,因为它们不包含动画,且它们是ascii格式的,所以它会比其他格式的文件比如.3ds的要大一些,但是这是一个用于学习如何加载模型的好起点。

本章基于聚光灯构建。

和.obj文件一起的是.mtl文件,它是一个材质库。还会学习使用.mtl文件来为模型加载材质。.obj文件很大并且没有包含动画,所以通常会想要给游戏使用一个不同的模型格式。然而,.obj格式是一个学习如何加载模型的很好的文件。

.obj文件格式

.obj格式文件已经存在很长一段时间。它是三大最老的模型格式之一,现在仍然广泛使用。

.obj文件不包含类似其他文件格式的头信息。头信息位于文件的开头,会给人一点关于文件的信息。比如,在一个3D模型文件内的头可能告诉你在文件内有多少顶点,纹理坐标,法线,材质,子集以及面。由于.obj文件不包含这个信息,我们能够使用后面的两种方式中的一种。第一件事就是可以读该文件两次。第一次读会收集信息,这些信息包括多少个顶点,面,法线等。还有,所以我们能够为每条信息初始化矩阵。第二次读取会获取实际模型信息,比如顶点位置,并将它们存储在一个初始化的数组中,这是一种很低效的方式来获得向量。第二种方式就是我们能够加载一个obj文件并使用向量来实现。一个向量是一个动态数组,不是使用一个设置大小来初始化它,而是“push_back”元素以增加它的大小。另外一个关于向量的事情就是清理它们,所以我们不必像标准数组一样来删除它们。使用该方法,我们只需要读一次文件即可,并将模型信息存到向量中。

obj文件中的每个信息片段都是放在它自己的那行的,在那儿有一个以上的字符串(比如."v")用于解

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值