2017-06-28 3 views
0

Das Problem: Ich möchte eine hochwertige Visualisierung einer Simulation, die ich gebaut habe und auf einer anderen Anwendung läuft. Unreal Engine 4 hat Modelle, die funktionieren und gut genug darstellen, um meine Bedürfnisse zu erfüllen. Das einzige Problem ist, dass ich einer laufenden Instanz eines Unreal Engine-Projekts einige der Informationen mitteilen muss, die meine Simulation erzeugt, wie Objekte zu bewegen.Wie Informationen in Unreal Engine von außen liefern Quelle

Mögliche Lösungen:

rpc plugin?

Ich bin ziemlich vertraut mit Grpc, und meine Simulation ist so eingerichtet, senden und empfangen Grpc-Nachrichten, aber ich weiß nicht, wie Grpc durch unreal_engine implementieren. Ein paar andere auf der Interweb haben RPC-Plugins geschrieben, die für meine Bedürfnisse funktionieren könnten. Zum Beispiel ... https://github.com/PaddleCreekGames/Proto3RPC_UE4 Allerdings keine Ahnung, wie man diesen Haufen Arbeit getan und tatsächlich verwenden, was ich will. Unnötig zu sagen, dass die Dokumentation dieses spezifischen Projekts unfreundlich für einen Benutzer ist, der es nicht geschrieben hat.

Etwas anderes?

Wenn Sie irgendwelche Ideen haben, oder wenn Sie Informationen historisch an unreal Engine auf eine bestimmte Weise weitergegeben haben, werden alle Hinweise in die richtige Richtung/Code-Schnipsel/Links zu Sachen, die ich verpasst habe, sehr geschätzt.

+0

Das muss live laufen? Sie können das nicht zum Beispiel als überbackene FBX- oder Alembic-Dateien an unwirkliche senden? – theodox

Antwort

0

Ich hatte die gleiche Frage mit Theodox, , wenn die Eingabe nicht sofort/in Echtzeit geschehen muss. Sie können zum Beispiel eine Parameterdatei für Ihre Simulation aktualisieren und die Parameter in Ihrer unrealen Engine-Anwendung lesen. Hier ist ein Beispiel der readfile Bluemix Funktion zum Erstellen eine externe JSON-Datei zu lesen und analysieren:

in/Quelle/[Projektname] /MyBlueprintFunctionLibrary.h definiert Ausgang struct und Funktionskopf

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); 
}; 

in/Quelle/[Projektname] /MyBlueprintFunctionLibrary.cpp Ihre Parameterdatei Parser implementieren, zum Beispiel:

// 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; 
} 

Und in Ihrem Unreal Engine Plan können Sie diese Datei Funktion Lesen rufen und seine geparsten Inhalt in Ihrer Anwendung verwenden: example

Wenn Sie Live-Eingang benötigen, müssen Sie HUD in UE4 erstellen und Eingabefelder für alle erstellen Sie Ihre Parameter, das ist arbeitsintensiver imo.

Verwandte Themen