模型(特别是带有动画的模型)作为WebAR/3D/VR场景中最富表现力和变化的素材,在制作规范方面具有比其它种类素材更多的要求,为了保障场景的最终呈现效果,本节将针对模型规范的各个方面进行详细的阐述。
在讲模型规范之前,需要明确两个问题,第一个问题是:“WebAR/3D/VR模型动画”同“传统建模用作CG” 的区别,见下表:
项目WebAR/3D/VR模型传统建模用作CG面数(四边面)<30W理论上不限贴图分UV可以不用动画严格的标准建模软件支持的方式
第二个问题是:如何确定脚本、参考图/参考视频,参考依据主要有以下四点:
* 原画三视图的设计;
* 参考物体三视图照片;
* 动画参考视频;
* 需求脚本。
在明确了这两个前提之后,下面就进入模型动画具体的创作工作流。
### 1.建模时使用的软件
常见的模型动画制作软件:3ds Max、Maya、Blender等;
常见的雕刻软件:ZBrush(使用雕刻软件后需要务必注意模型面数)
常见的贴图处理工具:Photoshop
常见的材质与贴图制作工具:Substance Painter、Quixel Suite
其它专业性的建模软件:使用SketchUp、SolidWorks、AutoCAD、Inventor等其它建模软件需要导出FBX,在常用建模软件中减面和检查模型及动画是否正确
### 2.白模制作
* 使用四边面,不建议使用三角面(尤其是具有动画的模型),不允许使用多边面;(注意:如果模型不带动画,三角面的使用不会带来太大影响;如果模型带动画,如果不可避免的使用了三角面,那需要注意检查模型动画是否会穿插,建议将三角面放置在不容易看到的位置)
* 仅仅支持Polygon建模(多边形建模),不支持NURBS建模(曲面建模),NURBS建模(曲面建模)可以做出一些多边形建模不好调整的模型,但创建之后需要将其转换为多边形。
[曲面建模模型转换为多边形建模模型.mp4](https://www.yuque.com/kivicube/manual/workflow#ZfWiO)
* 采用右手坐标系建模;
* 模型制作单位统一:米(M),具体设置如下图:建议制作为10-50单位大小的模型;
* ![](https://img.kancloud.cn/cd/48/cd488adeb204ab5e0424ce77dccda629_500x350.png)
* 模型坐标中心点归于世界坐标系原点(建模软件坐标系原点);模型坐标中心点需要放在模型自身合适的位置,[点击此处](https://www.yuque.com/kivicube/manual/model-qa#i4h4c)获取具体修改教程;
* 物体顶点处于闭合状态,物体所有的点都需处于闭合状态,防止出现模型上的破洞;
[闭合点.mp4](https://www.yuque.com/kivicube/manual/workflow#ZS3Al)
* 面数要求:建议单个物体模型控制在5W四边面以内,场景控制在30W四边面以内;并且针对带有动画的场景建议低于20W四边面;
* 不允许重叠面(解决模型中面片闪烁的问题)、双重顶点等情况发生;有些重叠面,有个别情况是观察不出来的,可以在模型步骤完成后选择所有顶点,将合并顶点数值调整为0.001进行合并(以Maya)为例;
[重叠面.mp4](https://www.yuque.com/kivicube/manual/workflow#slpyx)
* 法线方向需统一,请务必注意法线方向问题(解决模型贴图显示错乱的问题,如果模型贴图显示错误,可以尝试更改错误部分的法线),法线可以理解为这个物体的正面受光面,物体向内挤压时可能会导致正面向内挤压,从而形成正面在里,反面在外的法线反转现象,这里提醒,尽量不要进行双面照明进行观察,或者可以选择开启法线显示(朝向方向即为正面)以规范法线方向;
[法线方向.mp4](https://www.yuque.com/kivicube/manual/workflow#4eJdk)
* 光滑组后模型不允许出现黑面,可通过加线卡线的方法避免黑面,另外,想进行光滑效果的模型先要在模型轮廓上进行卡线处理,避免在光滑后出现形状变化;
[网格平滑.mp4](https://www.yuque.com/kivicube/manual/workflow#be6fC)
* 模型网格名称使用英文;
* 保持模型面与面之间的距离,推荐最小间距为当前场景最大尺度的二千分之一;如果物体的面与面之间贴得太近,会出现两个面交替出现的闪烁现象。模型与模型之间不允许出现共面、漏面和反面,看不见的面要删掉。在建模初期一定要注意检查共面、漏面和反面的情况;两个面交替闪烁的现象主要是因为这两个面处于同一位置,且各自法线相反了,需要将法线反的一面删除,或者结合合并。
[相反法线共面.mp4](https://www.yuque.com/kivicube/manual/workflow#4OQ08)
* 删除场景中多余的面,在建立模型时,看不见的地方不用建模,对于看不见的面也可以删除,主要是为了提高贴图的利用率,降低整个场景的面数,以提高交互场景的运行速度。
* 进行模型的塌陷操作,当模型经过建模、贴纹理之后,然后就是将模型塌陷,这一步工作也是为了下一步贴图制作做准备;
* 针对体量特别大或连体模型可分塌为2-3个物体,但导出前要按模型再塌成一个物体;
* 用Box反塌物体,转成Poly模式,这时需检查贴图有无错乱;
* 镜像的物体需要修正:用镜像复制的方法来创建新模型,需要加修改编辑器修正一下。需要选中镜像后的物体,然后进入Utilities面板中单击Reset XForm,然后单击Reset Selected;进入Modfiy面板选取Normal命令,反转一下法线即可;此外,也可以直接使用maya的镜像功能;
[镜像.mp4](https://www.yuque.com/kivicube/manual/workflow#b0uqm)
* 避免使用建模软件自带的非常规系统,比如曲线或毛发系统(Hair、Yeti、Haitrix、HairFarm等)制作毛发,而需要用Polygon模型和贴图来表现;
* 模型不得出现漏洞面,不得出现刺角面,模型结构贴近部分需要分体展示,不得统一结构,配饰模型部分必须与主体模型位置保持正确,不得随意穿插,模型薄体部分不得用单片体展示,必须以完整薄体模型展示;
* 模型完成之后统一使用重置命令(reset Xfrom)避免有缩放和变形等情况,然后转换模型为 Mesh 或者 Poly 模式(有动画的模型,需在动画制作之前完成此步骤)
* 避免模型相互穿插,删除部分重合或穿插的模型或面,如下图:
![](https://img.kancloud.cn/98/fe/98fec734331ebffe44fa72bba9e75b71_500x148.png)
左边:穿插;中间:未穿插;右边:穿插部分显示混乱;
![](https://img.kancloud.cn/aa/1b/aa1b2184ae427faff02941a11019479c_500x208.png)
左边:穿插;右边:未穿插;
### 3.材质贴图制作
* 平台当前支持PBR渲染,PBR渲染带来了更加逼真的模型效果以及美术创作的标准化工作流,后面会陆续增加对卡通材质的NPR渲染以及不受光照影响的Unit材质;
* 模型制作时需要新建材质并赋予相关网格,不允许无贴图无UV的单个模型网格;
* 理想情况下,请尽量减少模型材质数量,建议小于10个;
* 需要将除“标准Standard材质”和“基于Standard的多维材质”外的其他材质转换为标准材质,例如3DS MAX的VARY材质不支持;
* Multi/Sub-Object材质中的子材质一定要是Standard标准材质;
* 材质和贴图名称为英文,不能有重名;
* 材质球命名与物体名称一致,材质球的父子层级的命名必须一致;
* 材质球命名:与物体名称保持一致,单个材质球可以控制单个、多个物体。多维子材质,必须严格按照物体ID号,设置好材质ID,不能重复、错乱、跳号和有空ID号,如下图:
![](https://img.kancloud.cn/a9/79/a9798e132f4efdb174dfab54f2c85ecb_500x330.png)
* 贴图尺寸:不超过2048x2048,贴图建议使用2的幂次方尺寸;
* 贴图格式:不含透明通道:JPG(一般来讲Photoshop导出品质设置为80%);含透明通道:PNG;(一般来讲保证贴图小于2M);最后建议在保证模型效果的基础上压缩图片尺寸以及使用其他工具压缩图片质量;
* 展UV:UV须展平,合理拆分UV(避免UV破碎或UV反向),UV要占整张贴图的80%以上;一般来讲有两种情况,举例说明:(a)户型模型制作:制作户型白模后,给网格赋予材质和纹理,然后展UV,制作贴图;
(b)卡通动物模型制作:制作动物白模后,给网格赋予材质,然后展UV,手绘贴图;
* 贴图UV不得细碎面片,分出的UV图必须为组块状,贴图通道和物体UV坐标通道必须为1通道;
* 材质贴图 UV 通道需要和物体 UV 通道完全一样
![](https://img.kancloud.cn/03/ea/03eab84324a9d79b73d0f1a1ec7e9216_500x661.png)
* 贴图路径的设置:支持相对路径和绝对路径
* 尽量减少模型贴图的数量;要求展UV时候良好的布局;例如网易阴阳师模型UV贴图:
![](https://img.kancloud.cn/a6/01/a601bf12ff75d99897b23d2d3c400952_500x503.png)
* 模型贴图仅支持漫反射贴图(Diffuse)、透明贴图(Transprent)及法线贴图(Normal),其设置如下图:
![](https://img.kancloud.cn/6d/b2/6db2e9973489c80ba5a4cd8bc8f09399_500x276.png)
* 通过了解[PBR](https://www.allegorithmic.com/pbr-guide)渲染可知,模型支持的贴图不仅仅只包括漫反射贴图、透明贴图及法线贴图,如何在平台中使用多贴图的模型,请参阅[模型导出](https://www.yuque.com/kivicube/manual/workflow/edit#all8fk);
* 贴图的制作:目前贴图的制作一般包含三种方式,即传统手绘贴图(在贴图中绘制各种细节,比如阴影)、烘焙贴图(在建模软件中提前将灯光布置好,烘焙出带阴影效果的贴图)、在支持PBR的材质贴图制作软件中制作(请参考[教程](https://www.allegorithmic.com/products/substance-painter));
* 烘焙贴图:
烘焙的物体黑缝解决对办法:在烘焙的时候,如果图片不够大的时候,往往会在边缘产生黑缝。处理小技巧:
(a)如果做鸟瞰楼体比较复杂可以把楼体合并成一个物体变成多重材质,然后对楼体进行整体完全烘焙,这样可以节省很多资源;
(b)对于建筑及地形,须检查模型的贴图材料平铺的比例,对于较远的地表(或者草地),可以考虑用一张有真实感的图来平铺,平铺次数少一些;
(c)对于远端的地面材料,如果平铺次数大了,真实感比较差。
(d)若用CompleteMap烘焙,烘焙完毕后会自动产生一个Shell材质,必须将Shell材质变为Standard标准材质,并且通道要一致,否则不能正确导出贴图;模型烘焙及导出模型烘焙:
(a)渲染方式:采用 Max 自带的 Light Tracer 光线追踪进行渲染。
(b)灯光效果控制:该项目在烘焙前会给出固定的烘焙灯光,灯光的高度、角度、参数均不可调整,可以在顶视图中将灯光组平移到自己的区块,必须要用灯光合并场景然后烘焙。
(c)烘焙贴图方式:建筑模型的烘焙方式有两种:一种是 LightMap 烘焙贴方式,这种烘焙贴图渲染出来的贴图只带有阴影信息,不包含基本纹理。具体应用于制作纹理较清晰的模型文件(如地形),原理是将模型的基本纹理贴图和 LightMap 阴影贴图两者进行叠加。优点是最终模型纹理比较楚,而且可以使用重复纹理贴图,节约纹理资源;烘焙后的模型可以直接导出 FBX 文件,不用修改贴图通道。缺点是LightingMap 贴图不带有高光信息; 另一种是 CompleteMap 烘焙方式,这种烘焙贴图方式的优点是渲染出来的贴图本身就带有基本纹理和光影信息,但缺点是没有细节纹理,且在近处时纹理比较模糊。
### 4.动画制作
[动画规范~1.mp4](https://www.yuque.com/kivicube/manual/workflow#bkuLp)
* 动画支持:帧动画(Frame animation)、骨骼动画(Bones animation)、变形动画 (Morph animation);
* 模型动画:单个顶点最多支持4个骨骼权重;具体设置[点击此处](http://doc.babylonjs.com/resources/bones_influences_per_vertex)参考
* 动画模型格式:FBX;
* FBX动画缩放不能为零,如下图错误:
![](https://img.kancloud.cn/6d/fe/6dfe3816f6a1c78f6cd7deb145ad9a52_486x229.png)
* 一般来讲,导出FBX文件后,务必再导入建模软件检查模型及动画是否正确;
* 一般来讲,为避免模型文件偏大,模型动画帧率设置为30帧;
* 一般来讲,建模软件中特有的动画制作功能(如建模软件自带的如修改器、变形器),导出为FBX后不支持;
* 不支持可见动画属性;
* 使用骨骼动画时需要采用规范的蒙皮手法,蒙皮制作动画后导出再导入检查动画是否正确;
* 骨骼节点不允许重名;
* 一个骨骼绑定一个模型网格,一个模型网格可对应多个骨骼;一个场景文件不超过300个骨骼,单个物体不超过80个骨骼;
* 避免出现两组重复骨骼;
* 做动画时,子父关系需要合理规范,关系层级不要太深,建议不超过两级;(如果出现模型显示为黑色,可以尝试修改模型动画层级关系);
* 一般的我们导出FBX后也需要关注软件输出的日志,考虑日志中的警告是否也会影响动画的正确渲染;
* 在Key关键帧时,可见性应该设置Visible,如图:可见性设置为禁用,如下图:
![](https://img.kancloud.cn/51/c2/51c208f69da5080c5e997013a70f1d36_100x85.png)
* 关于模型动画的时间
(a)动画制作从零帧开始;
(b)不能出现负帧;
(c)动画需要制作成原点动画;
* FBX 输出并不能完全兼容所有生成动画的方法,一般只支持:
(a)通过简单骨骼控制的蒙皮;
(b)简单形状変形
一般不支持:
(a)复集骨骼控制系统;
(b)通过第三方插件生成之骨骼系统 (Autodesk HumanIK 除外) ;
(c)通过约束,表达式生成之动画控制器,或动画;
(d)通过模拟或粒子或毛髮或流体动力学相关或运动图形生成之动画
* 关于模型动画,导出FBX时还应该注意:
(a)把所有骨骼动画, 烘焙到基层/基本骨骼系统上;
(b)一般需要创建3D 动画操作人配合;
(c)若有复集骨骼控制系统, 烘焙到基层/基本骨骼系统上;
(d)若有第三方插件生成之骨骼系统, 处理方法如相同(a);
(e)若有通过约束, 表达式生成之动画控制器, 或动画, 亦需要烘焙到相关对象上;
(f)所有通过模拟或粒子或毛髮或流体动力学相关或运动图形生成之动画,与(c) 相同方法处理;
注意:一般的,建议先使用Autodesk FBX Review做检查, 确认没问题再上传平台,[点击此处](https://www.autodesk.com/products/fbx/fbx-review)下载Autodesk FBX Review 。
### 5.模型导出
> ***我们推荐使用AR模型编辑器、建模软件或Unity软件中直接导出gltf或glb文件,平台对gltf与glb有着更加优异的PBR渲染支持,您可以参阅一下文档:***
>
> **(1)[常见建模软件导出glTF](https://www.yuque.com/kivicube/manual/3d-gltf-export):您可以在maya、3ds max等软件中直接导出glTF模型**
>
> **(2)****[AR模型编辑器导出glTF](https://www.yuque.com/kivicube/manual/kivicube-model-editor):macOS用户,可以使用我们提供的工具(AR模型编辑器)导出glTF模型**
>
> **(3)****[使用Unity导出glTF](https://www.yuque.com/kivicube/manual/gltf-export-tutorial):你可以先将模型放入Unity中,然后导出glTF模型**
* 不带动画的模型可导出OBJ/FBX;带动画的模型务必导出FBX;
* 模型材质的环境光和漫反射光设置为最亮,建议制作者通过改变漫反射贴图的亮暗来实现最终效果;
![](https://img.kancloud.cn/86/ed/86ede3870dd83e7d62757d7567902a63_500x618.png)
* 带有动画的模型导出设置
(a)无论模型贴图的路径是相对路径还是绝对路径,都建议勾选“嵌入的媒体”;
(b)烘焙动画选项,建议制作者先不勾选再导出FBX(减小FBX文件的大小),然后放到场景中测试,如果模型动画显示不正确再勾选导出;
![](https://img.kancloud.cn/6a/d8/6ad87771e39ab623d34f698ab45ccce9_500x766.png)
(c)FBX文件格式选择“二进制”和“FBX2014/2015”
![](https://img.kancloud.cn/41/6f/416f54e1ae06541a8c6ae4fd45073367_500x429.png)
* 无动画的模型导出设置
(a)导出OBJ:对于所有文本文件,编码应为utf-8
![](https://img.kancloud.cn/d4/1a/d41a2e6aefbf5134e9b8be15c0581096_350x253.png)
(b)导出FBX:同于“带有动画的模型导出设置“,但是不勾选”动画“、”烘焙动画“选项;
注意:选择材质导出的时候,需要选择OBJ所在的文件夹路径;
* 导出前其它检查:
(a)将其他材质球(如烘焙材质球)改为标准材质球,通道为1;
(b)将所有物体名、材质球名、贴图名保持一致;
(c)合并顶点;
(d)清除场景,除了主要的有用的物体外,删除一切其他物件;
(e)清材质球,删除多余的材质球;
(f)按要求导出FBX;
(g)导出后检查文件夹中文件,删除无用文件;FBX只保留使用的贴图和模型文件,OBJ只保留使用的贴图、模型文件及MTL文件;
(h)压缩模型文件夹为Zip格式,文件夹为英文命名;
(i)压缩为zip格式建议使用WinRAR、7Z、WinZip的默认Zip压缩设置;