我试图找到一些关于如何使用Unreal 4 ProceduralMeshComponents通过代码实现功能的示例或文档.网站上这些类的文档非常稀疏,只提供了它们如何运作的最详细信息:
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Components/ProceduralMesh/index.html
我知道,我知道,他们已经接触过蓝图编辑器,所以我知道我可以在引擎本身使用它们.但是,我想了解流程的确切细节,这意味着我需要通过代码在项目中实现这一点.
此外,我觉得仅通过Blueprint节点使用这些组件限制了使用此强大功能可以完成的工作的范围.
我还搜索了任何示例(在网上或论坛上),但找不到任何不涉及以某种方式使用蓝图的内容.另一个问题是这个功能是最近才引入的,在此之前,Rama(一个出色的虚幻用户)提出了一个允许程序网格生成的类似API.但是现在它已被弃用,并且有许多示例引用该版本.
不要误解我的意思,我不是在这里讨论蓝图.我喜欢这个工具并认为它们是Unreal 4中最好的部分之一.但是出于我的目的,我要求从头到尾完全暴露我的过程.
我将非常感谢您可以共享任何实现Unreal Procedural Mesh类的资源或示例,完全通过代码实现某些效果.
我正在基于虚幻的开源无人机仿真(Microsoft AirSim)上进行工作,在该仿真中,我试图从连接到无人机的摄像机捕获并保存图像。下面的图像提供了游戏外观的概念。底部最右边的视图是摄像机的实际视图,其他两个视图只是同一图像的处理版本。
现在,它的设置方式是这样的:有一个相机资产,通过代码作为捕获组件读取。屏幕快照中的三个视图链接到此捕获组件。无人机在游戏中飞来飞去时,视图流没有任何问题。但是,当涉及到记录屏幕截图时,当前代码从该捕获组件设置一个TextureRenderTargetResource,然后调用ReadPixels并将该数据保存为图像(请参见下面的代码流)。照原样使用ReadPixels()会直接阻止游戏线程,并使整个游戏速度大大降低:当我开始记录时,它从〜120 FPS降至不到10 FPS。
bool saveImage() {
USceneCaptureComponent2D* capture = getCaptureComponent(camera_type, true);
FTextureRenderTargetResource* RenderResource = capture->TextureTarget->GameThread_GetRenderTargetResource();
width = capture->TextureTarget->GetSurfaceWidth();
height = capture->TextureTarget->GetSurfaceHeight();
TArray<FColor> imageColor;
imageColor.AddUninitialized(width * height);
RenderResource->ReadPixels(bmp);
}
Run Code Online (Sandbox Code Playgroud)
看这篇文章,似乎很明显ReadPixels()将“阻塞游戏线程,直到渲染线程赶上”。本文包含用于读取像素的“非阻塞”方法的示例代码(通过移除FlushRenderingCommands()并使用RenderCommandFence标志来确定何时完成任务),但并不能显着提高性能:保存的图像稍高一些,但是游戏线程仍然只能以约20 FPS的速度运行,因此很难控制无人机。是否有任何更有效的异步方法可以实现我正在尝试的功能,例如在单独的线程中?我也对为什么代码在尽快将这些图像流式传输到屏幕上没有问题感到困惑,但是保存图像似乎更加复杂。它'
我是 UE4 的新手,正在尝试了解有关控制角色 pawn 的一些基本概念。我正在摸索着尝试实现一些角色移动逻辑。我打算使用基本的 WASD 来向前、向后、左右移动角色——就像几乎所有基本的第一人称射击游戏一样。我还希望鼠标输入来旋转角色。
我有自己的自定义PlayerController和Character类。
添加代码来移动角色——正面、背面、侧面——似乎都在角色类本身中。那里有一个名为 AddMovementInput 的方法,它似乎可以为我修改位置。这也让我认为角色类“拥有”自己的位置。这是有道理的,因为一次可能有多个角色类,每个类都在不同的位置,对吧?
添加旋转字符的代码与控制旋转的方法类似 - AddControllerYawInput, AddControllerPitchInput, AddControllerRollInput。简单地查看函数的名称表明偏航俯仰和滚转由玩家控制器“拥有”。查看函数的文档和注释进一步支持这一点:“将输入(影响偏航)添加到控制器的 ControlRotation,如果它是本地 PlayerController。” 所以在我看来,偏航俯仰和滚转是玩家控制器“拥有”的值,对吗?
作为初学者,这让我感到困惑:我对位置存储在角色本身中但旋转似乎不是这样的事实感到困惑。
我有兴趣了解我应该如何“思考”角色或棋子的运动。我只是不清楚,这让我挂断了这个话题。
操作系统:Manjaro Linux 4.19.28-1-MANJARO
我有一些关于 的ld问题UnrealBuildTool。我对所有虚幻的东西都是新的。
一周前,我发现了一些基于Unreal的开源项目。发布的二进制版本运行良好。但它无法在我的电脑上构建。我认为这是 gcc 链接器找不到assimp library。
所以我设置了环境变量'LIBRARY_PATH','LD_LIBRARY_PATH'但是,UnrealBuildTool似乎没有使用本地计算机的 ld 链接器。
有人对此有想法吗?
[440/442] Compile BuildSettings.cpp
[441/442] Compile pugixml.cpp
[442/442] Link (lld) CarlaEditor
/home/suho/Repository/UnrealEngine/Engine/Extras/ThirdPartyNotUE/SDKs/HostLinux/Linux_x64/v12_clang-6.0.1-centos7/x86_64-unknown-linux-gnu/bin/ld.lld: error: unable to find library -lassimp
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ERROR: UBT ERROR: Failed to produce item: /home/suho/Workspace/carla-map-editor/Unreal/CarlaEditor/Binaries/Linux/CarlaEditor
(see /home/suho/Library/Logs/Unreal Engine/LocalBuildLogs/UBT-CarlaEditor-Linux-Development.txt for full exception trace)
Total build time: 646.23 seconds (Local …Run Code Online (Sandbox Code Playgroud) 使用蓝图,我可以SpawnActorFromClass使用StaticMeshActor,但是通过内置的 Python 脚本插件使用 Python 脚本,
unreal.EditorLevelLibrary().spawn_actor_from_class(ue.Class(name='StaticMeshActor'), location, rot)
Run Code Online (Sandbox Code Playgroud)
我有:
LogPython: Error: TypeError: EditorLevelLibrary: Failed to convert parameter 'actor_class' when calling function 'EditorLevelLibrary.SpawnActorFromClass' on 'Default__EditorLevelLibrary'
LogPython: Error: TypeError: NativizeProperty: Cannot nativize 'Class' as 'ActorClass' (ClassProperty)
LogPython: Error: TypeError: NativizeClass: Cannot nativize 'Class' as 'Class' (allowed Class type: 'Actor')
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我一直认为 UE 比 Unity 更快,因为 UE 使用 C++ 和 Unity C#。C++ 的哲学在这里似乎被打破了,那就是你为你使用的东西付费。现在添加了反射和垃圾收集。那么,如果 UE4 是从 C++ 和另一个 C# 生成的,为什么它们会更快呢?
我开始使用Unreal Engine 4。我来自 Libgdx,熟悉在游戏中使用 WebSockets 客户端,在服务器上使用带有“ws”的 NodeJS。
但是,我找不到有关Websockets和 Unreal Engine 4 的信息。
我知道,鉴于它是用 C++ 编程的,您可以将外部静态库添加到虚幻项目中。
我可以使用这个 c++ websocket 库吗?
https://github.com/zaphoyd/websocketpp
它会在 Windows、Mac 和控制台上运行吗?
我不是 C++ 和静态库的专家。请帮忙,谢谢!
c++ static-libraries static-linking websocket unreal-engine4
我试图将消息记录为字符串变量,下面是我使用的代码
std::string s = "ss";//std::to_string(FPaths::GetPath("../"));
UE_LOG(LogTemp, Warning, *s);
Run Code Online (Sandbox Code Playgroud)
虚幻引擎生成以下功能:
void AFlyingPawn::SetupPlayerInputComponent(class UInputComponent* InputComponent)
{
//stuff...
}
Run Code Online (Sandbox Code Playgroud)
注意参数类型之前的"class"说明符.这是什么意思?
尝试生成项目文件时发生错误。
由于 SDK 设置无效,某些平台被跳过:Mac、IOS、Android、Lumin。有关详细信息,请参阅日志文件 (/Users/sidd/Library/Application Support/Epic/UnrealBuildTool/Log_GPF.txt)
正在发现项目的模块、目标和源代码...警告:无法查询 Xcode 版本在 Xcode.app 中查找 SDK 目录时触发异常 System.IO.DirectoryNotFoundException:找不到路径“/Library/Developer”的一部分/CommandLineTools/Platforms/MacOSX.platform/Developer/SDKs'。在System.IO.Enumeration.FileSystemEnumerator 1.CreateDirectoryHandle(String path, Boolean ignoreNotFound) at System.IO.Enumeration.FileSystemEnumerator1.Init()在System.IO.Enumeration.FileSystemEnumerator 1..ctor(String directory, Boolean isNormalized, EnumerationOptions options) at System.IO.Enumeration.FileSystemEnumerable1..ctor(字符串目录,FindTransform转换,EnumerationOptions选项,布尔值标准化)在System.IO.Enumeration.FileSystemEnumerableFactory.UserDirectories(字符串)目录、字符串表达式、EnumerationOptions 选项)位于 System.IO.Directory.InternalEnumeratePaths(字符串路径、字符串 searchPattern、SearchTarget searchTarget、EnumerationOptions 选项)位于 System.IO.Directory.GetDirectories(字符串路径)位于 UnrealBuildTool.AppleToolChainSettings.SelectSDK(String BaseSDKDir) 、String OSPrefix、String& PlatformSDKVersion、Boolean bVerbose)位于 /Users/build/Build/++UE5/Sync/Engine/Source/Programs/UnrealBuildTool/ToolChain/AppleToolChain.cs:第 87 行错误:无效的 SDK MacOSX.sdk,未找到在 /Library/Developer/CommandLineTools/Platforms/MacOSX.platform/Developer/SDKs 中
sdk unreal-development-kit ios android-sdk-tools unreal-engine4
unreal-engine4 ×10
c++ ×6
c# ×1
game-engine ×1
ios ×1
linker ×1
linux ×1
oop ×1
parameters ×1
python ×1
scripting ×1
sdk ×1
syntax ×1
websocket ×1