ich wurde gefragt, ob ich eine Anleitung erstellen könnte, die das Portieren von X3 Schiffen nach XRebirth/X4 beschreibt.
Nach langen Überlegen, habe ich mich nun dazu entschlossen eine Anleitung zu machen. Ich habe lange davor gescheut, so etwas zu erstellen, da es doch recht aufwändig ist.
Nun habe ich aber einge Erfahrung mit dem Portieren von Schiffen gesammelt, das ich mir das nun zutraue.
Ich selber nutze 3dsmax zum Erstellen der Schiffe für XR. Blender Nutzer müssen den Weg zum erfolgreichen Port also etwas anpassen. Der Vorgang sollte sich aber wohl nicht so stark vom 3dsmax unterscheiden. Eine Aussage darüber kann ich aber nicht machen, da ich kein Blender nutze.
Ich werde versuchen, die Anleitung sowohl in deutsch, als auch in englisch zu schreiben. Für den englischen Teil werde ich Googles Translator nutzen. Man möge also bitte bedenken, dass es wohl nicht grammatikalisch korrekt sein dürfte.
Wie der Konverter von arc_ richtig benutzt wird, setze ich hier vorraus.
Legen wir los.
Was wir zuallerst brauchen ist die Entscheidung welches Schiff wir portieren wollen. Ich habe für diese Anleitung das Terraner Schiff Maccana ausgewählt. Es wird ein L Schiff werden. Die Grösse werde ich an die der Balor aus XR anpassen. Sollte dann Richtung Fregattenklasse gehen.
Sobald wir uns nun das Schiff ausgesucht haben, werden für den Port drei Dinge benötigt.
Der X3 Editor 2
DBOX2
3dsmax
Wie der X3 Editor 2 und DBOX2 eingesetzt werden, werde ich hier nicht erläutern. Es gibt hier im Forum Anleitungen dafür.
Wir steigen nun mit dem eigentlichen Portieren bei 3dsmax ein:
Importiert erstmal die Balor nach 3dsmax:

Benutzt dazu den Autodesk Collada import.

Bei den Einstellungen stellt ihr bei Units auf Centimeter ein.

Es gibt auch den Opencollada import. Der importiert das Mesh allerdings in Zoll und ihr müsst die Größe anpassen. Bedeutet, nach dem Import müsst ihr die Scale funktion nutzen: Scalefaktor 254. Damit habt ihr dann wieder die korrekte Größe.
Der Vorteil bei dem Opencollada import ist, dass er nicht die Vertexcolor zerstört, der Autodesk Collada importer tut das. Ihr müsst danach die Vertexfarben neu machen. Das ist aber bei unserem Port des Schiffes nicht von Relevanz. Somit könnt ihr den Autodesk Collada importer nutzen.
Nach dem Import von Balor Schiff sollten wir folgendes Bild sehen:

Als nächstes importieren wir nun das X3 Schiff mittels des MaxScripts DBOX2.

Nach dem Import sollten wir folgendes Bild haben.

Jetzt blenden wir alle nicht benötigen Meshes aus und lassen nur den part_mainXcollision mesh anzeigen und unser X3 Schiff Mesh anzeigen. Das machen wir, damit wir später die ungefähre Größe unseres Schiffes festlegen können.
Das X3 Schiff versetzen wir in den part_mainXlod0 Node.

Nun drehen wir das X3 Schiff in Z um 180 Grad.

Und passen die Größe an die der Balor an.

Ich habe die Größe um 80% reduziert. Damit passt es ungefähr auf die Balor. hier kann jeder selbst entscheiden, wie groß sein Schiff werden soll.
Sobald wir mit der Größe zufrieden sind benutzen wir Reset XForm. Das X3 Schiff ist nun angepasst an die Größe und Ausrichtung der Balor.

Jetzt wählen wir alle Gruppen (Nodes) und meshes, die wir nicht mehr brauchen und löschen sie.

Danach sollte unsere Struktur so aussehen.

Jetzt fangen wir mit der Arbeit an und zerlegen das Schiff in ihre einzelnen Materialien.
Der arc_ Konverter kann mit Multimaterial nichts anfangen. Deswegen müssen wir unser Schiff in die einzelnen Material IDs zerlegen.
Wir wählen das Schiff an und klicken auf Editable Poly/Polygon. Hier suchen wir uns im Menu die Material IDs aus. Wenn wir uns durchklicken sehen wir, dass dieses Schiff aus ingesam 9 Texturen besteht.
Jede einzelne werden wir "detachen". Mir ist kein Wort dafür eingefallen


Wir öffnen den Material Slate Editor und klicken auf das Multimaterial unten. Es erscheinen nun alle Materialien im Editor.

Jetzt gehen wir wieder in die Material IDs übersicht, wählen hier die 1 an und gehen auf "detach".

Wir werden gefragt wie unser Objekt heißen soll und und ob es als Element oder Clone abgekoppelt werden soll. Hier ändern wir den Namen in "1" um und lassen Element und Clone leer.
Die Mesh wird nun gelöst vom Schiff und befindet sich oberhalb unserer Gruppen.

Wir velegen jetzt die 1 wieder in unsere Gruppe part_mainXlod0

Nun schauen wir in den Matrial Slate Editor und klicken auf die SM1 und hier auf die Diffuse Textur Platte. Hier können wir sehen wir unsere Textur heißt. Diesen Namen kopieren wir und bennen unsere "1" in folgenden Namen um:
terran_platesheet_white

Nun klicken wir wieder die SM1 und weisen unseren part_mainXlod0XterranXterran_platesheet_white die Textur zu.

So verfahren wir mit den übrigen 8 Material IDs, bis unser komplettes X3 Schiff in 9 verschiedene Texturen zerteilt wurde. Benennt am besten beim Lösen "Detach" die Objekte gleich mit der Nummer um. Also 2-9. Damit ist die Zuordnung der Texturen leichter.
Am Ende muß unsere Struktur so aussehen:

Nach dem Lösen ist nun unser altes X3 Objekt leer und kann gelöscht werden.
Wir können sehen, dass mehrere Texturen gleich sind. Das ist das Schöne an Terraner Schiffen. Sie haben oft gleiche Texturen und diese können miteinander kombiniert werden. Wenn man z.b. ein Argonenschiff portieren möchte, können es schon mal 20 verschiedene Texturen sein.
Und wir haben noch einen Vorteil bei dem Terraner Schiff. In XRebirth sind diese Texturen bereits als .dds Dateien enthalten. Wir müssen nur die material_library.xml erstellen. Die hat es leider nicht in die XRebirth material_library geschafft.
So, da wir mehrere gleiche Texturen haben, werden wir diese Objekte zusammen setzen. "collapse"

Das machen wir mit allen Objekten, die die gleiche Textur haben. Danach sollte unser Schiff auf 5 Objekte zusammenschrumpfen.

Nun werden wir unsere 5 Meshes in die richtige Benennung bringen.
Aus:
terran_platesheet_white
machen wir:
part_mainXlod0XterranXterran_platesheet_white
Das ist sehr wichtig, denn erst mit dieser Namensgebung kann unser Objekt später im Spiel erscheinen.
Wir ändern alle Namen mit dem Schema ab und sollten nun folgende Struktur haben:

Da wir einige Objekte zusammen geführt haben, entstanden wieder multimat Objekte. Damit kann das Spiel und der Konverter nicht umgehen. Diese müssen wir wieder mittels des Slate Editors zu Einzelobjekten ändern. Siehe dazu den Punkt mit dem Material Slate Editor.
Wir weisen dem Objekt wieder eine Textur zu.
Jetzt clonen wir unsere 5 Objekte als copy und versetzen die Kopien in den part_mainXlod1

Die Kopien müssen umbenannt werden. Im Node part_mainXlod1 sollte auch der Name part_mainXlod1XterranXterran_platesheet_white sein. Die Zahlen, die beim Kopieren ans Ende vom Namen von 3dsmax erstellt werden werden entfernt.
Nach erfolgtem Kopieren in alle Lods sollten wir folgende Struktur haben:

Die LODs "Level of Detail" legen fest ab welcher Entfernung die Objekte angezeigt werden. Während LOD3 sehr weit weg vom Spieler erscheint und somit nur wenig Details aufweisen muss, ist LOD0 die Detailreichste, da sie sehr nah am Spieler ist.
Deswegen werden wir die jeweiligen Objekte in den verschiedenen Lods zusammenfügen und später auch an Detailreichtum ändern.
Lod3 erscheint sehr weit weg. Somit brauchen wir hier eigentlich nur die Grundstuktur des Schiffs. Deswegen nehmen wir hier nur die part_mainXlod3XterranXterran_platesheet_white als das Hauptobjekt und setzen es mit dem anderen Objekten zusammen. "collapse"
Es ist aber sehr wichtig hier beim Auswählen die Reihenfolge zu beachten. Also zuerst part_mainXlod3XterranXterran_platesheet_white auswählen. Danach die anderen Objekte auswählen. Dann "collapse" anklicken. Die Objekte werden zusammengeführt, wobei das Objekt platesheet_white als Hauptobjekt fungiert und diese Textur übernommen wird.
Nachdem die Objekte zusammengesetzt wurden, sollte alles in der platesheet_white Textur erscheinen. Sollte dies nicht der Fall sein, dann müssen wir wieder die Textur über den Material Slate Editor zuweisen. Es darf kein Multimat Objekt entstehen.

Da wir das komplette Schiff nun als Objekt in einer Mesh zusammengeführt haben, können wir das auch für die collision mesh nutzen.
Wir kopieren einfach die mesh, versetzen sie unter den part_main Node und benennen sie um in:
part_mainXcollision
Nachdem wir das gemacht haben, sollte wir folgende Struktur erhalten:

Jetzt widmen wir uns noch der Lod2 und führen hier folgende meshes zusammen:
part_mainXlod2XterranXterran_techsheet
part_mainXlod2XterranXterran_windowsheet
part_mainXlod2XterranXterran_platesheet_dark
Wobei die techsheet Mesh die Obermesh wird und wir diese als erstes auswählen, danach die Anderen dazunehmen und auf "collapse" klicken. Nun sollten die anderen beiden Meshes die Textur von part_mainXlod2XterranXterran_techsheet übernehmen.
Nachdem das erledigt ist, sollten wir folgende Struktur haben:

Soweit so gut. Nun könnten wir das Schiff durch den Konverter jagen und in XRebirth würde es sogar schon auftauchen. Allerdings fehlen noch zwei Schritte.
Es fehlt die Mesh für das Wrack und für eine bessere Performence im Spiel werden wir einige Meshes in ihrer Komplexität reduzieren. Damit die Gameengine später nicht für weitentfernte Objekte unnötig rechnen muss und somit die Performance sinkt.
Das Wrack erstellen wir aus unserer part_mainXcollision Mesh.
Diese part_mainXcollision kopieren wir 2 mal und benennen die Kopien wie folgt:
part_main_wreckXcollision
part_main_wreckXlod0XgenericXgeneric_wreck
Bevor wir nun die Gruppen für das Wrack erstellen, werden wir erst die Meshes in Lod3,Lod2 und Lod1 optimieren. Lod0 lassen wir unangetastet. Wir reduzieren die Anzahl an Polygonen, Vertexen etc...
Ich nutze dazu den ProOptimizer Modifier. Es gibt bestimmt aber auch andere Wege die Polyanzahl zu reduzieren.
Fangen wir mit Lod3 an.
Da diese Lod am weitesten vom Spieler entfernt ist und man keine großen Details erkennnen kann, reduziere ich hier auf 60%. Lod2 auf 70% und Lod1 auf 80%.
Wir wählen also unser Lod3 Mesh und den Modifier ProOptimizer aus:

Hier selektieren wir noch folgende Punkte dazu.
Keep Textures
Keep UV Boundaries
Wenn möglich auch noch:
Keep Vertex Colors
Keep VC Boundaries
und klicken auf Calculate.
Nun wird die die Zahl berechnet und oben bei Vertex % tragen wir die 60%
ProOptimizer wird nun die Anzahl auf 60% senken.

Das wiederholen wir mit allen Meshes wie oben beschrieben.
Bei Lod2 alle Meshes mit 70% und Lod1 alle mit 80%.
Man sollte die % Zahl nicht zu niedrig ansetzen. Es könnten dann zu große Löcher im Mesh enstehen. Dieser Vorgang kann nicht einfach wieder Rückgängig gemacht werden. Hier also etwas vorsichtiger vorgehen. Lieber eine höhere Zahl eintragen.
Nachdem wir alle Meshes so reduziert haben, machen wir das auch noch mit den beiden part_main_wreckXcollision und
part_main_wreckXlod0XgenericXgeneric_wreck Meshes.
Da es sich hier um Wracks handelt, ist es egal, wenn da einige Löcher sind.
Diese Meshes versetzen wir nun in den Hauptnode.
Unter units_size_l_terran_maccana
So sollte die Struktur jetzt aussehen:

Jetzt müssen wir noch das Wrack gruppieren.
Das machen wir wie folgt:
part_main_wreckXlod0XgenericXgeneric_wreck auswählen und auf Group klicken.

Der Name der Gruppe muss heißen:
part_main_wreckXlod0
Jetzt erstellen wir noch eine Gruppe. Dazu wählen wir die part_main_wreckXlod0 Gruppe und die Mesh part_main_wreckXcollision aus und erstellen daraus die Gruppe:
part_main_wreck
Jetzt sollte unsere Struktur so aussehen:

Damit haben wir ein für XRebirth und auch X4 funktionierenden Port eines X3 Schiffes erstellt.
Jetzt exportieren wir das das Schiff noch als .dae aus 3dsmax mit dem Namen:
units_size_l_terran_maccana
Beim exportieren darauf achten, dass der Autodesk collada exporter ausgewählt ist

und die Units als Centimeter eingestellt sind.

Im 2ten Teil wollen wir uns dann der Erstellung einer funktionierenden Mod widmen und das erstellte Schiff ins Spiel bringen.
Grüsse,
SirFrancisDrake