Форум Игромании

Форум Игромании (http://forum.igromania.ru/index.php)
-   Архив (Общеигровые вопросы) (http://forum.igromania.ru/forumdisplay.php?f=173)
-   -   Blitz 3D (http://forum.igromania.ru/showthread.php?t=62619)

ivg 04.03.2008 00:05

Blitz 3D
 
Мы создаем игру на движке блиц3д и необходимо реализовать отрывающиеся конечности у персонажей. И небыло бы проблем, если бы персонаж после расчленения оставался лежать на месте экзекуции. Но надо сделать таким образом, чтобы страдалец бегал с оторванной конечностью. И тут возникают проблемы - как эту конечность оторвать, если она привязана к скелету? Да и как это сделать на программном уровне, если тело персонажа представляет собой единую модель вместе с руками и ногами? Модели и анимацию делаем в 3d Max. Вот такая вот проблема. Интересно узнать, как это реализуется в профессиональных проектах. В качестве примера приведу еще не вышедшую "Legendary the box", где будет возможность отстреливать от монстров куски.

pokibor 04.03.2008 00:33

ivg
Совет "не использовать Blitz" Вам, очевидно, не подходит? Тогда копайтесь в его функциях (или там за прошедшее время кто-то удосужился прикрутить объектно-ориентированное программирование?).
Вам нужно получить доступ непосредственно к буферу вершин модели. Дело в том, что любая модель - это просто куча вершин, связанных в полигоны. Данные по вершинам (позиция, текстурные координаты и т.п.) всецело определяют модель. Таким образом, добравшись до этих данных, теоретически можно попробовать их как-то обрабатывать, но
1) Это будет медленно (Lock памяти, модификации, разве что буфер удастся при отстреле быстро разделить на два...)
2) Вовсе не факт, что... ммм... "недодвижок" уровня Blitz3D это позволяет.

Возможно, лучше будет написать вертексный шейдер - опять же, если Blitz это позволяет и у Вас достаточно умения написать такой шейдер.

Но самое нормальное - это, конечно, не использовать единую модель. Ума не приложу, зачем с такими амбициями Вам это понадобилось. Ну сделайте отдельно модели рук ног и т.д., почему обязательно одна модель на целый персонаж?

ivg 04.03.2008 18:35

Дело в том, что при использовании отдельных моделей конечностей, в местах их "стыковки" с телом будут ярковыраженные стыки, которые в нашем случае не получится скрыть одеждой. Конечно хочется сделать более качественные модели, но если не будет других вариантов, то придется руки и ноги делать отдельно.

Была мысль скрывать оторванные конечности с помощью карт прозрачности, но опять же, как это реализовать на программном уровне? Понятно, что рисовать много текстур, учитывающих каждый возможный вариант (оторвано, например, обе руки, или обе ноги, или одна рука и две ноги и т.п.) практически нереально.

pokibor 04.03.2008 18:45

Цитата:

Сообщение от ivg (Сообщение 3542827)
Дело в том, что при использовании отдельных моделей конечностей, в местах их "стыковки" с телом будут ярковыраженные стыки, которые в нашем случае не получится скрыть одеждой. Конечно хочется сделать более качественные модели, но если не будет других вариантов, то придется руки и ноги делать отдельно.

Что-то я не понял, почему. Что, не судьба вашу одну модель просто разбить на две-три-десять-сколько нужно?

Цитата:

Сообщение от ivg (Сообщение 3542827)
Была мысль скрывать оторванные конечности с помощью карт прозрачности, но опять же, как это реализовать на программном уровне?

Есть такая хорошая штука - шейдерами называется. Как раз для таких фокусов они и предназначены.

Цитата:

Сообщение от ivg (Сообщение 3542827)
Понятно, что рисовать много текстур, учитывающих каждый возможный вариант (оторвано, например, обе руки, или обе ноги, или одна рука и две ноги и т.п.) практически нереально.

Что-то я не понял, зачем рисовать много текстур. Можно одну и ту же комплексную назначать моделям руки, ноги и чего угодно, а текстурными координатами говорить, что именно брать из этой текстуры. Плюс есть мультитекстурирование. Либо, если уж так неймётся, напишите программу, по одной комплексной генеряющую эти ваши отдельные.

Chkalov_vs 05.03.2008 08:45

Если я не ошибаюсь в формате md2 (используется квейком и блиц его прекрасно понимает) анимация морфинговая. Может можно просто сделать несколько вариантов анимации модели (с руками и без), а уж потом использовать соответствующие "кадры" анимации?

ivg 05.03.2008 20:00

Ты имеешь ввиду с помощью морфинга из целой руки делать оторванную?

Chkalov_vs 06.03.2008 08:07

Цитата:

Сообщение от ivg (Сообщение 3550176)
Ты имеешь ввиду с помощью морфинга из целой руки делать оторванную?

Именно. Но я могу и ошибаться. Судя по описанию в Игромании, формат md2 хранит в себе несколько вариантов одной модели и подгружает их по очереди. По идее должно получиться. Надо у профи спрашивать.

pokibor 06.03.2008 08:55

Chkalov_vs
Судя по моему опыту работы с md2, он просто хранит в себе анимации и всё. При этом я ещё ни в одной модели не видел, например, исчезновения одной из вершин в каких-то кадрах, поэтому не уверен, что формат поддерживает то, что Вы имеете в виду.

ivg 06.03.2008 18:48

Я не знаю на счет md2, но модификатор morfer в максе работает, только если колличество вершин неизменно. Поэтому я имел ввиду придать руке форму оторванной, не удаляя вершины, а смещая их соответствующим образом (например все вершины в одну точку). Я в нашем проекте занимаюсь моделлингом и анимацией, а в блице не шарю, но когда я предложил такой вариант нашим программистам, мне сказали, что блиц не поддерживает морфер, но при его использовании он присваивает вершинам кости и работает с ними. Только в таком случае, колличество вершин ограничено (около 250-ти). Поэтому такой вариант тоже не подходит.
Цитата:

Сообщение от pokibor (Сообщение 3542919)
Что-то я не понял, почему. Что, не судьба вашу одну модель просто разбить на две-три-десять-сколько нужно?

Что-бы сгладить переходы между полигонами, к модели применяется модификатор Smooth, но если разбить модель на несколько частей, то переходы между этими частями уже не сглаживаются, поэтому будут заметны стыки.

pokibor 06.03.2008 18:57

Цитата:

Сообщение от ivg (Сообщение 3555905)
Что-бы сгладить переходы между полигонами, к модели применяется модификатор Smooth

Программно??? В процессе игры??? :eek:
Ну тогда шейдер можно чуток переписать. Или просто с нормалями поиграться.
Цитата:

Сообщение от ivg (Сообщение 3555905)
, но если разбить модель на несколько частей, то переходы между этими частями уже не сглаживаются, поэтому будут заметны стыки.

А сначала сгладить как надо (если имеется в виду 3dmax), а потом отделить нужные вершины в отдельный объект - не катит?

ivg 06.03.2008 19:02

Цитата:

Сообщение от pokibor (Сообщение 3556001)
Программно??? В процессе игры???

Нет, в самом максе.
Цитата:

Сообщение от pokibor (Сообщение 3556001)
А сначала сгладить как надо (если имеется в виду 3dmax), а потом отделить нужные вершины в отдельный объект - не катит?

Smooth сглаживает переходы между полигонами единой модели, поэтому даже если после сглаживания отделяем часть модели в отдельный объект, сглаживание на объекте сохраняется, а в месте его стыковки с основной моделью пропадает.

pokibor 06.03.2008 19:05

Цитата:

Сообщение от ivg (Сообщение 3556052)
Smooth сглаживает переходы между полигонами единой модели, поэтому даже если после сглаживания отделяем часть модели в отдельный объект, сглаживание на объекте сохраняется, а в месте его стыковки с основной моделью пропадает.

Продублируйте ряд перекрывающихся полигонов между конечностью и туловищем, и сделайте один чуть-чуть под другим.

Chkalov_vs 06.03.2008 20:48

Цитата:

Сообщение от ivg (Сообщение 3556052)
Smooth сглаживает переходы между полигонами единой модели, поэтому даже если после сглаживания отделяем часть модели в отдельный объект, сглаживание на объекте сохраняется, а в месте его стыковки с основной моделью пропадает.

Проделал следующую операцию: применил к модели Smooth, конвертировал в EditableMesh, детачил часть модели. Стык практически ен виден.
А не вариант после попадания в руку заменить модель на другую? Это уже к программистам вопрос.

П.С. Нельзя ли сменить назвение темы, например, "вопросы по блицу"?
Да, переименовано в "Blitz 3D", чтобы больше про Блиц тем не плодили.

ivg 06.03.2008 22:43

Цитата:

Сообщение от Chkalov_vs (Сообщение 3557104)
Проделал следующую операцию: применил к модели Smooth, конвертировал в EditableMesh, детачил часть модели. Стык практически ен виден.

Проделывал тоже самое, результат не понравился. Такой вариант на тот случай если не получится с целой моделью. Позже попробую как советует pokibor, т.е. сделать полигоны не встык, а один под другим.
Цитата:

Сообщение от Chkalov_vs (Сообщение 3557104)
А не вариант после попадания в руку заменить модель на другую? Это уже к программистам вопрос.

Заменить можно, но не создавать же много моделей под каждый возможный случай.

Chkalov_vs 14.03.2008 08:46

Экспортирую модель из макса в б3д с помощью B3dPipeline, нормал бамп не отображается. Каким образом можно его прикрутить?

Feanor62rus 20.03.2008 21:35

На сколько я знаю Blitz 3D с нормал бампингом, паралаксом и прочими наворотами не работает.

JohnK 21.03.2008 04:01

Цитата:

На сколько я знаю Blitz 3D с нормал бампингом, паралаксом и прочими наворотами не работает.
В таком случае уж лучше было бы промолчать ;)
Давно уже в разработке двиг приносящий ДХ9 для блица.
Найти можно на blitz.pp.ru в разделе "Проекты".

Feanor62rus 21.03.2008 20:54

Официально он не входит в комплект блица, так что не надо на меня наезжать))
JohnK, простите, а что такое "двиг для блица"? Сам блиц то двигом можно назвать с очень большой натяжкой. Но "двиг для блица"... это переворачивает мое мировоззрение)))
Так он в разработке или уже работает?

Fire-studio 23.03.2008 16:19

AI в Blitz3D
 
Люди! Когда делаешь игру, часто доходит дело до ИИ! Но думаешь как подступиться! И как сделать правильнее! Если ставить вейпоинты как дорогу, то бот будет просто ходить по назначенному маршруту! Тоесть бот не сможет "ДУМАТЬ" ! Можно ли создать вейпоинты по всей плоскости кроме стен? И чтобы бот сам выбирал куда ему идти! )) Конечно это СЛОЖНО ! А есть другие способы?
Повторная тема. Пока перемещаю в тему по Блицу, раз уж в названии прямо указан Блиц. Если обсуждение перейдёт-таки к конкретным алгоритмам, возможно, будет организована новая тема либо я его перенесу в одну из "важных" тем.

JohnK 23.03.2008 17:08

Цитата:

JohnK, простите, а что такое "двиг для блица"? Сам блиц то двигом можно назвать с очень большой натяжкой. Но "двиг для блица"... это переворачивает мое мировоззрение)))
Так он в разработке или уже работает?
Двиг для блица - это двиг для блица)
Да, мечта извращенца, но, увы, иначе никак. Он в разработке, но есть уже стабильные версии.
Цитата:

Сообщение от Fire-studio (Сообщение 3676645)
Люди! Когда делаешь игру, часто доходит дело до ИИ! Но думаешь как подступиться! И как сделать правильнее! Если ставить вейпоинты как дорогу, то бот будет просто ходить по назначенному маршруту! Тоесть бот не сможет "ДУМАТЬ" ! Можно ли создать вейпоинты по всей плоскости кроме стен? И чтобы бот сам выбирал куда ему идти! )) Конечно это СЛОЖНО ! А есть другие способы?

Сначала лучше бы жанр сказать)
Затем, уже решать.
Понятие "Легко" в создании ИИ отсутствует.
Цитата:

Можно ли создать вейпоинты по всей плоскости кроме стен?
Да, можно.


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

Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.