obj файл содержит координаты вершин, вот например одна из них:
v -1.174286 32.706123 6.473185
как это представить в вид от -1
до 1
как это требует opengl? Есть ли функция перевода? (Для работы с геометрическими преобразованием использую библиотеку joml)
у меня obj не содержит нормалей, как задать вектор направление? Что в этом случае нужно делать?
В OpenGL используется иерархия преобразований для вывода на экран. Для этого используются матрицы трансформации модели (например перемещение, вращение, масштабирование и т.п.), вида (преобразование из мировых коорлинат в координаты которые видит камера), проекции (преобразование из координат камеры в -1..1
координаты, например ортографическая или перспективная).
Т.о. вы можете задать ортографическую проекцию произвольного размера (например -100..412
), в которой иметь модель так же произвольного размера (например 10..120
) и получить ее на экране.
С точки зрения работы с готовым движком - вы просто задаете свойства виртуальной "камеры" (положение, ориентацию, зум) и размещаете объект в сцене (положение, ориентацию, размер). Ни про какие -1..1
вам знать не надо.
Нормали достаточно просто рассчитываются по полигонам/треугольникам. Нормаль - это перпендикуляр к поверхности. Посчитав кросс-продукт между двумя векторами в треугольнике мы получим его нормаль. (направление которой зависит от направления векторов).
function VectorCrossProduct(const A, B: TKMVertex3): TKMVertex3;
begin
Result.X := A.Y * B.Z - A.Z * B.Y;
Result.Y := A.Z * B.X - A.X * B.Z;
Result.Z := A.X * B.Y - A.Y * B.X;
end;
Далее вам нужны будут нормали всех вершин. Их можно получить, например, взяв среднее между всеми нормалями полигонов которые используют данную вершину.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу понять почему после пробела, он не использует горизонтальную прокрутку а скидывает её в вертикальную
Есть ли какие-то преимущества у switch над конструкцией (if else + else if) помимо визуальной наглядности
Как можно изменить часть текста? Не понимаю как можно этого добитьсяЯ думал разбить на массив char и менять эти символы
Задача: отправить в функицию массив и вернуть (не отобразить,а именно вернуть) массив в обратном порядкеРезультат: Вылазит ексепшн согласно...