unity-大地图分块加载研究


title: unity-大地图分块加载研究
categories: Unity3d
tags: [unity, 大地图, 分块, lightmap]
date: 2018-12-12 11:22:18
comments: false

unity-大地图分块加载研究


思路及效果

  1. 每个chunk场景独自烘焙自己的光照图

    unity-大地图分块加载研究_第1张图片

  2. chunk场景中go导出为prefab

    unity-大地图分块加载研究_第2张图片

  3. 打包

    1. 将每个chunk场景的 chunk节点的 所有Renderer的光照信息场景的光照图信息 记录到一个二进制文件中, 然后同lightmap贴图打包在一起在一个AssetBundle中.
    2. chunk节点导出的prefab都分别打成一个AssetBundle

    unity-大地图分块加载研究_第3张图片

  4. 运行时效果

    unity-大地图分块加载研究_第4张图片

    运行时加载每个chunk及其光照贴图 (加载使用异步的方式)

    1. 加载 prefab
    2. 加载 lightmap
      1. 加载光照贴图到当前场景中, 记录好光照图的 索引a
      2. 读取renderer的光照信息, 将prefab实例出来的go赋值上光照信息, lightmapIndex 就是 索引a, lightmapScaleOffset

    运行时卸载, 主要是调整每个chunk节点的光照图索引. 确保每个chunk节点与光照图数组的的索引一一对应

    优化:

    1. 加载使用异步加载的方式

    2. 管理chunk可以使用一些缓存策略, 比如: LRU, 防止角色在碰撞盒边缘来回抖动造成频繁 加载,卸载.

    有空再弄个demo工程出来


参考资料

  • [Unity手游开发札记—大世界动态加载实战
  • GitHub上的一个demo工程可以, 主要延时了光照图信息及renderer光照信息 的记录及加载 , [email protected]:huailiang/terrain_proj.git

你可能感兴趣的:(Unity3d,Unity3D)