Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > Волгоградец

Рейтинг: 5.00. Голосов: 2.

Эксперименты с физикой. Часть 3.

Запись от Волгоградец размещена 06.04.2010 в 23:17

Продолжаем... В прошлый раз мы создали небольшой физический фрэймворк и я обещал показать, что можно с его помощью сделать. Но прежде добавим еще один класс. На данный момент у нас есть класс пружины AnchoredSpring, которая принимает в качестве параметра только одну частицу. Другой конец у нее закреплен. Сейчас создадим Spring - пружина, на обоих концах которой по частице. Здесь есть небольшая тонкость - т.к. в нашем движке считается, что сила действует на частицу как бы изолированно - т.е. не зависит от каких-то других частиц, мы определили интерфейс с методом applyForce, который принимает в качестве параметра одну частицу. Любая сила реализует этот интерфейс. Но новый класс Spring должен учитывать две частицы. Их мы будем передавать в конструкторе, а в applyForce будем передавать null на каждом шаге. В остальном реализация аналогична AnchoredSpring - на каждую из двух частиц действуют одинаковые силы но направленные в разные стороны. Все, класс готов. Найдем ему применение.

Для начала реализуем камеру, которая должна следовать за кем-то или чем-то. Пускай она следует за мышью (здесь я размер экрана сделал маленьким - и передвигаю якобы сам экран. На самом деле двигаться должен фон). Реализация проста - к мыши крепим AnchoredSpring на другом конце которой - наша камера. Небольшие настройки жесткости, сопротивления и вот что получилось.
Camera.swf

Теперь попробуем создать веревку. Пружинами Spring соединяем частицы друг с другом. И вот что имеем.
Rope.swf
Да уж - на веревку не очень похоже - скорее на эластичную резинку. Это одно из ограничений движка - на данный момент наша пружина может сжиматься до нуля и растягиваться до бесконечности. Поэтому наша веревка растягивается до неприличных размеров. Можно поиграть с жесткостью пружины - но здесь есть опасность переусердствовать и вывести пружину из равновесия. Есть другой вариант решения - добавить ограничения на сжатие и растяжение - так называемые Constraints. Об этом подробно в следующем уроке.

Напоследок создадим ткань. здесь для достижения нужного эффекта нужны особые соединения между частицами. На картинке показаны необходимые связи.
Название: pic.png
Просмотров: 1004

Размер: 5.1 Кб
И вот что получилось
Cloth.swf

В следующий раз, как я уже отмечал, поговорим о Constraints. И создадим более прадоподобную веревку, простой рэгдолл и невероятно реалистичную цепь.

tutorial3.zip
Всего комментариев 8

Комментарии

Старый 07.04.2010 09:15 Hauts вне форума
Hauts
 
Аватар для Hauts
Отлично! Будем ждать продолжения =)
Старый 07.04.2010 14:45 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Супер, Вогоградец) только причем здесь камера?
Старый 07.04.2010 15:03 Волгоградец вне форума
Волгоградец
 
Аватар для Волгоградец
А чем не камера? Только представь что она стоит на месте, а движется фон (как я и описал выше).
Старый 08.04.2010 00:15 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Да это то понятно. Просто я думал что это будет как то связано с тем, что будет по тексту ниже =)
Старый 08.04.2010 02:23 MrPoma вне форума
MrPoma
 
Аватар для MrPoma
Что читаете?
Старый 08.04.2010 09:38 Котяра вне форума
Котяра
 
Аватар для Котяра
в Rope.swf к мышке привязан 2 сверху узел, а не первый.
А так - очень здорово! Поставь фпс-мерялку на примеры.
Старый 08.04.2010 11:31 Волгоградец вне форума
Волгоградец
 
Аватар для Волгоградец
MrPoma, читаю блоги в основном, статьи. Можно на "ты", не такой уж я и старый.
Котяра, учту. Может посоветуешь библиотеку для измерения фпс/памяти?
Старый 09.04.2010 10:59 Котяра вне форума
Котяра
 
Аватар для Котяра
 

 


Часовой пояс GMT +4, время: 02:04.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.