View Single Post
Old 11-07-09, 18:09   #2
XNAaraL
Professor
 
XNAaraL's Avatar
 
Join Date: Apr 2009
Location: The worthwhile problems are the U can really solve, the ones U can really contribute something to
Posts: 3,172
Default Modding with XNA Lara

Necessary tools to create MOD's:


Important:
You need Blender version 2.49b and Python 2.6.2 !!!
If you want to use Blender 2.59 then you need also Blender 2.49b because at this time, no .mesh.ascii exporter which support 2.59 exists. AtlantiB has make a tutorial here.

Converter and Publisher for the new XNALara version 9.8.1 [IMG]http://i34.************/dqoutl.gif[/IMG]
Old tools and blender scripts here available. Post only this Links! No direct links to the tools are allowed


================================================== =============================================
Copyright

All my programs tools and scripts are removed on this forum by myself. Those who do not accept the wishes of the manufacturer, can not demand support from the manufacturer.
Any unauthorized reupload, reproduction, redistribution, remix, tweak, and build upon is prohibited.

Willful copyright infringement can be a federal misdemeanor, punishable!


The law, established authors' rights to control the reproduction of their work after it was published. It also created a term of protection of 28 years from the date of publication. After that time, an author's work entered the public domain, meaning that anyone could print or distribute it without obtaining the author's permission or paying a royalty, or fee, to the author.

german
================================================== =============================================

Installation:
  • Blender and Python has a Installer.
  • GeMeshAsciiToBin.exe, AddCameraTargets.exe and ModPublisher.exe : C:\Program Files\Converter folder
  • ImportMeshAsciiExtended.py, ExportMeshAsciiExtended.py and ImportXNALaraPose: C:\Documents and Settings\YourName\Application Data\Blender Foundation\Blender\.blender\scripts on Windos XP and
    users\app data\roaming\Blender Foundation\.Blender\scripts.- for Vista and W7.

Hint:
By default, Windows 7 hides important files and folders from view. Instructions Show hidden files and folders in Windows 7 with these steps




Table of content with all basic tutorials here !

If you want to use my new Generic_Item Interface (highly recommended), then ignore all tutorials before here!


Some english tutorials with notepad:
Make combinations:
here
Make clothes shiny:
here.

================ German language ============================
Danke Darkboy91

Als erstes eine Bitte: Verbessert mein Deutsch. Ich lerne gerne dazu.

Ich habe gerade eine Information von COVI gelesen.
Dies ist die italienische Seite für MOD's und Posen auf Covis Website:
http://www.tombraideradventure.it/vi...ra_modding.asp

Sieht gut aus und ist einfach zu verstehen.

Einen Teil meiner Modelle findet ihr hier: http://www.tombraiderforums.com/show...&postcount=444
oder hier:http://www.tombraiderforums.com/show...&postcount=717

Wer sich ernsthaft mit MOD's beschäftigen will, der benötigt für XNA Lara viel Zeit.
An Software benötigt ihr:
Die Konverter Tools GeMeshBinToAscii und GeMeshAsciiToBin !
Den Blender Importer und Exporter für das XNALara Format ( Eine Erweiterung der Scripte von sephirostoy mit Unterstützung von Knochen
Das Tool AddCameraTargets.
Die aktuellen Download Links sind oben im englischem Teil

Und den 3D-Editor Blender in der Version 2.49a
Python in der Version 2.6 oder höher

Nützlich sind:
[IMG]http://i34.************/dqoutl.gif[/IMG] AutoTexture [IMG]http://i34.************/dqoutl.gif[/IMG] Die Beschreibung ist hier.

Einen guten MACRO-Editor (notfalls notepad).
UnpackTRU von DUSAN (derzeit Version 3.9 aktuelle Version hier).

Mein Dank geht an DUSAN für XNA Lara und für das Entschlüsseln der bigfiles von TRU (für mich die größte Leistung von DUSAN).

Ich habe beschlossen mit den Grundlagen von 3D Modellen zu beginnen. Für ganz eilige Zeitgenossen zuerst ein Kochrezept um neue Modelle für XNA Lara bereitzustellen:
[IMG]http://i25.************/2w33ytf.jpg[/IMG]
7FC5A9B5_0_1A82_supplies.zip
Morgen mehr (und genauer), meine Zeit geht zu Ende.
1. Mit UnpackTRU den Hascode 7FC5A9B5 suchen und als model.mesh.ascii inclusiv der Texturen speichern.
2. model.mesh.ascii mit notepad öffnen.
3. excalibur.mesh von DUSAN mit MeshAsciiToBin wandeln (rechte Maustaste - öffnen mit).
4. Die so erzeugte excalibur.mesh.ascii Datei mit notepad öffnen.
5. Diese Zeilen von excalibur.mesh.ascii
1 # bones
excalibur
-1 # parent index
0 0 0
1 # meshes
excalibur
1 # uv layers
2 # textures
data\excalibur\excalibur_diffuse.png
0 # uv layer index
data\excalibur\excalibur_bump.png
0 # uv layer index

markieren und mit Strg-C in den Puffer kopieren.
6. Diese Zeilen von model.mesh.ascii
0 # bones
1 # meshes
Mesh001
1 # uv layers
1 # textures
x001A.dds
0 # uv layer index
markieren und mit Strg-V durch die Daten von excalibur ersetzen.
7. Die Zeile data\excalibur\excalibur_diffuse.png durch x001A.dds ersetzen und die Zeile data\excalibur\excalibur_bump.png durch x001F.dds ersetzen.
8. model.mesh.ascii speichern und mit MeshAsciiToBin wandeln. Danach die so erzeugte Datei model.mesh in excalibur.mesh umbennen.
9. Das ganze Verzeichniss nach XNAlara\data kopieren.
10. Testen

================================================== ==

Einige haben bereits bemerkt, dass UnpackTRU die Daten auch im Object-Format speichern kann. Und XNA Lara kann .obj Dateien ohne Probleme laden. Also was sollte das letzte Beispiel?
Die Antwort ist: Mit der oben beschriebenen Methode können wir auch bewegliche Modelle (mit Knochen) für XNA Lara bereitstellen. Ich habe mir für die nächste Stunde vorgenommen, ein "poseable" Modell aus dem Spiel zu extrahieren und Morgen ein völlig neues Modell zu erzeugen.

[IMG]http://i32.************/28lf9e8.jpg[/IMG]
0E6D5746_0_1FC1_tauchausruestung.zip

1a. Mit Start->Systemsteuerung->Datums-,Zeit-Regionaleinstellungen->Format_für_Zahlen->Englisch/USA wählen.
1b. Wie oben beschrieben mit UnpackTRU den Hascode 0E6D5746 entpacken.
[IMG]http://i31.************/wbsaxv.jpg[/IMG]
2. Die Datei model.mesh.ascii mit notepad öffnen.
3. Mit Suchen und Ersetzen Mesh00 (Nullen) durch mesh ersetzen.
4. Nach .dds suchen und die Anzahl der Texturen jeweils auf 2 erhöhen.
Aus:
1 # textures
x003.dds
0 # uv layer index

wir also zum Beispiel
2 # textures
x003A.dds
0 # uv layer index
x003E.dds
0 # uv layer index

5. Die Datei als motorcycle.mesh.ascii abspeichern.
6. Mit MeshAsciiToBin wandeln.
7. Das ganze Verzeichniss nach XNALara\data kopieren.
8. Testen (und nicht so laut fluchen) Entweder sind die Character unsichtbar oder völlig verzerrt.

Was ist passiert? Wenn ihr in Windows nicht die Landesumgebung (?) auf US eingestellt hattet, dann speichert UnpackTRU die Fließkommazahlen mit einem Punkt (0.01) ab. Leider ist MeshAsciiToBin internationalisiert und erwartet in der deutschen Spracheinstellung Kommazahlen mit einem Komma (0,01).
Lösung:
a) DUSAN fragen.
b) Die Windows Einstellungen ändern (Ich habe leider keine Ahnung wie - OK gelöst siehe: Punkt 1a).
c) Mit einem guten Editor (abschaltbare UNDO Funktion) alle Punkte in motorcycle.mesh.ascii in Kommas wandeln und ,dds dann wieder mit Suchen und Ersetzen nach .dds wandeln. Danach bei Punkt 6 weitermachen.
In dem oben angegeben Download ist die gewandelte Datei ebenfalls enthalten.
d) GeMeshAsciiToBin verwenden. Dieser Konverter wurde von mir extra erstellt, um dieses Problem zu loesen.

Nach diesen Kochrezepten nun die Grundlagen warum wir dies oder jenes tun. Und was wir tun. Aber heute nicht mehr.

[IMG]http://i30.************/2j5z2i0.jpg[/IMG]
DemoMesh1.zip
1 # bones
excalibur
-1 # parent index
0.00000000 0.00000000 0.00000000
1 # meshes
excalibur
1 # uv layers
2 # textures
part1_diffuse.png
0 # uv layer index
part1_bump.png
0 # uv layer index
4 # vertices
-0.01 0.0 -0.0 # =========== 0 Erste Ecke
-0.84 -0.32 -0.44
255 255 255 255
0.0 1.0
0 0 0 0
1.0 0 0 0
0.01 0.0 -0.0 # =========== 1 Zweite Ecke
0.84 -0.32 -0.44
255 255 255 255
1.0 1.0
0 0 0 0
1.0 0 0 0
0.0 0.0 0.02 # =========== 2 Dritte Ecke
0.0 -1.0 -0.0
255 255 255 255
0.5 0.0
0 0 0 0
1.0 0 0 0
0.0 0.02 0.01 # =========== 3 Vierte Ecke
0.0 1 -0.024
255 255 255 255
0.5 0.5
0 0 0 0
1.0 0 0 0
4 # faces
0 1 2
0 1 3
0 2 3
1 2 3

Hallo,
nachdem wir im Ersten Teil ein starres Modell und im Zweiten Teil ein bewegliches Modell aus dem Spiel extrahiert und für XNA Lara bereitgestellt haben, machen wir dies im 3. und 4. Teil mit einem neuen Modell.
Im nächsten Abschnitt werden wir dann eine Modifikation (MOD) angehen. Das Ergebniss sieht dann so aus wie SpiderGirl: : http://www.tombraiderforums.com/show...&postcount=717

Jedes Objekt in XNA besteht aus kleinen Dreiecken. Unser kleines Modell ist ein Tetrapak. Also eine Pyramide mit einem Dreieck als Grundfläche.
Die Grundfläche hat also 3 Eckpunkte und einen weiteren Eckpunkt für die Spitze. Dies ist oben mit der Zeile
4 # vertices
beschrieben. Ein Vertex (plural Vertices) ist nichts anderes als ein 3D-Punkt mit weiteren Materialeigenschaften.
Als nächsten kommen in dem .mesh Format (Ich nenne dies nun DOF für DusansOwnFormat) die Beschreibung der 4 Vertices.
Zuerst die 3D Koordinaten
-0.01 0.0 -0.0
Dies sind die X, Y und Z-Koordinaten für den Punkt. In X-Richtung (auf dem Bildschirm nach rechts , von Lara aus gesehen nach links) gehen die positiven X-Werte, positive Y-Werte gehen nach oben, positive Z-Werte ragen aus dem Bildschir heraus (vpn Lara aus gesehen: vorne). Also ist der erste Punkt 0.01 Meter (Lara ist etwas über 1,6 Meter gross) links vom Bildschirm Mittelpunkt.
Die nächste Zeile
-0.84 -0.32 -0.44
beschreibt die sogenannten Normale des Punktes. In dem Bild oben wird die vordere Kante heller dargestellt, weil die Lichtquelle von vorne kommt. Aber was ist bei einem Punkt Vorne ? Dies wird in DOF durch einen weiteren Punkt beschrieben. Die Verbindung der beiden Punkte ist ein Vektor, also ein kleiner Pfeil welcher nach vorne zeigt. Die sogenannte Normale. In dem Bild unten werden diese gezeigt:
[IMG]http://i32.************/nxwg36.jpg[/IMG]
Ich habe sie für das Tetrapack nach Gefühl gesetzt, besser ist es die Normale durch einen 3D-Editor (z.B. blender) berechnen zu lassen. Aber weiter. Die 3. Zeile legt die Farbe fest. Die Werte sind Rot, Grün, Blau und Transparent (Alpha). Für XNA Lara haben Sie keine Bedeutung.
255 255 255 255
Weiss und undurchsichtig (opak). Nach der Farbe kommen die uv Koordinaten. Unser aus mit Dreiecken verbunden Punkte (Drahtgitter Modell oder im englichen wire frame bzw. MESH) wird später mit einem Bild (texture) überzogen. Die uv Koordinate bestimmt nun welche Stelle des Bildes auf diesen Punkt aufgespannt wird. Die obere-linke Ecke des Bildes hat die Koordinate 0.0 0.0, rechts-oben 1.0 0.0, links-unten 0.0 1.0 und rechts-unten 1.0 1.0
0.0 1.0
Also kommt auf unseren ersten 3D Punkt die linke-untere Ecke der texture zu liegen.
Die beiden folgenden Zeilen beschreiben wie sich dieser 3D-Punkt mit den Knochen (bones) des Modells bewegt. Jede 3D-Punkt muss mit 4 Knochen verbunden werden. Die Knochen des Modells werden fortlaufend durchnummeriert. Die Zählung beginnt bei 0 für den 1. Knochen.
0 0 0 0
Der 3D-Punkt ist also 4 mal mit dem Knochen 0 (mit dem Namen excalibur) verbunden. Nun kommen die weights (Gewichtung):
1.0 0 0 0
Für jeden der 4 Knochen wird angegeben wie exakt der Punkt dem Knochen folgt (genaueres bei SuperGirl). 1.0 bedeutet diese 3D-Punkt folgt ganz exakt dem Knochen. Die weiteren 3 Werte habe ich auf 0 gesetzt. Sie folgen dem Knochen gar nicht. Die Summe der Knochengewichte muss exact 1 sein (Normalisiert).
Und so geht die Beschreibung für jeden der 4 3D-Punkte weiter.

4 # faces
Die 3D-Punkte werden durch 4 Dreiecke verbunden. Also folgen nun vier Zeilen mit den Nummern der 3 Eckpunkte (Zählung der Punkte beginnt wieder mit null).
0 1 2
Der Erste, Zweite und Dritte 3D-Punkt wird mit einem Dreieck verbunden. Und so weiter für alle Dreiecke.
Kein Mensch (ausser XNAaraL) wird für Lara 30000 Punkte von Hand setzen. Dies erledigen wir ganz einfach mit blender.

OK meine Zeit ist vorbei. Morgen den Rest, dann das ganze mit 5 Zeilen beweglich machen, und (hoffentlich liefert Morgen DUSAN Version 7.1 aus) können wir in wenigen Minuten usere ersten MOD's erstellen. Einen Umhang für Lara (beweglich). Grössere B...izeps. NoGears usw.

Wir hatten in der 4. Zeile der Vertex Gruppe die uv-Koordinaten 0.0 1.0 angegeben. Was nun noch fehlt, ist die Angabe woher die Texture (das Bild) kommt. Deshalb steht in der ASCII Version vom DOF über der Zeile 4 # vertices noch diese Information:
1 # meshes
excalibur
1 # uv layers
2 # textures
part1_diffuse.png
0 # uv layer index
part1_bump.png
0 # uv layer index

Unser kleines Modell hat genau eine Vertexgruppe "1 # meshes". Jede "Vertex Gruppe" oder "Material Gruppe" (DUSAN bezeichnet diese im DOF als meshes) besteht aus 3D-Punkten mit gleichen Render Eigenschaften (Effekte - zum Beispiel Transparent, mit BUMP-Map usw.).
Diese Eigenschaften werden in XNA Lara bis Version 7.0 anhand des Mesh-Namens (excalibur im 1. und 3. Beispiel, mesh1 bis mesh6 im 2. Beispiel) festgelegt. Hier also excalibur mit der Eigenschaft: Zwei Texturen, die erste mit Details, die zweite als BUMP-Map (Struktur). Wir hatten bei jedem 3D-Punkt nur jeweils eine Zeile mit den uv-Koordinaten angegeben (0.0 1.0). Dies müssen wir im DOF bekanntgeben mit der Zeile: 1 # uv layers. Obwohl der Mesh-Name excalibur genau 2 Texturen erwartet (sonst stürzt XNA Lara ab), muss dies im DOF mit 2 # textures angegeben werden. Die Dateinamen der Texturen und die benützen uv-Layer stehen jeweils in den nächsten 2 Zeilen:
part1_diffuse.png
0 # uv layer index


Hiermit ist die Oberfläche unseres Modells beschrieben und es fehlt nur noch eine Kleinigkeit. Wir haben (und mussten dies auch tun) jeden 3D-Punkt mit Knochen verbunden. Alle mit dem ersten Knochen (Index 0)! Also benötigen wir einen Knochen. Dies steht im DOF ganz am Anfang der Datei:
1 # bones
excalibur
-1 # parent index
0.00000000 0.00000000 0.00000000

Wir haben einen Knochen (1 # bones). Er ist mit keinem anderen Knochen verbunden (-1 # parent index). Dieser Knochen bekommt im "Control Window"von XNA Lara den Namen excalibur. Und seine 3D-Koordinate ist der Bildschirm Mittelpunkt. X=0, Y=0, Z=0.

Dies ist nun die komplette Beschreibung des DOf .mesh.ascii !
Hier noch das Beispiel mit einer beweglichen Klappe. Ein Knochen und drei weiter Punkt (vertices), welche mit diesem Verbunden sind. Dies ist alles!

Last edited by XNAaraL; 17-12-12 at 17:53. Reason: Intellectual Property Office - Automatic right
XNAaraL is offline   Reply With Quote