1. 建议使用FBX作为中间的导出格式,目前测试下来,比官方插件使用的USD格式,快了近10倍
- 官方使用USD会进行网格优化,但这大幅降低导出速度
2. 烘焙材质时,贴图使用的通道要注意与simplygon使用的是否一致,之于通道的名称可以看Simplygon.h(该文件在安装目录里)
> 以下是部分通道的名字
```c++
/// The SG_MATERIAL_CHANNEL_[...] defines the default names of standard material textures in Simplygon.
static const char * SG_MATERIAL_CHANNEL_AMBIENT = "Ambient";
/// The SG_MATERIAL_CHANNEL_[...] defines the default names of standard material textures in Simplygon.
static const char * SG_MATERIAL_CHANNEL_DIFFUSE = "Diffuse";
/// The SG_MATERIAL_CHANNEL_[...] defines the default names of standard material textures in Simplygon.
static const char * SG_MATERIAL_CHANNEL_SPECULAR = "Specular";
...
```
3. 烘焙材质后,生成的贴图有异样的颜色,通常是发红
- 材质上贴图,一般会配一个颜色进行相乘,如果这个颜色是红色,就会导致发红。
- 在输出的中间格式时,可以对这个颜色设置,例如变成白色,以修正这个问题
例如在输出FBX时,可以对材质的diffuse颜色修正为
fbxMaterial.Diffuse.Set(new FbxDouble3(1, 1, 1));
4. 烘焙材质后,Diffuse贴图发黑
- 一般这个是因为原贴图alpha不透明导致
5. 烘焙材质后,出现不正常的色块,但只合并部分材质,又是正常的
- 一般这个因为其中一个网格的UV不正常导致,例如UV异常的大,异常的UV会导致导出时占用不正常的贴图比例
6. 使用剔挡(occlusion)模型自动剔除内部面
(1) 可以利用OcclusionMeshPipeline,生成简易的模型,再对原来的模型实行内部面的剔除
(2) 另外注意使用occlusion有两个注意点
- 原模型与剔除模型必须在同一个spScene里
- 指定SelectionSet的node必须包含mesh信息,但如果实在不了解具体node位置,直接使用AddHierachy来加是最方便的
- 例如:
sgScene = LoadScene(sg, targetPath);
using var visibleSet = sgReductionPipeline.GetVisibilitySettings();
const string OccName = "Occluder";
Simplygon.spSelectionSetTable sgSceneSelectionSetTable = sgScene.GetSelectionSetTable();
Simplygon.spSelectionSet sgOccluderSelectionSet = sg.CreateSelectionSet();
sgScene.GetRootNode().AddChild(occScene.GetRootNode());
sgOccluderSelectionSet.SetName(OccName);
sgOccluderSelectionSet.AddHierarchy(occScene.GetRootNode());
sgSceneSelectionSetTable.AddSelectionSet(sgOccluderSelectionSet);