Save up to 70% on our assets during the Black Friday sale in the Unreal Marketplace

Erstelle INT und BOOL Matrizen in der Unreal Engine 5

Nutze DataMatrix in der Unreal Engine 5 um deine eigene Matrix Variable zu erstellen. Egal ob 2-, 3-Dimensional oder anderes, speichere deine BOOL oder INT Variablen als Matrix.

DataMatrix - Create INT and BOOL Matrices

Beschreibung

Das DataMatrix-Plugin für Unreal Engine ermöglicht die effiziente Verwaltung und Verarbeitung mehrdimensionaler Matrizen (int32 und bool). Es bietet umfassende Unterstützung für Blueprints, C++ und DataTables, sowie Multi-Threading-Funktionen zur Leistungsoptimierung bei großen Datenmengen.

Screenshots

DataMatrix - Create INT and BOOL Matrices
Play Video about DataMatrix - Create INT and BOOL Matrices

DataMatrix: Showcase

Nutze mehrdimensionale Matrizen in Unreal Engine direkt über Blueprint-Nodes oder C++-Funktionen. Das DataMatrix-Plugin ist ideal für Projekte auf Windows, macOS und Linux und bietet effiziente Verwaltung großer Datenmengen sowie einfache Integration. Mit Unterstützung für DataTables und Multi-Threading ermöglicht DataMatrix flexible und performante Datenstrukturen. Dank umfassender Dokumentation und benutzerfreundlicher Blueprints ist der Einstieg sowohl für Anfänger als auch für erfahrene Entwickler mühelos möglich.

Dokumentation & News

Table of Contents

Installation und Einrichtung (für Source)

  1. Projektdateien neu generieren: Rechtsklicke auf die .uproject-Datei und wähle „Generate Visual Studio project files“ (oder das entsprechende Tool für deine IDE).

  2. Projekt kompilieren: Öffne dein Projekt in Unreal Engine. Der Editor sollte das Plugin automatisch erkennen und kompilieren.

  3. Plugin aktivieren: Gehe zu Settings > Plugins, suche nach „DataMatrix“ und stelle sicher, dass es aktiviert ist.

  4. Plugin aktivieren: Gehe zu Edit > Plugins, suche nach „DataMatrix“ und stelle sicher, dass es aktiviert ist.

				
					YourProject/
└── Plugins/
    └── DataMatrix/

				
			

Datenstrukturen

FDataMatrixInt

FDataMatrixInt ist eine USTRUCT, die eine mehrdimensionale Matrix für int32-Werte repräsentiert.

				
					USTRUCT(BlueprintType)
struct DATAMATRIX_API FDataMatrixInt
{
    GENERATED_BODY()

public:
    UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
    TArray<int32> IntMatrix;

    UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
    TArray<int32> Dimensions;
};

				
			

FDataMatrixInt

FDataMatrixBool ist eine USTRUCT, die eine mehrdimensionale Matrix für bool-Werte repräsentiert.

				
					USTRUCT(BlueprintType)
struct DATAMATRIX_API FDataMatrixBool
{
    GENERATED_BODY()

public:
    UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
    TArray<bool> BoolMatrix;

    UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
    TArray<int32> Dimensions;
};

				
			

Verwendung in Blueprints

Initialisierung der Matrix

Synchronisierte Initialisierung

 

  1. InitializeMatrixInt / InitializeMatrixBool
    • Beschreibung: Initialisiert eine FDataMatrixInt oder FDataMatrixBool Struktur mit den angegebenen Dimensionen.
    • Eingaben:
      • Matrix (Referenz): Die zu initialisierende Matrix.
      • In Dimensions (Array von int32): Die Dimensionen der Matrix, z.B. [2, 2] für eine 2×2 Matrix.
    • Beispiel:
      • Erstelle eine Variable MyMatrix vom Typ FDataMatrixInt.
      • Verwende den Node InitializeMatrixInt und verbinde MyMatrix mit dem Matrix-Pin.
      • Erstelle ein Make Array mit [2, 2] und verbinde es mit In Dimensions.

 

Asynchrone Initialisierung mit Multi-Threading

 

  1. InitializeMatrixIntAsync / InitializeMatrixBoolAsync
    • Beschreibung: Initialisiert eine FDataMatrixInt oder FDataMatrixBool Struktur asynchron und ruft einen Callback auf.
    • Eingaben:
      • Matrix: Die zu initialisierende Matrix.
      • In Dimensions (Array von int32): Die Dimensionen der Matrix.
      • On Completed (Delegate): Das Event, das nach der Initialisierung aufgerufen wird.
    • Beispiel:
      • Erstelle eine Variable MyMatrix vom Typ FDataMatrixInt.
      • Verwende den Node InitializeMatrixIntAsync und verbinde MyMatrix, [2, 2] und ein Custom Event OnInitializeMatrixIntCompleted.

Setzen und Abrufen von Werten

SetValueInt / SetValueBool
  • Beschreibung: Setzt einen Wert (int32 oder bool) an den angegebenen Indizes.
  • Eingaben:
    • Matrix (Referenz): Die Zielmatrix.
    • Indices (Array von int32): Die Position, z.B. [0, 1].
    • Value: Der zu setzende Wert, z.B. 42 oder True.
  • Beispiel:
    • Verwende SetValueInt, verbinde MyMatrix, [0, 1] und den Wert 42.
GetValueInt / GetValueBool
  • Beschreibung: Holt einen Wert (int32 oder bool) von den angegebenen Indizes.
  • Eingaben:
    • Matrix: Die Quellmatrix.
    • Indices (Array von int32): Die Position, z.B. [0, 1].
  • Ausgabe:
    • Return Value: Der abgerufene Wert, z.B. 42 oder True.
  • Beispiel:
    • Verwende GetValueInt, verbinde MyMatrix und [0, 1], und verbinde den Return-Wert zu einem Print String.

Beispiele: 2x2 und 2x2x2 Matrizen

2×2 Matrix
  1. Initialisierung:
    • Dimensionen: [2, 2]
  2. Setzen von Werten:
    • [0,0] = 1
    • [0,1] = 2
    • [1,0] = 3
    • [1,1] = 4
  3. Abrufen von Werten:
    • Werte von [0,0] bis [1,1] abrufen und anzeigen.
2x2x2 Matrix
  1. Initialisierung:
    • Dimensionen: [2, 2, 2] (Layer, Zeilen, Spalten)
  2. Setzen von Werten:
    • [0,0,0] = 1
    • [0,0,1] = 2
    • [0,1,0] = 3
    • [0,1,1] = 4
    • [1,0,0] = 5
    • [1,0,1] = 6
    • [1,1,0] = 7
    • [1,1,1] = 8
  3. Abrufen von Werten:
    • Werte von [0,0,0] bis [1,1,1] abrufen und anzeigen.

Hinweis: Bei einer 2x2x2 Matrix sind die Indizes [Layer, Zeile, Spalte] relevant, z.B. [1,1,1] ist die zweite Layer, zweite Zeile, zweite Spalte.

DataMatrix - Create INT and BOOL Matrices
DataMatrix - Create INT and BOOL Matrices - EXAMPLE

Verwendung in C++

Initialisierung der Matrix

Synchronisierte Initialisierung

 

1.  Header einbinden:

				
					#include "DataMatrixFunctionLibrary.h"

				
			

2.  Matrix deklarieren und initialisieren:

				
					FDataMatrixInt MyMatrix;
TArray<int32> Dimensions = {2, 2};
UDataMatrixFunctionLibrary::InitializeMatrixInt(MyMatrix, Dimensions);
				
			
Asynchrone Initialisierung mit Callbacks

1.  Callback-Funktion erstellen:

				
					UCLASS()
class YOURPROJECT_API AYourActor : public AActor
{
    GENERATED_BODY()

public:
    virtual void BeginPlay() override;

    UFUNCTION()
    void OnInitializeMatrixIntCompleted(FDataMatrixInt Matrix);
};

				
			

2. Implementierung der Callback-Funktion:

				
					void AYourActor::OnInitializeMatrixIntCompleted(FDataMatrixInt Matrix)
{
    TArray<int32> Indices = {1, 0};
    UDataMatrixFunctionLibrary::SetValueInt(Matrix, Indices, 42);
    int32 Value = UDataMatrixFunctionLibrary::GetValueInt(Matrix, Indices);
    UE_LOG(LogTemp, Log, TEXT("Wert an Position [1,0]: %d"), Value);
}

				
			

3. Asynchrone Initialisierung starten:

				
					void AYourActor::BeginPlay()
{
    Super::BeginPlay();

    FDataMatrixInt MyMatrix;
    TArray<int32> Dimensions = {2, 2};

    UDataMatrixFunctionLibrary::InitializeMatrixIntAsync(MyMatrix, Dimensions, FOnInitializeMatrixIntCompleted::CreateUObject(this, &AYourActor::OnInitializeMatrixIntCompleted));
}

				
			

Setzen und Abrufen von Werten

Setzen von Werten
				
					TArray<int32> Indices = {1, 0};
UDataMatrixFunctionLibrary::SetValueInt(MyMatrix, Indices, 42);

				
			
Anrufen von Werten
				
					int32 Value = UDataMatrixFunctionLibrary::GetValueInt(MyMatrix, Indices);
UE_LOG(LogTemp, Log, TEXT("Wert an Position [1,0]: %d"), Value);

				
			

Beispiele: 2x2 und 2x2x2 Matrizen

2×2 Matrix

1.  Initialisierung:

				
					FDataMatrixInt MyMatrix;
TArray<int32> Dimensions = {2, 2};
UDataMatrixFunctionLibrary::InitializeMatrixInt(MyMatrix, Dimensions);

				
			

2. Setzen von Werten:

				
					UDataMatrixFunctionLibrary::SetValueInt(MyMatrix, {0, 0}, 1);
UDataMatrixFunctionLibrary::SetValueInt(MyMatrix, {0, 1}, 2);
UDataMatrixFunctionLibrary::SetValueInt(MyMatrix, {1, 0}, 3);
UDataMatrixFunctionLibrary::SetValueInt(MyMatrix, {1, 1}, 4);

				
			

3. Abrufen von Werten:

				
					int32 Value00 = UDataMatrixFunctionLibrary::GetValueInt(MyMatrix, {0, 0});
int32 Value01 = UDataMatrixFunctionLibrary::GetValueInt(MyMatrix, {0, 1});
int32 Value10 = UDataMatrixFunctionLibrary::GetValueInt(MyMatrix, {1, 0});
int32 Value11 = UDataMatrixFunctionLibrary::GetValueInt(MyMatrix, {1, 1});

UE_LOG(LogTemp, Log, TEXT("Wert [0,0]: %d"), Value00);
UE_LOG(LogTemp, Log, TEXT("Wert [0,1]: %d"), Value01);
UE_LOG(LogTemp, Log, TEXT("Wert [1,0]: %d"), Value10);
UE_LOG(LogTemp, Log, TEXT("Wert [1,1]: %d"), Value11);

				
			
2x2x2 Matrix

1.  Initialisierung:

				
					FDataMatrixInt My3DMatrix;
TArray<int32> Dimensions3D = {2, 2, 2};
UDataMatrixFunctionLibrary::InitializeMatrixInt(My3DMatrix, Dimensions3D);

				
			

2. Setzen von Werten:

				
					UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {0, 0, 0}, 1);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {0, 0, 1}, 2);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {0, 1, 0}, 3);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {0, 1, 1}, 4);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {1, 0, 0}, 5);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {1, 0, 1}, 6);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {1, 1, 0}, 7);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {1, 1, 1}, 8);

				
			

3. Abrufen von Werten:

				
					UE_LOG(LogTemp, Log, TEXT("Wert [0,0,0]: %d"), UDataMatrixFunctionLibrary::GetValueInt(My3DMatrix, {0,0,0}));
UE_LOG(LogTemp, Log, TEXT("Wert [0,0,1]: %d"), UDataMatrixFunctionLibrary::GetValueInt(My3DMatrix, {0,0,1}));
// ... bis [1,1,1]

				
			

Verwendung mit DataTables

Erstellen einer DataTable

  • 1. Struktur wählen:
    • Erstelle eine Struktur kompatibel mit FDataMatrixInt oder FDataMatrixBool, z.B.:
				
					USTRUCT(BlueprintType)
struct DATAMATRIX_API FDataMatrixIntStruct
{
    GENERATED_BODY()

public:
    UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
    TArray<int32> Dimensions;

    UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
    TArray<int32> Data;
};

				
			
  • 2. DataTable erstellen:
    • Rechtsklicke im Content Browser und wähle Miscellaneous > DataTable.
    • Wähle die erstellte Struktur (FDataMatrixIntStruct) aus.
  • 3. DataTable benennen und bearbeiten:
    • Benenne die DataTable, z.B. DT_MyDataMatrixInt.
    • Füge neue Zeilen hinzu:
      • Dimensions: [2, 2] für eine 2×2 Matrix.
      • Data: [1, 2, 3, 4] für die Werte.

Initialisieren der Matrix aus einer DataTable

  • DataTable Row abrufen:

    • Verwende den Node „Get Data Table Row“.
    • Wähle die DataTable DT_MyDataMatrixInt aus.
    • Gib den Row-Namen ein, z.B. Row1.
  • Struktur aufbrechen:

    • Verwende „Break FDataMatrixIntStruct“, um auf Dimensions und Data zuzugreifen.
  • Matrix initialisieren:

    • Verwende den Node „InitializeMatrixWithDataInt“.
    • Eingaben:
      • Matrix: Deine Matrix-Variable (MyMatrix).
      • In Dimensions: Verbinde mit Dimensions aus der DataTable.
      • In Data: Verbinde mit Data aus der DataTable.

Erklärung der Blueprint Nodes

InitializeMatrixInt

  • Beschreibung: Initialisiert eine FDataMatrixInt-Struktur mit den angegebenen Dimensionen.
  • Eingaben:
    • Matrix (Referenz): Die zu initialisierende Matrix.
    • In Dimensions (Array von int32): Die Dimensionen der Matrix.
  • Ausgabe: Keine.

InitializeMatrixWithDataInt

  • Beschreibung: Initialisiert eine FDataMatrixInt-Struktur mit Dimensionen und vorgegebenen Daten.
  • Eingaben:
    • Matrix (Referenz): Die zu initialisierende Matrix.
    • In Dimensions (Array von int32): Die Dimensionen der Matrix.
    • In Data (Array von int32): Die Daten für die Matrix.
  • Ausgabe: Keine.

SetValueInt

  • Beschreibung: Setzt einen int32-Wert an den angegebenen Indizes.
  • Eingaben:
    • Matrix (Referenz): Die Matrix, in die der Wert gesetzt werden soll.
    • Indices (Array von int32): Die Indizes der Position.
    • Value (int32): Der zu setzende Wert.
  • Ausgabe: Keine.

GetValueInt

  • Beschreibung: Holt einen int32-Wert von den angegebenen Indizes.
  • Eingaben:
    • Matrix: Die Matrix, aus der der Wert geholt werden soll.
    • Indices (Array von int32): Die Indizes der Position.
  • Ausgabe:
    • Return Value (int32): Der abgerufene Wert.

ResizeMatrixInt

  • Beschreibung: Ändert die Dimensionen einer bestehenden FDataMatrixInt-Struktur.
  • Eingaben:
    • Matrix (Referenz): Die zu ändernde Matrix.
    • New Dimensions (Array von int32): Die neuen Dimensionen.
  • Ausgabe: Keine.

ClearMatrixInt

  • Beschreibung: Leert die Matrixdaten und Dimensionen einer FDataMatrixInt-Struktur.
  • Eingaben:
    • Matrix (Referenz): Die zu leere Matrix.
  • Ausgabe: Keine.

GetDimensionsInt

  • Beschreibung: Gibt die Dimensionen einer FDataMatrixInt-Struktur zurück.
  • Eingaben:
    • Matrix: Die Matrix, deren Dimensionen abgefragt werden.
  • Ausgabe:
    • Return Value (Array von int32): Die Dimensionen der Matrix.

GetDimensionsAsStringInt

  • Beschreibung: Gibt die Dimensionen einer FDataMatrixInt-Struktur als kommagetrennten String zurück.
  • Eingaben:
    • Matrix: Die Matrix, deren Dimensionen abgefragt werden.
  • Ausgabe:
    • Return Value (String): Die Dimensionen als String, z.B. "2,2".

InitializeMatrixIntAsync

  • Beschreibung: Initialisiert eine FDataMatrixInt-Struktur asynchron mit den angegebenen Dimensionen und ruft einen Callback auf, wenn die Initialisierung abgeschlossen ist.
  • Eingaben:
    • Matrix: Die Matrix, die initialisiert werden soll.
    • In Dimensions (Array von int32): Die Dimensionen der Matrix.
    • On Completed (Delegate): Das Event, das nach der Initialisierung aufgerufen wird.
  • Ausgabe: Keine.

Für FDataMatrixBool

Die Nodes sind analog zu den FDataMatrixInt-Versionen, ersetzen jedoch int32 durch bool.

Troubleshooting & Common Issues

Delegate-Typen nicht unterstützt: Stelle sicher, dass Delegates mit DECLARE_DYNAMIC_DELEGATE_OneParam deklariert sind und als const& in den Funktionen übergeben werden.

Kopierfehler bei TArray: Achte darauf, dass TArray-Zuweisungen korrekt sind und keine const-Qualifizierer verletzt werden. Verwende mutable in Lambda-Funktionen, wenn notwendig.

Compiler-Fehler bei Lambda-Funktionen: Deklariere Lambdas als mutable, um Änderungen an erfassten Kopien zu ermöglichen.

Thread-Sicherheitsprobleme: Implementiere geeignete Synchronisierungsmechanismen, wenn mehrere Threads auf dieselben Daten zugreifen.

Roadmap

Nach oben scrollen

Schön das du Interesse an dieser Anwendung hast.
Wähle unten die gewünschte Version aus.

Texture Channel Packer ist ein kostenloses Tool mit dem du verschiedene Texturen zu einer RGB Textur packen kannst.

Portable Edition – v1.0 | Größe: 10,7 mb

Thank you for your interest in this application.
Select the version you want below.

Texture Channel Packer is a tool that allows you to pack different textures into one RGB texture.

Portable Edition – v1.0 | Size: 10,7 mb

















WELL, WORK IN PROCESS | Check out the German Page, there it is working.