Ерин Като (Erin Catto), автор на проекта Box2D, обяви за създаването на нов двигател за симулация на физични процеси Box3D, който е форк на Box2D, притежаващ идентична архитектура, но преработен и разширен за използване в триизмерни игри. Кодът на проекта е написан на езика C и е разпространен под лицензия MIT. Поддържа се изграждане за Linux, Windows и macOS.
Двигателят Box3D е създаден в процеса на разработка на студията Kintsugiyama на новия 3D шутър The Legend of California, в който участва Ерин. В играта се използва игровият двигател Unreal Engine, но разработчиците не бяха доволни от предлагания в него вграден физичен двигател Chaos. Проблемите се появиха поради отсъствието на отчет на гироскопични въртящи моменти (тънките обекти се въртяха неестествено дълго), непрекъснатото откриване на сблъсъци (нереалистично поведение на падащите дървета) и ниската производителност при обработка на стотици хиляди обекти.
Първоначално проблемите се планираше да бъдат решени чрез създаване на форк на физичния двигател Jolt, но след това, по съвет на създателя на двигателя Rubikon, участвал в играта Half-Life, за основа беше взет разработен като хоби опростен вариант Rubikon-Lite, който беше преработен, използвайки код и оптимизации от Box2D за съчетаване на наличните 3D възможности с разработки от движка Box2D. В крайна сметка почти всички API, структури от данни и алгоритми в Rubikon-Lite бяха заменени с код от Box2D, а от Rubikon-Lite останаха само алгоритмите за построяване на обвивка и обработка на 3D сблъсъци. Полученият двигател със знанието на автора на Rubikon-Lite и компанията Kintsugiyama беше решено да бъде публикуван като отделен открит проект Box3D.
В момента е публикуван първият издаден Box3D 0.1, който е отбелязан, като притежаващ качество на алфа версия. Основната планирана функционалност е реализирана, но е необходима доработка на документацията и тестване. Освен играта The Legend of California, новият двигател вече е приложен в игровата платформа s&box, открития игрови двигател Esoterica и многопотребителската космическа игра Space Game, предназначена за 1000 играчи.
За 3D игри в новия двигател бяха добавени възможности като изчисление на сблъсъци с полигонални мрежи (мрежа) и височинни карти, използвани при генерирането на ландшафта, което позволи реализацията на реалистични ефекти на падане на дървета върхуvoxels повърхности в играта The Legend of California. Добавена е поддръжка за предварително пресметнати (baked) сложни сблъсъци, съставени от няколко прости форми, което значително намали потреблението на ресурси при симулация на сблъсъци на голям брой стандартни малки обекти.
Сред пренесените в Box3D възможности, които преди това бяха налични в Box2D:
- Непрекъснато определение на сблъсъци (обработка на движението на обекта като непрекъсната траектория), филтриране на сблъсъци и генериране на събития при контакт между обекти. Поддръжка на сферични, капсулни и обвивни форми за определяне на сблъсъци. Оптимизиран с помощта на SIMD инструкции обработчик на контакти между обекти.
- Sub-stepping Solver за повишаване на точността на симулацията чрез разделяне на етапите на симулацията на няколко по-малки стъпки.
- Използване на метода на оцветяване на графи за обработка на големи групи свързани обекти.
- Контролер на персонаж, отговарящ за обработката на движение, сблъсъци и взаимодействие на персонажа с околните обекти.
- Поддръжка на трасировка на лъчи, трасировка на форми и проверка на пресичания при сканиране на околното пространство. Система от сензори за откриване на обекти в пространството.
- Soft Step Solver за изчисление на физиката на твърдите тела при сложни взаимодействия.
- Поддръжка на замразяване на състоянието на групи неактивни или статични обекти за икономия на ресурси.
- Поддръжка на разнообразни свързвания и типове връзки между обекти, включително шарнири, пружини, мотори, заварка и колела, с възможност за гъвкава настройка на всяко свързване. Изчисление на силите на компресия и разтягане, с които обектите действат един на друг.
- Възможност за генериране на събития при започване на движение, спиране или стабилизиране на обект.
- Хуци за многопоточна обработка с опционален вътрешен планировчик.
- Използване на координати от тип double, което позволява създаването на огромни светове.
- Кроссплатформенен детерминизъм, осигуряващ получаването на идентичен резултат на различни хардуерни платформи.
- Поддръжка на запис и възпроизвеждане на симулация.
- C API и C код, отговарящ на стандарта C17.
В плановете за бъдещето се споменава разширяване на възможностите, свързани с движенията на персонажите, усъвършенстване на механизмите за предотвратяване на 'призрачни' сблъсъци (ghost collision), внедряване на оптимизации и подобряване на обработката на свързвания (joint solver). В репозиторията се предвижда възможност за подаване на pull-заявки с промени от представители на общността след подписването на споразумение за прехвърляне на имуществените права върху кода (CLA).


Източник: opennet.ru
