想问下,关于大场景streaming 加载有什么好的可行性方案么?
之前做过一些大地形的工作(PC端,流程可能不太一样),简单地说下个人了解的一些,仅供参考
1.大场景分块:分割之后对每个分块进行编辑(刷地表、加模型、加光照信息等),每个块包含的信息有块索引、lightmap及物体的光照信息(lightmap对应的UV)等
2.Terrain转Mesh:Mesh Terrain Editor这个插件支持,Mesh处理是为了高空大视野等需求支持地形的LOD
3.块的拼接:模型拼接——每个块调整之后Terrain的接缝可以用SetNeighbors拼接,如果是使用Mesh的话参考一下这个,实现一个合适的拼接算法
纹理拼接(包含LightMap)——不同块的纹理要求有相同的基础纹理、基础纹理重复度相同,接缝处使用差值自定义一个过渡的范围,注意UV采样(LightMap同理),需要自己写Shader实现
4.加载策略:至此数据就全了,加载策略可使用四叉树,参考QuadTreeTerrainDemo_Unity,LOD层次对应四叉树的深度,地形较大的情况要考虑性能和深度的权衡,策略需要调整,[若存在玩家原地高速旋转等操作,动态卸载不能是即时的,要有一定的驻留策略]
可参考的文章:3D无缝大世界手游开发经验基于Unity3D引擎的大地形加载研究
插件:WorldStreamer
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(1)
之前做过一些大地形的工作(PC端,流程可能不太一样),简单地说下个人了解的一些,仅供参考
1.大场景分块:
分割之后对每个分块进行编辑(刷地表、加模型、加光照信息等),每个块包含的信息有块索引、lightmap及物体的光照信息(lightmap对应的UV)等
2.Terrain转Mesh:
Mesh Terrain Editor这个插件支持,Mesh处理是为了高空大视野等需求支持地形的LOD
3.块的拼接:
模型拼接——每个块调整之后Terrain的接缝可以用SetNeighbors拼接,如果是使用Mesh的话参考一下这个,实现一个合适的拼接算法
纹理拼接(包含LightMap)——不同块的纹理要求有相同的基础纹理、基础纹理重复度相同,接缝处使用差值自定义一个过渡的范围,注意UV采样(LightMap同理),需要自己写Shader实现
4.加载策略:
至此数据就全了,加载策略可使用四叉树,参考QuadTreeTerrainDemo_Unity,LOD层次对应四叉树的深度,地形较大的情况要考虑性能和深度的权衡,策略需要调整,[若存在玩家原地高速旋转等操作,动态卸载不能是即时的,要有一定的驻留策略]
可参考的文章:
3D无缝大世界手游开发经验
基于Unity3D引擎的大地形加载研究
插件:
WorldStreamer