在数字孪生大屏可视化项目中,将实时云渲染技术嵌入业务系统已成为提升用户体验和工作效率的关键策略之一。将云渲染嵌入业务系统,用户可以在执行业务操作时实时看到云渲染画面的响应,同时对云渲染画面的操作也能立即反馈到业务系统中。这种无缝交互增强了用户的操作体验,还为业务流程的优化提供了新的可能性。本文将详细介绍使用LarkXR 实时云渲染平台时,如何利用 WebSDK 和数据通道插件实现这一目标。

一、场景概述

假设你正在管理一个建筑可视化项目,你的业务系统允许用户设计建筑模型,并实时查看渲染效果。为了实现这一功能,你需要将实时云渲染嵌入到业务系统中,让用户在业务系统中进行操作时,云渲染画面能够实时响应;同时,用户在云渲染画面中的操作也能反馈到业务系统中,实现双向交互。

二、准备工作

在开始实现之前,你需要确保已经具备以下条件:

  • LarkXR实时云渲染平台:可自建https://www.pingxingyun.com/devCenter.html或者使用平行云实时云渲染托管平台https://www.pingxingyun.com/console/#/console。

  • 已有业务系统+云渲染WebSDK:可以利用WebSDK Demo基础上去构建源码:github.com

  • 数据通道插件:支持 Unity、Unreal Engine(UE)和 WebGL 等各类 3D/XR 引擎,并为每种技术栈提供了不同的集成方式。

三、实现步骤

(一)集成 WebSDK

1. 获取 WebSDK ID

您可以通过 LarkXR 实时云渲染平台的个人开发者入口,自助申请 SDK(见下图),也可以联系客服等工作人员获取本地测试的 SDK 。

2. 引入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>

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

你需要提供一些配置参数,例如,您是自建的LarkXR实时云渲染平台:

// 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);
});

(二)配置数据通道插件

我们支持 Unity、Unreal Engine(UE)和 WebGL 应用,并为每种技术栈提供了不同的集成方式。以下是详细的集成指南 https://showdoc.pingxingyun.com/web/#/42/1047

(三)发送消息到云渲染画面

在业务系统中,当用户执行操作时,通过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>

(四) 处理云渲染画面的消息

以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);

(五)云端应用发消息到业务端

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

参数描述

  • type: 发送数据类型 ,字符串或者二进制数据

  • data: 数据指针

  • size: 数据长度 (字符串建议包含’\0’的长度)

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

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

(六)业务端监听云端应用发来的消息

在 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); 
});
​

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

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

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

相关文章

Apache POI 介绍与使用指南

文章框架一、Apache POI 概述定义&#xff1a;Java API操作Microsoft Office格式文件核心功能&#xff1a;读写Excel&#xff08;.xls, .xlsx&#xff09;操作Word、PowerPoint等文档优势&#xff1a;开源免费、跨平台、功能全面二、环境准备Maven依赖配置&#xff1a;<!-- …

Redis--哨兵机制详解

1. 哨兵机制简介Redis Sentinel&#xff08;哨兵&#xff09;是Redis的高可用性解决方案&#xff0c;它提供了监控、通知、自动故障转移和配置提供者等功能。Sentinel系统可以监控多个Redis主服务器及其从服务器&#xff0c;并在主服务器失效时自动进行故障转移&#xff0c;确保…

无人机机体结构设计要点难点分析

一、 设计要点1.轻量化&#xff1a;核心目标&#xff1a; 最大程度减轻结构重量&#xff0c;提升有效载荷能力、续航时间、飞行速度和机动性。实现手段&#xff1a; 选用高比强度/比刚度材料&#xff08;碳纤维复合材料、航空铝合金、钛合金、工程塑料&#xff09;、拓扑优化、…

AI时代的数据库革命:电科金仓的“融合+AI“战略解析

在人工智能时代的大变局下&#xff0c;数据库要走向何方&#xff1f; 7月15日&#xff0c;中国电科旗下金仓数据库以一场名为“融合进化 智领未来”的发布会&#xff0c;提出了自己的核心主张&#xff1a;真正的未来数据库&#xff0c;是“融合”为体&#xff0c;“AI”为用。电…

与deepseek的问答:dot net与Borland VCL的关系

Borland VCL与.NET/C#关系分析borland delphi如神一般地存在&#xff01;试分析.net、c#与Borland VCL的关系。Borland Delphi及其VCL&#xff08;Visual Component Library&#xff09;框架在软件开发史上确实具有传奇地位&#xff0c;尤其在Windows桌面应用开发领域。而随着.…

SAP在未启用负库存的情况下,库存却出现了负数-补充S4 1709 BUG

SAP在未启用负库存的情况下&#xff0c;库存却出现了负数-补充S4 1709 BUG共用物料合并发料&#xff1a;单行发料数量没有超过库存数量&#xff0c;但合计发料数量超过库存数量了&#xff0c;系统还是可以过账&#xff0c;没有任何提示&#xff0c;如下图所示&#xff1a;库存数…

SpringBoot项目中常见注解

RequiredArgsConstructor 注解 类上添加该注解&#xff0c;Lombok 会自动生成一个构造函数&#xff0c;用于注入 final 或 NonNull 修饰的字段 ConfigurationProperties注解 用于将配置文件中的属性注入到某个类的字段上 sky:jwt:admin-secret-key: itcastadmin-ttl: 7200000ad…

一键修复ipynb,Jupyter Notebook损坏文件

背景最近在写一个数据分析项目时&#xff0c;不幸遇到了 断电导致电脑重启 的突发情况。当我再次打开 Jupyter Notebook 文件&#xff08;.ipynb&#xff09;时&#xff0c;发现文件已经损坏&#xff0c;Jupyter 无法正常读取它&#xff0c;甚至有时直接报错&#xff1a;Unread…

React入门学习——指北指南(第三节)

React 组件 在前面的内容中,我们了解了 React 的基础知识和入门案例。本节将深入探讨 React 中最核心的概念之一 —— 组件。组件是构建 React 应用的基础,理解组件的工作原理和使用方法,对于掌握 React 开发至关重要。 什么是组件? 在 React 中,组件是具有独立功能和 …

容器化环境下的服务器性能瓶颈与优化策略

更多云服务器知识&#xff0c;尽在hostol.com在容器化环境中&#xff0c;性能优化并不是一个简单的“加硬件”或“增加资源”就能解决的问题。随着技术的进步&#xff0c;越来越多的公司选择使用容器技术&#xff08;如Docker、Kubernetes&#xff09;来提高应用的灵活性、可移…

GaussDB 数据库架构师修炼(八) 等待事件(2)-ASP报告分析

1 ASP报告简介ASP-Active Sesion Profile &#xff08;活跃会话档案信息&#xff09;&#xff0c;ASP每秒获取活跃会话事件&#xff0c;放到内存中&#xff0c;内存中的数据达阈值&#xff0c;会落盘gs_asp表中。ASP Report根据输入的时间段与slot个数&#xff0c;从内存和磁盘…

CentOS7 安装 Redis

在 CentOS 7 上配置 Redis 服务器需要完成安装、配置和服务管理。以下是详细步骤&#xff1a;安装 Redis安装依赖&#xff1a;yum install -y gcc tcl下载并解压 Redis&#xff1a;cd /usr/local/wget https://download.redis.io/releases/redis-6.2.6.tar.gztar -zxvf redis-6…

《C++ list 完全指南:从基础到高效使用》

《C list 完全指南&#xff1a;从基础到高效使用》 文章目录《C list 完全指南&#xff1a;从基础到高效使用》一、forward_list和list比较二、list的接口介绍1.list的构造2.list iterator的使用3.list的容量操作4.list的访问操作5.list的其他操作接口三、list的迭代器失效四、…

CIU32L051 DMA+Lwrb环形队列实现串口无阻塞性数据的收发 + 数据百分百不丢失的实现

1.Lwrb的介绍&#xff08;博主功能的实现是基于RT-thread系统实现&#xff09; Lwrb是由Tilen Majerle编写的一个线程安全的环形队列&#xff0c;通常与DMA配合实现数据的无阻塞性收发&#xff0c;同时&#xff0c;配合DMA的传输过半中断&#xff0c;传输完成中断&#xff0c;以…

【C++】C++ 的入门知识2

本篇文章主要讲解 C 的入门语法知识引用、inline 关键字与 nullptr 关键字。 目录 1 引用 1&#xff09; 引用的概念与定义 &#xff08;1&#xff09; 引用的概念 &#xff08;2&#xff09; 引用的定义 2&#xff09; 引用的特性 3&#xff09; 引用的使用场…

基于Kafka实现动态监听topic功能

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之间&…

机械学习初识--什么是机械学习--机械学习有什么重要算法

一、什么是机械学习机器学习&#xff08;Machine Learning&#xff09;是人工智能&#xff08;AI&#xff09;的一个重要分支&#xff0c;它使计算机能够通过数据自动学习规律、改进性能&#xff0c;并在没有明确编程的情况下完成特定任务。其核心思想是让机器从数据中 “学习”…

普通大学生大三这一年的想法

目录 大三期间的经历与反思 公益活动&#xff1a;社会责任感的体现 比赛&#xff1a;个人成长的助推器 培训与思想提升 大学教育的本质与人才培养 构建自我的道与未来规划 大学教育的未来与个人定位 结语 大三期间的经历与反思 大三&#xff0c;大学生活的分水岭&#…

Python——入门

目录 变量 变量类型 动态类型 注释 输出输入 运算符 算术运算符 关系运算符 逻辑运算符 赋值运算符 条件语句 循环语句 函数 函数作用域 函数嵌套调用 函数默认参数 关键字参数 列表 切片 列表遍历 新增元素 查找元素 删除元素 列表拼接 元组…

华为荣耀部分机型从鸿蒙降回EMUI的一种方法

一、准备说明 1、这里介绍使用华为手机助手、海外代理软件结合固件将部分华为荣耀手机鸿蒙系统降级回EMUI系 统的一种方式&#xff1b; 2、需要降级的手机需要再出厂时内置系统为EMUI&#xff0c;出厂时为鸿蒙系统的无法进行降级操作&#xff1b; 3、降级有风险&#xff0…