IK Rig重定向

前言 在本指南中你将了解IKRig和IKRetargeter的使用方法;将使用了不同的骨架网格体的动画序列进行重定向,使动画序列具有通用性。使用了Epic商城中的AnimStarterPack和UnrealLearningKitGames;使用引擎版本:Unreal Engine5.1;目的:将AnimStarterPack中的动画序列重定向到UnrealLearningKitGames项目中的卡通人物。 IK Rig创建 在Content文件夹中单机右键找到:Animation->IK Rig即可创建这两个资产。注意创建IK Rig时需要选择一个Skeletal Mesh。 需要创建两个IK Rig,分别选择Skeletal Mesh:SK_Mannequin And SK_EpicCharacter,分别命名为:Mannequin_IKRig And LearningKitCharacter_IKRig。如下图所示。 IK Rig重定向根骨骼 需要分别对两个IK Rig进行重定向根骨骼 重定向根骨骼:一般选择胯部的骨骼,例如pelvis, Hip。选中骨骼单机右键,选择SetRetargetRoot。如下图所示。 IK Rig重定向链 什么是链 起始骨骼指向性单一,中间不要有分支,如下图所示:左侧为指向性单一的骨骼,可以形成一条链,右侧将会形成两条链。 创建骨骼链。 选中指定骨骼,单机右键选择“New Retarget Chain from Selected Bones”,重命名后选择“No Goal”。 需要注意的是在为大腿创建骨骼时有一个旋转骨骼“calf_twist_01_I"不要包含进去,如下图所示。如果你想重定向这个骨骼的话需要单独创建一个链。 最后创建完成后的骨骼链列表,如下图所示。 IKRetargeter创建 在Content空白处单机右键找到:Animation->IK Rig。创建一个Retargeter,需要选择一个IKRig,因为我们需要将AnimStarterPack中的动画序列重定向给UnrealLearningKitGames中的Sk_EpicCharacter。所以这里选择EpicCharacter_IKRig。命名为:Mannequin_Retargeter.如下图所示。 选择目标:LearningKitCharacter_IKRig。 IKRetarget面板 1:管理目标和源的姿势,点击”Edit Mode“可以编辑保存创建姿势,最常用的是T-Pos和A-Pos。如果目标和源的姿势不一样,需要调整其中一个骨骼的姿态尽量和另外一个相似,相似度越高重定向出来的动画越准确。 2:源和目标的骨骼列表。 3:预览视图。 4:细节面板,在这里可以调整Mesh的偏移值,初始两个Mesh有可能重叠。通过调整偏移值使两个Mesh分开。 5:骨骼链列表和动画序列列表。通过骨骼链列表可以查看骨骼链的映射情况,也可手动更改。通过点击动画序列可以预览重定向后的动画。 调整两个Skeletal mesh的姿态,使其最大程度重叠,是重定向动画成功的关键。进入编辑模式后通过调整指定骨骼的旋转等值,如下图所示。 调整到你认为满意的时候,选中需要重定向的动画序列,点击”Export Selected Animations"导出动画序列。

二月 11, 2025 · Imrcao

Gameplay游戏框架

本节内容 这一节主要讲述在多人游戏中,Gemaplay框架相关各个类是如何处理每个游戏会话中的各种事务的。 GameMode 在多人网络游戏中,GameMode只存在于服务器中。 GameMode可以用来设置游戏中的各个默认类,比如GameState、Default Pawn、HUD、PlayerController等等。除了设置默认类外还有其它丰富的功能,负责游戏规则,比如确定玩家淘汰后会发生什么,以及处理玩家的重生;游戏模式中还可以运行计时器,以便管理比赛的时间。 GameState 在多人网络游戏中,GameState存在于服务器和所有客户端中。由于GameMode只存在于服务器中,那么GameMode中的数据如何传输到客户端呢,GameState可以处理这件事情,它可以将服务器中的数据复制到客户端。GameState更多用于存储游戏状态,比如存储游戏中所有玩家的得分、各个队伍的排名等。 PlayerState 和GameState类似,它也只存在于服务器和所有客户端中。PlayerState只负责处理单个玩家的状态,比如当前玩家的得分、击败数量、身上携带的弹药、属于哪支队伍等。 PlayerController PlayerController存在于服务器和当前本地客户端中。它负责拥有并控制一个Pawn,也可以访问HUD,因此一旦我们有了健康条、得分、击败次数和弹药数量等信息,我们就可以通过PlayerController访问HUD来更新这些信息。 Pawn Pawn其实也就是玩家角色,它存在于服务器和所有客户端中。 HUD 只存在于本地客户端中,HUD负责各种屏幕信息显示,生命条、击败次数、弹药数量等。 总结 在编写游戏时,我们要时刻考虑哪些逻辑应该写在哪个地方,充分利用引擎游戏框架内置好的功能函数才能使编程事半功倍。

六月 3, 2024 · Imrcao

TAVP虚拟摄影棚数字资产库终端系统用户手册.

前言 前言:《用户手册》将向用户介绍TAVP虚拟摄影棚数字资产库终端系统(以下简称TAVP客户端)操作方法和TAVP虚拟摄影棚控制系统(以下简称TAVP控制系统)的使用方法。以帮助用户迅速正确的使用该系统。此用户手册将分为两部分:TAVP客户端使用手册和TAVP控制系统使用手册。 功能概述 TAVP虚拟摄影棚数字资产终端系统是时光坐标自主研发的一套能够快速预览、并下载使用数字资产系统,提供了更丰富、更真实、更易用的数字资产集,搭配IPAD控制工具可以实时对数字场景的光影变化进行调整,极大增强了对LED舞台操作的支持,在虚拟拍摄快节奏、高压力环境中,这套系统将极大提高拍摄效率。 TAVP客户端使用手册 在给用户使用此终端系统之前,技术人员需要将系统正确部署在摄影棚的计算机集群中,并调试运行成功。 1、启动软件 双击“TAVPClient.exe”程序,进入软件的登录界面,如图1所示。输入正确的账号密码后,点击登录按钮。如果用户输入的账号密码错误或者是电脑没有宽带网络都会导致登录失败,且提示“账号或密码错误”。 图 1 2、主界面介绍 登录成功后就会进入主界面,首先显示的(1)部分是资产列表页,显示所有已经上传的资产,每个资产包含缩略图、名称、类别。,(2)部分是菜单,可以切换“资产列表”页和“我的资产”页。(3)部分表示搜索栏,支持模糊搜索。(4)部分表示资产类型筛选。(5)部分表示连接状态,绿色表示连接正常,红色表示连接失败。如图2所示。 图 2 3、资产详情页 点击任意一个资产就会进入资产详情页,包含资产的预览缩略图、简介,出品方等信息,点击获取按钮即可将此资产添加到“我的资产”页中。如图3-2所示。 图 3 4、我的资产页 我的资产页中显示所有已经获取的资产,每个资产有若干个状态,比如下载、下载中、解压中、打开、关闭。如图4所示。此系统支持将资产添加到下载队列以及断电续传,下载过程中会显示进度,下载完毕后资产下方状态图标会变为打开状态。在一起准备就绪后,就可以点击打开任意一个场景了。根据场景的大小以及摄影棚配置的不同,打开场景的时间不同,点击打开按钮后,LED大屏会处于黑屏状态,此时要等待一段时间。 图 4 TAVP终端系统使用常见问题排查方法 1、登录失败:点击登录按钮提示“账号或者密码错误” ** 排查方法:** (1)、再三确认输入的账号密码是否正确(注意大小写); (2)、检查PC主机是否接入了宽带网络; (3)、检查配置文件“TavpConfigInfo.ini”中的“tavp.ServerAddress”字段是否被修改过,默认服务器地址为:“http://123.60.70.27:80/”,配置文件通常在软件的根目录。(这一项通常由技术人员排查) 2、登录成功后右上角显示“连接失败” ** 排查方法:** (1)、检查各个渲染机器是否开始了TAVPListener服务器。 (2)、配置文件“TavpConfigInfo.ini”中的tavp.PrescribdRoute字段值是一个资产存储路径,检查此路径下是否有名为“TAVPNdisConfig”的文件。(这一项通常由技术人员排查) (3)检查“TAVPNdisConfig”的文件中的IP信息是否和摄影棚渲染机设备的IP是否一致。(这一项通常由技术人员排查) 3、点击打开按钮后LED屏幕长时间黑屏 ** 排查方法:** (1)、大场景一般都开的时间都比较长,请耐心等待。(例如四季森林在横店的打开时间为90秒) 3、点击打开按钮后LED屏幕没有反应 ** 排查方法:** (1)、请查看TAVPListener服务器上的log信息。(这一项通常由技术人员排查) 4、下载过程中网络中断或者是意外断电:再次打开软件可继续之前的进度下载。 5、LED远程控制系统无法控制调整TAVP终端系统打开的场景 ** 排查方法:** (1)、请检查运行LED远程控制程序的IPAD连接的无线网络是否和渲染主机处于同一个局域网内。通俗讲就是是否连接的是同一个wifi。 5、使用TAVP终端系统打开场景后,使用动捕的Tracker不能驱动内视锥 ** 排查方法:** (1)、请检查运行动捕(例如:青瞳)的机器有没有打开动捕的服务器和客户端 (2)、如果动捕的客户端已经打开,请检查动捕客户端软件中是否能够识别的处于摄影棚中的刚体Tracker。 TAVP控制系统使用手册 功能概述 TAVP控制系统主要是为了实现远程控制虚拟场景中的一些环境以及LED中的其它参数。例如环境颜色和灯光氛围。 客户端 1、进入软件输入运行UE4实例的主机IP地址,点击连接进入控制页面,如图1-1所示。 图 5 2、默认进入颜色校正界面,控制的是场景中的后处理相关参数,可依次控制整个场景中的全局部分、阴影部分、中间调部分、高光部分。其中每个页面包括饱和度、对比度、伽马、增益、偏移和曝光等,如图5所示。此外还可以控制整个场景的曝光,如图6所示,可控参数有曝光基数、最大亮度和最小亮度以及自适应的的速度值。 图 6 图 7 3、下一页面是灯光控制页面,主要控制UE4场景中的环境部分,其中包括天光、太阳光、大气雾等。天光部分可以控制的包括:HDR、强度、旋转和颜色;太阳光可以控制的包括:强度、色温、旋转;大气雾可以控制的包括:大气雾浓度、半衰减值、透明度和颜色;如图8、9、10所示。 图 8 图 9 图 10...

十二月 3, 2023 · Imrcao

如何剥离UE4独立程序

引言: 什么是引擎独立应用程序?让我们首先看一下虚幻引擎的Launcher运行器。不知道大家是否曾经好奇, 虚幻引擎的Launcher运行行器是用什么写的呢?如果你曾经仔细观察过虚幻引擎的运行器的文件结构,你会惊讶地发现,这个文件结构非常类似于虚幻引擎本身的文件结构,而非虚幻引擎编译打包形成的游戏的文件结构。这意味着,虚幻引擎的运行器是一个微型虚幻引擎,而不是一个打包形成的游戏! 如何开发这样的东西呢?如果我们希望在-个小型的、不是游戏的应用程序中继续使用虚幻引擎的一部分API,那么我们就需要学习虚幻引擎运行器这样的技术。—此段引言自:《大象无形 虚幻引擎程序设计浅析》(如何开发一个简易版的独立程序后面再写,也可以参考这本书的第十四章) 如何剥离独立程序: 《大象无形》这本书中讲解了一种方法:一个最简单的方式就是去\Engine\Binaries\Win 64文件夹下找到Blank Program .exe,拷贝到你的Epic运行器文件夹对应目录。没错, 就是虚幻引擎那个登录账号的运行器的目录。在笔者电脑上, 它位于Epic Games\Launcher\Engine\Binaries\Win 64。双击一下,你依然会发现程序能正常工作,验证了笔者的说法:你的程序不需要依赖一个引擎也能运行。 但这种方法到目前为止貌似行不通了,我目前使用的版本是UE4-425源码版本,按照书本上的方法,点击应用程序发现会闪退。 另外一种比较笨的方法:直接拷贝文件。去\Engine\Binaries\Win 64文件夹下找到你的EXE程序,将它按照源目录拷贝出去。例如:我这里创建的独立程序是一个服务器,起名为“DbServer”,则可以创建一个名为“DbServer”的文件夹(其实名称随意),但需要在这个文件夹下按照一定的文件夹结构进行创建,结构示意如图1-1所示:相关文件都要去引擎源码对应目录下去找。这样独立应用程序就可以运行了。

十一月 3, 2023 · Imrcao

使用UE4_DS服务器实现房间功能

引言: 如何为你的游戏加入房间系统,可以进行加入、创建、搜索、销毁等功能?这段时间一直在查找相关的资料并不断进行各种测试,最终选择了配合UE4原生的DS服务器做房间系统。提到房间功能首先想到的是UE4的“Session”节点,使用“Create Session”等节点可以快速在局域网内搭建自己的房间系统,但是如果需要接入网络的话就比较麻烦,无论是选择“Online Subsystem Steam”还是选择“epic onLine Server”都是比较有难度的,当然后者应该是最优选择,它们内部都集成了房间、匹配、语音等比较完善的功能。我这边选择DS服务器采用“创建进程”方式来做房间系统,原因就是比较简单,对于新手来说是比较容易理解和入门的。下面主要记录一下开发房间系统的一些过程。 DS服务器 DS服务器是UE4的专属服务器,服务器代码和游戏逻辑代码是写到一块的,关于如何打包DS服务器可以参考UE官方文档“(设置专属服务器)。 https://docs.unrealengine.com/4.27/zh-CN/InteractiveExperiences/Networking/HowTo/DedicatedServers/ 每启动一次DS服务器就相当于开启一个新的进程,也可以理解为创建了一个房间,那么我们可以通过启动多个DS服务器来做房间系统,客户端可以通过IP和端口号来加入DS服务器,也就是房间,端口号是自动分配的,我们需要手动指定,并不能和其它进程的端口重复即可。那么思路就明确了,在点击创建房间按钮的时候,需要启动一个DS服务器程序,并在代码中指定好端口,点击加入房间的时候,使用IP和端口号进入房间。退出房间就销毁进程。 启动本地可执行程序 那么我们如何通过代码来启动外部程序呢?这里提供两种方式,第一种就是使用C标准库<stdlib.h>中的system()函数执行命令,和在CMD命令行中执行命令相似,执行结果如图1-1所示。参考链接如下。 https://www.runoob.com/cprogramming/c-function-system.html 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> #include <string.h> #include<stdlib.h> int main () { char command[50]; strcpy( command, "ls -l" ); system(command); return(0); } 还有一种方式是使用UE4原生模块“runtime”中的一个函数“FPlatformProcess::CreateProc()”,使用方法如下代码所示, #include"../Runtime/Core/Public/GenericPlatform/GenericPlatformProcess.h" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 void AMyProject2Character::TestOpenExe(FString URL, FString Params) { Handle_ = FPlatformProcess::CreateProc(*URL, *Params, true, false, false, nullptr, 0, nullptr, nullptr); //Handle_ = &currHandle; //FPlatformProcess:: UE_LOG(LogTemp, Warning, TEXT("URL:::%s"), *URL); } void AMyProject2Character::TestCloseExe() { //FProcHandle currHandle = FPlatformProcess::CreateProc(*URL, nullptr, true, false, false, nullptr, 0, nullptr, nullptr); if (Handle_....

十一月 3, 2023 · Imrcao

关于UE4动态加载LoadClass使用日志

UCPT_HomePage继承自UUserWidget,在某个函数下使用LoadClass加载Content下的蓝图资产: 1 2 3 4 void UCPT_HomePage::ConstructRecentProjectPanel(TArray<FString> TRecentProjectInfo) { TSubclassOf<UCPT_UnitProjectButton> UnitProjectButton = LoadClass<UCPT_UnitProjectButton>(nullptr, TEXT("/Game/Blueprints/UI/UnitUI/WPT_UnitProjectButton.WPT_UnitProjectButton_C")); } BUG:这样写在编辑器状态下没问题,可以正常加载资产,UnitProjectButton有效。但是打包后,UnitProjectButton是空的,也就是说无法加载指定路径的资产。(已验证:蓝图路径没问题,确实存在) 原因:搜索发现,导致此BUG的原因是,由于WPT_UnitProjectButton资产没有被外界引用,比如蓝图没有被显式引用(如直接拖入关卡或被资源表单引用),可能会被 Unreal 的打包流程优化掉。 解决方案:确保资源被打包了。 方案1:显式引用资源:在任意代码模块的构造函数中引用蓝图路径来确保加载。例如,添加一个加载步骤来触发依赖打包: 1 2 3 4 5 6 7 8 9 UCPT_HomePage::UCPT_HomePage(const FObjectInitializer& ObjectInitializer) :Super(ObjectInitializer) { ConstructorHelpers::FClassFinder<UUserWidget> WPT_UnitProjectButton(TEXT("/Game/Blueprints/UI/UnitUI/WPT_UnitProjectButton.WPT_UnitProjectButton_C")); if (WPT_UnitProjectButton.Succeeded()) { UnitProjectButton = WPT_UnitProjectButton.Class; } } 方案2:使用 Cooking 设置加载资源 打开 Project Settings -> Packaging -> Advanced Settings。 在 Additional Asset Directories to Cook 添加你的 UnitUI 目录 (/Game/Blueprints/UI/UnitUI)。

二月 3, 2023 · Imrcao

云服务器中VC++和Wamp的环境配置

引言: 最近我的腾讯云服务器快到期了,正好看到腾讯云正在搞活动,新用户有很大优惠,就注册了一个新的账户,花了将近二百买了一个三年期限的轻量级服务器(2核4G),打了0.4折,还是非常值的。这样就需要把在老服务器上面部署的分布式和网站数据迁移到新的服务器上。简单找了一下好像不能跨账户进行镜像共享,所以只好从头开始配置服务器环境了,这里也正好记录一下。 可以了解到什么: 配置VC++运行环境 安装设置Wamp集成环境 服务器的防火墙设置 配置Mysql环境,使本地可以Ping通并访问Mysql数据库 安装“Navicat Premium”并建立连接 配置VC++运行环境 一个新的系统在初次打开EXE可执行程序时有可能会报错丢失各种“Dll”库,解决方法有很多,可以去网上下载对应的DLL并将其放到合适的位置,一般Win系统可以放在“C:\Windows\System32”下,这个需要根据自己系统的位数来定;也可以去下载继承环境的包,直接点击运行即可,我这里提供一个window服务器依赖环境的程序包(程序包见文章末尾的链接),点击运行进行相关操作即可,具体步骤如图1-1所示,先点击检测并修复,若此时运行EXE还是报错,就点击工具-选项-扩展-开始扩展,它会扩展基本的C++数据包。如果运行的是UE4打包出来的程序,当系统中缺少相关环境时,UE4的打包程序会自动启动一个安装VC++2015的程序。如果这些方法都不行,就装一个VS,勾选上C++相关选项即可。 图1-1 安装部署Wamp集成环境: 介绍 Wamp是Windows下的Apache+Mysql/MariaDB+Perl/PHP/Python,一组常用来搭建动态网站或者服务器的开源软件。软件网上即可下载,文章末尾的链接中也有软件安装包 安装 官网下载安装包,安装Wamp,安装过程中如果有提示窗口直接点“否”即可。 启动 管理员运行Wamp,软件会启动三个服务程序,全部启动成功后右下角图标会变成绿色,一般新的系统配置完成后,会直接变成绿色。 wamp图标变为橙色 如果是红色或者是橙色则是只启动了一个或两个服务,如果你的系统中之前装有Mysql服务的话,可以去任务管理器中的“详细信息”中找到相关程序(例如:“mysqld.exe”)选中后将其结束任务,然后再重启Wamp即可。 还有可能是因为80端口被占用导致的,比如这台服务器之前部署过本地的Web服务,都会导致80端口被占用,最直接的解决方案是找到Windows的IIS管理器,关闭所有服务,或者更改服务的端口,具体步骤如下: (1)、快捷键win+R 输入compmgmt.msc(打开计算机管理),找到IIS,点击进入界面,如图所示: (2)、选择网站,单击右键,可以停止服务,也可以选择“编辑绑定”,修改成其它端口,如下图所示: 设置wamp服务自启动 如果是云服务器可以不用设置自启动,因为服务器可以一直开着。如果是在本地部署的Wamp,想自启动的话可以按照以下步骤设置。 尝试过在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp中放入wamp程序的快捷方式,测试发现程序并没有自启动,取消管理员运行也未能成功。尝试了多种方法,发现下面这个方案可行。 Win+R输入services.msc,会弹出服务面板,找到“wampapache64",“wampmariadb64”,wampmysqld64",单击右键,选择属性,在启动类型一栏中选择”自动“。设置好后重新启动计算机,你会发现右下角并没有wamp的图标,但是当你再次打开服务面板时你会发现这三个服务已经开启了,你可以测试访问一下本地的web服务。 服务器的防火墙设置 1、在你的服务器上找到防火墙,我这里用的是腾讯云的服务器,点击添加规则,添加3306端口,一般服务器中会有MySQL的预设直接选择就行(如图1-2所示),这样在MySQL配置正确的情况下,其他客户端就可以链接MySQL服务器了。 2、如果你需要其他的规则,可以添加自定义的。我这里就添加了UDP协议类型,端口是自定义的,但不能重复,我这里是为了测试一个游戏的服务器使用的临时端口。 图1-2 配置Mysql 1、更改密码 初次部署好的WampServer,Mysql是没有密码的,首先进入命令台修改一下密码,默认用户名都是root。点击MySQL找到MySQLconsole,进入命令行,如图1-3所示。 进入命令行后,它会提示输入密码,初始是没有密码的,直接点击空格即可(确保之前没有改过密码),更改密码的MySQL语句为: update mysql.user set authentication_string=password(’’) where user=’'; 需要注意的是不要使用下面这条语句,因为5.7版本的MySQL已经没有password这个字段了,改为了authentication_string update user set password=PASSWORD(‘要修改的密码’) where user=‘root’; 完整的语句如下: mysql -u root -p Enter password: ******** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 Server version: 5....

一月 3, 2023 · Imrcao

在UE4中使用WebSocket

前言 这一节会介绍WebSocket协议,和在UE4中如何使用WebSocket进行通讯。引擎中内置了现成的WebSockets模块和第三方库“libWebSockets”,接下来会调用现有模块来创建两个插件,分别负责创建WebSocket服务器和WebSocket客户端。 为什么是WebSocket 介绍 WebSocket是一种全双工、双向通信协议,设计用于在单个TCP连接上进行实时通信。 WebSocket特点 1、双向通信:客户端和服务器可以在任何时间相互发送消息,而不需要轮询或长轮询。 2、低延迟:因为它建立在TCP连接之上,并且避免了HTTP请求和响应的开销,WebSocket通信具有较低的延迟。 3、持久连接:WebSocket连接一旦建立,可以持续使用,直到客户端或服务器主动关闭连接。 工作原理 1、握手阶段:WebSocket通信开始时,客户端发起一个标准的HTTP请求,包含一些特殊的头信息,表明它希望升级到WebSocket协议。 2、协议升级:如果服务器支持WebSocket协议,它会通过HTTP响应确认升级请求。完成握手后,HTTP连接升级为WebSocket连接。 3、数据传输:握手完成后,客户端和服务器之间可以通过WebSocket协议进行全双工通信,可以传输文本和二进制等格式消息。 使用场景 WebSocket协议适用于需要实时更新和低延迟的应用,如: 1、即时通讯:如聊天应用和消息系统。 2、实时通知:如股票价格更新、体育比分等。 3、在线游戏:需要快速、频繁的状态更新。 4、协同编辑:如多人同时编辑文档、表格等。 和HTTP区别 1、HTTP有一个缺陷就是通讯只能由客户端发起,它们只能单向请求,如果客户端需要监测服务器中会连续变化的某一参数,我们只能使用“轮询”,即没隔一段时间就发送一个查询请求,这种轮询效率比较低,且浪费资源。 2、WebSocket连接一旦建立,客户端和服务器都可以主动发送消息给彼此,即它是一种双向通讯。 总结 WebSocket协议提供了一种高效、低延迟的双向通信方式,适用于需要实时数据传输的应用场景。通过WebSocket,客户端和服务器可以在单个持久TCP连接上自由地交换数据,而不必受到传统HTTP请求/响应模式的限制。 客户端实现 Unreal Engine中的“Runtime/Online/下有一个”WebSocket“模块,模块中的IWebSocket接口提供了客户端常用的功能,连接、关闭、发送消息等。 1、创建插件后在.Build.cs中加入”WebSockets“模块 1 2 3 4 5 6 7 8 PublicDependencyModuleNames.AddRange( new string[] { "Core", "WebSockets",. } ); 2、我这里创建一个继承自UObject的类:UWSClients。WSClients.h实现如下: /********************************************************* * @copyright @author Imrcao @date 2024年06月27日16:25:00 @brief 创建一个WebSocket客户端,支持Win64,Win32,IOS,MacOS,Linux平台 @See **********************************************************/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 #pragma once #include "CoreMinimal....

十二月 3, 2022 · Imrcao

UTexture2D转二进制数据

想要在网络中传输媒体资源,就需要将媒体资源转为二进制数据。这里以简单的图片为例,将UE4中的UTexture2D资产转为TArray类型。这篇笔记不详细讲原理,只放代码。 **读取图片的颜色信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 bool UTextureToolsBPLibrary::TextureToColorData(TArray<FColor>& colorDataPtr, int& outW, int& outh, UTexture2D* Texture) { colorDataPtr....

十一月 3, 2022 · Imrcao

跨账户迁移个人网站数据

引言:最近要换服务器,需要将部署在旧服务器上的数据迁移到新的服务器上。咨询了腾讯云的客服,由于我是跨账户迁移且两个账户的地域不一致,所以不能使用共享镜像的方式,那就只能手动迁移数据了。每个人使用的环境和工具不同,方法自然也不同,下面主要整理一下步骤以及记录一下在这个过程中遇到了一些问题。 步骤: 1、服务器wordpress(网站)本地数据的拷贝; 2、MySQL数据库数据迁移(巨坑); 3、MySQL数据表wp_options中部分字段数据更改; 4、进入WordPress后台; 5、网站备案迁移; 6、新服务器上的备案迁入和备案变更; 7、域名重新解析; 8、等待备案完成(1-3个工作日); 1、服务器wordpress(网站)本地数据的拷贝; 我这里使用的wampserver集成环境,环境配置建议查看文章(服务器VC++和Mysql环境置)。首先去旧服务器上在wamp的安装目录中找到“www”文件夹,压缩并拷贝到新服务器的wamp对应的目录下。如图1-1所示; 图1-1 2、MySQL数据库数据迁移(巨坑); 数据库的迁移按道理说是非常简单的,直接导出、运行sql文件就行了,但不知道是什么原因运行sql文件的时候总是报错导致数据和结构都进不来,我这里用的MySQL版本为5.7.24,使用版本“5.5.5-10.3.12-MariaDB”就可以直接运行同一个sql文件,很诡异,不想改变版本的情况下只能再想其它办法迁移数据了。 尝试了很多方法,最后长到了一种勉强可以用的方法吧,为什么说是勉强可以用呢,因为它还是不能完美的把数据和结构迁移过来。使用“导出”的方式,如图2-1所示,有很过格式供你选择,多尝试几个格式发现其中两个格式还是挺好用的分别为“.mdb”和".dbf"。 在导入的时候要注意:“源表”和“目标表”要一致,如图2-2所示。如果在新服务器中的数据库中没有这个数据表,则在“新建表”下会打对勾✔,表示会新建一个MySQL数据表。 最后你可能还会发现数据导入丢失和数据表结构不对,此时我是手动调整的,如果你有好的方法欢迎私信交流。对于数据丢失的情况可以手动复制粘贴,如图2-3所示。数据表结构不对的话可以手动进行复制和粘贴。 总之,无论用什么方法,最终目的就是将旧服务器中MySQL的数据迁移到新的服务器中。 图2-1 图2-2 图2-3 3、MySQL数据表wp_options中部分字段数据更改; 数据迁移完毕后找到数据表“wp_options”,找到字段“option_name”和“option_value”,更改“siterul”和“home”对应的值为“http://127.0.0.1”,如图3-1所示: 图3-1 4、进入WordPress后台; 更改完毕后就可以在浏览器中输入“http://127.0.0.1”进入主页,输入“http://127.0.0.1/wp-login.php”进入登录页面,输入之前WordPress的账户和密码就可以进入wordpress后台。如图4-1所示。 图4-1 5、网站备案迁移; 以上步骤就完成了数据的迁移,目前网站只能在服务器上的本地运行查看,还不能通过域名进入。因为账号换了所以备案也需要迁移,进入旧服务器中的控制台,找到备案->更多->迁移备案账号,如图5-1所示。输入相关信息即可。 图5-1 6、新服务器上的备案迁入和备案变更; 备案迁移完成后,在新服务器中就可以看到备案信息了,此时备案中的信息还是之前服务器中的公网IP,要改成现在服务器的公网IP,需要“变更备案”,如图6-1所示。这个过程输入的资料和信息还是很多的。 图6-1 7、域名重新解析; 变更备案完成后,最后需要对域名进行重新解析,如图7-1所示 图7-1 8、等待备案完成(1-3个工作日); 等待备案完成后即可通过域名访问自己的网站了。

十月 3, 2022 · Imrcao