2017-06-28 29 views
0

问题: 我想要一个高质量的可视化模型,我已经构建并在另一个应用程序上运行。虚幻引擎4具有可用的模型,并且可以很好地渲染以满足我的需求。唯一的问题是,我需要告诉正在运行的虚幻引擎项目实例的一些我的模拟创建的信息,例如移动对象。如何从外部源将信息传递到虚幻引擎

潜在解决方案:

rpc插件?

我对grpc非常熟悉,我的模拟设置为发送和接收grpc消息,但我不知道如何通过unreal_engine实现grpc。 interweb上的其他人已经编写了rpc插件,这可能适合我的需求。例如... https://github.com/PaddleCreekGames/Proto3RPC_UE4 但是,不知道如何完成这一堆工作,并实际使用我想要的。不用说,那个特定项目的文档对于没有编写它的用户是不友好的。

还有其他的东西吗?

如果您有任何想法,或者如果您历史上以特定方式向虚幻引擎传递信息,任何指向正确方向的指针/代码片段/指向我可能错过的内容的链接将不胜感激。

+0

这必须运行吗?你不能把这个发送给虚幻的FBX或Alembic文件吗? – theodox

回答

0

如果输入不必立即/实时发生,我对theodox有相同的问题, 。 例如,您可以为您模拟更新参数文件并读取虚幻引擎应用程序中的参数。 下面是创建的READFILE bluemix功能读取和解析外部JSON文件的一个示例:

在/源/ [项目名称] /MyBlueprintFunctionLibrary.h,定义输出struct和函数头

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); 
}; 
在/来源/ [项目名称]

/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。

相关问题