แปลงจุดยอดกลับเป็น world coords (Python)

Oct 04 2020

ฉันวาดวงกลมลงในวิวพอร์ตด้วย Python วงกลมนั้นมี Vector ตรงกลาง (self._center) ในอวกาศโลก

ฉันต้องการย้ายจุดยอดตรงกลางไปยังตำแหน่ง x ท้องถิ่น 0

ดังนั้นฉันจึงพยายามแปลง self._center ก่อนเป็นค่าท้องถิ่นโดยใช้เมทริกซ์มุมมองที่ฉันเก็บไว้และตั้งค่า X เป็น 0:

vm = self._view_context._view_mat
v = self._center.copy()
v = v @ vm
v[0] = 0

ตอนนี้ฉันต้องการตั้งค่า self._center เป็นค่าใหม่ (v) แต่อยู่ในพื้นที่โลก มีใครรู้วิธีเปลี่ยนมันกลับสู่อวกาศโลกบ้างไหม?

คำตอบ

1 Jayanam Oct 04 2020 at 04:26

เดาว่าฉันแก้ไขได้ดังนี้:

rot_mat = self._view_context._view_mat

v = rot_mat @ self._center
v2 = rot_mat.inverted() @ Vector((-v[0],0,0))

self._center += v2