2017-06-28 43 views
0

問題: 私が作成し、別のアプリケーションで実行したシミュレーションの高品質な可視化が必要です。 Unreal Engine 4には機能するモデルがあり、私のニーズを満たすのに十分なレンダリングが可能です。唯一の問題は、実行中のオブジェクトのように、シミュレーションで作成している情報の一部をUnreal Engineプロジェクトの実行インスタンスに伝えることです。外部ソースからUnreal Engineに情報を渡す方法

可能な解決策:

RPCプラグイン?

私はgrpcをよく知っていて、私のシミュレーションはgrpcメッセージを送受信するように設定されていますが、grpcをunreal_engineを通して実装する方法はわかりません。インターウェブ上のいくつかの他の人が私の必要性のために働くかもしれないrpcプラグインを書いています。たとえば... ... https://github.com/PaddleCreekGames/Proto3RPC_UE4 しかし、仕事の山をどのようにして実際に私が望むものを使うのか分かりません。言うまでもなく、その特定のプロジェクトのドキュメントは、それを書かなかったユーザーには不愉快です。

他に何か?

あなたがアイデアを持っている場合、または歴史的にUnreal Engineに特定の方法で情報を渡した場合、正しい方向のコード/コードスニペット/リンクが欠落している可能性があります。

+0

これはライブで実行する必要がありますか?たとえば、FBXまたはAlembicの焼き込みファイルとしてこれをunrealに送ることはできません。 – theodox

答えて

0

入力が瞬時に/リアルタイムで行われる必要がない場合は、同じ質問をtheodox で受けました。 たとえば、シミュレーション用のパラメータファイルを更新して、あなたのUnreal Engineアプリケーションのパラメータを読み取ることができます。ここ 外部JSONファイル読み取りおよび解析するreadFileのbluemix関数を作成する例である:/ソース/ [プロジェクト名] /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); 
}; 
出力構造体及び機能ヘッダを定義します/ソース/ [プロジェクト名]で

/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を作成する必要があり、すべてのあなたのための入力フィールドを作成することができより労働集約的なものです。

関連する問題