Hallo Leute!
Da ich mich jetzt schon des öfteren mit dem Skalieren von Mods herumgeärgert habe, bin ich das Thema mal von einer anderen Richtung angegangen.
Da die Modelldaten ja quasi offen als XML-Daten (i3D-Datei) vorliegen, habe ich dort die Vertices und alles was einen Translationswert hat mal manipuliert, sprich die Werte mit einem Faktor x multipliziert.
Da dies bei einfachen Modellen (Würfel) ohne Probleme geklappt hat, habe ich mich auf die Suche nach einer Möglichkeit gemacht, um dies bei umfangreichen Modellen automatisiert zu erledigen.
Geendet hat diese Suche bei einem sehr leistungsfähigen XML-Editor namens foxe (firstobject XML Editor). Dieser ist kostenlos und hat ein unschlagbares Feature: er ist programmierbar!
Mit der freundlichen Unterstützung des Authors habe ich ein paar Funktionen zusammengeklöppelt, die folgende Daten skalieren:
- p-Attribute der v-Elemente (Vertices, Datei: modname.i3D)
- translation-Attribute aller Elemente die dieses Attribut haben (Datei: modname.i3D)
- density-Attribute (Gewicht wird der Verkleinerung angepasst oder bleibt wie vorher, Datei: modname.i3D)
- radius-Attribute der wheel-Elemente (Datei: modname.xml)
- centerOfMass-Attribut der component1 (Datei: modname.xml)
Ich danke den Leuten, die mir einige Mods skaliert haben und ihr Feedback abgegeben haben.
Suche immer noch Infos, was mit den Normals-Einträgen (n) bei den Vertices passieren muss: auch skalieren? Und was bedeuten die Einträge t0 bis t16?
Jegliche Hinweise und Verbesserungen sind willkommen.
Ihr benötigt:
einen entpackten Mod (von dem ihr natürlich eine Sicherungskopie macht)
Den XML-Editor foxe: http://www.firstobject.com/dn_editor.htm
Mein angehängtes Script modscale.foal (Zip entpacken)
Anleitung:
- foxe installieren
- modname.i3d in foxe öffnen
- modname.xml in foxe öffnen
- modscale.foal in foxe öffnen
- im unteren Bereich der modscale.foal können einige Funktionen beeinflusst werden. Erklärung siehe unten*
- Taste F9 drücken
- Datei wählen -> OK
- bei der i3D kann es jetzt etwas dauern, wenn der Cursor wieder blinkt ist er fertig
- im Ausgabefenster (unten) rechtsklick -> Open in document window
- Datei entsprechend abspeichern
- im Menü "Window" wieder zur modscale.foal wechseln
- wieder F9 drücken
- diesmal die andere Datei wählen und weiter wie bei der Ersten
- Testen im GE oder gleich im Game
*Update 20.02.2012 v0.3:
Es können jetzt getrennte Werte für X,Y,Z verwendet werden. Lasst euch aber gesagt sein, dass bei Fahrzeugen Eierreifen entstehen, wenn unterschiedliche Werte für Y (Höhe) und Z (Länge) verwendet werden. Idealerweise skaliert man einen Mod, dessen Proportionen stimmen. Ich halte uneinheitliches Skalieren für Pfusch!
Durch das Skalieren ändert sich das Gewicht des Mods drastisch (wird leichter). Um genau zu sein wird es um scaleFactor3 leichter. Um dem entgegen zu wirken, gibt es nun zwei Möglichkeiten, was mit dem Gewicht passieren soll. Entweder es wird um den scaleFactorD leichter, oder es bleibt so wie vor der Skalierung. scaleFactorD MUSS immer angegeben werden und sollte der Modellskalierung entsprechen.
Mit der Variable densityMethod wird eingestellt, wie gerechnet wird.
modname.xml:
Die Skalierung des Reifenradius verwendet den Wert scaleFactorY
Wird das Script auf die xml angewendet, sollten grundsätzlich alle Skalierungsfaktoren einheitlich sein.
Durch den kleineren Reifenumfang werden Fahrzeuge langsamer. Das kann in der XML durch anpassen der Motordaten ausgeglichen werden. Eine genauere Anleitung hierzu folgt evtl. noch.
Hier das ganze als Video-Tutorial. Ein großes Merci an schwabentutorials aka modelleicher
English translation:
[expander]What you need:
an unpacked mod (keep a copy somewhere)
the XML-Editor foxe: www.firstobject.com/dn_editor.htm
my script modscale.foal (unpack zip)
Instructions:
- install foxe
- open modname.i3d in foxe
- open modname.xml in foxe
- open modscale.foal in foxe
- at the end of the modscale.foal you can change some values, like the scale factor. See description below*
- Press key F9
- choose file to convert -> OK
- converting the i3D it may take up to a few minutes; wait until the output window appears or the cursor starts blinking
- in the output window (normally at the bottom) right klick your mouse -> Open in document window
- save the converted file, you may overwrite the original directly
- in the "Window"-menu switch back to modscale.foal
- press key F9 again
- choose the other file this time and proceed as with the first
- test in GE or directly in the game
*Update 20.02.2012 v0.3:
It is possible to use different values for scaling X,Y,Z. Be aware that unequal values on Y (height) and Z (length) will result in oval tyres!
It´s best practice to scale mods wich already have correct proportions.
To compensate the huge weight loss due to scaling (weight*scaleFactor3) you have two options. 1: Reduce the weight by the same percentage value as the scaling or leave it like before scaling.
scaleFactorD MUST be set and should correspond the scale factor.
The variable densityMethod is used to choose the weight mode.
modname.xml:
Scaling of the wheel radius uses scaleFactorY.
If you use the script for converting the modname.xml please be sure to use equal scale factors.
Because of the smaller wheel size vehicles will get slower. This may be changed in the XML->motor rpm. A more detailed instruction may follow.[/expander]