Einfache Möglichkeit, mathutils.Matrix Vector als Tupel (oder Liste) für json zu formatieren?
Hallo, ich mache gerade ein einfaches Pose-Preset-System mit json für bestimmte Armaturen. Es beschreibt nur nicht getriebene Knochenmatrix als json (Export), importiert und beantragt Pose-Knochen, wenn sich im Kontextarmatur der gleichnamige Knochen befindet.
Gibt es dann eine gute Formatfunktion, die Blender Matrix oder Vector als Tupul für JSON konvertiert? Wenn ich eine Matrix von Knochen bekomme, kehre ich so zurück
Matrix ((((1,0, 0,0, 0,0, 0,0)), (0,0, 1,0, 0,0, 0,0), (0,0, 0,0, 1,0, 0,0), (0,0, 0,0, 0,0, 1,0)))
dann ,, mat_z [0] Vektorvektor zurückgeben ((1.0, 0.0, 0.0, 0.0))
Ich weiß, ich kann jede Komponente teilen und dann als Tupul für jedes 4 * 4-Element komponieren (oder eine Funktion erstellen, die Matrix-Avlue als Tupul konvertiert). Aber ich denke, wenn ich einen einfachen Schritt verpasse, welches bpy oder Python wird bereits angeboten? oder Python JSON Modul automatisch formatieren, ohne Tupul zu konvertieren? (Obwohl ich das nicht vermute)
Antworten
Listenverständnis
Kann mit Listenverständnis durchgeführt werden, um mit jeder M x N-Matrix zu arbeiten
Beispiel unten als Liste von Zeilen und als Liste von Spalten.
>>> M = Matrix.Translation((1, 2, 4))
>>> M
Matrix(((1.0, 0.0, 0.0, 1.0),
(0.0, 1.0, 0.0, 2.0),
(0.0, 0.0, 1.0, 4.0),
(0.0, 0.0, 0.0, 1.0)))
>>> [list(row) for row in M]
[[1.0, 0.0, 0.0, 1.0], [0.0, 1.0, 0.0, 2.0], [0.0, 0.0, 1.0, 4.0], [0.0, 0.0, 0.0, 1.0]]
>>> [list(col) for col in M.col]
[[1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0], [1.0, 2.0, 4.0, 1.0]]
Ah, es war einfach. Ich brauche nur tuple () oder list () (für list), um Matrix, Vector zu konvertieren
Wenn ich hoffe, 4 * 4 Matrix mat_z in Listentyp mat_list konvertieren zu können
mat_list = [Liste (mat_z [0], Liste (mat_z [1]), Liste (mat_z [2]), Liste (mat_z [3])]
dann könnte ich [[1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0]] bekommen, also nehme ich an, ich kann Geben Sie jeden Knochenmatrixwert als json aus.