говорить о хранении и загрузке моделей и анимации, который будет лучше для Game Engine:Анимация Instancing выступления
1 - Иметь сетку и кости для каждой модели, как в том же файле, каждый костную систему с 10 ~ 15 анимациями. (так что каждая модель имеет свои собственные анимации)
2 - Имеют много ячеек и небольшое количество костей, но файлы отделены друг от друга, и одна и та же кость (анимация тоже) может использоваться для более чем одной сетки , каждый набор костей может иметь много анимаций. (обратите внимание, что в этом случае использование одного и того же костяка и тех же анимаций приведет к потере уникальности).
И теперь, если мне нужно, чтобы показать 120 ~ 150 моделей в каждом кадре (анимированный и кожурой ГПУ), 40 из них имеют одинаковый тип, лучше:
1 - Используйте систему инстансов для все модели в игре, даже если мне нужна только одна модель для каждого типа.
2 - Обнаружить, что модель требует инстанцирования (если они повторяются более одного раза) и использовать другую систему визуализации (другие программы шейдеров), используйте неинструментацию для других моделей.
3 - Не используйте instancing, потому что «коэффициент усиления» будет очень низким для этого количества моделей.
Все «модели», которые здесь обсуждаются, являются анимированными моделями, в настоящее время я использую MD5-файл с обрезкой графического ядра, но без instancing, и я бы знал, есть ли лучшие способы сделать весь процесс анимации.
Если кто-нибудь знает хороший учебник или может поставить меня на пути ... Я не знаю, как я мог бы создать интерполированное скелет и использовать инстансов для этого, позвольте мне объяснить ..:
Я могу сжать все преобразования костей (матрицы) для всей анимации для всех кадров в простой текстуре и отправить ее в шейдер вершин, а затем прочитать для каждой вершины для каждой модели предполагаемое преобразование анимации/кадра. Это нормально, я могу использовать instancing здесь, потому что я всегда буду отправлять одни и те же данные для одного и того же типа модели, но когда мне нужно использовать интерполяционный скелет, должен ли я делать эту интерполяцию на вершинном шейдере тоже? (больше нагрузок от текстуры может привести к некоторым потерям производительности). Мне тоже нужно вычислить интерполированный скелет на процессоре, потому что он мне нужен для столкновений ...
Любые решения/идеи?
- Im используя Directx, но я думаю, что это относится и к другим системам
=> Теперь мне просто нужен ответ на первый вопрос, то второй является решена (но если кто-то хочет дать любые другие предложения в порядке)
но Dont использовать интерполированное скелет, или они? без интерполированного скелета моя анимация должна быть 60 кадров в секунду, чтобы не иметь визуальных ошибок, и я не могу интерполировать между анимациями ... – user1900984
Вы правы, что не интерполируют. Однако тривиально добавлять интерполяцию путем выборки текущей и следующей матриц кадра, а затем интерполировать между ними для получения в интерполированной матрице. – alanw
Я был обеспокоен стоимостью этой интерполяции на шейдере, но я считаю, что это тоже тривиально, спасибо! – user1900984