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;
Далее вам нужны будут нормали всех вершин. Их можно получить, например, взяв среднее между всеми нормалями полигонов которые используют данную вершину.
Не могу понять почему после пробела, он не использует горизонтальную прокрутку а скидывает её в вертикальную
Есть ли какие-то преимущества у switch над конструкцией (if else + else if) помимо визуальной наглядности
Как можно изменить часть текста? Не понимаю как можно этого добитьсяЯ думал разбить на массив char и менять эти символы
Задача: отправить в функицию массив и вернуть (не отобразить,а именно вернуть) массив в обратном порядкеРезультат: Вылазит ексепшн согласно...