2017-06-28 55 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。

相關問題