问题: 我想要一个高质量的模拟可视化,我已经构建并在另一个应用程序上运行。虚幻引擎4具有可行的模型,并且可以很好地呈现以满足我的需求。唯一的问题是,我需要告诉虚幻引擎项目的运行实例我的模拟正在创建的一些信息,比如移动对象。
潜在的解决方案:
rpc插件?
我对grpc非常熟悉,我的模拟设置为发送和接收grpc消息,但我不知道如何通过unreal_engine实现grpc。互联网上的其他几个人已经编写了rpc插件,这可能适合我的需求。例如... https://github.com/PaddleCreekGames/Proto3RPC_UE4 但是,不知道如何完成这一堆工作并实际使用我想要的东西。毋庸置疑,该特定项目的文档对于没有编写该项目的用户不友好。
还有别的吗?
如果您有任何想法,或者您历史上以特定的方式将信息传递给虚幻引擎,那么任何指向正确方向的指针/代码片段/链接到我可能错过的内容都将非常感激。
答案 0 :(得分:0)
我和东正教有同样的问题, 如果输入不必立即/实时发生。 例如,您可以为模拟更新参数文件,并在虚幻引擎应用程序中读取参数。 下面是一个创建readFile bluemix函数来读取和解析外部JSON文件的示例:
> / Source / [Project name] /MyBlueprintFunctionLibrary.h中的,定义输出结构和函数头
USTRUCT(BlueprintType)
struct FResultStruct
{
GENERATED_USTRUCT_BODY()
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "Result Struct")
float fieldname1;
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category = "Result Struct")
FString fieldname2;
//Constructor
FResultStruct()
{
fieldname1 = 0;
fieldname2 = "string";
}
};
UCLASS()
class EXPERIMENTALPROJECT_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "MyBPLibrary")
static FResultStruct ReadFile(FString fileName);
};
/ source / [Project name] /MyBlueprintFunctionLibrary.cpp中的实现参数文件解析器,例如:
// Read the results file
FResultStruct UMyBlueprintFunctionLibrary::ReadFile(FString fileName)
{
FString saveFilePath = FPaths::ConvertRelativePathToFull(FPaths::GameDir());
fileName = saveFilePath + fileName;
FResultStruct Result;
FString jsonString;
FFileHelper::LoadFileToString(jsonString, *fileName);
TSharedPtr<FJsonObject> JsonParsed;
TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(jsonString);
if (FJsonSerializer::Deserialize(JsonReader, JsonParsed))
{
Result.fieldname1 = JsonParsed->GetNumberField("fieldname1");
Result.fieldname2 = JsonParsed->GetStringField("fieldname2");
}
return Result;
}
在您的虚幻引擎蓝图中,您可以调用此文件读取函数并在您的应用程序中使用其解析的内容: example
如果您需要实时输入,则可能需要在UE4中创建HUD并为所有参数创建输入字段,这是更加劳动密集型的imo。