โปรเจ็กต์นี้เป็นไลบรารีน้ำหนักเบาและครบครันในตัวเองสำหรับการแก้ไข Gizmo ซึ่งพบได้ทั่วไปในเอ็นจิ้นเกมจำนวนมาก ประกอบด้วยกลไกสำหรับจัดการตำแหน่ง 3 มิติ การหมุน และมาตราส่วน ไลบรารีไม่ได้ดำเนินการเรนเดอร์โดยตรงใน C ++ 11 และจัดเตรียมบัฟเฟอร์ต่อเฟรมของสามเหลี่ยมอวกาศโลกแทน
ตัวอย่างที่รวมไว้ถูกสร้างขึ้นบน GLFW (พร้อมบริบท OpenGL 3.3) ข้อจำกัดที่ทราบรวมถึงสมมติฐานแบบฮาร์ดโค้ดเกี่ยวกับระบบพิกัด Y-up สำหรับคนถนัดขวา แม้ว่า Gizmos จะมีจุดยอดปกติ แต่ตัวอย่างไม่ได้ทำการแรเงาแฟนซีใดๆ นอกจากนี้ อินพุตแบบลากเมาส์ด้วย Gizmos บางตัวที่มุมแทะเล็มปฏิสัมพันธ์ที่รุนแรงเป็นที่รู้กันว่าสร้างเอาต์พุตที่ผิดปกติ
โปรเจ็กต์นี้เกิดขึ้นจากความหงุดหงิดเล็กน้อยกับไลบรารี Gizmo ในโหมดทันทีอื่นๆ แทนที่จะเป็นเมทริกซ์ 4x4 และมุมออยเลอร์ ไลบรารีจะแสดง rigid_transform
ซึ่งประกอบด้วยตำแหน่ง 3 มิติ ควอเทอร์เนียนการหมุน และสเกล ไลบรารีถูกนำไปใช้ในโค้ดประมาณ 1200 บรรทัด ซึ่งรวมถึงไลบรารีคณิตศาสตร์ 3 มิติที่สมบูรณ์ใน ~400 LoC - linalg.h ทางเลือกอื่น ได้แก่ ImGuizmo และ Im3D Tinygizmo ลงตัวระหว่างโปรเจ็กต์เหล่านี้ด้วยการพึ่งพาตนเองได้อย่างสมบูรณ์ (ไม่ต้องพึ่งพา Dear ImGui) และโดยการจัดทำเป็นสาธารณสมบัติ
snap_
ใดๆ ในโครงสร้าง gizmo_application_state
update(...)
และ draw()
สำหรับแต่ละตา)ctrl-t
เพื่อเปิดใช้งาน Gizmo การแปลctrl-r
เพื่อเปิดใช้งาน Gizmo การหมุนctrl-s
เพื่อเปิดใช้งาน Gizmo ขนาดctrl-l
เพื่อสลับระหว่างโหมดการแปลงทั่วโลกและท้องถิ่นโปรเจ็กต์นี้คงเป็นไปไม่ได้หากไม่มีการใช้งานอ้างอิงในโปรเจ็กต์เวิร์กเบนช์ที่เป็นสาธารณสมบัติ
นี่เป็นซอฟต์แวร์ฟรีและไม่มีภาระผูกพันที่เผยแพร่สู่สาธารณสมบัติ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ http://unlicense.org