Construction Set Original Morrowind Meshes exportieren?!

E

Ehemaliger Benutzer

Gast
Hallo, kaum hab ich ein Problem gelöst, taucht wieder ein Neues auf...
Ich möchte nun original Morrowind nif meshes (um genau zu sein, eine Schatulle) exportieren, um sie umzu textuieren und im Anschluss als einzigartiges Objekt zu re-exportieren. Dazu müsste ich sie aber erst einmal exportieren können. Nun die Frage: Wie muss ich das anstellen? Muss ich dazu in die Exe. rein (kann mir nicht vorstellen, dass die Meshes dort gespeichert wären)? Wo sind die "vanilla nif meshes, textures" und der ganze Kram gespeichert???

 
Oder auf der CD.

Data Files/Meshes/c (weil Container)

Ich hab mir die Meshes immer von der CD gesucht, geöffnet, retexturiert, als neues Objekt im MW-Verzeichnis gespeichert (Data Files/Meshes/c/WfE_schatulle_unique mal als Beispiel) und dann mittels CS eingefügt.

So hab ich ne Menge retexturiert.
 
  • Like
Reaktionen: 1 Person
Sehr richtig... aber nur, wenn man entweder eine Originalausgabe von Morrowind mit separater "Construction Set CD" hat, oder eine der wenigen Edition, bei der wirklich alles (Hauptspiel, Addons, CS, Editordaten) auf einer DVD ist. Bei vielen Versionen ist das aber nicht der Fall, die haben meines Wissens nach keine entpackten Editor Daten.

In dem Fall kommt man nur über die bsa-Daten an die Meshes. Dafür gibt es verschiedene Tools, z.B. diese:

BSAUnpackerMW von Timeslip (nur CLI Operation)
BSABrowser von Argent (mit GUI/Fenster)

Und niemals die kompletten Editordaten in das Spielverzeichnis entpacken/kopieren, das gibt Stress.
 
  • Like
Reaktionen: 1 Person
Also ich habe die GOTY (wie man auch auf meinem Profil erkennen kann). Daher glaube ich das bei mir die Dateien im Ordner CS\Install liegen, da ich keinen Morrowind Ordner habe.

Edit: So, hat alles geklappt! An dieser Stelle möchte ich mal etwas zu den TES Games sagen, da ich bisher noch nie gemodet habe und eigentlich nur Morrowind (fast komplett) und die Oblivion Mainquest durchgespielt habe, was auch schon Jahre her ist. Man kann ja viel über Bethesda meckern, von wegen Bucks und so. Aber einen so benutzerfreundlichen Editor, wie das Morrowind CS, habe ich noch nie gesehen!!! Der ist sogar fast besser, als der Warcraft 3 Editor. Wenn ich mich daran zurück erinnere wie schwer(umständlich) mir das Modden von WC1 und 2 gefallen ist. Oder man schaue sich nur mal den Karteneditor von Swat oder den Editor von Tomb Raider 5 an, bei dem ich es bis heute nicht geschafft habe wirklich durch zu steigen. Das einzige, was etwas schwerer ist bei MW ist das erstellen eigener Meshes mit Blender. Ich staune ja wirklich.....

EDIT II: Leider gibt es jetzt das Problem, dass meine Texturen beim Anpassen in der Mitte durch eine Diagonale getrennt werden. Wie kann ich das umgehen?
 
Zuletzt bearbeitet von einem Moderator:
Das wird wohl daran liegen das zwei aneinander liegende Dreiecke die gleiche Fläche an der Linie zwischen den Dreiecken gespiegelt zeigen. Oder das Mesh verwendet Ausschnitte der Textur. Das Einfachste in dem Fall ist die Original-Aufteilung von der Original-Textur zu übernehmen. Schau erst mal die Original-Textur an, vieleicht siehst Du daran wie.

Komplizierter ist Folgendes:
Lade Mesh mit NifSkope,
vergewissere Dich das im Menu View die beiden Optionen "Block List" (F2) und "Block Details" (F3) angekreuzt sind und Nichts anderes.
Suche das NiTriShape in der Block List, klicke auf "+"
klicke auf NiTriShapeData, in dem geöffneten Block
dann wende Dich den Block Details zu,
scrolle runter bis "+ Triangles",
klicke auf "+"
klicke das erste Dreieck, (vermutlich "Triangles Triangle 0 1 2" )
das gewählte Dreieck wird gelb angezeigt,
klicke die Dreiecke durch bis Du das mit der falsch gezeigten Fläche gefunden hast
merke Dir die drei Zahlen (0 wäre der erste Vertex, 1 der zweite etc.)
nun schau in den Block Details weiter hoch, da steht "+ UV-Sets"
klicke auf "+" (zwei mal UV-Sets aufmachen)
nun zähle in der Liste ab,
0 ist die erste "UV-Sets Texcoord"-Zeile usw.
da kannst Du die UV-Koordinaten ändern,
U steht für horizontal, V für Vertikal
UV 0.0 , 0.0 ist ganz links oben
UV 0.5 , 0.5 ist in der Mitte der Textur
UV 1.0 , 1.0 ist ganz rechts unten
wäre UV an einer Ecke 0.0, 0.0 und an der Nachbarecke 10.0, 7.5 so würde die Textur zwischen den beiden Punkten 10.0 mal waagerecht und 7.5 mal senkrecht wiederholt
wären die Werte negativ so würde die Textur einfach umgedreht aufgebracht,
die Differenz der beiden Zahlen vor dem Dezimalpunkt sagt also aus wie oft und in welcher Richtung die Textur aufgebracht wird.
die Ziffern hinter den Dezimalpunkten bestimmen die Textur-Position die an diesem Vertex gezeigt werden soll. Wie gesagt ganz links ist 0.000001 und ganz rechts 0.999999, die Werte 0.0 oder 1.0 würden die Linie zwischen dem letzten und dem ersten Pixel der Textur beschreiben, d.h. wenn Deine Textur links weiss und rechts rot ist und Du verwendest für Links oben 0.0, 0.0 und für rechts oben 1.0,0.0 dann hast Du am linken Rand einen roten Streifen und am rechten Rand einen weissen.
Wenn Du keine Rundum-Textur (z.B. an einer Säule) machst dann solltest Du mit Werten wie 0.003 bzw. 0.997 für Texturen mit 256 Pixel Seitenlänge, beginnen und enden. Je kleiner die Textur desto mehr macht es aus, daher 0.006 bzw. 0.994 bei 128 Pixel Seitenlänge usw.
 
Zuletzt bearbeitet:
Ok es lag an den Vertics (falls das diese Linien sind, die die Punkte verbinden). Cool das Ihr ne Lösung für das Problem gefunden habt, aber ich hab die Textur einfach mal gedreht und fertig. Ansonsten hätte ich das Objekt ummodelieren müsssen, was ich sicher nicht mache für eine einfache Box. Deine Lösung schaue ich mir aber mal an Rene, falls ich mal etwas größeres mit Vertikalen Linien mache, dass unbedingt im Spiel so dargestellt werden muss.

EDIT: Geil! Ich habe gerade ein völlig neues Objekt erstellt und mein Blender hat die Boundingbox erneut automatisch, ohne rechnen angebunden. Es ist wirklich zu einfach dieses Spiel zu modden. Man kann hier wirklich fast alles. Was jetzt noch fehlt, wäre eine Art Downloadbörse für meshes und Texturen, wie sie z.B. der "Hive Workshop" für WC3 Models ist, um die Arbeit zu erleichtern. Das wär schön....
 
Zuletzt bearbeitet von einem Moderator:
Ok es lag an den Vertics (falls das diese Linien sind, die die Punkte verbinden)....

Nein, die Vertizen/Vertexe sind Punkte die aus mehreren Werten bestehen. Gebräuchlich sind Vertizen die aus einem 3d-Vektor für Position des Punktes im Raum (X,Y und Z), einem 2d-Vektor für die Textur-Position (UV) und einem 3d-Vektor für Beleuchtung, auch Normals genannt bestehen, daher nX, nY und nZ.
Bei Face-Normals (harter Beleuchtung) bildet dieser Normal-Vektor immer eine Senkrechte zur sichtbaren Fläche, bei Vertex-Normals (weicher Beleuchtung) wird für den Punkt der Durchschnittswert aus allen Flächen, in denen die Position des Vertex als Eckpunkt verwendet wird, gebildet.
Ausserdem bestehen Vertizen manchmal noch aus Werten für Vertex-Colors (RGB oder RGBA), Vertex-Weights, Friction, Bounciness usw.
Jeder Vertex (Eckpunkt) hat also einige bestimmte Eigenschaften:
Position, Farbe, Beleuchtung, Texturposition und besteht somit aus mehreren Zahlen für jeden einzelnen dieser Werte.
Morrowind-Nifs verwenden einzelne Vektoren für jede Eigenschaft eines Vertex, daher sind Positionen, Normals und UV-Werte getrennt gelistet. Dies macht es auch möglich das in manchen Shapes Vertex-Colors verwendet werden können und in anderen nicht.

Und eine Dreiecks-Liste (niTriShapeData) besteht aus jeweils 3 Vertizen pro Dreieck wobei die Eckpunkte (=Vertizen) anhand ihres Index (=Seriennummer, beginnend mit 0 für den ersten) identifiziert werden. Somit "weiss" der Computer wo die Ecke liegt, was an der jeweiligen Ecke des Dreiecks zu zeigen ist und wie sie das Licht wiedergibt etc.
Auf diese Weise kann auch jeder Eckpunkt mehrfach verwendet werden

Die Reihenfolge der 3 Eckpunkte beschreibt gleichzeitig die sichtbare Seite. Willst Du ein Dreieck einfach umdrehen - also die sichtbare Seite wechseln, tausche einfach die zweite und dritte Index-Zahl:
"Triangles Triangle 0 1 2" wird zu "Triangles Triangle 0 2 1"
(danach muss man die Beleuchtung = Normals neu berechnen!)

Welche Linien Du oben ansprichst weiss ich nicht: Es gibt keine einzelnen Linien sondern nur Dreiecke (möglicherweise aber die Ansicht der Kanten, "wireframed")
 
Zuletzt bearbeitet:
Welche Linien Du oben ansprichst weiss ich nicht: Es gibt keine einzelnen Linien sondern nur Dreiecke (möglicherweise aber die Ansicht der Kanten, "wireframed")

Ähm... ja, die werd ich wohl meinen. Denn Zahlentrick für das Drehen des Dreiecks, merke ich mir. Ich hatte halt gedacht, man verbindet einfach 2 Punkte im Koordinatensystem und sobald man 4 verbindet, hat man eine Fläche. Das das Ganze aus räumlichen Dreiecken zusammengebaut, war mir nicht bekannt.

Alledings komme ich auch bei deinen Bezeichnungen durcheinander. Meintest du mit "Normal-Vektor" den Richtungsvektor aus der Mathematik (Normalenvektor) oder was? Nach deiner Beschreibung, hört sich das verdammt so an. Das würde auch erklären, wieso er mir immer automatisch die Kollisionen berechnen kann, da das Programm ja dann einfach nur die aktuelle Position der Vertizen des Objektes, der Bounding Box etc. im Raum abfragt und mir quasi alles vorkaut, was ich auch als angenehm empfinde, da ich andernfalls für jede Vertiz selbst nachrechnen müsste. Das mach mal bei 5 Objekten. Dann sitzt du aber bestimmt einen Tag länger am Projekt... und wehe man verechnet sich dann kann man alles nochmal überprüfen. Klingt iwie grausig ;)
 
...Meintest du mit "Normal-Vektor" den Richtungsvektor aus der Mathematik (Normalenvektor) oder was?...

So in etwa. Es ist ein Vektor mit einer Gesamtlänge von 1.0
Die Werte nX, nY und nZ beschreiben einen Punkt der nX, nY und nZ von der Position des Vertex entfernt liegt und eine gedachte Linie von einem beliebigen Punkt der Fläche +nX in X-Richtung, +nY in Y-Richtung, +nZ in Z-Richtung bildet eine Senkrechte zur sichtbaren Fläche, also auch zu den Eckpunkten (Vertex-Positionen) die ja zur Menge der Fläche gehören.
Dies gilt aber nur für Face-Normals. Resultat ist das jede Fläche das Licht genau in dieser Richtung am Hellsten (also 1.0 mit der Gesamthelligkeit multipliziert) wiedergibt und die Kanten zwischen den einzelnen Flächen dadurch optisch klar definiert sind. Hierbei haben alle 3 Vertizen die dem Dreieck (Face) angehören den gleichen Normal-Vektor - sind ja alle 3 Mitglied der gleichen Fläche bzw. beliebige Punkte daraus.

Es ist möglich daraus auch Kollisionswerte abzuleiten denn der Computer "kennt" dadurch die Lage und Richtung einer "abweisenden" Fläche aber das wird bei MW-Nifs seltener direkt verwendet. (z.B. für terrain_bc_Rock_xx)
Extra für Morrowind wurde das NetImmerseFile-Format um eine "RootCollisionNode" erweitert. An diesem Knoten hängen ein oder mehrere (im Spiel unsichtbare Shapes) welche auf die beschriebene Weise die Flächen festlegen mit denen Kollisionen stattfinden sollen. Vertizen in Kollisions-Shapes haben keine UV-Eigenschaft- zeigen also keine Textur (wozu auch?)
Im NifSkope musst Du "Render Hidden" einschalten um die Kollisionsflächen zu erkennen. Diese zeigen meistens ein sehr vereinfachtes Shape (Shape = Form, Gestalt), z.B. einen einfachen Zylinder um einen aufwändiger geformten Baumstamm. Der Spieler rennt nachher gegen den unsichtbaren Zylinder der ja viel weniger zu übeprüfende Kolllisions-Flächen hat, sieht aber den Baum.
Ein anderes schönes Beispiel für die RootCollisionNode ist ein in_Lava-mesh (siehe im CS Activators für File ID) oder terrain_bc_scum (static). Die sichtbare Fläche hat keine Kollision, die Fläche der RC-Node liegt unterhalb der sichtbaren. Ergebnis ist das man bis zur Hüfte drinsteckt und auf dem darunter liegenden unsichtbaren Boden läuft.

Die "Bounding Box" ("Begrenzungs-Kiste") hingegen ist der (im Spiel unsichtbare) Rahmen den man im CS in farbigen Linien um ein angeklicktes 3d-Objekt sieht. Die beschreibt nur an welcher Position in der Welt wieviel Raum von diesem Objekt belegt ist so das man dieses anvisieren/anklicken kann. Sie hat nichts mit der Kollision zu tun.

PS.: NifSkope hat eine Funktion welche die Normals errechnet eingebaut. Rechtsklick auf NiTriShapeData, wähle Mesh\Face Normals.
 
Zuletzt bearbeitet: