Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Поддержка 3D моделей #533

Open
lpenguin opened this issue Jan 27, 2022 · 0 comments · May be fixed by #577
Open

Поддержка 3D моделей #533

lpenguin opened this issue Jan 27, 2022 · 0 comments · May be fixed by #577

Comments

@lpenguin
Copy link
Contributor

lpenguin commented Jan 27, 2022

Нужно добавить поддержку отображения 3D моделей через AbstractVisualBackend.

См. параллельный PR kvark/vange-rs#191

Основная концепция - сначала загружаем все меши моделей в видео-память (create_model), потом создаем инстансы этих мешей (model_instance_create) и каждый кадр меняем их трансформацию (model_instance_set_transform). Обновление трансформации происходит в функции отрисовки 3D объекта, и, если объект это мехос - то еще дополнительно обновляем трансформацию моделей колес и оружия.

Проблемы, которые надо решить:

  1. Формат модели определен в самих вангерах, а библиотека renderer сделана максимально отдельно от основного кода вангеров.
  2. Код софтверной отрисовки 3D моделей, вызывается уже после отрисовки карты и нужно будет передвинуть вызов VisualBackend::render

Что нужно сделать:

Расширить интерфейс AbstractVisualBackend следующими функциями:

struct Model;  // Описание модели в C3D формате. 

/*
Создать скрытый экземпляр модели в видеопамяти. 
Используется, как "шаблон" для моделей, которыe нужно отобразить отобразить
*/
uint64_t model_create(Model* model);
void model_destroy(uint64_t model_handle);

/*
Создать экземпляр модели в видеопамяти из шаблона `model_handle`
Уже реальная, отображаемая модель
*/
uint64_t model_instance_create(uint64_t model_handle);
void model_instance_set_transform(uint64_t model_instance_handle, Transform transform);
void model_instance_destroy(uint64_t model_instance_handle);
@lpenguin lpenguin linked a pull request May 9, 2022 that will close this issue
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant