Cannon.js - это движок 3D- физики на JavaScript с открытым исходным кодом , созданный Стефаном «Штеппе» Хедманом. [2] В отличие от библиотек физического движка, перенесенных с C ++ на JavaScript, cannon.js изначально написан на JavaScript и может использовать его возможности. [3] При сравнении с Ammo.js в 2013 году cannon.js оказался «более компактным, более понятным, более мощным с точки зрения производительности, а также более простым для понимания», но у него было меньше возможностей. [4]
Разработчики) | Стефан Хедман |
---|---|
Стабильный выпуск | 0.6.2 / 28 марта 2015 г. [1] |
Репозиторий | |
Написано в | JavaScript |
Операционная система | Не зависит от ОС |
Тип | 3D физический движок |
Лицензия | Лицензия MIT |
Веб-сайт | www |
Функции
Cannon.js поддерживает следующие формы: сфера, плоскость, прямоугольник, цилиндр, выпуклый многогранник , частица и поле высот . Эта коллекция фигур соответствует коллекции, используемой механизмами рендеринга, такими как Three.js и Babylon , но не является полной. Например, этого недостаточно для X3DOM, [4] приложения X3D, которое позволяет включать трехмерную графику в веб-страницы без необходимости в подключаемом модуле . [5]
Физический движок реализует динамику твердого тела, дискретное обнаружение столкновений и решатель ограничений Гаусса-Зейделя . [6] Он может моделировать ткань [7]
Cannon.js можно использовать с модулями визуализации Three.js и Babylon.js [8] [9] WebGL для создания трехмерных сцен на основе физики. Его также можно использовать для обеспечения синхронизации сетевой физики для многопользовательских онлайн-игр с использованием Lance.gg [10]
Пример
В приведенном ниже примере кода создается сфера на плоскости, выполняется пошаговое моделирование и выводится симуляция сферы на консоль. Обратите внимание, что Cannon.js использует единицы СИ (метр, килограмм, секунда и т. Д.). [11]
// Настраиваем наш мир var world = new CANNON . Мир (); мир . гравитация . установить ( 0 , 0 , - 9,82 ); // м / с²// Создаем сферу var radius = 1 ; // m var сфераBody = new CANNON . Body ({ масса : 5 , // позиция в кг : новая ПУШКА . Vec3 ( 0 , 0 , 10 ), // форма м : новая ПУШКА . Сфера ( радиус ) }); мир . addBody ( сфераBody );// Создаем самолет var groundBody = new CANNON . Body ({ mass : 0 // mass == 0 делает тело статичным }); var groundShape = новая ПУШКА . Самолет (); GroundBody . addShape ( основание ); мир . addBody ( GroundBody );var fixedTimeStep = 1.0 / 60.0 ; // секунды var maxSubSteps = 3 ;// Запускаем цикл моделирования var lastTime ; ( function simloop ( time ) { requestAnimationFrame ( simloop ); if ( lastTime ! == undefined ) { var dt = ( time - lastTime ) / 1000 ; world . step ( fixedTimeStep , dt , maxSubSteps ); } console . log ( "Сфера z позиция: " + сфераBody . позиция . z ); lastTime = время ; }) ();
Рекомендации
- ^ "Релизы · schteppe / cannon.js" . GitHub.com . Дата обращения 11 мая 2021 .
- ^ «Стефан Хедман» . GitHub . Проверено 27 апреля 2017 года .
- ^ Prall, Chandler (10 апреля 2012 г.). «Сравнение движков физики JavaScript» . Создавайте новые игры . Проверено 27 апреля 2017 года .
- ^ а б Хубер, Линда (2013). «Первые шаги по объединению движков физики JavaScript с X3DOM». В Яне Бендере; Джереми Деквидт; Кристиан Дурье; Габриэль Захманн (ред.). Семинар по взаимодействию виртуальной реальности и физическому моделированию (VRIPHYS 2013) . Еврографическая ассоциация. С. 81–90. DOI : 10,2312 / PE.vriphys.vriphys13.081-090 . ISBN 978-3-905674-57-6.
- ^ «Предыстория: что такое X3DOM и что он может для меня сделать?» . официальная документация x3dom . x3dom.org . Проверено 27 апреля 2017 года .
- ^ «Ветка: master. Cannon.js / README.markdown» . GitHub. 22 апреля 2015 . Проверено 27 апреля 2017 года .
- ^ «Моделирование физики ткани» .
- ^ «Создавайте замечательные интерактивные игры для Интернета: используя webgl и физический движок (babylon.js и cannon.js)» . Проверено 21 февраля 2017 года .
- ^ «Разработка игр MSDN с помощью Babylon.js» . Проверено 21 февраля 2017 года .
- ^ "Репозиторий исходников Lance" .
- ^ «Cannon.js - JavaScripting» . www.javascripting.com . Проверено 22 декабря 2020 .
Внешние ссылки
- Официальный веб-сайт
- Репозиторий исходного кода