Следующий шаг – это заменить модели на что-то более актуальное чем просто квадратики. Например, на это: Я выбрал именно эту модель за ее изысканно гнутые формы. Если чо, это 1935 Deusenberg SSJ Speedster, масштаб 1:64. Для этого понадобится расширить функционал ModelBuilder-а и ModelLoader-а. Также понадобятся новые XML таги в дескрипторах чтобы этот функционал задействовать. Здесь […]
Category: Cross-platform 3D
Глава 38. Иерархичные модели
Теперь можно подумать и о более сложных моделях, состоящих из нескольких элементов с индивидуальным поведением. Например – машина, где корпус был бы корневым элементом, а колеса – дочерними. Для обоих (корпус и колесо) понадобятся собственные отдельные дескрипторы и классы, обсуживающие их поведение. 1. В Windows File Explorer-е откроем наш корневой (CPP) каталог, сделаем копию a997modeler […]
Глава 37.2. GitHub
Для уверенности, что мы с Вами точно на одной странице, давайте ссинхронизируем наши проекты. Полный текущий репозиторий Проекта можно сгрузить с https://github.com/bkantemir/_wg37 Windows solution, x86: _wg37-main\a997modeler\p_windows\p_windows.sln Android solution, ARM64: _wg37-main\a997modeler\p_android\p_android.sln Важные изменения: Чтобы отвязать проект от каталога C:\CPP, все пути в настройках проекта переведены в относительную форму. Как ..\..\engine вместо C:\CPP\engine. Чтобы облегчить репозиторий, из […]
Глава 37. Оптимизация мешей
Модель полностью готова, но остался еще 1 вопрос: Сейчас модель состоит из 316 вертексов и 144 треугольников (432 индекса), что не так уж и много по сравнению с 3D редакторами. Но все-таки, откуда СТОЛЬКО-то?? Ну, сама коробка например: 6 сторон, по 4 вертекса каждая = 24 вертекса 12 ребер, по 4 вертекса каждое = 48 […]
Глава 36. “Стеклянный” эффект
Модель почти готова. Не хватает только: Слюдяной пленки и Акцизной марки Тут нам даже не придется писать новых шейдеров. Для пленки мы возьмем наш “зеркальный” шейдер (как для позолоченных принтов) с белым шумом в качестве главной текстуры (uTex0) и “странслируем” ее в полупрозрачную 8×1 текстуру glass01.bmp (uTex3), имитирующую стеклянное отражение. Это просто белая прозрачная текстура […]
Глава 35. “Проволочный” шейдер
Здесь я собираюсь добавить золотую ленточку (пломбу). Это будет линия, последовательность точек вместо обычного набора треугольников. Для этого потребуются: Набор новых тагов в ModelLoader Новая переменная lineWidth в классе Material В DrawJob будет нужно перекалибровывать lineWidth в зависимости от дистанции Дополнительный функционал в шейдерах И, конечно, новый model descriptor 1. Скопируем нижеследующий код в Текстовый […]
Глава 34. “Тюнинг” Материала
Мы ВСЕ ЕЩЕ пытаемся “нарисовать” стык (щель) между пачкой и крышкой как небольшую normal map приложенную к части существующей текстурированной поверхности. На данный момент у нас есть вырезанные фрагменты с их “родными” собственными Материалами. В предыдущей главе мы просто заменили их на зеленый Phong. На самом же деле нам нужны родные Material-ы, только с добавленной normal map. […]
Глава 33. Пересечение полигонов
На всякий случай: мы все еще пытаемся “нарисовать” стык (щель) между пачкой и крышкой, как небольшую normal map приложенную к части существующей текстурированной поверхности. Как-то так: В предыдущей главе мы смогли пометить и переместить “marked vertices/triangles group“. Теперь нам надо выбрать одну (в этом примере – “box_right”), клонировать ее, развернуть и сдвинуть лицом к нам: Затем – […]
Глава 32. “Помеченные” группы вертексов
Теперь я хочу “нарисовать” стык (щель) между пачкой и крышкой, как normal map приложенную к части существующей поверхности, НЕ ко всей поверхности, и НЕ к VirtualShape как мы делали раньше. Это потребует нескольких новых концепций. Windows 1. Запускаем VS, открываем C:\CPP\a997modeler\p_windows\p_windows.sln. Первая из новых концепций – помеченные группы вертексов/треугольников, чтобы потом мы могли обратиться к какой-то […]
Глава 31. Карты нормалей / Normal maps
Теперь хочу сделать герб и надпись “Marlboro” на лицевой стороне тиснеными. Для этого понадобятся Карты нормалей / Normal Maps. Это голубые изображения справа: Чтобы их сгенерировать, я воспользовался сайтом NormalMap-Online. Настройки по умолчанию – для DirectX. Для OpenGL – отметьте Invert R Кликните на левую картинку чтобы загрузить свою. Эта картинка – уже в Вашем […]