当前位置: 首页 > ds >正文

开放世界地形渲染:以三角洲行动为例(下篇)

  • 本文主要介绍如何提升室外画面渲染的品质

版权声明

  • 本文为“优梦创客”原创文章,您可以自由转载,但必须加入完整的版权声明
  • 文章内容不得删减、修改、演绎
  • 本文视频版本:见文末

渲染品质提升

  • 要提升画面的品质,就是去提升渲染的画面效果和细节度,主要包括以下几个方面:
    • 动态效果
    • 悬崖峭壁
    • 远景的细节渲染
    • 地面的贴花处理

动态效果

  • 动态效果是指使整个场景看上去更有生气,主要包括地形的颜色变化,湿度变化以及明暗的变化,使其看上去更逼真,让地形没有很严重的塑料感

颜色变化:染色

  • 首先看一看颜色变化怎么实现,地形颜色的变化可以通过染色的方式实现

  • 那什么叫染色呢?大家先通过下图看一下有没有进行染色的差别(左边是染色的效果,右边是没有染色的效果)

  • 染色原理就是在地面上刷了地形的顶点颜色,使地形染上了想表达的颜色
  • 染色需要用到一些刷顶点色的工具,怎么刷顶点色呢?可以参考一下我其他文章的分享内容

Clipmap

  • 如果地图比较大,那么地形要渲染的顶点数量就会比较多,之前分享过一种方式,就是根据地形的高低起伏和远近进行LOD,这里介绍另一种方式---Clipmap

  • Clipmap的原理是把靠角色比较近的三角形面片渲染的比较精细,越远的位置渲染的越粗略
  • 并且渲染策略是会随着离当前摄像机,也就是离的角色距离越远,渲染效果就会越降低一个层级。这个类似于贴图的Mipmap技术,其实顶点绘制也有Mipmap这个功能
  • 下图显示了RenderDoc分析的优化效果

湿度变化:潮湿度

  • 第二个提升动态效果的方式是表现地形的湿度变化

  • 湿度变化其实也是刷顶点,就是用顶点刷绘制哪些部分是潮湿的
  • 需要注意潮湿和干燥的地形之间需要一个过渡,这个过渡是通过控制笔刷的轻重产生一个权重的变化,从而实现边缘过渡的效果

染色:湖泊+积水

  • 可以看一下染色的另外一种表现,对于湖泊或者是积水,它可以通过对地形进行顶点色的绘制来染色

染色:草

  • 看一下染色在草上面的变化

  • 在渲染这些草的时候,可以表现地面上面这些草颜色变化
  • 这个颜色变化也是通过刷草的颜色来实现的,刷草的颜色其实跟刷地形、刷头发(参考文末“头发渲染”)是一样的,都是通过顶点绘制来实现的

  • 再介绍一种简单的方法,如果某一块地形草的颜色是红色(如图红圈所示),可以在绘制地形的时候,专门建立一张贴图,把这张贴图画成红色,就表示这一块的草是用红颜色来进行绘制

染色:树木

  • 染色还可以在场景里面用来表现树木

  • 树木的实现可以通过一种叫做Billboard也就是公告版技术,但是公告板渲染树木会有点不真实的感觉
  • 可以用另外一种方式---Impostor,Impostor就是用替身的方式实现,对于这块内容感兴趣可以关注一下我,我后面也会进行分享

峭壁渲染

  • 下面看看峭壁渲染这块,主要是三平面渲染的内容

  • 对于这种侧边的地面,如果不进行特殊处理,其实就是把地形贴图的一个切面在地形上面进行拉伸,这种方式拉伸以后效果就比较差
  • 怎么样去表现这些峭壁细节呢?就需要使用三平面渲染的方式,对侧面仍然进行贴图的绘制,但是在进行贴图绘制的时候使用的UV坐标采样的方式是不一样的
  • 它不仅可以从地面进行采样,也可以从侧面进行贴图的采样,因此不会出现走样的问题

  • 上图展示了用三平面影射跟和不用的区别,如果不用的话,那么本来贴地面贴的很好的纹理在贴侧面的时候就会被拉伸。如果使用了三平面纹理影射,就不会有这个问题了

  • 因为三平面纹理影射需要采样三次,所以性能开销也会更大,所以还可以再用一种技术---基于重要性的三平面纹理影射采样进行优化
  • 在我的一个项目里面,在进行瀑布渲染的时候,也是采用了三平面影射的方式,因为瀑布是从上垂直流到地面,然后到水面,所以也需要用三平面影射才不会出现走样
  • 对于这个项目有兴趣的可以看一下参考,联系Alice交流学习

近景细节提升

  • 近景的细节提升主要是指地面的贴花,比如地面的裂痕,就是使用贴花实现的

  • 贴花有两种,一种是世界空间贴花,一种是对象空间贴花,想要更详细的学习可以看看我其他的分享。这里地面的贴花用世界空间贴花就可以了
  • 贴花本质上只是一张贴图,所以如果走近之后,从侧面看,而不是从顶上看,就会发现就是一张贴图
  • 对于路边的这种小石子,如果想让它更加真实,那怎么办呢?就需要使用曲面细分的技术

  • 可以观察到,如果用贴花实现看上去就不够真实,如果用曲面细分就会更加真实、立体
  • 关于曲面细分的内容,可以参考一下进阶内容,这里篇幅有限,不再赘述

  • 完整视频请点击本链接观看:https://www.bilibili.com/video/BV13ZGQzUE9a
  • 更多技术干货alice17173
http://www.xdnf.cn/news/6868.html

相关文章:

  • 集星云推碰一碰:跨平台发布与源码定制全解析OEM源码部署
  • 携程token纯算分析
  • 【程序员AI入门:模型】19.开源模型工程化全攻略:从选型部署到高效集成,LangChain与One-API双剑合璧
  • 【匹配】Gotoh
  • RoboDual-上海交大-2025-2-6-开源
  • PCIe Switch 问题点
  • 【知识产权出版社-注册安全分析报告-无验证方式导致安全隐患】
  • 文章记单词 | 第82篇(六级)
  • 如何与“不安”和平共处?
  • 召回12:曝光过滤 Bloom Filter
  • 03算法学习_977、有序数组的平方
  • 经典案例 | 筑基与跃升:解码制造企业产供销协同难题
  • Go语言之路————并发
  • 【基础】Windows开发设置入门5:WinGet开发者完全指南(AI整理)
  • Spring 框架中适配器模式的五大典型应用场景
  • 轨道炮--范围得遍历,map巧统计
  • 强化学习算法实战:一个例子实现sarsa、dqn、ddqn、qac、a2c、trpo、ppo
  • RAGFlow升级到最新0.18.0新手指南
  • 【全解析】EN18031 标准下的 AUM 身份认证机制[上篇]
  • 国产三维CAD皇冠CAD(CrownCAD)建模教程:插接箱
  • B2C 商城转型指南:传统企业如何用 ZKmall模板商城实现电商化
  • 线上问题排查:JVM OOM问题如何排查和解决
  • Protobuf——Protocol Buffer详解(1)
  • RFID系统集成业务中,通过产业链上下游挖掘客户
  • Kubernetes + GlusterFS + Heketi 动态卷管理实践 !
  • 中大型水闸安全监测系统解决方案
  • 深度学习驱动下的目标检测技术:原理、算法与应用创新(三)
  • 【C#】 lock 关键字
  • 【笔记】导出Conda环境依赖以复现项目虚拟环境
  • 深度学习驱动下的目标检测技术:原理、算法与应用创新(二)