هذا المشروع عبارة عن مكتبة خفيفة الوزن ومكتفية ذاتيًا لتحرير الأدوات الشائعة في العديد من محركات الألعاب. يتضمن آليات لمعالجة الموضع ثلاثي الأبعاد والتدوير والحجم. تم تنفيذها في C++ 11، ولا تقوم المكتبة بالعرض مباشرة، وبدلاً من ذلك توفر مخزنًا مؤقتًا لكل إطار لمثلثات الفضاء العالمي.
تم إنشاء مثال مدرج أعلى GLFW (مع سياق OpenGL 3.3). تتضمن القيود المعروفة افتراضات مضمنة حول نظام الإحداثيات الأيمن Y-up. في حين يتم تزويد الأدوات بمعايير قمة الرأس، فإن المثال لا يؤدي أي تظليل خيالي. علاوة على ذلك، من المعروف أن إدخال سحب الماوس باستخدام أدوات معينة عند زوايا رعي شديدة التفاعل ينتج عنه مخرجات شاذة.
وُلد هذا المشروع نتيجة إحباط بسيط من مكتبات أدوات الوضع الفوري الأخرى. بدلاً من المصفوفات 4x4 وزوايا أويلر، تعرض المكتبة rigid_transform
يتكون من موضع ثلاثي الأبعاد ورباعي الدوران والمقياس. يتم تنفيذ المكتبة في حوالي 1200 سطر من التعليمات البرمجية، والتي تتضمن أيضًا مكتبة رياضية ثلاثية الأبعاد كاملة في ~400 LoC - linalg.h. وتشمل البدائل ImGuizmo وIm3D. يتلاءم Tinygizmo بين هذه المشاريع من خلال كونه مكتفيًا بذاته بالكامل (لا يعتمد على Dear ImGui)، ومن خلال توفيره في المجال العام.
snap_
في بنية gizmo_application_state
.update(...)
draw()
لكل عين)ctrl-t
لتفعيل أداة الترجمةctrl-r
لتفعيل أداة التدويرctrl-s
لتفعيل أداة المقياسctrl-l
للتبديل بين أوضاع التحويل العالمية والمحليةلم يكن هذا المشروع ممكنًا بدون التطبيقات المرجعية في مشروع طاولة العمل للملك العام.
هذا برنامج مجاني وغير مرتبط تم طرحه في المجال العام. لمزيد من المعلومات، يرجى الرجوع إلى http://unlicense.org