Войти
ПроектыФорумУтилиты

TDG 3D Engine - движок с неполигональным collision detection и response.

Страницы: 1 2 3 4 Следующая »
#0
19:08, 5 фев. 2008

Если кто набредёт на эту ветку в поисках исходников, скачивайте исходники здесь:

http://www.igrodel.ru/tmtlib/blender/silenthill.zip
http://www.igrodel.ru/tmtlib/blender/cdnr1-10.zip
http://www.igrodel.ru/tmtlib/blender/tdg2008-4-7lite-shaders.zip
http://www.igrodel.ru/tmtlib/blender/tdg2008-9-24.zip

Вкратце: всё на Delphi, сделано в 2008 году.  Из утилит есть python скрипты для Blender: экспорт геометрии уровней и скелетной анимации с весами костей.
Всё с исходниками и откомпилированными примерами. Проверка столкновений, шейдеры, скелетная анимация. Описание метода проверки столкновений:
http://www.igrodel.ru/tmtlib/b-e5.htm , http://www.igrodel.ru/tmtlib/b-e6.htm

+ Показать

#1
21:02, 5 фев. 2008

камера протыкает стены, если спиной идти или просто поворачиваться рядом со стеной
а.. не, сорри. проверяется белый кружок видимо. но все равно портит впечатление:)

#2
22:13, 5 фев. 2008

tmtlib

работает отлично, и теперь точно без подёргиваний и с нормальной скоростью!

#3
18:20, 6 фев. 2008

Работает быстро(>>999фпс) но как-то не совсем ясно, чем программа занимается. Определение столкновений чего с чем? Камеры с внешним миром? Или не только? Каким примитивом представлена камера? Насколько мощный Collision Response? Он тоже выполняется на GPU? Вобщем, автор, давай более подробное объяснение.

#4
21:52, 6 фев. 2008

Suslik
Проверка столкновений круга с уровнем. Круг представлен 2d-массивом (спрайтом), который заполнен кружком. Как альтернатива - можно заполнять его "тенью" объекта.
Response работает в 2D. Объяснять долго, посмотри директорию tutorial в архиве - там на русском языке описан алгоритм двухлетней давности (cdnr1). В принципе cdnr2 работает аналогично. Важное отличие новой версии от старой - это "архивация" данных, когда одинаковые фотографии z-buffer-а ссылаются на один источник (расход памяти с 20мб уменьшился до 400-700кб в зависимости от разрешения). И несколько других доработок, чтобы всё меньше "дрыгалось".

Если кратко, то алгоритм работает так:
1. определяется bound box уровня
2. уровень разбивается на объёмы
3. фотографируются z-buffer каждого объёма при виде сверху ("z-пласты")
4. данные скидываются в файл, чтобы не ждать заново при следующем запуске

То есть данные для collision detection рассчитываются заранее

Сам collision работает так:
1. по координатам игрока определяется ближайшая фотка z-buffer при виде сверху
2. сравнивая старые координаты и высоту в z-buffer-е определяем перепад высот
3. если перепад высот слишком большой, запускаем 2d collision detection (фотка z-buffer двухмерная).

Для многоэтажных зданий число z-пластов должно быть больше, чем количество этажей.

#5
7:05, 7 фев. 2008

tmtlib
Привет!
Вернулся из армии? :)

#6
11:25, 10 фев. 2008

Капитан
>tmtlib
>Привет!
>Вернулся из армии? :)
да =)

2All: Заинтересовал кого-нибудь метод? Нужна ли документация по функциям движка ?

#7
12:18, 10 фев. 2008

tmtlib
Может статью напишешь? Было бы неплохо.

#8
16:04, 20 фев. 2008

update: добавлен старый пример в новый архив:
http://www.igrodel.ru/upload/myengine-2008-2-20.zip (771kb)

#9
17:30, 2 мар. 2008

update:

TripleDashGarlic 2008.3.2

- added materials support
- added external GLSL shaders support
- global variables moved to myvariables.pas
- tested on Delphi Turbo Explorer
- renamed MyEngine to TripleDashGarlic

http://www.igrodel.ru/tdg3d/tdg-2008-3-2.zip
http://www.igrodel.ru/tdg3d/

#10
19:31, 2 мар. 2008

tmtlib
>>Заинтересовал кого-нибудь метод?
О,наконец-то коллижн без полигонов! Так долго  ждал этого дня :))
У меня тоже кое-что есть похожее.Очень интересно.Можно было бы сравнить.
Я не совсем понял из объяснения-коллижн двухмерный?
И какое реально разрешение в пространстве по просчитанным картам?
И что делать,если на уровне сложная геометрия?Количество снимков  либо сильно вырастет,
либо придется как -то ограничивать(баундбоксами:)
-----------------
Посмотрел демку по первой ссылке.Увы...
Такое можно сделать и коллизией с полигонами.То есть преимущества метода не видно.
Например,в одном месте есть переход от пола к стене под 45*-круг в него упирается и все.
Как в обычный баундбокс.Смысл всей затеи теряется-потому что видно -человек может на таком стоять.
Особенно если используется вид от третьего лица.
Чтобы показать преимущество такого подхода,поведение камеры надо  сделать умнее-контроллер
управления должен решать сам за игрока-может он попасть в какое-либо место уровня или нет,
чисто по физике.Для этого нужно сделать еще один шаг-отказаться от просчета заранее и
получать информацию об окружении прямо по ходу.

#11
21:09, 2 мар. 2008

"по координатам игрока определяется ближайшая фотка z-buffer при виде сверху"  - не много может дурацкий вопрос, но для меня он очень важен и интересен: координаты игрока высчитываются с какой-то погрешностью ? так, как по идее не всегда ж получится , что игрок стоит в "целых" координатах? а потом z-координата высчитывается типа player.z:= karta[x,y]  ??

#12
3:50, 4 мар. 2008

Ilia
да, коллижн двумерный, но он всё-таки не на все 100% двумерный, так как в основном идёт проверка сразу по нескольким 2D-пластам, они вместе дают что-то вроде 3D. Но с потерей некоторой точности.
Сейчас по-моему разрешение такое: 32 пикселя буфера глубины на 50 opengl-евских единиц пространства - или как там это назвать. Если геометрия уж очень сложная (гигантский уровень, по которому бегает что-нибудь малюсенькое), то скорее всего придётся поднимать разрешение. Если детали не важны - лучше для крупных уровней просто повысить размер одного скриншота zbuffer-а в координатах OpenGL - упадёт разрешение, но снизится количество снимков. У текущей реализации есть недостатки, переход от пола к стене и т.п.


SCRIMERS
пока что координаты игрока попросту округляются, координаты получаются целыми. При текущем разрешение "дрыгание" при ходьбе практически незаметно.
Но в принципе никто не мешает сделать интерполяцию нескольких karta[Xi, Yi] около player.x, player.y

#13
8:49, 4 мар. 2008

tmtlib
Проблема эта интересная-сейчас,имхо,в современных играх есть большой разрыв между системой коллиженов
и  всем остальным.Последние ,похоже ,остались на уровне где-то 5  летней давности.
Года три назад я делал умную камеру,а вообще 3D-коллижен без полигонов- еще раньше в 2001г,на DX6.
Если интересно,у меня есть демо,правда старое и с небольшим недостатком-один из параметров забыл привязать к fps.

#14
15:48, 13 мар. 2008

Новая версия, плюс пример дебаг отпута:

Изображение
Изображение
Изображение
Изображение

Скачать: http://www.igrodel.ru/tdg3d/tdg-2008-3-13.zip (1mb)

Страницы: 1 2 3 4 Следующая »
ПроектыФорумУтилиты

Тема в архиве.