我目前卡在图片上的视频节目中.
问题:
我正在从UE4中提取图片,由于存在错误,在渲染截图期间并未考虑所有灯光.输出是HDR图像.我希望得到更好的亮度,因为导出的图像非常暗,就像第一次曝光一样.
使用UE4中的"曝光偏差"参数,我能够真实地获得场景的亮度,但不能将此参数应用于屏幕截图渲染:

尝试:
使用Tonemapper算法(特定cv::TonemapDrago)我能够获得更好的图像结果:

对于我的情况,Tonemap算法的主要问题是因为全局亮度根据区域的亮度而改变:在第二个图像中,窗口增加了大量的光,因此算法降低了所有亮度以调整平均值.在渲染的视频中,光线变化非常残酷.
我试图改变亮度和饱和度而没有成功.我已经修改了TonemapDrago尝试使用常量的代码来执行算法的某些步骤.
题 :
我想从HDR图像中"选择曝光时间".Tonemap基于同一图像的几个曝光时间,在我的情况下并不有趣.
欢迎任何其他想法.
编辑:
CV :: Mat深度为5,类型为CV_32FC3
cout << mat.step 给我19200
以下是我用来尝试解决问题的2个示例:
编辑2:
无法用gimp打开.HDR图片,带有"explosure blend"插件的事件.我可以使用Photoshop获得足够的结果.那背后的算法有什么想法吗?OpenCV的6个Tonemap算法中的任何一个允许选择曝光校正.

编辑3:
我已经按照这个tuto中的算法解释了openGL,它给了我这个C +代码:
cv::Mat exposureTonemap (cv::Mat m, float gamma = 2.2, float exposure = 1)
{
// Exposure tone mapping
cv::Mat exp;
cv::exp( (-m) * exposure, exp );
cv::Mat mapped = cv::Vec3f(1.0) - exp;
// Gamma correction
cv::pow(exp, 1.0f / gamma, exp);
cv::imshow("exposure …Run Code Online (Sandbox Code Playgroud) 我有一个PlayerControl.cpp派生自 Pawn 类的类
在那个班级中,我有一个方法可以获取 Map 中的所有 Actors
TSubclassOf<AEnemy> ClassToFind;
TArray<AActor*> FoundEnemies;
UGameplayStatics::GetAllActorsOfClass(GetWorld(), ClassToFind, FoundEnemies);
Run Code Online (Sandbox Code Playgroud)
但是 FoundEnemies 数组总是空的,当我在 BP 中做同样的事情时它可以工作。
有人能告诉我为什么这在 C++ 中不起作用吗?或者如果我做错了,如何做正确的?
我正在遵循虚幻编程快速入门指南
我复制并粘贴了指南底部的代码示例。我试过同时使用 VS2019 和 VSCode,都给我同样的错误:
UStaticMeshComponent *AFloatingActor::VisualMesh
pointer to incomplete class type is not allowed
Run Code Online (Sandbox Code Playgroud)
static <error-type> UStaticMesh
name followed by '::' must be a class or namespace name
Run Code Online (Sandbox Code Playgroud)
还有几个……
当我在虚幻引擎中编译时,它编译时出现 0 个错误并按预期工作。
有什么办法可以修复这些错误的错误并继续使用智能感知/获取代码完成?
我真的只是希望能够看到我正在使用的组件的成员函数和定义,因为我是 Unreal 的新手。
这是指南中的代码,因为我在这个演示项目的源代码中有它:
FloatingActor.h
UStaticMeshComponent *AFloatingActor::VisualMesh
pointer to incomplete class type is not allowed
Run Code Online (Sandbox Code Playgroud)
FloatingActor.cpp
static <error-type> UStaticMesh
name followed by '::' must be a class or namespace name
Run Code Online (Sandbox Code Playgroud) c++ intellisense visual-studio unreal-engine4 visual-studio-code
我目前正在使用虚幻引擎4,似乎我无法避免一些演员表.
AController* c = this->GetController();
APlayerController* p = (APlayerController*)c;
Run Code Online (Sandbox Code Playgroud)
有没有办法可以在我演员之前检查是否c是一个PlayerController?
我有一个JSON对象,我从我的服务器,看起来像这样:
{
"state":"1",
"player1": {
"alias":"Player Name",
"ready":"0"
}
}
Run Code Online (Sandbox Code Playgroud)
我能够获取JSON,将其解析为FJsonObject,并使用此代码序列化检索JSON对象的第一级中的任何数字或字符串:
TSharedPtr<FJsonObject> JsonParsed;
TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(json);
if (FJsonSerializer::Deserialize(JsonReader, JsonParsed))
//Use JsonParsed
Run Code Online (Sandbox Code Playgroud)
这段代码读取字符串:
FString AJSONContainer::getStringWithKey(FString key)
{
return storedJSON->GetStringField(key);
}
Run Code Online (Sandbox Code Playgroud)
AJSONContainer只是一个Actor类,我用它来从Blueprints调用这些函数.
这一切都很好,但是当我尝试从二级读取东西时,事情就不起作用了.
我编写了这段代码来提升下一级别:
TSharedPtr<FJsonObject> nested = storedJSON->GetObjectField(key);
Run Code Online (Sandbox Code Playgroud)
但所有要求获得领域的电话nested都没有.
nested->GetStringField(anotherKey); //Nothing
Run Code Online (Sandbox Code Playgroud)
所以,例如,使用上面的JSON,这个:
TSharedPtr<FJsonObject> nested = storedJSON->GetObjectField("player1");
FString alias = nested->GetStringField("alias");
Run Code Online (Sandbox Code Playgroud)
alias 将它打印到控制台时没有任何价值.
难道我做错了什么?为什么二级JSON不起作用?
我以为他们是一样的。
但是最近我发现 png 和 targa 纹理在 UE4 中表现不同。
今天我在Adobe读到一些东西,
Alpha 通道可以包含任何内容,而透明度是一种特定的通道关系。
它还说,
(透明通道)每个图像像素由一组可见着色剂的数值和一个包含不透明度信息的附加数值表示。
这让我很困惑。
他们保存不同的数据吗?Alpha 通道是否比透明通道“更强”?
我已经从源代码编译了虚幻引擎,一切都很成功。但是当我尝试启动 UE4Editor 时它崩溃了。控制台上的错误是:
[2017.04.14-05.25.55:381][ 0]LogExit: Exiting.
Engine crash handling finished; re-raising signal 11 for the default handler. Good bye.
Run Code Online (Sandbox Code Playgroud)
附加崩溃日志和诊断文件。
环境:
Linux andrii-asus 4.4.0-72-generic #93-Ubuntu SMP Fri Mar 31 14:07:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
UE4.log:
Log file open, 04/14/17 08:20:46
LogInit:Display: Running engine without a game
LogPlatformFile: Not using cached read wrapper
LogInit:Display: RandInit(-1053205140) SRandInit(-1053205140).
LogTaskGraph: Started task graph with 5 named threads and 6 total threads with 1 sets of task threads.
LogStats: Stats thread started at …Run Code Online (Sandbox Code Playgroud) 我想问一下有没有办法用Visual Studio源代码调试虚幻引擎源代码:
(
)。
每次我尝试在他们的源代码中设置断点时,只是说它无法到达该断点。
在虚幻中,我想要
在Unity3D中,这非常简单。这是一行代码(源代码):
transform.LookAt(target, Vector3.up);
Run Code Online (Sandbox Code Playgroud)
在蓝图中,有一个名为“Find Look at Rotation”的节点。问题是没有向上矢量参数,因此当您接近目标时,可能会出现不需要的滚动旋转。
那么,如何在 Unreal 蓝图中创建相当于 Unity LookAt 的功能呢?
自从我升级到 UE 5 以来,我不断收到此错误
错误 实时编码处于活动状态时无法构建。退出编辑器和游戏,或者如果在编辑器或游戏中迭代代码,请按 Ctrl+Alt+F11
有什么解决办法吗?