2010-11-30 9 views
0

Ich habe eine ausgewählte Mesh (kreativ ‚ausgewählt‘ genannt), die ich mit in seinem lokalen Raum arbeiten möchten, so dass ich die folgende verwenden:Wie man eine Umwandlung durch Matrix in Blender umkehrt?

tmesh = NMesh.GetRawFromObject(selected.name) 
    tmesh.transform(selected.matrix) 

ich dann eine Reihe von Berechnungen auf seiner verticies und entfernen Sie sie per Index, das funktioniert super.

Was nicht so gut funktioniert, ist, wenn ich versuche, sie später aus einer Liste von vert.co-Objekten hinzuzufügen. Sie werden am Ende korrekt zueinander positioniert, aber nicht in der Nähe der ursprünglichen Vertices.

  for v in tmesh.verts: 
       toAdd.append(v.co) 
       mesh = selected.getData(mesh=1) 
       mesh.verts.extend(toAdd) 

Ich erkannte dies liegt daran, dass sich das Objekt in einem anderen Raum. Also ich denke was ich tun muss, ist die neue Verticies zurück in den alten Raum zu übersetzen ... aber mein Verständnis, was genau hier vorgeht, ist bestenfalls unscharf. Wie kann ich den Befehl tmesh.transform (selected.matrix) rückgängig machen? http://www.kellbot.com/2010/11/lego-plans-now-with-better-rendering/ mit Blender

+0

Können Sie die 'tmesh.transform (selected.matrix) 'auslassen, bevor Sie Ihren" Haufen von Berechnungen auf ihren Scheitelpunkten "ausführen? h. Arbeiten Sie im Objektbereich und vermeiden Sie das Problem. – martineau

Antwort

1

Ich bin nicht vertraut specfically, aber nach einem kurzen Blick auf die Dokumentation, aber im Prinzip scheint es, wie Sie sollten:

Eine thoroug Erklärung dafür, was ich tue hier gefunden werden in der Lage sein, das invert()Matrix-Verfahren zu verwenden, um die inverse Transformation des selected.matrix zu erhalten (vielleicht, nachdem zuerst ein copy() davon gemacht wurde).

Verwandte Themen