UE Web Remote Control

前言

       最近在研究UE自启WEB服务和网页通信以此来通过网页与UE进行数据交互,这样最好的方式就是可以摒弃掉整个繁琐的通信连接流程如TCP UDP,但是找到的一些方法都不是很适用,尤其是WEBUI这个插件它只适合内嵌到UE本身才能完成交互,但是用WebSocket进行交互的话还需要额外创建一个服务让其网页与UE在交互的过程有一个桥梁,这就违背了我们的初衷,之前就了解到UE 有一个Remote Control它可以自启一个服务生成一个网页端来控制UE中提前预设好的一些功能,本着试试的态度看了一遍UE的WEB API发现能用但是很繁琐,想要简单一点的话还需要额外添加一个RemoteControlWebInterface插件让其进行交互,如果你只是对与官方的控制端网页想进行优化的话,那么接下来的过程很实用了,但是想自由的实际操作一些功能我还是建议自己开发一下,这也是我记录完操作过程后要进军的事情了,话不多说,接下来就是整个通信请求过程。

过程

插件准备
  • 在你创建好的UE工程中在Edit ->Plugins中找到RemoteControlAPI和RemoteControlWebInterface插件然后进行勾选启用后重启项目
  • 重启后可在Edit ->ProjectSettings->Plugins中找到Remote Control这显示的30010就是我们的WebAPI的服务端口
  • 随后我们先开启我们的WEB服务,有两种方式进行调用一种是直接在UE CMD运行窗口中一种是在蓝图中,我建议我们使用蓝图这样可以很方便的在我们工程中尽显使用了,这样我们在项目启动后开启我们的WEB服务,点键盘1的时候关闭服务和项目
    WebControl.StartServer
    WebControl.StopServer
    WebControl.EnableServerOnStartup
RemoteControl
  • 我们先在UE中创建一个Actor,然后随便的创建两个自定义事件,后面做一个不一样的打印
  • 在UEContent文件夹下我们创建一个自己的文件夹然后鼠标右键选择Miscellaneous在后面选择RemoteControlPreset对其进行创建,名称根据自己的想法添加就行。
  • 双击我们刚才创建RemoteControlPreset,点击Expose下拉在ActorFunction中找到我们刚才创建的蓝图找到那两个自定义事件,每次只能添加一个所以还需要再操作一次
  • 添加好我们的两个自定义事件后,为了方便自己能记住每个事件的具体作用我们可以进行重命名,修改完保存一下运行项目即可,接下来我们就模拟下网页的实际请求。
HTTP WEB API
  • 现在已经将我们的WEB服务启动了,接下来我建议准备一个HTTP协议测试工具如Postman可以很方便的进行测试,首先第一个api我们先看下Remote中都有哪些请求,这是一个GET请求,可以直接网页中打开,其中的Path就是api地址,Verb是我们请求类型,Description是这个api一个详细的介绍,大家根据自己的需求详细的看下里面解释的还是很清晰的。
    http://localhost:30010/remote/info
  • 在获取到所有的api的前提下,我们现在获取我们创建的RemoteControlPreset,remote/presets是获取我们工程下preset列表,有几个获取几个,获取到我们的preset后解析Json然后将我们的名称存下来,因为我们接下来要通过找到刚才添加的两个自定义事件。
    http://localhost:30010/remote/presets
  • /remote/preset/:preset是获取我们的preset下所有内容的接口,这样我们就可以获取到我们的刚才创建的preset下的两个自定义事件了。里面数据目前我们的只用到DisplayName,剩下的Path这些数据细节开发会用到
    http://localhost:30010/remote/preset/Demo
  • 现在我们对测试一这个自定义事件进行测试触发,我们需要再preset后面添加一个function,因为所有的事件和函数都继承与UFunction,只不过具体类型的二进制命令不一致,这块内容大家可以了解下迭代器和反射系统,这不细说,我们进行调用,这里的调用是PUT了而且需要再请求过程时添加请求体。
    HTTP请求链接
    http://localhost:30010/remote/preset/Demo/function/测试一
    
    请求体(Raw-->Json)
    {
        "Parameters": {
            "InText": "Hello, World"
        },
        "GenerateTransaction": true
    }
  • 这样呢就完成我们的对其Remote WEB API简单的使用,也可以根据自己的需求设计合适的前端UI了,对于修改和添加的一些内容请大家看下官方的api介绍
  • UE 官方remote-control-apiicon-default.png?t=N7T8https://docs.unrealengine.com/5.3/en-US/remote-control-api-http-reference-for-unreal-engine/
  • UE 官方HTTP APIicon-default.png?t=N7T8https://docs.unrealengine.com/5.3/en-US/remote-control-preset-api-http-reference-for-unreal-engine/

结束语

      这种使用方法 对于一些介绍类型项目还是比较实用的,可以通过Pad或者手机就可以直接控制,但是对于一些定制化内容,我建议还是研究下底层内容自己深入开发一下UE web服务因为Remote是官方提供的一个使用模版,肯定还是有一些限制的自由度不够,希望上面的内容对大家有所帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mybatis关于namespace以及id以及Mapper接口命名的说明(了解)

1、建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );INSERT INTO t_emp(emp_name,emp_salary) VALUES("tom",200.33); INSERT INTO…

Pytorch从零开始实战11

Pytorch从零开始实战——ResNet-50V2算法实战 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——ResNet-50V2算法实战环境准备数据集模型选择开始训练可视化总结 环境准备 本文基于Jupyter notebook,使用Python3.8,Pyt…

CentOS 8 安装国内、本地YUM源

环境:windows 11、 VMware 17、Cent OS 8 目的:加快软件下载速度 1、国内YUM源安装 使用国外的源,速度卡到不显示 备份默认YUM源文件 [rootlocalhost ~]# cd /etc/yum.repos.d/ [rootlocalhost yum.repos.d]# mkdir yum.bak [rootlocalho…

Drawer抽屉(antd-design组件库)简单用法

1.Drawer抽屉 屏幕边缘滑出的浮层面板。 2.何时使用 抽屉从父窗体边缘滑入,覆盖住部分父窗体内容。用户在抽屉内操作时不必离开当前任务,操作完成后,可以平滑地回到原任务。 需要一个附加的面板来控制父窗体内容,这个面板在需要时…

3D场景建模工具

在线工具推荐: 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 1. 什么是3D场景建模? 3D场景建模是一种通过计算机图形学技术,将现实世…

<Linux>冯诺依曼体系结构||操作系统||系统调用于用户操作接口

前言:本文从软硬件角度计算机解释软硬件结构 硬件—冯诺依曼体系结构 软件—操作系统 文章目录 冯诺依曼计算机体系结构背景理解举例 操作系统(OS)OS的管理为什么要有操作系统? 系统调用与用户操作接口系统调用用户操作接口引入:printf&&scanf的重新理解库函数 计算机…

Could NOT find resource [logback-test.xml]

修改 之后就可以正常启动了

Node.js案例 - 记账本

目录 项目效果 项目的搭建 ​编辑 响应静态网页 ​编辑 ​编辑 结合MongoDB数据库 结合API接口 进行会话控制 项目效果 该案例实现账单的添加删除查看,用户的登录注册。功能比较简单,但是案例主要是使用前段时间学习的知识进行实现的&#xff0c…

详解原生Spring当中的额外功能开发MethodBeforeAdvice与MethodInterceptor接口!

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…

软件测试测试文档的编写和阅读

在软件测试中的流程中,测试文档也是一个重要的流程,所以测试人员也需要学习测试文档的编写和阅读。 一、定义: 测试文档(Testing Documentation)记录和描述了整个测试流程,它是整个测试活动中非常重要的文…

layui提示框没有渲染bug解决

bug&#xff1a;使用layui时或许是依赖导入又或是ideal和浏览器缓存问题导致前面明明正常的页面显示&#xff0c;后面出现提示框没有css样式&#xff0c;弹出框没有背景css 效果如下 解决后 解决方法 在你的代码中引入layer.js 我这是jsp页面 <script type"text/jav…

idea方法注释模版设置

方法上面的注释模版&#xff1a; Template text: ** Description $desc$ $param$ $return$* Aauthor yimeng* date $DATE$ $TIME$ **/param&#xff1a; groovyScript("def result ;def params \"${_1}\".replaceAll([\\\\[|\\\\]|\\\\s], ).split(,).toLis…

机器学习笔记 - 3D数据的常见表示方式

一、简述 从单一角度而自动合成3D数据是人类视觉和大脑的基本功能,这对计算机视觉算法来说是比较难的。但随着LiDAR、RGB-D 相机(RealSense、Kinect)和3D扫描仪等3D传感器的普及和价格的降低,3D 采集技术的最新进展取得了巨大飞跃。与广泛使用的 2D 数据不同,3D 数据具有丰…

Opencv 极坐标变换

变换后图片 代码 // 以Center为极坐标原点&#xff0c;将RowFrom到RowTo的圆环&#xff0c;仅仅变换该范围内的点&#xff0c;忽略掉其他部分。 #include "polar_transeforme.hpp" #include <string>using namespace cv;void calculate_map(int rouFrom, int …

Matlab 在一个文件中调用另一个文件中的函数

文章目录 Part.I IntroductionPart.II 方法Chap.I A 文件中只有一个函数Chap.II A 文件中有多个函数 Part.I Introduction 本文介绍一下在脚本文件 B 中调用文件 A 中的函数的方法。 Part.II 方法 目的&#xff1a;在文件B.m调用A.m中的函数 默认两个文件在一个文件夹下&…

JSch线上出现com.jcraft.jsch.JSchException: channel is not opened.问题分析

JSch线上出现com.jcraft.jsch.JSchException: channel is not opened.问题分析 文章目录 JSch线上出现com.jcraft.jsch.JSchException: channel is not opened.问题分析1. 背景1.系统使用jsch这个框架做文件发送以及远程命令执行的操作,系统一直运行正常,直到某一个环境发现 2.…

陪诊系统:基于自然语言处理的患者沟通创新

医疗领域的数字化转型正日益引入创新技术&#xff0c;其中基于自然语言处理&#xff08;NLP&#xff09;的陪诊系统成为提升患者沟通的一项关键技术。本文将深入研究这一领域&#xff0c;介绍陪诊系统如何借助NLP实现患者沟通的创新&#xff0c;并提供一个简单的Python代码示例…

Excel导入组件的封装以及使用页面点击弹出该弹框

封装的组件 <template><el-dialogwidth"500px"title"员工导入":visible"showExcelDialog"close"$emit(update:showExcelDialog, false)"><el-row type"flex" justify"center"><div class&q…

如何跑通跨窗口渲染:multipleWindow3dScene

New 这是一个跨窗口渲染的示例&#xff0c;用 Three.js 和 localStorage 在同一源&#xff08;同产品窗口&#xff09;上跨窗口设置 3D 场景。而这也是本周推特和前端圈的一个热点&#xff0c;有不少人在争相模仿它的实现&#xff0c;如果你对跨窗口的渲染有兴趣&#xff0c;可…

Rust之构建命令行程序(一):接受命令行参数

开发环境 Windows 10Rust 1.73.0 VS Code 1.84.2 项目工程 这次创建了新的工程minigrep. IO工程&#xff1a;构建命令行程序 这一章回顾了到目前为止你所学的许多技能&#xff0c;并探索了一些更标准的库特性。我们将构建一个与文件和命令行输入/输出交互的命令行工具&#…