如何导出满足Kivicube编辑器要求的glTF文件?


1.1 制作符合规范的模型动画


详细规范请参考:https://www.yuque.com/kivicube/manual/workflow


1.2 导出glTF的流程图示

image.png


方案1:需要艺术家在各类3D建模软件中安装glTF导出插件,然后配置模型材质和其它设置后导出;由于使用的3D建模软件种类繁多,目前支持度良好的3D软件有:3ds max、Maya、Blender、Substance Painter、Dimension


方案2:需要艺术家在游戏引擎Unity中安装glTF导出插件,然后配置模型材质和其它设置后导出;这些适用于更加广泛的建模软件,比如:Cinema 4D、Sketchup、Zbrush、Inventor、Revit、Lightwave、SolidWorks等


通过方案2,我们也可以延伸出更多的形式,可以这样认为,只要是能够导入到Unity的模型,最终我们都能通过Unity的glTF导出插件转化为glTF。这样说来一些小众的3D设计软件、一些3D扫描软件以及一些倾斜摄影软件都能制作并导出中间3D格式,然后再导入Unity中,最终导出glTF。


这里向大家推荐两款小众的3D设计软件:

微软3D画图软件:画图3D(Paint 3D)
购买 画图 3D - Microsoft Store zh-CN

像素化风格3D设计软件
http://ephtracy.github.io/

更多导出glTF的软件请访问:https://www.yuque.com/kivicube/manual/3d-gltf-export


1.3 使用Unity导出glTF


1.3.1 Unity的基础了解


Unity支持丰富的材质类型(通过设置不同的Shader来实现),目前导出glTF只支持两种材质(两种Shader),即:


Standard (Specular Setup)

image.png


Standard


image.png


这两种材质分别对应了PBR材质的两种工作流,即金属/粗糙度(Metallic/Roughness)工作流和镜面/光泽度(Specular/Glossiness)工作流.


1.3.2 PBR材质的基础了解


那么问题就来了,我们应该选择怎么样的工作流程呢?做传统次世代贴图的,又该怎么处理呢?


针对这两个问题,可以参考:


PBR材质的基础理论:https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/


PBR材质的特性:https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/


如何选择自己合适的工作流程以及如何从传统次世代转到PBR流程:https://www.marmoset.co/posts/pbr-texture-conversion/


关于贴图的转换,可以参考如下简单的流程: 我们知道传统次世代有:Diffuse(漫反射)、Specular(高光)、Normal(法线)、Emission(自发光);通过和PBR流程对比,我们仅仅需要转换Diffuse和Specular;


关于Diffuse,传统的方式中如果将Diffuse和透明贴图分成两张贴图则需要合并成一张含有Alpha的贴图,具体方式如下:

image.png


然后我们将Diffuse贴图拆分为Albedo和AO,具体方式如下:


image.png


接着我们将Specular拆分为Specular和Glossiness,具体方式如下:



1.3.3 镜面/光泽度(Specular/Glossiness)工作流的模型在Unity中导出glTF


上面我们已经知道,如何将传统次世代贴图转换为PBR贴图,实际上是镜面/光泽度(Specular/Glossiness)工作流的贴图,那么接下来就具体说明一些在Unity中的设置;


首先选择如下材质Shader:Standard(Specular Setup)

image.png

导出glTF只支持上图中红框部分,我们分开来说:

1.Albebo:支持后面的颜色设置导出,即:

image.png


2.Specular: 如果当我们未设置Specular贴图时,我们能够设置Specular的颜色值,并且还能够被导出;

image.png


3.Smoothness: 其实就是指Gossiness,只是在Unity软件换了一个名称而已,但是我们发现他不能设置贴图,而是通过另外一种形式来实现的,我们能看到Smoothness下面有一个Source选项,这个就是指Smoothness贴图的来源,比如下图中的设置就是指Smoothness贴图的来源与Specular贴图的Alpha通道,所以就需要美术人员将Specular贴图与Smoothness(Glossiness)贴图合并。

image.png


除此之外,关于Smoothness我们还应该注意,如果Specular贴图没有设置时,自然的Smoothness贴图也将没有设置,此时Smoothness的强度参数(图中的0.5)能够被导出,如果Specular已经设置了贴图(即Smoothness贴图也设置了),那么设置的强度值(0.5)将不能被导出;


4.Normal:支持后面的法线强度值导出,即:

image.png


5.Occlusion(AO贴图):支持后面的强度值导出,即:

image.png


6.Emission:支持自发光颜色导出和自发光强度导出,即:

image.png

但是我们必须注意:强度值需要为0-1,否则导出后也不能支持;


1.3.4 导出glTF步骤


首先安装插件,插件下载地址:

百度网盘:https://pan.baidu.com/s/1MAPos97q0Sd4YI_T5P0hnw 提取码: 9wea

GitHub:https://github.com/yangfawen/glTF-Export-Tutorial/raw/master/glTF-Export-Plugins/Kivicube_glTF_Exporter.unitypackage


安装方式:下载Kivicube_glTF_Exporter.unitypackage后,将此文件拖拽到Unity程序中导入。Unity版本建议v5.6.5p4及其以上。


image.png


image.png


image.png

注意:

image.png

image.png



1.3.5 金属/粗糙度(Metallic/Roughness)工作流的模型在Unity中导出glTF


这是PBR材质的另外一种工作流,那么接下来就具体说明一些在Unity中的设置;


首先选择如下材质Shader:Standard


image.png


导出glTF只支持上图中红框部分,需要知道两种工作流区别仅仅在与第二三项(Metallic、Smoothness),其它的部分保持不变;

Metallic: 如果当我们未设置Metallic贴图时,我们能够设置Metallic的颜色值,并且还能够被导出; 

image.png


Smoothness: Unity软件为了保持和镜面/光泽度工作流一样,仍然将保留了Smoothness的说法,但是采用金属/粗糙度工作流的模型材质,采用的是粗糙度贴图(Roughness),这种情况下需要提前转换一下,可以使用比如Photoshop等软件中将粗糙度贴图进行黑白反向,便能得到Smoothness贴图;


和镜面/光泽度工作流一样,我们不能直接设置Smoothness贴图的来源,所以需要将上面通过黑白反向得来的贴图与Metallic贴图进行和合并;


后面我们将会新增对Standard (Roughness setup)的支持,如下图我们发现Roughness贴图能够直接设置,对美术来说是一件非常方便的事情。


image.png


1.4 使用建模软件导出glTF

具体请参考:https://www.yuque.com/kivicube/manual/3d-gltf-export