Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2014, 15:10   #1
Arisaka
Пользователь
 
Регистрация: 02.01.2012
Сообщений: 24
Вопрос Про Инстанцирование объектов в играх

Возникло несколько вопросов

1. Правильно ли я понимаю?

Замоделили одну модель (кресло например)

"Засунули" в игровой двиг.

Игровая сцена "зал для конференций" (на 40к мест)

И в зале кресло 40 раз проинстанциировано.
Память расходуется на 1 кресло, на 40 позиций и матрицу поворота.

Когда мы копируем один и тот же объект, мы сохраняем кол-во вызовов на отрисовку.

Не отрисовываем "кресло" "кресло" "кресло" "кресло" и так до 40-ка.
А сразу один раз все объекты "КРЕСЛО".

2. Какие объекты можно инстанцировать?
С полностью статичными объектами понятно. (геометрия уровня, полностью статичные объекты)

Можно ли инстанцировать персонажей? (транспорт)
(Динамические и анимированные объекты?)

3. Существуют ли лимиты? С креслами всё ясно их не очень много (40) А если бы их было 1000? (или больше)

4. Насколько инстанцирование снижает потребление ресурсов?

Тени, отражения и проч тоже "один раз", или для каждого объекта отдельно просчитываются?

Последний раз редактировалось Arisaka; 07.12.2014 в 15:16.
Arisaka вне форума Ответить с цитированием
Старый 07.12.2014, 15:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Мне кажется что чтоб ответить на такие вопросы нужно знать о каком двигле идет речь и как оно работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.12.2014, 15:40   #3
Arisaka
Пользователь
 
Регистрация: 02.01.2012
Сообщений: 24
По умолчанию

Такое есть во многих движках.

Лично я знаю что есть в:
CryEngine 2 и Юнити.
Arisaka вне форума Ответить с цитированием
Старый 16.12.2014, 11:50   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,889
По умолчанию

Нулевой пункт - чтобы люди Вас понимали однозначно, лучше использовать термины устоявшиеся, а не общего плана слова, а именно instancing (как минимум, инстансинг) вместо инстанцирование (которое в программировании имеет ещё смыслы), тем более Вы спрашиваете про технологию в графике.
По 1 пункту лучше читать статьи про инстансинг от серьёзных людей (лучше на
инглише).
2. Инстансинг можно делать для анимированных и неанимированных объектов, насчёт скелетной анимации не скажу, но, думаю, вряд ли, а вот с фреймовой должно быть нормально.
3 Лимиты не знаю, но знаю точно, что инстансинг имеет смысл при больших количествах объектов подвергаемых оному - от 100. И думаю, чем проще объект тем лучше, собственно, поэтому инстансинг применяют для фоновых объектов, типа деревья и трава, заборы какие-нибудь.
4. Вряд ли даже профи скажет, какой будет выигрыш в конкретном случае.

Про остальное - ответ в первом пункте + практика.

Также могу добавить, что сейчас всё делается шейдерами, в том числе и такие оптимизации можно самому написать, наподобие генерируемых в шейдере текстур, сделать генерируемую геометрию.
phomm вне форума Ответить с цитированием
Старый 25.01.2015, 20:27   #5
Arisaka
Пользователь
 
Регистрация: 02.01.2012
Сообщений: 24
По умолчанию

Спасибо. Но... про нулевой пункт.

Это устоявшийся термин. В данном случае никакой путаницы не могло возникнуть.
Arisaka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инстанцирование шаблона для различных типов winst2014 Помощь студентам 0 23.02.2013 18:41
Создание и уничтожение объектов. Время жизни объектов C++/C# Anett// Помощь студентам 0 24.10.2011 23:26
о играх ололошенько Компьютерное железо 21 13.10.2010 09:50
Эмуляция в играх magros Общие вопросы .NET 6 21.06.2010 07:06