雷尔 Web3D 实践秘籍的开篇《Web3D场景分类、构成及工作流》中概述了 3D 主视觉在 B 端业务场景大屏可视化中的重要性、Web3D 场景的分类和构成,其中三维模型是 3D 场景中不可或缺的关键资源,本文将从对比常见主流三维模型标准及其优缺点、glTF 标准、PBR 材质等方面进行介绍。
常见三维模型标准及其优缺点
用于创建和编辑三维模型的工具、软件和应用非常非常多,它们往往使用不同的三维模型标准/格式存储和传输数据,维基百科中列举了 80+ 种三维模型格式,其中 FBX、OBJ、COLLADA、glTF 是最为常见且被主流建模工具支持的三维模型标准。
FBX
FBX 文件格式源于 Kaydara 的 FilmBox(后改为 MotionBuilder),用来制作 3D 角色动画,2006年被 3D 软件巨头 Autodesk 公司收购。如今,FBX 格式被许多三维软件和游戏引擎支持,如3ds Max、Maya、MotionBuilder、Mudbox、Blender、Unity 等等,因此 FBX 模型是非常好的互导方案,让模型的使用不再受软件限制而在不同三维软件之间进行转换。FBX 支持对包含动画、材质特性、贴图、骨骼动画、灯光、摄像机等信息的存储和传输。FBX 模型格式通常可以以二进制文件或 ASCII 文本格式存在,尽管Autodesk 公司官方也提供了免费的 FBX SDK 用于读写和转换FBX 文件,然而由于 FBX 数据格式描述规范specification 并没有被公开,这也导致 FBX 格式依然是一种完全“封闭”的数据格式。
OBJ 与 MTL
OBJ 由 Alias|Wavefront 公司为 3D 建模和动画软件 Advanced Visualizer 开发的一种标准,适合用于 3D 软件模型之间的互相转换,目前几乎所有知名的3D软件都支持OBJ文件的读写。OBJ 格式非常通用,因为 OBJ 格式描述了三维模型的几何体数据特征,如 点、线、纹理顶点、面、曲线、曲面等。对于 OBJ 格式中材质颜色、纹理信息等,需要通过与之关联的 MTL(Material Template Library) 标准进行描述,MTL 标准通过使用 Phong 反射模型描述物体表面的光反射特性,尽管 MTL 材质标准也已被许多三维软件供应商所支持,但 MTL 格式似乎有点过时,因为它不支持最新的材质模型,比如 specular 高光。此外,OBJ 标准也不支持对于灯光、动画等场景元素的描述。
COLLADA
COLLADA 是一套基于 XML 的开源协议规范,文件扩展名通常为 .dae 格式。COLLADA 起源于 Sony 公司,现在由非盈利组织 Khronos Group 所维护。COLLADA 支持对几何体、着色器、效果、物理系统、动画、资源等的描述,因此 COLLADA 可以用来描述一些复杂场景。许多三维建模软件和游戏引擎都支持 .dae 文件格式,同时,作为可读性友好的 XML 也支持使用者按照规范以文本格式文件直接编辑模型文件。
glTF
gITF 即 GL Transmission Format,是一种高效传输和加载 3D 场景的规范,由工业界组织 Khronos Group 共同提出并维护,旨在统一包括 WebGL、OpenGL ES、OpenGL等在内的所有 GL 相关应用中三维模型资产数据描述规范。 Khronos 组织的发起公司包含 AMD、Apple、ARM、EPIC、Goggle、Intel、IVIDIA、三星、Sony等众多工业界巨头公司,这些公司的许多产品、软件和工具也都支持 glTF 标准的导入导出。glTF 2.0 标准更新于 2017 年 6 月,支持对 3D 场景所需元素的完整描述,如节点、材质、相机、网格、动画、灯光及其它结构。
目前 glTF 已经成为 Web3D 模型资产标准,可谓是 3D 领域的 JPEG,主流 Web3D 引擎如THREEJS、Babylon、PlayCanvas、Cocos3D、都支持glTF模型标准。同时,得益于 glTF 标准具有文件小、加载快、和运行时引擎环境无关、对 3D 场景的描述完整且全面、灵活可扩展、可写协作等众多优势,在雷尔 Web3D 实践中最终选择使用 glTF 模型标准工作流。
glTF 标准介绍
glTF 模型文件组成
一个 glTF 模型资产通常包含 JSON文件、二进制文件和图片文件:
- .gltf 模型文件,JSON 格式的文本文件,用于描述场景中节点层次结构、网格描述信息、材质、相机等,可使用文本编辑器自由编辑,通常会引用外部文件,例如纹理贴图、二进制网格数据等;
- .bin 二进制文件,描述 3D 几何体数据、动画、及其它基于缓冲区的数据,.bin 文件可以直接加载到 GPU 的缓冲区中从而不需要额外的解析,因此能够高效传输并快速加载;
- 贴图文件,用作贴图或法线贴图的图片文件,常见如 .jpg、.png 等格式。
glTF 模型资产文件组成
glTF 模型构成元素
如上文所述,glTF 标准描述了一个三维模型场景中的全部内容,包含了对场景结构及场景构成元素的完整描述,如下图所示,为 glTF 模型标准的顶级元素构成及关系概览。
glTF 标准构成元素及关系概览
glTF Extensions 扩展
除上文所介绍 glTF 支持的内容外,glTF 标准允许通过增加扩展的方式,来将核心格式中未考虑到的信息纳入其中。文中列举了 glTF 现有扩展,这些扩展对核心标准中定义的网格、灯光、材质、纹理贴图等进行扩展,其中以 KHR 前缀开头的扩展为 Khronos 官方通过和批准的扩展,以 EXT 前缀开头的为供应商提出和发起的扩展。如下为目前已通过的官方扩展:
-
KHR_draco_mesh_compression
-
KHR_lights_punctual
-
KHR_materials_clearcoat
-
KHR_materials_ior
-
KHR_materials_pbrSpecularGlossiness
-
KHR_materials_sheen
-
KHR_materials_specular
-
KHR_materials_transmission
-
KHR_materials_unlit
-
KHR_materials_variants
-
KHR_materials_volume
-
KHR_mesh_quantization
-
KHR_texture_basisu
-
KHR_texture_transform
-
KHR_xmp
glTF 与 PBR 材质
PBR (Physically-Based Rendering) 基于物理的渲染是指试图通过模拟光照来渲染照片级真实感图像技术。PBR 通过使用现实世界物理原理,来模拟光与不同材质表面发生作用,因此可根据物理参数来编写材质,而非调整光效。不论光照如何,材质总能看上去正确。PBR 已经存在很多年了,但由于最初计算成本太高,不适合实时应用。然而,随着计算能力的不断提高,它越来越成为实时渲染的行业标准。事实上,我们今天看到的许多实时软件,如 Unreal Engine 4、Unity 5、Frostbite 等,都使用 PBR 渲染技术,为用户提供创建高度逼真的3D场景的能力。
随着实时渲染对 PBR 材质需求逐渐增加,不同软件描述这些材质的参数缺乏一致性的问题越来越明显。例如,在 Unreal Engine 4 中使用的基于物理的材质参数是 base color、roughness、metallic、specular,而 Marmoset 中则使用 albedo、microsurface、reflectivity 用于描述物理材质。这就导致建模师和开发者们很难在这些不同建模软件之间进行效果一致的转换和导入导出。
考虑到这一点,glTF的目标是以一种统一的、易于实现的方式来描述 PBR 材质,这种方式即 金属度-粗糙度模型(Metallic and Roughness)。glTF 2.0 PBR 材质允许用户使用参数 baseColor、metalness、roughness、emission、normal map、ambient occlusion 来调整材质效果。
基于金属度-粗糙度模型的 PBR 材质及参数
雷尔 Web3D 建模/研发模型资产工作流
如上文所述,雷尔 Web3D 小组选择使用 glTF 2.0 标准作为建模侧和研发侧的模型资产格式。如下图所示为模型资产的完整工作流,首先,建模侧使用 Blender 作为建模工具,制作模型后导出为 glTF 格式文件,在 glTF Viewer 等预览工具中进行验证场景内容是否准确导出。研发侧使用基于 THREEJS 的引擎加载模型,解析 3D 场景中节点、变换、灯光、材质、动画等信息后进行场景渲染。
雷尔 Web3D 模型资产工作流
看到这里的你想必会对如何使用建模工具制作材质和形状、数据氛围类动效建模技巧,以及研发侧实现 3D 场景过程中的问题与解决方案等话题感兴趣,雷尔 Web3D 秘籍后续系列文章中将会一一分享,敬请期待。
往期回顾
《雷尔Web3D实践秘籍来啦》
《Web3D场景分类、构成及工作流》
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!