UE 实时地形高度检测(一)。利用虚拟纹理(virtualTexture)低成本生成热力图/高度图/等高线。

         哈喽! 近期可能会继续撰写一些文章,来丰富自己工作之余的生活,弥补没有项目的遗憾。 如标题所见,这个又是一个智慧城市常见的功能:“热力图、高度图”。

        利用虚幻 新功能:“虚拟纹理(VirtualTexture)”来达到实时渲染的效果,之前一直是通过“RenderTarget2D”来进行渲染的,奈何“价格高昂”!想寻求其他性价比更高的解决方案。

于是就有了这几期对于对不同解决方案的探索!

第一期:Plane 作为载体,通过不同颜色代表不同高度以“扫描”的形式进行动态呈现。

 

 先说亮点:

性能消耗更“廉价”,有更好的兼容性。

缺点:
需要制作额外的材质,会增加额外的工作量。(官方有相应的文档,放在文末)

制作流程:

1、配置引擎(项目设置):

启用虚拟纹理支持(Enable Virtual texture support) 设为true(可参考官方文档)

2、创建虚拟纹理(资产):

并双击打开,由于我们只采集高度信息,所以就在虚拟纹理内容这一栏选择“场景高度”其他保持不变即可

 3、制作虚拟纹理对应的材质:

材质分为两大块: 扫描材质与呈现材质,分两大块呈现。

3.1 扫描材质:

首先就是对山体材质进行制作,相对也很简单,就是通过shader 把山体的高度进行输出到虚拟纹理中,利用RuntimeVirtalTextureOutput进行接收,从而可以得到Mesh 的高度信息。

 3.2呈现材质:

废话了这么多,这里就是今天的重点了!

一个会输入纹理的材质节点,我们把需要的信息通过输出节点进行储存,然后通过这个节点接收。

我们要做的就是对接收到的高度信息进行处理。通过输入地形最低高度及高度区间,规范到0-1。

//对输入高度进行规范化
float3 outlerp = (abs(worldHeight - HeightOffset))/HeightMax;
return outlerp;

并把规范后的数值进行进行lerp 颜色映射(蓝-蓝绿-绿-黄-红)。其中Importlerp为输入参数。

float3 OutColor = lerp(float3(1,0,0),float3(1,1,0),clamp(4*Importlerp,0,1));
OutColor = lerp(OutColor,float3(0,1,0),clamp(4*Importlerp-1,0,1));
OutColor = lerp(OutColor,float3(0,1,1),clamp(4*Importlerp-2,0,1));
OutColor = lerp(OutColor,float3(0,0,1),clamp(4*Importlerp-3,0,1));
return OutColor;

最终把一张高度图转换为彩色的热力图。

有了高度信息就可以通过高度信息计算画出“等高线”了

可以通过HeightLineDistance控制等高线之间的间距,HeightLinePower等高线宽度,HeightLineLight控制其强度。来达到最终的效果。

//先画出单跟线条
float outheightline = frac(abs(WorldHeight/HeightLineDistance));
// 钳制线条宽度及亮度
outheightline = HeightLineLight*round(pow(outheightline,HeightLinePower));
return outheightline;

 最后来一张“全家福”当然,拿到这个效果并不是最终目的,最终是看这个效果如何应用,来体现出对应的价值。


4、场景放置运行时虚拟纹理体积

在 放置Actor(Place Actors) 面板中,在 体积(Volume) 类目下搜索 运行时虚拟纹理体积(Runtime Virtual Texture Volume),并将其拖入场景。并使用体积套住我们要呈现的范围(也可以使用边界对齐Actor 来对齐虚拟纹理——第一个箭头)。

并在参数面板选择我们需要渲染的虚拟纹理(第二个箭头)

5、开启需要渲染的模型 虚拟纹理(也就是地形)

很多时候不成功就是没有注重细节!
没有启动这个参数,也是没有效果的。

当然我们也可以直接给地形使用(地形也需要增加对应的内容)

到此目前所能达到的效果都已经描述了,可以利用这个思路来达成更好的效果。

 这也是动态获取地形高度,也可以有其他的用法:直接利用 <lerp>节点,直接把高程图(人流密度,河流高度,水淹分析等黑白图)输入,来达到同样的效果。当然这不是今天的重点(重点是动态)。

下一期就是利用Niagara 进行动态创建了!可以些许期待一下

虚幻官方文档:https://docs.unrealengine.com/5.1/zh-CN/runtimevirtual-texturing-quick-start-in-unreal-engine/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/41712.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openlayers学习——15、openlayers加载热力图

openlayers加载热力图 前言&#xff1a;基于Vue&#xff0c;学习openlayers&#xff0c;根据官网demo&#xff0c;记录常用功能写法。本人不是专业GIS开发&#xff0c;只是记录&#xff0c;方便后续查找。参考资料&#xff1a; openlayers官网&#xff1a;https://openlayers.o…

NGUI使用教程(3) 使用外部图片制作Atlas(图集)

在实际操作之前有几个概念先弄清一下 Atlas:图集,把美术给你提供的素材,用 NGUI 的 Atlas Maker 工具&#xff0c;合成一张图片&#xff08;准确的说,还同时生成了prefab、mat &#xff09;。 Sprite:精灵,由于Atlas已经把你的图片都合成一张了&#xff0c;那怎么单独调用呢&…

图形引擎实战:HDRP移动版高清渲染管线改造

前言 近年来&#xff0c;随着移动平台硬件的性能不断提升&#xff0c;移动端游戏采用的渲染技术更加先进&#xff0c;整个行业对画质效果的需求也越来越大&#xff0c;我们借此做了一些技术尝试&#xff0c;测试了Unity HDRP是否可以在移动端跑起来&#xff0c;结果是可行的。…

UE 实时地形高度检测(二)。利用Niagara及虚拟纹理(virtualTexture)生成动态——立体的热力图。

接上文&#xff0c;利用Niagara 粒子的特性&#xff0c;来动态生成三维热力图&#xff0c;高程图&#xff01; 传统的平面热力图已经很清晰的表达出热力的效果了。 但是&#xff0c;在三维引擎中&#xff0c;看起来没有那么的炫酷&#xff0c;那就增加第三个维度Z轴&#xff…

3D-echarts的背景和地图表面的贴图

1.设置背景图片 效果如下&#xff1a; 核心代码&#xff08;全部代码见文末&#xff09;&#xff1a; 注意&#xff1a;图片的路径设置 绝对路径 或 asset下面的相对路径都没有效果&#xff0c;要把图片放到public路径下面才有效果&#xff08;此demo是写在v2脚手架中&#xf…

Unity中画2D图表(1)——用XChart包绘制折线图

做一些数据处理和数据分析的时候&#xff0c;把数据可视化是一项重要的工作&#xff0c;本例以画一个包含两条温度曲线的图开始… 一、折线图的绘制效果 二、用到的包 1、XChart介绍 2、XChart官方链接 https://github.com/XCharts-Team/XCharts 三、如何用代码来设置线条…

[计算机图形学]渲染管线,纹理映射(前瞻预习/复习回顾)

一、渲染管线 目前为止&#xff0c;我们前几篇的介绍当中已经把一个3D场景转换到2D的过程几乎讲完了&#xff0c;而这么一个过程就被称为Real-time Rendering Pipeline也就是实时渲染管线&#xff0c;也就是一个流水线。其中包括顶点的变换&#xff0c;光栅化&#xff0c;片元操…

Unity 之图形渲染(一)

备注&#xff1a;希望和大家一起交流学习&#xff0c;如果有不同的观点欢迎一起讨论学习&#xff0c;不喜勿喷&#xff0c;谢谢。 unity图形渲染 前提MeshMesh FilterMesh Renderer基本属性 Skinned Mesh Renderer基本属性 前提 unity 中图形渲染组件主要有三种&#xff1a; …

在Unity中制作逼真的建筑场景

原创 Unity Unity官方平台 2018-07-28 在创作游戏中&#xff0c;场景的制作是必须要面对的问题&#xff0c;如何高效制作好感染力强、让人印象深刻的场景是每个开发者都会面临的难题&#xff0c;因为场景的细节和逼真度处理起来并不简单。 本篇文章中&#xff0c;游戏开发工程…

【项目展示】Unity 海洋场景渲染(Boat Attack Water、光谱渲染)

项目背景 前几个月开始做的项目&#xff0c;需要一个使用海洋场景。但是因为项目很急&#xff0c;所以海水需要使用别人已经写好的开源代码。当时就想起了Unity曾经有一个URP宣传片中的海水似乎还不错&#xff0c;于是便基于此项目的海水进行修改&#xff08;Unity在GitHub上有…

渲染的艺术:建筑效果图渲染的5个成功要素

在数字建筑可视化的早期&#xff0c;建筑物只是简单地填充了与不同活动和规模相对应的人体剪裁。现在&#xff0c;随着图像编辑软件的进步&#xff0c;创建建筑渲染不仅仅涉及对建筑物进行 3D 建模然后对其进行抛光。艺术家们正在探索创造性的途径&#xff0c;在一个框架中讲述…

Unity接入ChartAndGraph图表插件

Unity中接入ChartAndGraph图表插件 说明一、实现柱状图二、实现折线图 遇到的问题 说明 最近项目上需要实现部分图表数据显示&#xff0c;因为需要用到一些3D图表&#xff0c;所以选择了ChartAndGraph这款图表插件&#xff0c;图表数据是通过后台接口读取Json并解析,然后调用图…

【Unity】Unity插件:地形编辑器MTE(Mesh Terrain Editor)

文章目录 地形编辑器MTE下载方式文档及教程主要功能地表类型创建工具示例文件创建地图绘制地图快捷键提升、降低高度绘制高度平滑高度绘制纹理 细节问题处理 地形编辑器MTE MTE&#xff08;Mesh Terrain Editor&#xff09;是一款Unity的地形编辑器插件&#xff0c;该插件能够…

unity基础开发----NGUI图集Atlas制作简介

此教程属于 NGUI 的具体操作&#xff0c;主要描述怎么制作一个游戏中的 UI &#xff0c;相对来说比较简单&#xff0c;熟能生巧哇&#xff0c;动手操作一遍就可以完全掌握的。 1 &#xff0c;在 PS 里面设计好要做的 UI &#xff0c;然后切片成很多个 png 的图片&#xff08;这…

图形渲染技术分享:《GTA V 》图形分析摘要

环境渲染 最外层的 cubemap 是每一帧实时生成的&#xff0c;目的是简化后续真实反射的渲染。这个 cubemap 是一张低精度的 128*128 纹理&#xff0c;每个面 30 左右 drawcall&#xff0c;都是地表天空等较大像素贡献的多边形全部是静态物体&#xff0c;所以车辆的外壳反射不…

GaussDB火焰图分析

目录 问题描述问题现象告警业务影响原因分析处理方法 问题描述 CPU利用率是衡量系统负载和健康度的重要指标之一&#xff0c;系统在运行过程中时常发生CPU利用率高的情况。在分析性能问题时&#xff0c;可通过火焰图查看CPU耗时&#xff0c;了解瓶颈在哪里。 问题现象 部分s…

3.15 数据库吐槽大会

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 大家好&#xff0c;我是一名狂热的数据库程序员&#xff0c;趁着 3.15 的良辰吉日&#xff0c;鼓起勇气站上了数据库吐槽大会舞台&#xff0c;以下故事纯属虚构&#xff0c;如有雷同&#xff0c;请对号入座。 名不副实的数据…

一个月涨粉翻倍,摄影博主慌了:照片都是假的,肖像根本不是人

白交 发自 凹非寺量子位 | 公众号 QbitAI 一个月内涨粉翻倍&#xff0c;摄影博主却慌了&#xff0c;忍不住坦白&#xff1a; 我的照片都是AI生成的。 去年十月份开始&#xff0c;这个名叫Jos Avery的大哥&#xff08;后面简称乔大哥&#xff09;开始在社交网络上发照片&#xf…

百度文心一言正式亮相

OpenAI 刚发布了 GPT-4&#xff0c;百度预热已久的人工智能生成式对话产品也终于亮相了。昨天下午&#xff0c;文心一言 (ERNIE Bot)—— 百度全新一代知识增强大语言模型、文心大模型家族的新成员&#xff0c;正式在百度总部 “挥手点江山” 会议室里发布。 发布会一开场&…

LangChain大型语言模型(LLM)应用开发(三):Chains

LangChain是一个基于大语言模型&#xff08;如ChatGPT&#xff09;用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口&#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…