Будет большим плюсом если раньше вы работали с Three.js и gltf моделями или если у вас есть желание с этим работать.
** Контекст: я инди-программист, разрабатываю low poly online игру в браузере.
Это первый заказ из серии при успешном выполнении планируется долгосрочное сотрудничество с регулярными заказами (самолеты, здания, окружение).
Пока начнем с модели самолета, потому что в дальнешим это будет нашей единицей меры, от которой в будущем будем разрабатывать дальнейшие модели на карте.
** Пример модели:
Я прикрепил архив модели, на которую нужно ориентироваться.
** Визуальные требования:
* Нужно сделать похожую low poly модель самолета spitfire только в 1.5 раза больше чем та модель, которую я прислал.
* Количество triangles и vertices можно уменьшить в 2-3 раза, нам не нужен экстра реализм, идея игры в простоте и динамике.
* В идеале сохранить узнаваемую форму модели spitfire(в особенности трубы двигателя). Увеличить в 1.5 раза. Сделать пропеллер отдельной mesh'ю.
* Анимации вшитые в саму модель нам не нужны, мы их не делаем. Анимировать я буду программно, используя jsx разметку, которая нам доступна для gltf моделей (об этом ниже)
** Технические требования:
* Для работы с моделями в браузере лучше всего подойдет формат gltf, собственно он нам и требуется.
* Я конверчу gltf модель в jsx разметку с помощью
. Если закинете пример модели, которую я прислал, то увидите, что нам выдается разметка типа "<group name="Sketchfab_model" rotation={[Math.PI / 2, 0.003, Math.PI / 2]}>"
Этого не нужно бояться, это просто представление group, mesh, geometry и т.д.
* Желательно упаковать модель так, чтобы было как в jsx исходной модели:
````
<group name="Spitfire_Plane" position={[0, 16, 7]}>
<group name="Body" position={[0, -0.319, -0.043]}>
<mesh
name="Body_MAT_0"
castShadow
receiveShadow
geometry={nodes.Body_MAT_0.geometry}
material={materials.material}
/>
</group>
<group
name="Aileron_L"
position={[1.35, -0.445, -0.077]}
rotation={[0, 0, -0.179]}>
<mesh
name="Aileron_L_MAT_0"
castShadow
receiveShadow
geometry={nodes.Aileron_L_MAT_0.geometry}
material={materials.material}
/>
</group>
```
* Эйлероны, колесо вместе с шасси, пропеллер должны идти отдельной группой. Также просьба не добавлять на группы вращение, чтобы на самих саб-группах не было rotation={[0, 0, -0.179]}. На группах вращение должно быть по нулям rotation={[0, 0, 0]} это важное требование, которое нужно соблюдать и для будущих моделей
* По матералу и цветам пока можно использовать как на модели-референсе