学习在UE中通过Omniverse实现对USD文件的Live-Sync(实时同步编辑)

news2024/9/28 21:23:56

目标

前一篇 学习了Omniverse的一些基础概念。本篇在了解这些概念的基础上,我想体验下Omniverse的一些具体的能力,特别是 Live-Sync (实时同步) 相关的能力。

本篇实践了使用Omniverse的力量在UE中建立USD文件的 Live-Sync 编辑。由于相关的知识我是从零开始的,所以我也顺带记录上一些之前并不知道的内容。

主要参考资料:

Exploring Creative Workflows with Omniverse and the Unreal Engine Connector - YouTube

OmniLive — Omniverse Extensions latest documentation

0. 环境准备

Omniverse Launcher

从官网下载 Omniverse Launcher:https://www.nvidia.com/en-in/omniverse/download/

关于 Omniverse Launcher 界面上各分页的具体介绍,可参阅:https://docs.omniverse.nvidia.com/launcher/latest/workstation-launcher.html

在这里插入图片描述
简单来说,有三部分最需要关注:

  • EXCHANGE:可以在这里下载应用、链接器、扩展 、等等。
  • LIBRARY:浏览当前已安装的应用
  • NUCLEUS:Nucleus服务器相关操作。

USD Composer (Omniverse Create)

(根据这里的官方文档所说,Omniverse Create 已经废弃并由 USD Composer 取代。所以很多教程中所使用的 Create 应该指的是现在的 USD Composer

可在 Omniverse Launcher 的 EXCHANGE 页面搜索并下载 USD Composer:
(不知是我网络问题还是显示问题,经常下载一会儿后就卡住了,我只能关掉Launcher再重新打开才能看到进度条前进。。。另外,最后还遇到个问题,见附录)
在这里插入图片描述
USD Composer 是使用 NVIDIA Omniverse™ Kit 开发的。具体介绍可参阅官方文档:https://docs.omniverse.nvidia.com/composer/latest/index.html。
现在可以简单将其视为是个可以预览/编辑USD文件的编辑器。

安装好后,可以在LIBRARY分页找到它并启动。
在这里插入图片描述

虚幻引擎的 Omniverse Connector 插件

同样,在 EXCHANGE 页面可以搜索到不同UE版本对应的Connector插件:
在这里插入图片描述
可能因为我是源码版的引擎,这里安装时并没有找到引擎,所以提示让我自己选择引擎插件目录位置。
在这里插入图片描述
当放入插件目录后,进行代码编译后。就可以看到这个插件了,同时也能在关卡编辑器中看到这个小图标:
在这里插入图片描述

1. 创建本地Nucleus服务

Live-Sync 需要连接到Nucleus服务,所以如果还没有服务的话,需要创建一个。

在 Omniverse Launcher 的 NUCLEUS 分页中,可以创建一个本地服务:
在这里插入图片描述
跟随指引填写必要的信息,创建完后,应该会显示:
在这里插入图片描述

2. UE连接Nucleus服务

点击 Add Server:
在这里插入图片描述
建立与本地服务即localhost的连接
在这里插入图片描述
随后可以看到:
在这里插入图片描述

3. UE导出关卡为USD

如果想直接在UE关卡中启动 live-sync,那么将会收到提示:
在这里插入图片描述
为了能使用 live-sync,可以将当前关卡导出为USD
在这里插入图片描述
导出为USD后,可以在UE中打开它:
在这里插入图片描述

4. USD Composer 连接 Nucleus服务,打开场景

在 USD Composer 中,建立与本地服务即localhost的连接:
在这里插入图片描述
可以找到之前导出的USD场景,打开它:
在这里插入图片描述

5. 建立 live-sync !

现在万事俱备,可以开始 live-sync 了。

关于 OmniLive 的具体细节,可以参考官方文档。简单来说,需要 Live Session 来建立联系。因此,首先要创建一个 session。

我选择在 USD Composer 中创建,点击右上角 Create Session:

在这里插入图片描述
为session起一个名字,这里我叫 “yaksue_session”
在这里插入图片描述
随后将可以看到一个新的 session layer:
在这里插入图片描述


另一端,UE里点击 Live Session:
在这里插入图片描述
选择刚才创建的 “yaksue_session”:
在这里插入图片描述


现在,live-sync 已经建立,可以体验了:
在这里插入图片描述
其实在编辑结束后,还有一些问题比如Merge,但由于牵扯到Live-Sync一些更底层的结构,我目前还无法简单讲明白。具体可以参考官方文档:Live Session Management:Exit a Live session

附录:安装 USD Composer 时卡在 Installing omni.create.warmup

下载完后,卡在这里:
在这里插入图片描述
这里也有人问到同样的问题,并表示用管理员权限打开可以解决:
Create install “stuck” on omni.create.warmup.bat - Apps / USD Composer (Create) - NVIDIA Developer Forums
我尝试用管理员权限后确实可以解决:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

将Go语言开发的Web程序部署到K8S

搭建K8S基础环境 如果已经有K8S环境的同学可以跳过,如果没有,推荐你看看我的《Ubuntu22加Minikue搭建K8S环境》,课程目录如下: Ubuntu22安装Vscode 下载:https://code.visualstudio.com/Download 安装命令&#…

Unity之DOTweenPath轨迹移动

Unity之DOTweenPath轨迹移动 一、介绍 DOTweenPath二、操作说明1、Scene View Commands2、INfo3、Tween Options4、Path Tween Options5、Path Editor Options:轨迹编辑参数,就不介绍了6、ResetPath:重置轨迹7、Events:8、WayPoin…

ioDraw AI:思维导图、流程图、序列图、类图、饼图,一应俱全

前言 在信息爆炸的时代,我们每天接收着大量的信息,如何高效地整理和呈现这些信息成为了一项重要的挑战。思维导图作为一种可视化思维工具,能够帮助我们快速构建和整理复杂的信息结构,便于我们理解和记忆。ioDraw AI绘图工具正是基…

图像ISP处理——畸变校正算法

图像畸变校正算法主要用于矫正图像中因为摄像机镜头畸变而引起的形状和尺寸变化。摄像机镜头畸变主要包括径向畸变和切向畸变。以下是一些常见的图像畸变校正算法: 多项式畸变校正法(Polynomial Distortion Correction): 原理&am…

Settings中电池选项-Android13

Settings中电池选项-Android13 1、设置中界面2、电池计算2.1 充电时间计算2.1.1 BatteryUsageStats获取2.1.2 BatteryStatsImpl计算 2.2 电池剩余使用时间2.2.1 Estimate获取2.2.2 BatteryStatsImpl计算 3、电池信息来源4、命令模拟* 日志 [电池]Android 9.0 电池未充电与充电字…

C语言:字符串字面量及其保存位置

相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 虽然C语言中不存在字符串类型,但依然可以通过数组或指针的方式保存字符串,但字符串字面量却没有想象的这么简单,本文就将对此进行讨论…

Java进阶(第六期): Arrays类(数组工具)、冒泡排序、选择排序、二分查找、【正则表达式】、Java正则爬取信息

文章目录 一、Arrays1.1代码示例: 二、冒泡排序2.1 代码示例 三、选择排序3.1 代码示例 四、二分查找4.1 代码示例 (这里采用乱序数组) 五、正则表达式5.1 正则表达式的基本使用5.2 正则表达式爬取信息练习 Java进阶(第六期&#…

hash长度扩展攻击

作为一个信息安全的人,打各个学校的CTF比赛是比较重要的! 最近一个朋友发了道题目过来,发现有道题目比较有意思,这里跟大家分享下 这串代码的大致意思是: 这段代码首先引入了一个名为"flag.php"的文件&am…

redis的那些事(二)——布隆过滤器

什么是布隆过滤器? 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。 布隆过滤器实现原理 布隆过滤器是一个bit向量或者说是一个b…

Redis基础-Redis概念及常见命令

1.nosql数据库 NoSQL数据库是一种提供了非关系型数据存储的数据库系统,与传统的关系型数据库(如SQL数据库)不同。NoSQL数据库的特点是灵活性高,能够处理结构化、半结构化或非结构化数据。它们通常用于大数据和实时Web应用。NoSQL数…

C语言之字符串数组

目录 字符串数组 读取字符串数组中字符串 注意 字符串可以用数组来表示,所以字符串的集合也可以用数组的数组(即多维数组)来表示,下面我们就来学习字符串数组。 字符串数组 类型相同的数据集合适合用数组来实现,所…

多款双向晶闸管调光电路

双向晶闸管调光控制电路原理图 交流调压是把不变的交流电压变换成有效值可调的交流电压,用一只双向晶闸管代替两只反并联晶闸管,可使电路大大简化。被广泛应用于工业加热、灯光控制、感应电动机的调速以及电解电镀的交流侧调压等场合。 用双向晶闸管组…

工具系列:TensorFlow决策森林_(3)使用dtreeviz可视化

文章目录 介绍设置安装 TF-DF 和 dtreeviz导入库 可视化分类树加载、清洗和准备数据分割训练/测试集并训练模型训练一个随机森林分类器显示决策树检查叶节点统计信息决策树如何对实例进行分类特征空间划分 可视化回归树加载、清洗和准备数据分割训练/测试集并训练模型训练一个随…

【JavaEE初阶一】线程的概念与简单创建

1. 认识线程(Thread) 1.1 关于线程 1.1.1 线程是什么 由前一节的内容可知,进程在进行频繁的创建和销毁的时候,开销比较大(主要体现在资源的申请和释放上),线程就是为了解决上述产生的问题而提…

运筹视角下,体系化学习机器学习算法原理的实践和总结

文章目录 引言目标设计目标实践文章汇总经验总结一则预告 引言 上两周总结了我在体系化学习运筹学基础知识方面的个人经验,看过那篇文章的人可能知道,今年我还花了很多时间学习机器学习中各种模型的算法原理。 在工业应用中,机器学习和运筹…

树莓派,opencv,Picamera2利用舵机云台追踪人脸(PID控制)

一、需要准备的硬件 Raspiberry Pi 4b两个SG90 180度舵机(注意舵机的角度,最好是180度且带限位的,切勿选360度舵机)二自由度舵机云台(如下图)Raspiberry CSI 摄像头 组装后的效果: 二、项目目…

Httprunner4.3.6产生大量python进程的解决方法

hrp run执行测试用例目录的时候,发现产生了大量的python进程,导致内存爆了 具体原因是因为每执行一个测试用例,就会注册一次plugin(产生一个python进程),引用测试用例也是一样,会产生一个python进程&#…

Flutter笔记:Web支持原理与实践

Flutter笔记 Web支持原理与实践 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com CSDN:https://blog.csdn.net/qq_28550263/article/details/135037756 华为开发者社区…

大数据深度解析NLP文本摘要技术:定义、应用与PyTorch实战

文章目录 大数据深度解析NLP文本摘要技术:定义、应用与PyTorch实战1. 概述1.1 什么是文本摘要?1.2 为什么需要文本摘要? 2. 发展历程2.1 早期技术2.2 统计方法的崛起2.3 深度学习的应用2.4 文本摘要的演变趋势 3. 主要任务3.1 单文档摘要3.2 …

Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(三)

钓鱼邮件 当攻击者制作了钓鱼网站、木马程序后,便会想法设法将其传给受害者,而常见的传播方式便是钓鱼网站了。安全意识较差的用户在收到钓鱼邮件后点击邮件中的钓鱼链接、下载附件中的木马程序,便可能遭受攻击! 工具简介 Swak…