Flash GAMM Kyiv 2011. 10 декабря Flash GAMM Kyiv 2011. December, 10 AlternativaPhysics: физическая симуляция на Flash – эт...
План доклада Plan <ul><li>Введение
Обзор функциональности
Обзор API
Демо движка </li></ul><ul><li>Introduction
Functionality review
API review
Engine demos </li></ul>
Цель доклада Goal <ul>Показать, что: <li>AlternativaPhysics – это мощный и универсальный движок
Использовать AlternativaPhysics просто </li></ul><ul>The goal is to show that: <li>AlternativaPhysics is a powerful and un...
The usage of AlternativaPhysics is easy </li></ul>
Что такое физический движок? What is the physics engine?
История AlternativaPhysics The history of AlternativaPhysics
Место физики в платформе Physics in the platform <ul>AlternativaPlatform </ul><ul>Alternativa3D </ul><ul>AlternativaEditor...
 
Функциональность Functionality <ul><li>Солвер
Геометрия </li></ul><ul><li>Solver
Geometry </li></ul>
Солвер Solver <ul><li>Улучшенная стабильность
Реалистичная симуляция упругих и неупругих контактов
Физический материал </li><ul><li>упругость
трение </li></ul></ul><ul><li>Improved stability
Plausible simulation of elastic and resting contacts
Physic materials </li><ul><li>elasticity (restitution)
friction </li></ul></ul>
Солвер. Стеки, материалы. Демо Solver. Stacks and materials. Demo
Солвер. Ограничения Solver. Constraints <ul><li>Максимальное расстояние
Фиксированное расстояние
Шаровое соединение (ball-in-socket)
Upcoming SlideShare
Loading in …5
×

“AlternativaPhysics: физическая симуляция на Flash – это просто” (Дмитрий Сергеев, AlternativaPlatform)

1,608 views

Published on

Доклад посвящен технологии, которая впервые выходит в релиз в декабре 2011 года. AlternativaPhysics – это универсальный физический движок реального времени на Flash. Движок интегрирован в пакет технологий AlternativaPlatform. Дмитрий расскажет о возможностях движка и проведет мастер-класс по его использованию.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,608
On SlideShare
0
From Embeds
0
Number of Embeds
404
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

“AlternativaPhysics: физическая симуляция на Flash – это просто” (Дмитрий Сергеев, AlternativaPlatform)

  1. 1. Flash GAMM Kyiv 2011. 10 декабря Flash GAMM Kyiv 2011. December, 10 AlternativaPhysics: физическая симуляция на Flash – это просто AlternativaPhysics: physics simulation on Flash is easy Дмитрий Сергеев, Программист, AlternativaPlatform Dmitriy Sergeev, Software Engineer, AlternativaPlatform
  2. 2. План доклада Plan <ul><li>Введение
  3. 3. Обзор функциональности
  4. 4. Обзор API
  5. 5. Демо движка </li></ul><ul><li>Introduction
  6. 6. Functionality review
  7. 7. API review
  8. 8. Engine demos </li></ul>
  9. 9. Цель доклада Goal <ul>Показать, что: <li>AlternativaPhysics – это мощный и универсальный движок
  10. 10. Использовать AlternativaPhysics просто </li></ul><ul>The goal is to show that: <li>AlternativaPhysics is a powerful and universal engine
  11. 11. The usage of AlternativaPhysics is easy </li></ul>
  12. 12. Что такое физический движок? What is the physics engine?
  13. 13. История AlternativaPhysics The history of AlternativaPhysics
  14. 14. Место физики в платформе Physics in the platform <ul>AlternativaPlatform </ul><ul>Alternativa3D </ul><ul>AlternativaEditor </ul><ul>AlternativaGUI </ul><ul>AlternativaPhysics </ul><ul>AlternativaCore </ul>
  15. 16. Функциональность Functionality <ul><li>Солвер
  16. 17. Геометрия </li></ul><ul><li>Solver
  17. 18. Geometry </li></ul>
  18. 19. Солвер Solver <ul><li>Улучшенная стабильность
  19. 20. Реалистичная симуляция упругих и неупругих контактов
  20. 21. Физический материал </li><ul><li>упругость
  21. 22. трение </li></ul></ul><ul><li>Improved stability
  22. 23. Plausible simulation of elastic and resting contacts
  23. 24. Physic materials </li><ul><li>elasticity (restitution)
  24. 25. friction </li></ul></ul>
  25. 26. Солвер. Стеки, материалы. Демо Solver. Stacks and materials. Demo
  26. 27. Солвер. Ограничения Solver. Constraints <ul><li>Максимальное расстояние
  27. 28. Фиксированное расстояние
  28. 29. Шаровое соединение (ball-in-socket)
  29. 30. Вращательное (hinge) </li></ul><ul><li>Max distance
  30. 31. Fixed distance
  31. 32. Ball-in-socket
  32. 33. Rotational (hinge) </li></ul>
  33. 34. Солвер. Ограничения. Демо Solver. Constraints. Demo
  34. 35. Геометрия. Примитивы Geometry. Primitives <ul><li>Плоские примитивы (треугольник, квадрат)
  35. 36. Объемные примитивы (шар, бокс, цилиндр, конус, усеченный конус) </li></ul><ul><li>Flat primitives (triangle, square)
  36. 37. 3D primitives (ball, box, cylinder, cone, frustum) </li></ul>
  37. 38. Геометрия. Сложные объекты Geometry. Complex Objects <ul>Произвольные тела: <li>Выпуклый многогранник
  38. 39. Треугольный меш
  39. 40. Иерархический контейнер </li></ul><ul>Arbitrary bodies: <li>Convex polyhedron
  40. 41. Triangle mesh
  41. 42. Hierarchical container </li></ul>
  42. 43. Геометрия. Демо Geometry demo
  43. 44. Геометрия. Другие особенности Geometry. Another Features <ul><li>Алгоритм GJK/EPA
  44. 45. Оптимизации </li><ul><li>широкая фаза
  45. 46. статические объекты </li></ul><li>Пересечение с лучом </li></ul><ul><li>GJK/EPA algorithm
  46. 47. Optimization </li><ul><li>broad phase
  47. 48. static objects </li></ul><li>Ray casts </li></ul>
  48. 49. Ограничения на число объектов Limitations on the Number of Objects <ul><li>Количество объектов – до 500 при большом числе взаимодействий
  49. 50. Количество примитивов в статических объектах – неограниченно </li></ul><ul><li>The number of objects – up to 500 in case of a large amount of contacts
  50. 51. The number of primitives in static objects – unlimited </li></ul>
  51. 52. API <ul><li>Сцена
  52. 53. Конфигурация движка
  53. 54. Обработка событий </li></ul><ul><li>Physics scene
  54. 55. Engine configuration
  55. 56. Event handling </li></ul>
  56. 57. Сцена. Иерархия объектов Scene. Hierarchy of Objects
  57. 58. Сцена. Иерархия объектов Scene. Hierarchy of Objects <ul><ul><li>private function PhysicsTest() { </li><ul><li>physicsScene = PhysicsConfiguration.DEFAULT.getPhysicsScene();
  58. 59. var body:Body = new Body();
  59. 60. var box:CollisionBox = new CollisionBox( new Vector3(1, 1, 1),
  60. 61. CollisionType.DYNAMIC);
  61. 62. body.addPhysicsPrimitive( new PhysicsPrimitive(box, 10,
  62. 63. new PhysicsMaterial(0.5, 0.5)));
  63. 64. body.calculateInertiaTensor();
  64. 65. physicsScene.add(body);
  65. 66. body.setVelocity( new Vector3(1, 0, 0));
  66. 67. stage.addEventListener(Event.ENTER_FRAME, onEnterFrame); </li></ul><li>}
  67. 68. private function onEnterFrame(event:Event): void { </li><ul><li>while (physicsScene.time < getTimer()) </li><ul><li>physicsScene.update(PHYSICS_STEP); </li></ul><li>... </li></ul><li>} </li></ul></ul>
  68. 69. Сцена. Ограничения Scene. Constraints <ul>var boxC oun t: int = 3; var boxes:Vector.<Body> = new Vector.<Body>(boxCount); for ( var i: int = 0; i < boxCount; i++) { <ul>boxes[i] = createBox(i); physicsScene.add(boxes[i]); </ul>} for (i = 0; i < boxCount - 1; i++) { <ul>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); </ul>} </ul>
  69. 70. Демо c 3 кубами 3 cubes demo
  70. 71. Конфигурация движка Engine Configuration <ul><li>Конфигурация геометрии
  71. 72. Конфигурация солвера </li></ul><ul><li>Geometry configuration
  72. 73. Solver configuration </li></ul><ul>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(); </ul>
  73. 74. События Events <ul><li>Предобработка сцены (onBeforeUpdate)
  74. 75. Постобработка сцены (onAfterUpdate)
  75. 76. Возникновение контакта </li><ul><li>С телом
  76. 77. С примитивом </li></ul></ul><ul><li>Before update
  77. 78. After update
  78. 79. Contact </li><ul><li>With body
  79. 80. WIth primitive </li></ul></ul>
  80. 81. События Events <ul>public class SimFlag extends SimObject { <ul>public function SimFlag(position:Position, onContact:Function) { <ul>... cylinder = new CollisionCylinder(r, 3, CollisionType.TRIGGER); cylinder.addEventListener(ContactEvent.OnContact, onContact, this ); ... </ul>} ... </ul>} public class BallDemo { <ul>public function BallDemo() { <ul>... add( new SimFlag(Position.createXYZ(-4, -4, 0), takeFlag)); ... </ul>} private function takeFlag(event:ContactEvent): void { <ul>... flag = (event.userData as SimFlag); flag.visible = false ; </ul>} ... </ul>} </ul>
  81. 82. Демо Ball and flags Ball and Flags Demo
  82. 83. В разработке In Development <ul><li>Новые типы ограничений (slider, hinge-2, универсальный)
  83. 84. Параметризация ограничений
  84. 85. Новые примитивы (капсула, эллипсоид)
  85. 86. Новые события (появление, окончание контакта)
  86. 87. Улучшение стабилизации
  87. 88. Улучшение быстродействия
  88. 89. Интеграция с Alternativa3D </li></ul><ul><li>New constraints (slider, hinge-2, universal joint)
  89. 90. Constraints' parameterization
  90. 91. New primitives (capsule, ellipsoid)
  91. 92. New events (enter contact, leave contact)
  92. 93. Stabilization improvement
  93. 94. Performance improvement
  94. 95. Intergration with Alternativa3D </li></ul>
  95. 96. Демо Cannon stage Cannon Stage Demo
  96. 97. Спасибо за внимание Thanks for your attention <ul>пожалуйста, задавайте вопросы, пишите на [email_address] please ask your questions, feel free to contact me: [email_address] </ul>

×