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

目标

前一篇 学习了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.mzph.cn/news/502947.shtml

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

相关文章

keras卷积处理rgb输入_CNN卷积神经网络模型搭建

前言前段时间尝试使用深度学习来识别评测过程中的图片,以减少人力成本。目前是在深度学习框架Keras(后端使用TensorFlow)下搭建了一个CNN卷积神经网络模型,下面就如何搭建一个最简单的数字图像识别模型做下介绍。模型的建立(1) 卷积层(convolution layer…

python中try命令_Python 异常处理 Python 基础教程 try..except

异常处理在之前的学习中我们一直没有接触过。 哦对,我们甚至还不知道怎么向程序输入一段字符串。那么我们在这里提供一个小例子。 在命令行中,我们输入 s raw_input(Enter something --> )好了,我们已经知道如何输入一个字符串了&#xf…

python分词_Python 结巴分词实现关键词抽取分析

1 简介 关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来。这个可以追溯到文献检索初期,当时还不支持全文搜索的时候,关键词就可以作为搜索这篇论文的词语。因此,目前依然可以在论文中看到关键词这一项。 除了这些&#xff0…

redis 如何 mysql_Redis 如何保持和 MySQL 数据一致

一、需求起因在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。这个业务场景,主要是解决读数据从Redis缓…

iframe 跨域_【梯云纵】搞定前端跨域

韦陀掌法,难陀时间善恶;梯云纵,难纵过乱世纷扰。现在开始写代码o(╯□╰)o什么是跨域1.跨域的定义广义的跨域是指一个域下对的文档或者脚本试图去请求另外一个域下的资源。a链接、重定向、表单提交、、、等标签background:url()、font-face()ajax 跨域请求……狭义的…

java中exception_Java中的异常 Exceptions

1. 概念exception是“exceptional event”的缩写,是指执行程序中发生的事件,破坏了程序的正常执行流程。Java 异常处理机制使程序更加健壮易于调试,它可以告诉程序员三个问题:错误的类型、位置、原因,帮助程序员解决错…

python异步asy_Python 异步编程之asyncio【转载】

一、协程的认识 协程(Coroutine),也可以被称为微线程,是一种用户态内的上下文切换技术。 简而言之,其实就是通过一个线程实现代码块相互切换执行。例如:deffunc1():print(1) ...print(2)deffunc2():print(3…

bitcount java_Java源码解释之Integer.bitCount

Java中的Integer.bitCount(i)的返回值是i的二进制表示中1的个数。源码如下:public static int bitCount(int i) {// HD, Figure 5-2i i - ((i >>> 1) & 0x55555555);i (i & 0x33333333) ((i >>> 2) & 0x33333333);i (i (i >&…

git merge 冲突_卧槽!小姐姐用动画图解 Git 命令,这也太秀了吧?!

公众号关注 “GitHubDaily”设为 “星标”,每天带你逛 GitHub!大家好,我是小 G。在座的各位应该都知道,Git 作为居家必备、团队协作之利器,自从 Linus Torvalds 发布这款工具后,便一直受到各路开发者的喜爱…

android 删除文件 代码_代码审计之某系统后台存在任意删除文件

本文作者:霾团队交流群:673441920-----------------------------------------------------------前言POC镇楼!!!POST 漏洞演示过程:首先我们利用D盾监听下我们的项目以外的目录。这里刚刚我们创建了这个文件…

ubuntu java8 java9_在Ubuntu/Debian系统上安装Java 9的方法

本文介绍在Ubuntu/Debian系统上安装Oracle Java 9的方法:使用webupd8team/java PPA,相同的PPA提供了Java 8和Java 7等旧版Java的软件包,如果你的应用程序需要这个,可以随意安装它们。要安装新版本可参考在Ubuntu 18.04系统上安装J…

websocket 压力测试_打造最强移动测试平台

笔者今年换掉了服役N年的旧手机,新手机12G的RAM,比自用的本子内存都大,如果只是玩游戏感觉不能完全发挥出全部机能,但又因为怕影响日常使用没有进行root,经过一番折腾,发现即使不root也不影响把它变成一款测…

python银行系统模拟演练_python多线程实现代码(模拟银行服务操作流程)

1.模拟银行服务完成程序代码目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队、排队等待、叫号服务等功能,代替了人们站队的辛苦。排队叫号软件的具体操作流程为&…

字符串左侧补0_(48)C++面试之最长不含重复字符的子字符串(动态规划)

// 面试题48&#xff1a;最长不含重复字符的子字符串// 题目&#xff1a;请从字符串中找出一个最长的不包含重复字符的子字符串&#xff0c;计算该最长子// 字符串的长度。假设字符串中只包含从a到z的字符。#include <vector> #include <string> #include <iost…

java udp 同一个端口实现收发_Java网络编程之UDP协议

伙伴们注意了&#xff01;小编在这里给大家送上关注福利&#xff1a;搜索微信公众号“速学Java”关注即可领取小编精心准备的资料一份&#xff01;今天我们来聊聊网络编程这部分的内容网络编程1)计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0…

java 多态_Java面向对象 —— 多态

前两天已经相继介绍了Java面向对象的三大特性之中的封装、继承&#xff0c;所以今天就介绍Java面向对象的三大特性的最后一项&#xff0c;多态~首先讲一下什么是多态&#xff0c;以及多态需要注意的细节 什么是多态&#xff1a;一个对象具备多种形态&#xff0c;也可以理解为事…

vb6 方法‘ ’作用于对象 失败_JS基础入门-对象的使用

今日背诵小纸条对象是一组属性方法的组合&#xff0c;其中可包含基本值、对象和函数对象的定义1 对象字面量var hero{name: ‘产品小姐姐’&#xff0c;age: 16&#xff0c;weapon: [ ‘头盔’, ‘靴子’, ‘盔甲 ]&#xff0c;sayHi: function ( ) {console.log( this.name ’…

无法从套接字读取更多的数据 oracle_小伙面试时被追问数据库优化,面试前如何埋点反杀?

前言周五的早高峰, 各地软件园地铁站里中出现了不少穿着长袖加绒格子衫, 背双肩电脑包的年轻码农, 现在节气正值 [ 小雪 ] , 11月的全国性突然降温 , 让经历过996摧残的猿们一出地铁站就冻的打了个激灵 , 很庆幸的告诉大家距离放年假还剩不到 37 个工作日, 要买火车票的赶紧预约…

qlineedit限制输入数字_Excel单元格限制录入,实用小技巧

在填写资料表格的时候&#xff0c;为了不防止出错&#xff0c;会在单元格中设置一些技巧&#xff0c;限制对方输入内容&#xff0c;这样可以更好的预防输入错误。那么单元格限制输入技巧是如何实现的呢&#xff1f;1、限制只能录入数字比如单元格是我们要用来填写年龄数据等数字…

java二维数组 内存分配_java中二维数组内存分配

区分三种初始化方式&#xff1a;格式一&#xff1a;数据类型[][] 数组名 new 数据类型[m][n];m:表示这个二维数组有多少个一维数组。n:表示每一个一维数组的元素有多少个。//例&#xff1a;int arr[][]new int[3][2];如下图格式二&#xff1a;数据类型[][] 数组名 new 数据类…