Физика в Delphi, FPC и других IDE.

Тема в разделе "IT тусовка", создана пользователем Fanatic, 18 янв 2011.

  1. Fanatic

    Fanatic Надежный

    Сообщения:
    2.396
    Симпатии:
    1.133
    Напишу именно про Delphi, но для MS VC++ даже больше всяких пакетов физики. CUDA и PhysX вообще нормально реализованы только для MS VC++, а в Delphi их жалкие ошмётки.

    Итак, приступим.
    (Может Necra потом 3D-версию X-Nova организует ;))

    Есть такой пакет для Delphi, называется GLScene. Брать его тут:

    https://glscene.svn.sourceforge.net/svnroot/glscene/trunk

    это не адрес сайта, а адрес, откуда программа TortoiseSVN может загрузить репозиторий.

    Сам TortoiseSVN брать тут:

    http://tortoisesvn.net/downloads.html

    Установить, перезагрузиться, создать папку типа:

    D:\SVN\GLScene

    на ней нажать правую кнопку и там выбрать SVN Checkout. В появившейся менюшке закопипастить вышеприведённые УРЛ репозитария и соурцы GLScene сами загрузятся. Им только раз в день можно делать потом Update и у вас всегда будет актуальная версия.

    Примеры брать на русскоязычном сайте пакета GLScene:

    http://glscene.ru/index.php

    Хотя, примеров масса и в соответствующих папках самого пакета.
    Единственный пакет, который сейчас не компилируется - посвящён как раз физике CUDA и PhysX, но без них вполне можно обойтись, т.к. кроме них рабочими являются движки: ODE, Newton и DCE. Самый простой - DCE, чуть серьёзнее, но несколько глючноват - ODE и самый приличный - Newton. Возможно, что ODE будет нормально работать, если пакет как-то по-другому откомпилировать, но мороки много.

    Полный набор физических движков тут:

    http://www.gamedev.ru/code/faq/?id=3568

    Как создать самый простой вариант:
    1) Кладём на форму GLScene1: TGLScene;
    2) Кладём на форму GLSceneViewer1: TGLSceneViewer;
    3) Кладём на форму GLCamera1: TGLCamera;
    4) Кладём на форму GLNGDManager1: TGLNGDManager;
    5) Создаём пару объектов - шарик и поверхность. Шарик над поверхностью пусть будет.
    6) Добавим для шарика Behaviour типа NGD Dynamic, укажем правильный менеджер GLNGDManager1
    7) Добавим для поверхности Behaviour типа NGD Static, укажем правильный менеджер GLNGDManager1
    8) у GLNGDManager1 инициализируем гравитацию (Gravity)

    впринципе, уже что-то должно заработать, только камеру навести на один из объектов, правильно её расположить... ну это уже мелочи. Там ещё есть такой замечательный объект, как:
    GLSimpleNavigation1: TGLSimpleNavigation;
    Если его положить на форму - то навигация по сцене сразу появится. Что очень удобно.

    Всякие, там, тени и прочие красивости также имеются.

    Что касается динамического создания тел и применения разных материалов, то искать примерчик и пояснения тут:

    http://glscene.ru/forum_viewtopic.php?9.60836

    Вот коротко написал - может кому пригодится преподов пугать на курсовиках :)
     
    Последнее редактирование: 18 янв 2011
    2 пользователям это понравилось.
  2. iNeedfor

    iNeedfor Супер-модератор

    Сообщения:
    2.235
    Симпатии:
    1.214
    Это никак не связано с новостями и наукой. Прошу перенести супермодеров в раздел IT. У меня нет там прав.

    Fanatic
    Не стоит переносить из своего ЖЖ сюда абсолютно все. Проверяйте свою информацию. Насколько она достоверна/интеерсна/отвечает тематике раздела. После этого уже публикуйте.
     
    1 человеку нравится это.
  3. Fanatic

    Fanatic Надежный

    Сообщения:
    2.396
    Симпатии:
    1.133
    Вообще, сначала сюда написал, а потом уже в ЖЖ поместил ибо получился приличный трактат.
    К науке это имеет прямое отношение, поскольку это новый подход к моделированию физики как таковой. До сих пор физика рассчитывалась через решение дифференциальных уравнений, но с приходом мощных ЦП стало возможным решать задачи механики в лоб.
    Закон Ньютона в школе -> Закон Ньютона в университете через производные -> Закон Ньютона в пакетах конечно-элементного моделирования типа ANSYS -> Моделирование реального мира в лоб с применением сотен тысяч простейших элементов в CUDA, PhysX и пр.
    Считайте это появлением новой науки XXI-го века.
     
    Последнее редактирование: 19 янв 2011
  4. invand3r

    invand3r IDDQD

    Сообщения:
    999
    Симпатии:
    615
    Занятненько!
     
    1 человеку нравится это.