Open Dynamics Engine

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Open Dynamics Engine
Логотип программы Open Dynamics Engine
Скриншот программы Open Dynamics Engine
Столкновение множества объектов
Тип Физический движок
Написана на C++
Операционная система Кроссплатформенное программное обеспечение
Первый выпуск 8 мая2001
Аппаратная платформа кроссплатформенность
Последняя версия 0.16.3 (19 декабря2022)
Репозиторий bitbucket.org/odedevs/ode
Лицензия BSD licenseиLGPL
Сайт ode.org
Логотип ВикискладаМедиафайлы на Викискладе
Простое транспортное средство преодолевает скат

Open Dynamics Engine (ODE)— это открытыйфизический движок,распространяемый бесплатно в виде динамически подключаемой библиотеки. Его основными компонентами являются система динамикиабсолютно твёрдого телаи система обнаружения столкновений.

Например, ODE хорошо подходит для симуляции транспортных средств, существ с ногами и движущихся объектов в изменяемом окружении виртуального пространства. ODE имеет очень высокую стабильность интегрирования, поэтому ошибки симуляции не должны выходить из под контроля. С физической точки зрения это значит, что система не должна «взрываться» без причины.

ODE придаёт больше значение скорости и стабильности, чем физической точности. Он быстр, гибок и прост. Движок относится ксвободному программному обеспечениюи распространяется по двум лицензиям:BSD licenseиLGPL.

Разработка ODE была начата в 2001 году. Движок успешно используется во многих приложениях и играх, например, вToribash,BloodRayne 2,Call of Juarez,серии игр S.T.A.L.K.E.R.,World of Goo.

Возможности и особенности

[править|править код]
  • Имеет встроенную систему определения столкновений.
  • Возможность использовать свою систему определения столкновений.
  • Имеет C интерфейс (хотя почти вся ODE написана на C++).
  • C++ интерфейс поверх C интерфейса.
  • Написано множество юнит тестов, и много пишутся сейчас.
  • Специфические оптимизации для различных платформ.
  • Поддерживаемые базовые геометрические формы:
    • Луч(ray)
    • Плоскость(plane)
    • Параллелепипед(box)
    • Сфера(sphere)
    • Капсула (capsule,цилиндр с двумя полусферами на концах)
    • Цилиндр(cylinder,реализован в нестабильном варианте)
    • Выпуклыймногогранник(convex)
    • Карта высот (heightmap)
    • Треугольная сетка (triangle mesh,динамические сетки и обнаружение столкновений для двух сеток пока реализованы не до конца)
  • Поддерживаемые типы соединений (joints) твёрдых тел
    • Контактное соединение (между соприкасающимися телами)
    • Шаровое шарнирное соединение (ball joint,соединяет тела в одной точке, не ограничивая вращения)
    • Шарнир(hinge joint,соединение с одной осью вращения)
    • Двухосное соединение (hinge2 joint,соединение с двумя осями вращения, которое часто используют для реализации автомобильной подвески)
    • Кардан(universal joint)
    • Фиксирующее соединение (fixed joint)
    • Угловой мотор (angular motor,управляет относительным вращением двух тел)
    • Телескопическое соединение (piston joint)