原文地址:https://cesium.com/blog/2014/12/15/gltf-tips-for-artists/
这篇文章是Branden Coker, an artist from AGI 写的,他是 AGI 的一个艺术家,做过很多事情,包括 为追踪圣诞老人项目建模。感谢3dben 编写的Blender和3DS Max建模建议。
Cesium使用面向web的glTF 格式三维模型,同时提供了一个 dae在线转gltf的工具, 把dae和它纹理拖放到这个工具里,就能获得一个glTF格式的模型。这篇文章是一些对三维数据建模和导出到COLLADA dae 的小提示,帮助提升模型的性能和稳定性。
纹理图片
- 所有的纹理使用同一个顶点数据。可以使用多重纹理把uv的作用最大化,但是所有纹理只能分享同一个纹理坐标。
- 尽量使用纹理合并集( texture atlases 多个小纹理和到一张大纹理上)而不是很多独立纹理 。这样会使文件下载次数最小化,并且使引擎批量渲染,会提升不少性能。
- 尽管WebGL标准承诺的最大纹理是6464,但是现代显卡系统都支持到20482048,这个也是glTF纹理资源合理的尺寸上限。
- 使用mipmaping。这个会提升显示效果和渲染性能,尤其是对大的纹理合并集 ,否则会产生很多内存碎片( poor memory coherence)。
- 使用2的幂次方大小的纹理。对于非2的幂次方的纹理,引擎实际会实时的进行缩放。 并不是要求纹理的宽度和高度相同,而是说宽度或者高度都是2的幂次方即可。
几何体
- 不要包含任何比不需要的顶点元素。虽然导出Collada dae会增大一点点,但是对glTF确增大了很多。因为glTF不支持顶点属性的索引( per-attribute indices),所有的顶点属性都是和顶点个数一致。
- 尽量减少节点(node)和 三角网(mesh)的个数。通常一个大的三角网渲染效率要比很多个小的三角网效率高。
Modo 软件
- Collada导出的时候禁用相机,光照,顶点颜色,顶点权重等应用程序层面的属性,这些在Cesium加载的时候都用不上。
- 删除相机和灯光对象。
- 如果模型没有带动画,那么删除所有三级网中用不到的平移,旋转,缩放矩阵。
- instance形式的关键帧(Instanced keyframes)在导出前必须烘培。这种情况是因为把一个带动画的三角网instance了。尽管在Modo软件里动画没问题,但是如果不烘培(baked)导出不了。
- 带动画的模型不能使用 Bake Matrices 选项导出,这么导出的模型动画就丢了。
Blender 软件
- 对于带纹理的模型,在 COLLADA导出器中勾选 Include UV Textures 和 Include Material Textures 。
3DS Max 软件
- 纹理图片必须是jpg,png等web兼容格式。
- 把纹理和.max文件放在一个目录下。
- 材质命名最好和纹理图片文件名称一致。
- 在同一个目录下导出FBX会带着图片。
中国最专业的Cesium开发者社区