C++ Wie funktioniert InvBinMatrix? Wie kann man am besten damit arbeiten?

Timo3681

Newbie
Registriert
Apr. 2017
Beiträge
2
Ich Spiele No man´s Sky und wollte gerne neue Tiere in No man´s Sky haben. Probiere schon seit Wochen an der Datei BIRD.GEOMETRY.exml herum, aber es klappt nicht, da die Flügel von dem neuen Vogel nicht gleich aussehen. Bei einen Vogel müssen die beiden Flügel immer gleich aussehen, wenn ich mit dem Ergebnis zufrieden bin, wollte ich das mit allen anderen Geometry.BBIN.PC Dateien machen.

http://www.mediafire.com/file/9kiiqa9kh4ag0k6/BIRD.GEOMETRY.exml

Ein Auszug aus der Datei BIRD.GEOMETRY.exml

<?xml version="1.0" encoding="utf-8"?>
<Data template="TkGeometryData">
<Property name="VertexCount" value="9030" />
<Property name="IndexCount" value="42552" />
<Property name="Indices16Bit" value="1" />
<Property name="JointBindings">
<Property value="TkJointBindingData.xml">
<Property name="InvBindMatrix">
<Property value="1" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="1" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="1" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="1" />
</Property>
<Property name="BindTranslate">
<Property value="-1.69474E+38" />
<Property value="-1.69474E+38" />
<Property value="-1.69474E+38" />
</Property>
<Property name="BindRotate">
<Property value="-1.69474E+38" />
<Property value="-1.69474E+38" />
<Property value="-1.69474E+38" />
<Property value="-1.69474E+38" />
</Property>
<Property name="BindScale">
<Property value="-1.69474E+38" />
<Property value="-1.69474E+38" />
<Property value="-1.69474E+38" />
</Property>
</Property>
<Property value="TkJointBindingData.xml">
<Property name="InvBindMatrix">
<Property value="0" />
<Property value="-0.008140798" />
<Property value="-0.9999669" />
<Property value="0" />
<Property value="0" />
<Property value="0.9999669" />
<Property value="-0.008140798" />
<Property value="0" />
<Property value="1" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="0.0001637459" />
<Property value="-0.0758869" />
<Property value="0.001460887" />
<Property value="1" />
</Property>
<Property name="BindTranslate">
<Property value="0.0008430592" />
<Property value="0.07589628" />
<Property value="-0.0001637459" />
</Property>
<Property name="BindRotate">
<Property value="0.00287823" />
<Property value="-0.7071009" />
<Property value="0.00287823" />
<Property value="0.7071009" />
</Property>
<Property name="BindScale">
<Property value="1" />
<Property value="1" />
<Property value="1" />
</Property>
</Property>

Weiß jemand wie InvBindMatrix funktioniert? Was muss man da beachten? Braucht man ein extra Programm dafür? Wenn ja, gibt es ein kostenloses Programm dafür? Wofür stehen die 16 Positionen? Was ist wenn es mehrere Bereiche mit <Property name="InvBindMatrix"> gibt, gibt es da irgendwelche Verbindungen die man beachten muss, damit die 3D Modelle nicht so Abstrakt aussehen? Wenn das 3D Modell z.B. ein Tier ist, soll es auch ein Tier bleiben, wenn ich irgendwelche Werte verändere.
Gibt es beim InvBindMatrix bestimmte Regeln die man beachten muss?
In BIRD.GEOMETRY.exml gibt es 24 Bereiche mit InvBindMatrix.
 
Das hat mit Programmierung wenig zu tun und mit C++ schon mal gar nichts, das ist XML - und wofür die Matrix da verwendet wird, kann man ohne Dokumentation für das Spiel selbst auch nur raten. Ich würde mal in einem Forum zu dem Spiel fra.... ach warte.

Ein Anfang wäre aber vielleicht, die Matrix auf die Einheitsmatrix zu setzen (1 0 0 0 | 0 1 0 0 | 0 0 1 0 | 0 0 0 1) und dann einfach mal schauen, was passiert. Eine Einheitsmatrix macht nämlich so ziemlich gar nichts.

Edit: Wobei deine aktuelle Matrix, wenn sie zur Transformation von irgendwas verwendet wird, auch nicht viel mehr macht als Koordinaten zu tauschen.
 
Zuletzt bearbeitet:
https://www.google.de/search?rlz=1C...1c.1.64.serp..12.2.320...0j0i67k1.mKWBf4QI3mM

^ Für die Prozedurale Generation in No man´s Sky wurde auch eine Telefonnummer verwendet, kann man für die Matrizen auch Telefonnummern, Lottozahlen, Bundesliga Ergebnisse usw. verwenden, um daraus eine Matrix zu machen? Wenn man mehrere Bereiche mit InvBindMatrix hat und miteinander zusammenhängen, wie kann man es so machen das bestimmte Positionen in bestimmten Bereichen als 0 oder als 1 angezeigt werden?

Das nach einer Berechnung so aussieht:

Beispiel:

<Property value="TkJointBindingData.xml">
<Property name="InvBindMatrix">
<Property value="0" />
<Property value="-0.2265534" />
<Property value="0.9739987" />
<Property value="0" />
<Property value="0" />
<Property value="0.9739988" />
<Property value="0.2265534" />
<Property value="0" />
<Property value="-1" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="-0.001097853" />
<Property value="-0.920565" />
<Property value="-0.4049507" />
<Property value="1" />

und in der nächsten Berechnung dann so:

<Property value="TkJointBindingData.xml">
<Property name="InvBindMatrix">
<Property value="-1" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="1.039065" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="0" />
<Property value="-1" />
<Property value="0" />
<Property value="0" />
<Property value="-1.112741" />
<Property value="-0.1290692" />
<Property value="1" />

Position 2 und 3 sind dann eine 0.
 
Zurück
Oben