![Page 1: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/1.jpg)
Flash GAMM Kyiv 2011. 10 декабряFlash GAMM Kyiv 2011. December, 10
AlternativaPhysics: физическая симуляция на Flash – это просто
AlternativaPhysics: physics simulation on Flash is easy
Дмитрий Сергеев, Программист, AlternativaPlatformDmitriy Sergeev, Software Engineer, AlternativaPlatform
![Page 2: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/2.jpg)
План докладаPlan
● Введение
● Обзор функциональности
● Обзор API
● Демо движка
● Introduction
● Functionality review
● API review
● Engine demos
![Page 3: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/3.jpg)
Цель докладаGoal
Показать, что:
● AlternativaPhysics – это мощный и универсальный движок
● Использовать AlternativaPhysics просто
The goal is to show that:
● AlternativaPhysics is a powerful and universal engine
● The usage of AlternativaPhysics is easy
![Page 4: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/4.jpg)
Что такое физический движок?What is the physics engine?
Физический движок Physics engine
Физическая сцена Physics scene
ОбъектыObjects
СобытияEvents
Солвер Solver
КонфигурацияConfiguration
Позиции, скоростиPositions, velocities
Столкновения, контактыCollisions, contacts
ОграниченияConstraints
ГеометрияGeometry
Определениестолкновений
Collisiondetection
СилыForces
![Page 5: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/5.jpg)
История AlternativaPhysicsThe history of AlternativaPhysics
http://tankionline.com
![Page 6: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/6.jpg)
Место физики в платформеPhysics in the platform
AlternativaPlatform
Alternativa3D
AlternativaEditor
AlternativaGUI
AlternativaPhysics
AlternativaCore
![Page 7: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/7.jpg)
![Page 8: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/8.jpg)
ФункциональностьFunctionality
● Солвер● Геометрия
● Solver● Geometry
![Page 9: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/9.jpg)
СолверSolver
● Улучшенная стабильность
● Реалистичная симуляция упругих и неупругих контактов
● Физический материал
● упругость● трение
● Improved stability
● Plausible simulation of elastic and resting contacts
● Physic materials
● elasticity (restitution)● friction
![Page 10: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/10.jpg)
Солвер. Стеки, материалы. ДемоSolver. Stacks and materials. Demo
![Page 11: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/11.jpg)
Солвер. ОграниченияSolver. Constraints
● Максимальное расстояние
● Фиксированное расстояние
● Шаровое соединение (ball-in-socket)
● Вращательное (hinge)
● Max distance
● Fixed distance
● Ball-in-socket
● Rotational (hinge)
![Page 12: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/12.jpg)
Солвер. Ограничения. ДемоSolver. Constraints. Demo
![Page 13: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/13.jpg)
Геометрия. ПримитивыGeometry. Primitives
● Плоские примитивы (треугольник, квадрат)
● Объемные примитивы (шар, бокс, цилиндр, конус, усеченный конус)
● Flat primitives (triangle, square)
● 3D primitives (ball, box, cylinder, cone, frustum)
![Page 14: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/14.jpg)
Геометрия. Сложные объектыGeometry. Complex Objects
Произвольные тела:
● Выпуклый многогранник
● Треугольный меш
● Иерархический контейнер
Arbitrary bodies:
● Convex polyhedron
● Triangle mesh
● Hierarchical container
![Page 15: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/15.jpg)
Геометрия. ДемоGeometry demo
![Page 16: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/16.jpg)
Геометрия. Другие особенностиGeometry. Another Features
● Алгоритм GJK/EPA● Оптимизации
● широкая фаза● статические объекты
● Пересечение с лучом
● GJK/EPA algorithm● Optimization
● broad phase● static objects
● Ray casts
![Page 17: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/17.jpg)
Ограничения на число объектовLimitations on the Number of Objects
● Количество объектов – до 500 при большом числе взаимодействий
● Количество примитивов в статических объектах – неограниченно
● The number of objects – up to 500 in case of a large amount of contacts
● The number of primitives in static objects – unlimited
![Page 18: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/18.jpg)
API
● Сцена● Конфигурация
движка● Обработка событий
● Physics scene● Engine configuration● Event handling
![Page 19: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/19.jpg)
Сцена. Иерархия объектовScene. Hierarchy of Objects
Сцена Scene
ТелоBody
Физический примитивPhysical primitive
•Материал•Подвижность•Позиция•Скорость•Масса•События
•Material•Movability•Position•Velocity•Mass•Events
Нефизический объектNon-physical object
•Позиция•События
•Position•Events
Нефизический примитивNon-physical primitive
Нефизический примитивNon-physical primitive
![Page 20: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/20.jpg)
Сцена. Иерархия объектовScene. Hierarchy of Objects
private function PhysicsTest() {physicsScene = PhysicsConfiguration.DEFAULT.getPhysicsScene();
var body:Body = new Body();var box:CollisionBox = new CollisionBox(new Vector3(1, 1, 1), CollisionType.DYNAMIC);body.addPhysicsPrimitive(new PhysicsPrimitive(box, 10, new PhysicsMaterial(0.5, 0.5)));
body.calculateInertiaTensor();physicsScene.add(body);
body.setVelocity(new Vector3(1, 0, 0));
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);}
private function onEnterFrame(event:Event):void {while (physicsScene.time < getTimer())
physicsScene.update(PHYSICS_STEP);...
}
![Page 21: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/21.jpg)
Сцена. ОграниченияScene. Constraints
var boxCount:int = 3;var boxes:Vector.<Body> = new Vector.<Body>(boxCount);
for (var i:int = 0; i < boxCount; i++) {boxes[i] = createBox(i);physicsScene.add(boxes[i]);
}
for (i = 0; i < boxCount - 1; i++) {var c:ImpulseConstraint = new HingeImpulseConstraint( boxes[i], boxes[i + 1], new Vector3(INTERVAL, 0, 0), Vector3.ZERO, new Vector3(0, 0, 1), new Vector3(0, 0, 1)))physicsScene.addConstraint(c);
}
![Page 22: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/22.jpg)
Демо c 3 кубами3 cubes demo
![Page 23: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/23.jpg)
Конфигурация движкаEngine Configuration
● Конфигурация геометрии
● Конфигурация солвера
● Geometry configuration
● Solver configuration
var physicsConfig:PhysicsConfiguration = new PhysicsConfiguration();
physicsConfig.geometryConfiguration = new GeometryConfiguration();
var solverConfig:ImpulseSolverConfiguration = ImpulseSolverConfiguration.DEFAULT.clone();solverConfig.contactIterations = 4;physicsConfig.solverConfiguration = solverConfig;
var physicsScene:PhysicsScene = physicsConfig.getPhysicsScene();
![Page 24: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/24.jpg)
СобытияEvents
● Предобработка сцены (onBeforeUpdate)
● Постобработка сцены (onAfterUpdate)
● Возникновение контакта
● С телом● С примитивом
● Before update
● After update
● Contact
● With body● WIth primitive
![Page 25: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/25.jpg)
СобытияEvents
public class SimFlag extends SimObject {public function SimFlag(position:Position, onContact:Function) {
...cylinder = new CollisionCylinder(r, 3, CollisionType.TRIGGER);cylinder.addEventListener(ContactEvent.OnContact, onContact, this);...
}...
}
public class BallDemo {public function BallDemo() {
...add(new SimFlag(Position.createXYZ(-4, -4, 0), takeFlag));...
}
private function takeFlag(event:ContactEvent):void {...flag = (event.userData as SimFlag);flag.visible = false;
}...
}
![Page 26: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/26.jpg)
Демо Ball and flagsBall and Flags Demo
![Page 27: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/27.jpg)
В разработкеIn Development
● Новые типы ограничений (slider, hinge-2, универсальный)
● Параметризация ограничений
● Новые примитивы (капсула, эллипсоид)
● Новые события (появление, окончание контакта)
● Улучшение стабилизации
● Улучшение быстродействия
● Интеграция с Alternativa3D
● New constraints (slider, hinge-2, universal joint)
● Constraints' parameterization
● New primitives (capsule, ellipsoid)
● New events (enter contact, leave contact)
● Stabilization improvement
● Performance improvement
● Intergration with Alternativa3D
![Page 28: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/28.jpg)
Демо Cannon stageCannon Stage Demo
![Page 29: Alternativa Platform: Flash-игры: переходим в третье измерение](https://reader033.vdocuments.site/reader033/viewer/2022052905/5587416cd8b42abc5d8b45bd/html5/thumbnails/29.jpg)
Спасибо за вниманиеThanks for your attention
пожалуйста, задавайте вопросы,
пишите на
please ask your questions,
feel free to contact me: