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

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(六):Blender烘培和UE5导入

前言

  • 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2UE5仿真的通讯,达到小车自主导航的目的。
  • 本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客
  • 往期教程:
    • 第一期:基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(一)—UnrealCV获取深度+分割图像-CSDN博客
    • 第二期:基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(二)—ROS2与UE5进行图像数据传输-CSDN博客
    • 第三期:基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(三)—创建自定义激光雷达Componet组件-CSDN博客
    • 第四期:关于雷达数据的处理(文章源文件我暂时丢了,有空补更一下)
    • 第五期:基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模-CSDN博客
  • UE5系列教程:
    • 第一期:UE5-C++入门教程(一):使用代码创建一个指定目标的移动小球-CSDN博客
    • 第二期:UE5-C++入门教程(二)—编写Editor类别的自定义模型实现小球规划路线的可视化-CSDN博客
    • 备注:最近博主在unity开发独立游戏,UE5系列的相关长期教程先暂时不更新了~
      请大家多多谅解~
  • 本教程环境支持:
    • UE5.4.4(本节被从5.4.3–>5.4.4)
    • ubuntu 22.04 ros2 humble
  • 上期我们使用Blender完成了基本的建模,本期我们将介绍Blender的烘培技术和实现,然后将我们的模型转成fbx导入UE5中,最后达到如下效果请添加图片描述

0 零帧起手–UE5.4.4更新

  • 好久没开UE5今天打开居然UE5.4.3更新补丁了…我们更新一下,更新后就是5.4.4了请添加图片描述

1 基础概念

1-1 FBX

请添加图片描述

  • FBX(Filmbox)是一种用于存储三维模型、动画、材质、贴图等信息的文件格式。
  • 在Blender中,FBX文件可以用于以下几种情况:
    1. 导入和导出模型:你可以使用FBX格式将其他三维软件创建的模型导入到Blender中,也可以将Blender中的模型导出为FBX文件以便在其他软件中使用。
    2. 跨软件工作流:FBX格式被许多三维软件支持,这使得在不同的软件之间交换模型变得更加容易。例如,你可能需要将Blender中的模型导入到3ds Max或Maya中进行进一步的处理。
    3. 动画数据传输:除了几何数据外,FBX文件还可以包含动画数据,这使得在软件之间转移动画变得非常方便。
    4. 游戏开发:许多游戏引擎支持FBX格式,因此Blender用户可以轻松地将自己的作品导入到游戏引擎中进行游戏开发。
    5. 协同工作:在团队工作中,FBX格式可以作为一个标准化的交换格式,确保团队成员在不同软件中工作时的数据一致性。

1-2 烘培

请添加图片描述

  • 不对,放错图了

  • 烘焙(Baking)是一个重要的功能,用于将复杂的3D模型、动画或者光照信息转换成2D图像或者贴图,以便于实时渲染或用于其他3D软件。

  • 烘焙的基本概念: 烘焙的主要目的是减少渲染时的计算量,提高渲染速度。例如,在游戏开发中,为了实现流畅的实时渲染,通常需要对场景中的光照、阴影、法线等数据进行烘焙,生成相应的贴图。这样,在游戏运行时,只需应用这些预烘焙的贴图,就能快速渲染出复杂的场景效果,而不必实时计算。

  • 可能有朋友会问了,如果不考虑算力问题,这里为什么要使用到烘培呢,我们来回顾一下上一节我们自定义的材质请添加图片描述

  • 可以看到上述节点图中我们自定义的材料图过于复杂,在进行格式转换的时候容易出现模型无法正常或者良好转换的情况,如下图我的尝试,按照正确步骤对上述模型进行fbx文件直接export导出后再次进行import到blender中的时候,出现了如下无法正常解析texture的情况请添加图片描述

  • 题外话:经过搜寻和问题查找最终我暂时把问题归咎于自定义材质的复杂性,解决方式可以是尝试对材质进行简化,或者考虑烘培。在不想优化材质的懒惰下我最后还是选择了烘培(我在已经确保fbx导出时候已经选择了正确的导出形式和选择)


2 快速开烤

2-1 三个特性
  • 在明白了为什么要进行烘培之后,那我们来快速上手,我们要做的很简单,分别进行3次烘培,分别对color(颜色),roughness(粗糙度)normal(发现)三个特性进行烘培,得到三张PNG图像。
  1. 颜色(Color)烘焙:颜色烘焙是将模型的材质颜色信息烘焙到一张2D图像上。这样,在实时渲染时,就不需要再次计算材质的颜色,可以直接使用这张图像来显示模型的颜色。这对于保持材质的细节和颜色一致性非常重要。
  2. 粗糙度(Roughness)烘焙:粗糙度烘焙用于将材质的粗糙度信息烘焙到一张2D图像上。粗糙度决定了材质表面反射光线的散射程度,从而影响材质的外观。例如,一个粗糙的表面会散射更多的光线,而一个光滑的表面则会产生更集中的反射。在实时渲染中,使用烘焙的粗糙度贴图可以快速实现这些效果,而不需要实时计算。
  3. 法线(Normal)烘焙:法线烘焙是将高多边形模型的法线信息烘焙到低多边形模型上。法线贴图可以模拟出高多边形模型的细节,而不需要使用高多边形的模型进行渲染。这对于减少渲染负担、提高渲染速度非常有帮助。在实时渲染中,法线贴图可以用来模拟凹凸不平的表面,使低多边形模型看起来更加复杂和真实。
  • 这三项也分别对应上一节我们绘制基本材料时候连接的三个特性
  • 请添加图片描述

2-2 创建Image Texture✖3
  • 顾名思义,找到我们需要的body材料(需要烘焙的部分)

  • 请添加图片描述

  • shift+A添加三个特性的Image Texture,注意粗糙度和法线的颜色空间要选择Non-Color.接下来我们烘培的结果将会存储在这三个ImageTexture中请添加图片描述


2-3 开始烘培
  • 右侧Render属性栏,选择配置我们烤箱的引擎Cycles,同时我们选择GPU可以为烘培进行加速请添加图片描述

  • 在Blender中,Cycles是一个强大的渲染引擎,它使用光线追踪技术来创建逼真的图像。Cycles是一个基于物理的渲染器(Physically Based Renderer,PBR),这意味着它模拟了光线在现实世界中的行为,包括光的反射、折射、散射和吸收。

  • 接着我们配置第一个Color的烘培参数,你要确保一下选项:

    1. 物体被全选
    2. 材料是选对的
    3. Bucket_Color(Image Texture)被选中
    4. Bake Type 是Diffuse(当你选择"Diffuse"(漫反射)作为烘焙类型时,你是在指示渲染引擎只计算并保存对象表面的漫反射颜色,而不包括高光、反射或折射等效果。)
    5. 取消Contributions的Direct和Indirect
  • 然后点击Bake开始烤箱请添加图片描述

  • 下方有个进度条,进度条走完就是完成了

  • 请添加图片描述

  • 烘培结束后我们可以在UV展开视图中找到刚刚烘培得到的图片请添加图片描述

  • 选中后我们点击Image进行PNG另存为请添加图片描述

  • 我们就有如下画面请添加图片描述


2-4 烘培结束
  • 相同步骤,粗糙度选中粗制度进行烘培请添加图片描述

  • 法线选择Normal进行烘培请添加图片描述

  • 得到如下三张烘培结果的效果图片请添加图片描述

  • 然后我们选中这三个组件,复制,创建一个新的材质 请添加图片描述

  • 如下请添加图片描述

  • 这个新的材质只需要同时包含这个三个烘培结果的图进行叠加就可以获得相同效果的材质了请添加图片描述

  • 至此我们完成了烘培的全部工作,新材质效果基本上看起来和原来的没有上面差别请添加图片描述


3 FBX导出

  • 老规矩A选择全部物体,文件-导出-FBX文件请添加图片描述

  • 我们填一下导出的基本属性,注意 请添加图片描述

  • 注意右边这个小按钮一定要点上请添加图片描述

  • 我们没有骨骼和动画,取消勾选,平滑选择面请添加图片描述

  • 值得一提的是右上角的加号可以保存你的选项,以便下次使用请添加图片描述

  • 自此我们完成了导出的全部工作请添加图片描述


4 UE5导入FBX文件

  • 老规矩新建项目,C++,使能光线追踪,点击create

  • 在新项目中创建一个bucket文件夹点击import导入fbx文件请添加图片描述

  • 选项可以设置默认,然后点击Import All请添加图片描述

  • 导入存在一点点问题,不要慌,我们一个个解决请添加图片描述

  • 可以看的出来我们的body_bake没有被加载出来,那我们就手动添加,把刚刚烘培的三张PNG图拖到资源文件夹中请添加图片描述

  • 请添加图片描述

  • 然后双击body_bake 进入材质编辑页面请添加图片描述

  • 和Blender逻辑一样,鼠标右键搜索添加Texture Sample请添加图片描述

  • 在左下角属性出为三个特性添加PNG烘培图请添加图片描述

  • 添加后然后连连看,可以看到左上角的材质球已经显示出来了!请添加图片描述

  • ctrl+s保存,回到主界面可以看到我们的锥桶已经成功展现了![[Pasted image 20240908110123.png]]请添加图片描述

  • 向上拖动导入一个锥桶请添加图片描述

  • 自由摆放环节请添加图片描述


5 总结

  • 本节我们介绍了Blender的烘焙工艺及其使用,然后将我们的模型转成fbx导入UE5中。
  • 下一节我们讲讲如何为我们的小车创建基础环境。
  • 如有错误,欢迎指出!!!谢谢大家的支持

http://www.kler.cn/a/301571.html

相关文章:

  • Linux dpkg命令详解
  • 【STM32】USB 简要驱动软件架构图
  • Javascript高级—函数柯西化
  • Go 语言已立足主流,编程语言排行榜24 年 11 月
  • 酒店行业数据仓库
  • HBase压测 ycsb
  • 深入探讨MySQL联表查询可能导致的问题及应对策略
  • Linux运维_Bash脚本_源码编译Moby(Docker-CE)-20240803
  • 嵌入式鸿蒙系统开发语言与开发方法分析
  • Linux之MySQL主从复制
  • 组合模式composite
  • linux 操作系统下cp命令介绍及案例应用
  • Angular-Cli脚手架介绍、安装并搭建项目
  • Golang开发之路
  • 从 Data 到 Data + AI,必然之路还是盲目跟风?
  • vue3使用vscode开发遇到热更新问题(文件保存页面不实时更新)
  • 即插即用篇 | YOLOv8 引入并行的分块注意力 | 北京大学 2024 | 微小目标
  • 高级算法设计与分析 学习笔记4 二叉查找树
  • 单片机-STM32 看门狗(八)
  • 使用Ansible进行多云环境的自动化部署与管理
  • 第二期: 第四节, 裸机编程 LED 汇编代码。
  • TCP/IP模型成功与OSI模型失败的深层原因:技术、理念与市场化路径的比较
  • 【数据结构与算法 | 灵神题单 | 快慢指针(链表)篇】力扣876, 2095, 234
  • git获取最近一次提交的内容(只要message不要hash)
  • 新的Ubuntu服务器如何启用root账号和配置静态ip以及开启ssh服务
  • 第309题|证明函数单调有界的核心思路 |武忠祥老师每日一题