数字孪生云渲染终极指南(四):快速部署实时云渲染平台

88 阅读4分钟

对于使用UE/Unity引擎的工程师和企业而言,将现有数字孪生项目迁移至LarkXR平台通常遵循以下简化流程:

  1. 应用准备:完成您的UE/Unity应用开发与优化。
  2. 平台上传:登录LarkXR PaaS平台,将应用包体或可执行文件上传至指定存储。
  3. 资源配置:根据应用需求,在平台上配置所需的GPU资源、网络参数与访问权限。
  4. 发布与访问:平台将自动完成应用部署并生成访问链接/二维码。用户通过点击链接,即可在浏览器或专用客户端中启动应用。

采用实时云渲染技术实现0代码迁移的推流服务

UE应用无需集成像素流插件/无需修改程序,在客户预期要部署的渲染服务器(私有化/公有云均可)上,只需安装LarkXR实时云渲染程序包,直接通过管理后台上传应用,即可实现在指定网络下的推流,在任意终端设备上即可实时访问。上传打包好的Zip程序包,同步完成后自动生成URL链接,可以通过各类终端访问交互。

实时云渲染将UE像素流嵌入业务系统,实现二三维场景交互

  1. 已有业务系统+云渲染WebSDK:可以利用WebSDK Demo基础上去构建源码:github.com
  2. 数据通道插件:支持 Unity、Unreal Engine(UE)和 WebGL 等各类 3D/XR 引擎,并为每种技术栈提供了不同的集成方式。

1. 获取并引入WebSDK

WebSDK 提供了多种 Demo 示例 源码:github.com。,其中 ui-mobile-vue-new 是一个非常推荐的选择。这个 Demo 基于 Vue 2.0 开发,不仅与标准客户端保持一致,还提供了完整的 UI 组件,并支持高度定制化。

# npm
npm i larksr_websdk
# plain html
<script src="larksr-web-sdk.min.js"></script>

2.初始化 WebSDK & 加载云渲染场景

需要提供一些配置参数:

// serverAddress LarkXR云渲染平台地址, exp:http://222.128.6.137:8181/// 您的 SDK ID 如果您是从开发者平台申请的云授权码,请在开发者平台申请 SDK 授权码,否则请联系business@paraverse.cc // appliId 请在 LarkXR 管理后台查看.var larksr= new LarkSR({ 
    // 设置挂载显示的元素// 注意*不要*设置为 document.documentElementrootElement: document.getElementById('container'),
    // 服务器地址,实际使用中填写您的服务器地址// 如:http://222.128.6.137:8181/serverAddress: "Lark 服务器前台地址",
});

// 授权码,验证成功之后才能调用 connect
larksr.initSDKAuthCode('您的 SDK ID')
.then(() => {
    // start connect;
    client.connect({
        // 要使用的云端资源的应用 ID,从LarkXR管理后台查看.// 参考查询应用一栏文档// https://showdoc.pingxingyun.com/web/#/75/1697appliId: "应用ID"
    })
    .then(() => {
        console.log('enter success');
    })
    .catch((e) => {
        console.error(e);
    }); 
})
.catch((e) => {
    console.error(e);
});

3.配置数据通道插件

支持 Unity、Unreal Engine(UE)和 WebGL 应用,每种技术栈提供了不同的集成方式: docs.pingxingyun.com/doc/730/。

4.发送消息到云渲染画面

在业务系统中,当用户执行操作时,通过WebSDK中封装好的方法发送到云渲染画面。例如:

<template><div><!-- 绑定发送消息到云端应用的操作 --><button @click="handleClick">点击我,发送一条数据到云端应用</button></div></template><script>export default {
  methods: {
  handleClick() {
     /**
 * 发送文字消息给数据通道
 * 注意 云端应用要集成数据通道功能
 * > V3.2.314 版本对应服务器版本和数据通道版本为 3.2.5.1 及以上
 * @param text 文字
 */
larksr.sendTextToDataChannel("业务系统发送消息到云端应用");  
    }
  }
};
</script>

5.处理云渲染画面的消息

以UE为例,可以监听业务系统发送过来的消息

// on_data:为接收到web或其他客户端发来的数据,禁止为NULLLARKXR_API int  DC_CALL lr_client_start(const char* taskid, on_connected cb_connected,on_data cb_data,on_disconnected cb_disconnected,void* user_data);

6.云端应用发消息到业务端

发送数据,支持字符串和二进制数据。

参数描述

  1. type: 发送数据类型 ,字符串或者二进制数据
  2. data: 数据指针
  3. size: 数据长度 (字符串建议包含’\0’的长度)

返回值: 小于0 代表发送失败参考类型定义,等于发送长度代表发送成功

LARKXR_API int DC_CALL lr_client_send(enum data_type type, const char* data, size_t size);

7.业务端监听云端应用发来的消息

在 LarkXR实时云渲染的整个生命周期中,会触发多种事件通知。

其中,数据通道连通成功事件数据通道接收到消息事件是本次实现中重点关注的事件类型。

// 数据通道是否打开 -- 重要,可以判断数据通道是否连通
larksr.on('datachannelopen', function(e) { 
    console.log("LarkSRClientEvent datachannelopen", e); 
});
// 数据通达收到文字消息
larksr.on('datachanneltext', function(e) { 
    console.log("LarkSRClientEvent datachanneltext", e); 
});
// 数据通道收到字节消息 
larksr.on('datachannelbinary', function(e) { 
    console.log("LarkSRClientEvent datachannelbinary", e); 
});

本文已发布于官网:www.pingxingyun.com/