среда, 10 декабря 2008 г.

Newton wrapper

Разработка: http://www.opserver.de/ubb7/ubbthreads.php?ubb=showflat&Number=296756&page=1 (на данный момент приостановлена)

Цель работы враппера - возможность использовать Newton Game Dynamics (http://newtondynamics.com/forum/newton.php) в движке 3DGameStudio.

Первым делом хочу объяснить, почему я выбрал именно этот физический движок для работы. Приведу отрывок моего разговора с Julio, разработчиком Newton, в котором он рассказывает о разнице между физическими движками основанными на силах, и движками основанными на импульсах.


Julio:

Plus I am also adding eth CUDA support so the next Beta will come with Hardware simulation on GPU.
Therefore it will provide the same level of mass physics simulation as other commercial engine but with a real newtonian base physics engine like ODE, as opposed to a Impulse base Physics engine like all the others.

There are many, many reasons why a force based engine is far superior than a impulse base, although it have to be slower by nature, but as you can see Newton 2.0 is quite competitive.

VeT:

also, can you give me more details about impulse and force-based physical engine?

Julio:

Impulase base for force base physic sare teh tow diffrent metod to make physis simulation.

Impulse was proposed by Brians Mirtich
http://www.kuffner.org/james/software/dynamics/mirtich/index.html

and force base was propose by Davif Baraff
http://www.cs.cmu.edu/~baraff/papers/sig96.pdf

Impulse base very eassy to implement and is the methed used by Physx and Havok, it is also the method used by open source since they are all biproduct of Havov and PhyiX written by ex employee that when they leave the company use and older copy and re write as open source.

the problem with open source is the teh are incorrect since they violate a physics principle that state that and impulse can only be appliyed at and infinitesimal small period of time.
They apply impulse an dintegrate then as if tehey where forces, theyfor tehy are unstable and thsi si whay you see hundere of paore teh try to sov eteh problems.

Force base implementation are base on rigurose law of physics call the method of the virtual work, they are harder to 
solve but the are more stable and have the ability that the same solver solve all know rigid body problems.
 Мой враппер состоит из двух частей: собственно враппер (подключение newton.dll в lite-c) и демо-уровни Ньютона, переписанные для языка lite-c. Имеются примеры следующих уровней:
1. Просто первый тестовый уровень, показывает правильность коллизий разных форм.
2. На этом уровне все мячики имеют разную эластичность: левый будет вечно подпрыгивать, правый - упал как мешок с песком.

3. Аналогично, только демонстрируется разное трение: левый параллелепипед не скользит вообще, правый - съезжает как по льду.
4. Вращающиеся конусы. Когда вращающая сила пропадает - они заваливаются на бок и падают. Просто и эффектно :)
5. Объекты разного размера, увеличены случайно в разные стороны.
6. Более серьезная демка. Камера может подлететь, схватить и таскать обьект перед собой (как в Half-Life 2).
7. Процедурное создание объекта только кодом.
8. Взрывы. Довольно сложная демка, однако и эффектная. Стоят 4 стопки из кубиков разного веса (те, что справа-сверху на картинке самые легкие. те, что справа-снизу - самые тяжелые) и на них сила взрыва действует по-разному.
 9. Статические объекты, созданы разными методами. 
10. Тоже сложная демка - таскание объектов мышкой.
11. Креш-тест. Точно не помню, вроде 5.000 динамических объектов в реальном времени.
12. Практическая демка. Стрельба "импульсным оружием": при нажатии мышки генерируется луч, ищет объекты. Те что находит - слегка толкает вперед и запускает партиклы по нормали.
 13. Обработка Collision callback. Подсвечивание точки соприкосновения + проигрывание звука при коллизии.
14. Плавучесть. Наверное, одна из самых сложных демок. Кубики обладают максимальной плавучестью - всплывают как пенопласт. Цилиндры - минимальной, тонут как цемент.
15. Тоже довольно сложная демка. Создание сложных объектов. Здесь сфера и куб - один обьект  с одним центром тяжести и одной формой.
16. Веревка, привязана к точек. Можно подвигать мышкой.

Вот, пожалуй, и все. Пока я сменил 3DGamestudio на Leadwerks, в ближайшем будущем не планирую возвращаться. Совесть говорит, что нужно продолжать развивать враппер. Но я не знаю, когда этим заняться.

Комментариев нет:

Отправить комментарий