Создать игру, создание игр, конструктора игр, игровые движки, разработка игр, сделать игру
Приветствую Вас Гость · Вход · Регистрация  ·  Новые сообщения · Участники · Правила · Поиск · RSS
  • Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: Конструктор  
[Delphi + OpenGL] Нужна помощь
Конструктор Дата: Воскресенье, 22.05.2011, 23:40 | Сообщение # 1
( Не ленимся =) )
Просмотр профиля: Конструктор

Сообщений: [1854]
Нужна помощь в расчете "правильных" нормалей для примитивов.
По нету полазал, нашел несколько видов подсчета. Опробовал многие, но есть недочеты при
включении сферических текстур на таких примитивах как 4-х угольник (квадрат).
При определенных положениях камеры текстура ведет себя следующим образом:
Этот квадрат делится на свои составляющие - 2-а треугольника. У одного треугольника текстура переходит как надо, а у второго она растягивается до немыслимых размеров.

Вот код для расчета нормалей который я использую:

procedure Normalize( var n:TVector );
var len:single;
begin
len := sqrt(n.x*n.x + n.y*n.y + n.z*n.z );
n.x := n.x / len;
n.y := n.y / len;
n.z := n.z / len;
end;

Вот второй код, менее глюков, но все равно наблюдается деление и растягивание:
var s : Extended;
begin
s := 1 / sqrt(sqr(v.X) + sqr(v.Y) + sqr(v.Z));

Result.x := v.x * s;
Result.y := v.y * s;
Result.z := v.z * s;
end;

Квадраты рисовал по средством и GL_QUADS и GL_TRIANGLES, результат одинаковый, как и ожидалось.

Нужен код для рисования трубы или бочки.
Что надо строить из треугольников знаю. Почти реализовал код рисования через GL_QUADS путем рисования плоскостей и их поворотом по оси. Но стоит проблема в расчете текстурных координат.

Код для рисования следующий, тут я реализовал наложение текстуры на КАЖДУЮ плоскость, а нужно 1-у текстуру на весь объект, нужен правильный расчет =) :

precision - количество граней

// боковые грани
glBegin(GL_QUADS);
for i:=0 to precision-1 do
begin
t := i*step;
tn := (i+1)*step;

GLTexCoord2f(1, 0);
glVertex3f(sin(t)*r1, cos(t)*r1, 0.0);

glTexCoord2f(1,1);
glVertex3f(sin(tn)*r1, cos(tn)*r1, 0.0);

glTexCoord2f(0,1);
glVertex3f(sin(tn)*r2, cos(tn)*r2, h);

glTexCoord2f(0,0);
glVertex3f(sin(t)*r2, cos(t)*r2, h);
end;
glEnd;


Работаю над Каваей.
Конструктор Дата: Четверг, 02.06.2011, 22:27 | Сообщение # 2
( Не ленимся =) )
Просмотр профиля: Конструктор

Сообщений: [1854]
В коде рисования трубы разобрался и текстурирования этой трубы тож. С расчетом нормалей тож определился, надо находить нормаль по трем точкам. нормализируя каждый вектор =)

Работаю над Каваей.
MrIncrof Дата: Среда, 21.09.2011, 14:30 | Сообщение # 3
( Приченить добро! )
Просмотр профиля: MrIncrof

Сообщений: [1553]
Данная тема была перемещена из раздела Программирование.
Причина перемещения: Тема неактуальна, никто не отвечал.

Переместил: JavaMan.
  • Страница 1 из 1
  • 1
Поиск:

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2024 Хостинг от uCoz
Топ Разработка игр