UE5导入倾斜摄影

2023-10-29

前言

虚幻引擎是全球最先进的实时3D创作工具,可制作照片级逼真的视觉效果和沉浸式体验,2022年4月5号虚幻引擎发布了颠覆性的UE5。倾斜摄影是城市实景的基础,通过无人机采集实际照片再进行三维重建,常见的数据格式为osgb。本文主要介绍UE5如何导入OSGB。

UE5简介

UE5致力于带来前所未有的自由度、保真度和灵活性,帮助游戏开发者和各行各业的创作者创作新一代实时3D内容和体验。 这里简单介绍一下UE5颠覆性的技术。

更快捷、更简单、更高效

Quixel Bridge现已完全集成到引擎中,你可以直接拖放和访问Megascans库中的所有资产。在新版“创建”菜单中,你可以获取内容,以及创建并放置Actor。

为了在视口中腾出更多空间,你现在可以轻松地展开和收合内容浏览器,并将任何编辑器选项卡停靠至侧边栏。此外,在“细节”面板中,你还可以更快捷地访问你要寻找的属性。

       509dbff0127b7021f98f8664fe4b06ad.png        

庞大而精致

使用虚拟化微多边形几何体系统Nanite和全新的虚拟阴影贴图系统创建具有海量几何细节的游戏和世界。

你可以直接导入并复制由数百万个多边形组成的任何网格体,同时保持实时帧速率,无任何明显失真。

这些系统会智能地仅流送和处理你可感知到的细节,这在很大程度上放宽了对多边形计数和绘制调用的限制。

       8e933f06944f99c3a8bf41892b367d89.png        

动态全局光照和反射

Lumen是一套完全动态的全局光照和反射解决方案,当场景中的直接光照或几何体发生变化时(如,太阳照射角度随当日时间而改变,或打开户外门),它将即时地对间接光照作出相应调整。 

有了Lumen,你不再需要编辑光照贴图的UV并等待光照贴图的烘焙,也无需放置反射采集;就可以直接在编辑器内看到与主机上相同的效果。 

       2177a628e9372d5c30498134bd4059ce.png        

时序超级分辨率

次世代主机的玩家希望在高分辨率显示器上享受60FPS或更高的帧率,这为渲染资源带来了巨大的压力。

时序超级分辨率(TSR)是虚幻引擎内置的高质量上采样系统,具有平台独立性,通过它,引擎就能够以更低的分辨率进行渲染,但输出的像素保真度可接近以更高分辨率渲染的帧。

       dc31f82e896df31c746f08d5da142073.png        

更广阔、更完善的开放世界

在虚幻引擎5中,全新的世界分区系统改变了关卡的管理和流送方式,它会自动将世界划分为网格,仅流送必要的单元格。 

借助全新的“一Actor一文件”系统,团队成员现在还可以同时在同一个世界的同一个区域中工作;而通过数据层,你可以创建同一个世界的不同变体(例如,白天版本和夜间版本),变体将作为数据层存在于同一空间中。

       93be364589c41c48b25596283bd60af8.png        

UE5导入OSGB

UE5通过Datasmith插件可以支持非常多的数据格式,但是目前还不支持OSGB格式。所以我们的思路是将OSGB转成FBX格式,再导入UE5。

OpenSceneGraph提供了一个格式转换工具osgconv.exe,可以方便的将OSGB转成Fbx。

       3ae50c3661e2e87801e68f4bfbfe871e.png        

通过命令行工具即可生成fbx文件,如下:

osgconv infile.osgb outfile.fbx

不过考虑到我们的osgb文件通过比较多,我们可以通过python脚本来一键生成批处理命令,示例脚本如下:

import glob


osgPath = r'D:\work\OpenSceneGraph-3.6.5-VC2019-64-Release\bin'
infile = ""
for p1 in glob.glob('*'):
    if(-1 != p1.find(".osgb")):
        infile = infile + p1 + " "
cmdBat = "osgconv.exe " + infile+"../model/1.fbx"
file_path = 'data.bat'
with open(file_path, mode='w', encoding='ANSI') as file_obj:
    file_obj.write('set path='+osgPath+'\n')
    file_obj.write(cmdBat)
    file_obj.write('\npause')

当OSGB文件没有PagedLOD时,上面的方法生成的fbx可以很好的导入UE5。但是当osgb里面有多层次细节的时候,我们会发现转成的文件会有重复的部分,即精细的部分和低精细的都会在fbx里面,从而导致模型不正确。

由于虚幻引擎自带Hlod系统,所以我们不需要PagedLod里面的非精细部分,即我们需要将低精度的模型去掉。

这里我们采用OpenSceneGraph的osgDB库进行处理,剔除掉低精度的模型。osgDB是官方提供的一个格式转换库,支持大量常见的2d和3d的图形文件格式的转换。由于这个库是C++开发的,我们采用CMake的方式进行组织代码。示例如下:

       b8662c08d1d4830a8fa4535566f66563.png        

整个代码实现的逻辑为从每个文件的根节点开始遍历,当PagedLOD里面有两个模型(精细和非精细)时候,我们去掉非精细模型,保留精细部分。而当模型没有精细模型的时候,我们可以直接将这个文件删除。示例代码如下:

void handlePageLod(osg::PagedLOD *node)
{
  auto size = node->getNumPriorityOffsets();
  if (1 == size)
  {
    return;
  }
  if (2 == size)
  {
    //当为2的时候,说明有更精细的模型,可以删除当前child
    auto childCount = node->getNumChildren();
    if (1 == childCount)
    {
      node->removeChild(0, 1);
      return;
    }
    cout << "error handlePageLod childCount != 1" << endl;
    return;
  }
  else
  {
    cout << "error handlePageLod getNumPriorityOffsets >" << size << endl;
  }
}
int main(int, char **arg)
{
  std::cout << "Hello, world!\n";
  string inpath = arg[1];
  string outPath = arg[2];
  std::cout << "inpath = " << inpath << endl;
  std::cout << "outPath = " << outPath << endl;


  auto root = osgDB::readNodeFile(inpath);
  auto group = root->asGroup();
  auto childNumber = group->getNumChildren();


  std::vector<osg::PagedLOD *> delPageLod;
  for (unsigned int i = 0; i < childNumber; i++)
  {
    auto pagedLod = dynamic_cast<osg::PagedLOD *>(group->getChild(i));
    handlePageLod(pagedLod);
    if (0 == pagedLod->getNumChildren())
    {
      delPageLod.push_back(pagedLod);
    }
  }
  for (auto item : delPageLod)
  {
    group->removeChild(item);
  }
  if (0 == group->getNumChildren())
  {
    cout << "no data to write" << endl;
    return 0;
  }
  if (false == osgDB::writeNodeFile(*root, outPath))
  {
    cout << "error "
         << "osgDB::writeNodeFile " << endl;
  };
  return 0;
}

通过osgDB的转换,我们成功剔除了模型的非精细部分,然后再通过之前的格式转换工具osgconv.exe转换出来的fbx模型可以成功导入虚幻引擎。上一个导入之后的示例截图:

       699fb9da9c3695c14a9d790317bb3d89.png        

总结

本文主要介绍了UE5的一些重要的新特性并介绍了如何通过osgDB和osgconv.exe工具将osgb转换成fbx格式并导入到UE5。欢迎关注公众号加入技术交流群获取示例代码。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UE5导入倾斜摄影 的相关文章

随机推荐

  • Cisco Packet Tracer配置操作的三种命令模式

    Cisco Packet Tracer三种基本命令模式 这里我们需要讲一下三种命令模式 今后绝大部分操作都通过命令实现 所以需要熟悉命令模式 在路由器命令配置界面中演示 三种命令模式介绍 用户模式 用户模式下可进行的操作较少 我们一般不在用
  • kubeadm init三个master节点遇到的问题

    要创建三个master节点 就不能使用其中一台主机的IP 所以申请了一个VIP地址 kubeadm init apiserver advertise address 0 0 0 0 image repository k8s gcr io c
  • qmake 乱乱乱谈(四)

    继续qmake 本文主题 低调的 TEMPLATE subdirs 非常非常常用的一个东西 可是manual中却介绍的很少 太低调了 在编写包含多可执行文件 库 插件 的程序时 一直不敢相信subdirs的能力 以至于曾一度想转到cmake
  • python三级考什么_什么是计算机三级考试?计算机三级考什么?

    什么是计算机三级考试 计算机三级考什么 2020 04 1118 04 03 来源 上学吧 作者 dengyangjie 全国计算机等级考试 National Computer Rank Examination 简称NCRE 是经原国家教育
  • HTTP POST GET 本质区别详解

    一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式 在FORM提交中 可以通过Method指定提交方式为GET或者POST 默认为GET提交 Http定义了与服务器交互的不同方法 最基本的方法有4种 分别是GET POST PU
  • 硬件工程师修炼的几层境界

    分享一篇文章 觉得写的很好 mark一下 第零层 1 对基础技术有认知 2 模电 数电 电路分析 信号与系统 物理学之电磁学基础 3 基本掌握焊接 电路设计软件 示波器使用 万用表等基础仪器仪表的使用 第一层 1 精力主要花在学习原理图工具
  • Windows 7 下 vs2010内存泄漏检测工具VLD的使用

    1 环境和软件 Windows7 32位系统 Visual Studio 2012 旗舰版 vld 2 2 3 setup exe 大小1 04M 2 步骤 1 下载安装 下载好 vld 2 2 3 setup exe 大小1 04M 并安
  • CentOS 7.9 使用rpm包安装MySQL-5.7.43

    参考 refman 5 7 pdf 2 5 5 Installing MySQL on Linux Using RPM Packages from Oracle 前期准备 1 防火墙端口检查与设置 检查防火墙状态 systemctl sta
  • 买服务器做网站 镜像选什么,云服务器做网站镜像类型选啥

    云服务器做网站镜像类型选啥 内容精选 换一换 创建一台或多台云服务器 V1 1版本创建云服务器的接口兼容了V1版本创建云服务器 按需 的功能 同时合入新功能 支持创建包年 包月的弹性云服务器 本接口为异步接口 当前创建云服务器请求下发成功后
  • 【Golang

    环境准备 GoLang go1 15 7 windows amd64 Docker 1 13 1 MySQL 8 0 28 一 利用容器部署mysql 1 首先通过docker pull mysql拉取mysql镜像 root k8s ma
  • Jetty篇一之初识Jetty

    前言 最近公司项目中用到了Jetty来作为项目的web容器 借此机会来分享一下我的学习心得 在学习Jetty之前 一定要了解一些Jetty的基本概念以及优缺点 这样才方便做更深入的学习 现在让我来慢慢揭开它的神秘面纱吧 基础 什么是Jett
  • 大数据模型案例库-涵盖多行业,超百个实战项目案例

    平台目前积累了大量的人工智能应用模型 不仅包括多年来人工智能企业服务方面的沉淀 还包括大量其他企业的真实项目应用模型 以及高校智能工作室成果模型 覆盖教育 医疗 交通 金融 科技 农业等18个行业 平台面向高校 企业 个人等广大用户群体 所
  • Candence原理图误删图页并保存退出后的恢复方法

    一早打开Candence准备工作 发现原理图少了几页 心里很慌 昨晚在画PCB的时候设置按了几次Delete键 没有反应 可能删了原理图 关闭的时候也没有看 直接保存退出了 看了之前拷贝备份的文件 时间有点久 那只能靠软件的自动备份功能了
  • C语言进阶(九)—— 函数指针和回调函数、预处理、动态库和静态库的使用、递归函数

    1 函数指针 1 1 函数类型 通过什么来区分两个不同的函数 一个函数在编译时被分配一个入口地址 这个地址就称为函数的指针 函数名代表函数的入口地址 函数三要素 名称 参数 返回值 C语言中的函数有自己特定的类型 c语言中通过typedef
  • 学习笔记-选择排序

    选择排序 将一个一维数组从小到大排序 思路 选择排序的思路是 首先认为数组的第一个数是最小的 保留它然后遍历它后面的数 跟它作比较 选择出最小的数和位置 遍历结束后 让这个最小的数和数组的第一位数交换 这样确定了第一个最小的数 之后重复这个
  • Unity AR阴影投射透明地面 仅渲染模型实时阴影 Shader实现

    亲测可用 上面就是实现的效果 仅仅渲染阴影 地面透明 也可以换成AR中的虚拟物体 AR中为的虚拟物体添加阴影 只用unity的光照投影是没办法实现的 或者需求是 角色需要投射阴影在墙上 但是墙不能显示 只渲染出阴影 相当于接受阴影的地面墙体
  • 吊打 CLIP 平均10个点,Meta 多模态通用模型 FLAVA真香啊

    厉害了 作者将单一模型运用于三个不同领域的不同任务 结构简单且训练直观 还能有着出色的表现 自Transformer横空出世 从NLP到CV 再到今天的多模态 无数基于Transformer的模型被应用于各类任务 似乎真的印证了当年文章的标
  • ldd not a dynamic executable

    在开发环境编译运行很ok的程序 到了客户的生产环境一直有问题 编译找不到库 类似这个样子 usr bin ld skipping incompatible lib libasound so when searching for lasoun
  • EXCEL-VBA:Workbooks.Open 参数 (打开文件)

    打开一个工作簿 语法 表达式 Open FileName UpdateLinks ReadOnly Format Password WriteResPassword IgnoreReadOnlyRecommended Origin Deli
  • UE5导入倾斜摄影

    前言 虚幻引擎是全球最先进的实时3D创作工具 可制作照片级逼真的视觉效果和沉浸式体验 2022年4月5号虚幻引擎发布了颠覆性的UE5 倾斜摄影是城市实景的基础 通过无人机采集实际照片再进行三维重建 常见的数据格式为osgb 本文主要介绍UE