Neuigkeiten in Evergine Studio
Mit diesem Release haben wir die Benutzerfreundlichkeit von Evergine Studio deutlich verbessert. In diesem Artikel stellen wir die wichtigsten Änderungen vor, die Ihnen hoffentlich gefallen und Ihre tägliche Arbeit an Evergine-Studio-Projekten etwas erleichtern.

Behaviors und Physik direkt in Evergine Studio simulieren
Evergine Studio verfügt jetzt über einen Play Mode, der Behaviors und Physik im Editor simuliert. Es war eine der am häufigsten gewünschten Funktionen. Bisher mussten Sie die Anwendung erstellen und starten, um zu sehen, wie sich eine Szene verhält, und dann zurück in den Editor wechseln, um Fehler zu beheben. Jetzt können Sie komplexe Physikszenen einrichten oder prüfen, wie Ihre Behaviors implementiert sind und sich verhalten – direkt in Evergine Studio, mit einem einzigen Klick.
Die obere Leiste des Szenen-Viewports hat drei neue Schaltflächen:
- Play (Strg+P) führt die Szene so aus, wie es Ihre Anwendung tun würde: Behaviors werden aktualisiert, die Physik wird simuliert, Partikel werden emittiert, und die Szene wird durch ihre eigenen Kameras dargestellt. Während die Szene läuft, wird die Schaltfläche zu Pause (Strg+Umschalt+P). Damit wird die Simulation angehalten, das Rendering läuft aber weiter, sodass Sie die Kamera weiterhin bewegen können.
- Step (Strg+Alt+P) lässt die pausierte Simulation um genau einen Frame weiterlaufen und hält sie dann wieder an. Das ist sehr nützlich, um Kollisionen, Constraints oder Animationen nachzuvollziehen, die bei normaler Geschwindigkeit zu schnell ablaufen.
- Stop beendet die Simulation und kehrt zur Bearbeitung zurück.

Der Play Mode führt eine aus dem Asset erstellte Kopie der Szene aus, sodass die Szene, die Sie bearbeiten, nie verändert wird: Wenn Sie auf Stop klicken, erhalten Sie sie genau so zurück, wie sie vor dem Klick auf Play war. Beachten Sie, dass das Szenen-Asset ausgeführt wird, nicht Ihre gesamte Anwendung: Code, den Sie Ihrer Klasse Scene (zum Beispiel in MyScene.cs) oder Ihrer Klasse Application hinzufügen, wird nicht ausgeführt. Hat die Szene keine aktive Kamera, zeigt der Viewport einen Hinweis statt eines schwarzen Bildschirms.
Um Platz für die neuen Schaltflächen zu schaffen, haben wir auch die Szenen-Toolbar neu organisiert. Bisher zeigte sie alle drei Snap-Optionen (Verschiebung, Rotation und Skalierung) gleichzeitig an. Jetzt zeigt sie nur noch die für das ausgewählte Transformationswerkzeug.
Vorheriges Release:

Neues Release:

Neue Manipulatoren
Außerdem haben wir alle Manipulatoren neu entwickelt, mit denen Entitäten im Szenen-Viewport verschoben, gedreht und skaliert werden. Sie nutzen jetzt die Implementierung der Bibliothek ImGuizmo, die auch viele andere Engines und Tools verwenden. Die neuen Manipulatoren reagieren besser, lassen sich leichter greifen und bringen Verbesserungen mit, etwa die Anzeige der zurückgelegten Strecke bei einer Verschiebung:

Oder die Gradzahl bei einer Rotation:

Snapping, Pivot und Mehrfachauswahl funktionieren weiterhin, sodass Sie mehrere Entitäten gleichzeitig transformieren können.
Zusammen mit den Manipulatoren kommt der View Cube, ebenfalls aus ImGuizmo. Er zeigt die Kameraausrichtung in einer Ecke des Viewports an, und ein Klick auf eine seiner Flächen wechselt zur Vorder-, Drauf-, Seiten- oder jeder anderen Ansicht. So ist die Ansicht zum Bearbeiten einer Szene jetzt deutlich schneller eingerichtet.

Pixelgenaue Auswahl
Eine weitere große Verbesserung im Viewport von Evergine Studio ist das Auswahlsystem. Bisher wählte der Editor Entitäten anhand vereinfachter Volumen aus (an jedes Modell angepasste Quader und Kugeln). Ein Klick in den leeren Raum um ein Objekt konnte daher dieses Objekt auswählen, und ein kleines Objekt hinter einem großen war schwer zu treffen. Die Auswahl ist jetzt pixelgenau: Sie wählen genau das aus, was Sie unter dem Cursor sehen – deutlich präziser bei der Arbeit mit komplexen Szenen. Zudem wird die ausgewählte Entität mit einer orangefarbenen Kontur um ihre Silhouette gezeichnet, sodass Sie auf einen Blick erkennen, welche es ist.
![]()
Wenn Sie die Wurzel einer Entitätshierarchie auswählen, werden ihre Kinder und Enkel mit einer blauen Kontur gezeichnet. Das zeigt Ihnen, dass sie nicht die ausgewählte Entität sind, die Transformationen, die Sie darauf anwenden, sie aber mitbewegen.

Einige weitere Details machen die Auswahl komfortabler:
- Die Entität unter dem Cursor wird beim Überfahren hervorgehoben, sodass Sie vor dem Klicken wissen, was Sie gleich auswählen.
- Die von anderen Objekten verdeckten Teile der Auswahl werden weiterhin mit geringerer Deckkraft gezeichnet, sodass Sie ein verdecktes Objekt nie aus den Augen verlieren.
- Klicks haben eine Toleranz von einigen Pixeln, sodass sich auch dünne Objekte wie Linien leicht auswählen lassen.
- Editor-Symbole (Lichter, Kameras, Partikel …) werden per Klick ausgewählt, und die Rechteckauswahl nutzt dasselbe System, sodass sie nur auswählt, was wirklich sichtbar ist.
- In einer Hierarchie oder einem Prefab wählt der erste Klick die Wurzel aus und der nächste die genaue Entität unter dem Cursor.
Die Konturfarben, die Konturbreite, die Deckkraft verdeckter Teile und die Hervorhebung beim Überfahren werden unter Preferences > Viewport eingestellt.

Services in den Project Settings verwalten
In Evergine sind Services (Klassen, die von Service oder UpdatableService abgeleitet sind) das Gegenstück zu einer Komponente oder einem Behavior auf Anwendungsebene: Sie verwenden sie, wenn Sie globale Logik oder einen globalen Zustand benötigen, der nicht von den Szenen Ihres Projekts abhängt. Bisher mussten Sie sie im Code Ihrer Klasse Application registrieren. Mit diesem Release können Sie Services im Panel Project Settings von Evergine Studio verwalten, ohne Code zu schreiben.
Im neuen Abschnitt Services können Sie die Services Ihres Projekts hinzufügen, entfernen und ihre Eigenschaften konfigurieren. Das Eigenschaften-Panel verwendet dieselben Editoren wie Entity Details, sodass die RenderProperty-Attribute, die Sie bereits in Ihren Komponenten verwenden, in Ihren Services genauso funktionieren.

Die Konfiguration wird mit dem Projekt gespeichert, und die Services werden beim Start der Anwendung über generierten Code registriert. Wenn Sie in Ihrer Klasse Application bereits einen Service desselben Typs registrieren, hat Ihre Registrierung Vorrang, sodass bestehende Projekte wie bisher funktionieren. Services für den internen Gebrauch lassen sich mit dem Attribut [Discoverable(false)] aus der Liste ausblenden.
Projekte werden in weniger als der Hälfte der Zeit erstellt
Wir haben auch an den Build-Zeiten des Editors gearbeitet. Evergine Studio erstellt Ihre Projekte jetzt in weniger als der Hälfte der Zeit, die die vorherige Version benötigte. Da Studio ein Projekt beim Öffnen erstellt, macht sich das auch jedes Mal bemerkbar, wenn Sie eines öffnen.
Wir haben die Zeiten mit zwei Projekten gemessen: einem leeren Projekt und dem Fahrzeugphysik-Beispiel.
| Projekt | Szenario | Vorherige Version | Neue Version | Reduzierung |
|---|---|---|---|---|
| Leeres Projekt | Clean Build | 8,90 s | 3,73 s | 58% |
| Leeres Projekt | Keine Änderungen | 8,13 s | 3,04 s | 63% |
| Leeres Projekt | C#-Änderung | 8,06 s | 3,06 s | 62% |
| VehiclePhysicsSample | Clean Build | 10,19 s | 4,41 s | 57% |
| VehiclePhysicsSample | Keine Änderungen | 9,49 s | 3,63 s | 62% |
| VehiclePhysicsSample | C#-Änderung | 9,42 s | 3,69 s | 61% |
Die Verbesserung ergibt sich aus der Art, wie der Build gestartet wird:
- Paketwiederherstellung, Kompilierung und Add-on-Erkennung erfolgen in einem einzigen MSBuild-Aufruf, der zudem parallel baut.
- Der Zustand des inkrementellen Builds bleibt zwischen Builds erhalten.
- Es werden nur die geänderten Dateien veröffentlicht.
Bessere Asset-Verwaltung
Auch die Asset-Verwaltung hat sich in diesem Release stark verändert: Assets lassen sich einfacher und intuitiver finden und Komponenten und Entitäten zuweisen.
Drag & Drop von Assets
Jede Asset-Auswahl unterstützt jetzt Drag & Drop: Ziehen Sie ein beliebiges Asset aus dem Panel Assets und legen Sie es in Entity Details auf der Eigenschaft ab, die es benötigt. Zum Beispiel ein Material auf einem MaterialComponent, eine Schriftart auf einem 3D-Text oder einen Sound auf einem SoundEmitter3D. Das ging bereits über die Dropdown-Listen, doch Ziehen ist deutlich komfortabler und schneller. Asset-Viewer verwenden dieselben Eigenschaftseditoren, sodass Sie auch im Material-Viewer eine Textur auf einem Material ablegen und das Ergebnis sofort sehen können.

Auch das Organisieren Ihrer Inhalte ist einfacher geworden. Die Baumansicht des Project Explorer unterstützt jetzt Drag & Drop von Ordnern, auf Wunsch auch mehrerer gleichzeitig, und Sie können Assets auf einen Ordner im Baum ziehen, um sie zu verschieben.
Drag & Drop von Entitäten
Sie können jetzt auch Entitäten aus dem Panel Scene Hierarchy auf die Entitätseigenschaften von Komponenten in Entity Details ziehen. Das ist besonders beim Einrichten von Physikszenen nützlich: Die Eigenschaft Connected Body von Constraints, die einen Körper mit einem anderen verbindet, wird festgelegt, indem Sie die andere Entität darauf ziehen. Wenn Sie möchten, können Sie in der Auswahl auch nach dem Namen der Entität suchen.

Ihre eigenen Komponenten können dies über eine Eigenschaft vom Typ Entity nutzen. Das Attribut RenderPropertyAsEntity beschränkt die zulässigen Entitäten auf solche mit bestimmten Komponenten:
public class Follower : Behavior
{
// Only accepts entities with a Transform3D component
[RenderPropertyAsEntity(typeof(Transform3D))]
public Entity Target { get; set; }
}
Referenzen werden per ID gespeichert und beim Laden der Szene aufgelöst. Wenn Sie ein Prefab instanziieren oder Entitäten duplizieren oder einfügen, werden sie automatisch neu zugeordnet, sodass die Kopien auf die kopierten Entitäten verweisen und nicht auf die Originale.
Raw Assets über AssetsService
Zum Laden und Verarbeiten von Assets im Code hat Evergine schon immer AssetsService verwendet, wo alles rund um Assets zusammenläuft. Neben den erkannten Asset-Typen kann es jetzt auch Raw Assets laden: Dateien in Formaten, die Evergine nicht erkennt, etwa eine JSON-Konfigurationsdatei, eine CSV-Datei mit Daten oder ein eigenes Format. Die neue Methode LoadRaw<T> liefert Ihnen einen Stream der Datei, und Sie entscheiden, wie Sie ihn lesen – mit aller Flexibilität, die Sie benötigen. Außerdem laden Sie unterstützte und Raw Assets auf dieselbe Weise, was Sie bisher separat handhaben mussten, indem Sie den Dateipfad von Hand zusammensetzten.
protected override void CreateScene()
{
var assetsService = Application.Current.Container.Resolve<AssetsService>();
var text = assetsService.LoadRaw<string>(EvergineContent.Raw.hello_txt, stream =>
{
using var reader = new StreamReader(stream);
return reader.ReadToEnd();
});
var textComponent = this.Managers.EntityManager.FindFirstComponentOfType<Text3DMesh>();
textComponent.Text = text;
}
Die Asset-ID stammt wie bei jedem anderen Asset aus der generierten Klasse EvergineContent. Das Ergebnis wird nicht zwischengespeichert: Jeder Aufruf liest die Datei erneut. Behalten Sie es also, wenn Sie es mehrfach benötigen.
Allgemeine Verbesserungen
Zum Schluss noch einige kleinere Verbesserungen an der Oberfläche von Evergine Studio. Sie fallen weniger ins Auge, tragen aber ebenfalls viel zu der besseren Benutzererfahrung bei, auf die das Evergine-Team in diesem Release hingearbeitet hat.
Ein Output-Panel, aus dem Sie kopieren können
Wir haben das Panel Output neu geschrieben, in dem der Editor alles protokolliert, was er tut. Bisher wurde jede Meldung als Element einer Liste angezeigt, und mehrere Zeilen zu kopieren war nahezu unmöglich. Jetzt können Sie Text direkt markieren oder per Rechtsklick Select All verwenden, um ihn zu kopieren oder mit einem externen Tool zu analysieren. Das erleichtert das Debugging und das Melden von Problemen.

HDR-Bereich im Texture Viewer
Der Texture Viewer hat ein neues Range-Steuerelement, mit dem Sie sich durch die Werte von HDR-Texturen bewegen können, die weit über 1 hinausgehen. Passen Sie den Bereich an, um Details zu sehen, die nur in einem bestimmten Band sichtbar werden, etwa in den hellsten oder dunkelsten Bereichen einer Environment Map.

Mehrzeilige String-Eigenschaften
Sie können jetzt mehrzeilige Strings im Editor bearbeiten. Fügen Sie einfach das Attribut RenderPropertyAsTextBox zur Eigenschaft Ihrer Komponente, Ihres Behaviors oder Ihres Drawables hinzu:
[RenderPropertyAsTextBox(multiline: true, maxLength: 512, placeholder: "Custom text")]
public string DisplayTag { get; set; }
In Evergine Studio erscheint die Eigenschaft als mehrzeiliges Feld, mit einem Platzhalter, wenn sie leer ist, und einem Zeichenzähler, der die maximale Länge durchsetzt.

Alle Tabs schließen
Ein Rechtsklick auf einen Dokument-Tab zeigt Close, Close Others und Close All. Wie in Visual Studio wirken sie pro Fenster: Wenn Sie alles in einem schwebenden Fenster schließen, werden die Dokumente im Hauptfenster nicht geschlossen.

Profilwerte zurücksetzen
Jedes Profil (Windows, Android, Web …) kann Textureinstellungen und Shader-Direktiven überschreiben. Bisher gab es keinen einfachen Weg zurück, wenn Sie einen dieser Werte einmal geändert hatten. Profile haben jetzt eine Schaltfläche, um mit einem einzigen Klick die ursprünglichen Werte wiederherzustellen.
Und außerdem
- DirectX12 ist das Standard-Grafik-Backend. Evergine Studio startet mit DirectX12, und neue Projekte verwenden Windows (DirectX12) als Plattform. Bestehende Installationen wechseln beim Update zu DirectX12, sofern Sie nicht ausdrücklich Vulkan gewählt haben. DirectX11 ist weiterhin als optionale Plattform verfügbar.
- Tripo AI mit API v3. Tripo stellt seine v2-API ein, daher verwendet die Integration in Evergine Studio bereits v3.
- Launcher. Sie können mehrere Evergine-Versionen auf einmal deinstallieren – praktisch, wenn Sie häufig Nightly- und Preview-Builds ausprobieren –, und der Launcher zeigt seinen Fortschritt beim Laden besser an.
Jetzt ausprobieren
Alle diese Verbesserungen sind im neuen Evergine-Release verfügbar. Aktualisieren Sie über den Evergine Launcher, öffnen Sie Ihr Projekt und probieren Sie den Play Mode, die neue Auswahl und die Manipulatoren aus. Wenn Sie auf ein Problem stoßen oder Ideen zur Verbesserung von Evergine Studio haben, teilen Sie es uns in unserem GitHub-Repository mit.
