PMG
https://forum.pmg.org.ru/

урок 10, вопрос по положению камеры и коорд. текстур
https://forum.pmg.org.ru/viewtopic.php?f=1&t=9460
Страница 1 из 1

Автор:  wolver [ 24 июл 2013 14:51 ]
Заголовок сообщения:  урок 10, вопрос по положению камеры и коорд. текстур

1) вопрос:
Подскажите пож., как программа узнаёт начальное положение камеры в уроке 10 от Nehe?
Я так понимаю эта часть кода отвечает за позицию:
Код:
GLfloat xtrans = -xpos;       // Проекция игрока на ось X
GLfloat ztrans = -zpos;       // Проекция игрока на ось Z
glTranslatef(xtrans, ytrans, ztrans);

но инициализация начальных значений не указана:
Код:
float xpos;
float zpos;

Если я добавляю дополнительные части мира, как сместить нач. позицию на другое место?

Код:
gluLookAt (0.0f, 0.0f, 7.0f, 0, 0, 0, 0, 100, 0);

в InitGL не реагирует, а в ReSizeGLScene она портит вращение камеры вверх/вниз, т.к. вращается вся сцена, относительно указанной позиции.

-------------------------------------------
2) вопрос:
Как в файле с описанием коорд. наложения текстур понять позиции переменных u и v?
в описании к уроку сказано, что:
Цитата:
Каждый треугольник в нашем файле данных имеет следующую структуру:
X1 Y1 Z1 U1 V1
X2 Y2 Z2 U2 V2
X3 Y3 Z3 U3 V3

с коорд. никаких проблем не возникло, но вот u,v - если чесно, для новых текстур я наугад подбирал комбинацию, чтобы они были расположены так как я хотел. Можно ли по подробнее описать механизм того, что и за что в каждой с 3-х точек треугольника отвечает для текстуры?

Автор:  MagicWolf [ 29 июл 2013 11:51 ]
Заголовок сообщения:  Re: урок 10, вопрос по положению камеры и коорд. текстур

xpos и ypos по умолчанию нуль. Но лучше бы конечно, если бы они были явно инициализированы.
В DrawGLScene, есть строки:
Код:
glRotatef(lookupdown,1.0f,0,0);
glRotatef(sceneroty,0,1.0f,0);

glTranslatef(xtrans, ytrans, ztrans);

Вот они и задают позицию при каждом выводе изображения. Т.е. надо задать xtrans, ytrans, ztrans ...
Код:
typedef struct tagVERTEX         // Создаём стр-ру нашей вершины

{

      float x, y, z;    // 3D координаты

      float u, v;                // Координаты на текстуре

} VERTEX;                        // Обзовём это VERTEX

Т.е. каждая вершина привязана к точке в пространстве и имеет привязку к точке на текстуре. Про текстуру лучше почитать урок 6:http://pmg.org.ru/nehe/nehe06.htm

Автор:  wolver [ 29 июл 2013 17:37 ]
Заголовок сообщения:  Re: урок 10, вопрос по положению камеры и коорд. текстур

по 1) добавил инициализацию в начало:
float zpos=8.0f;
и камера сдвинулась туда куда нужно было :)
по 2) относительно урока 6 - левый нижний угол 2D текстуры считался за (0, 0), и накладывался на 4-х угольник, а в уроке 10 он разбивался на 2 примитива - и эти треугольники меня запутали.
спс MagicWolf, найдя в уроке 6 и перечитав ещё раз этот кусочек текста, разобрался:
Цитата:
glTexCoord2f(0.0f, 1.0f); // Верх лево
glTexCoord2f(0.0f, 0.0f); // Низ лево
glTexCoord2f(1.0f, 0.0f); // Низ право
glTexCoord2f(1.0f, 1.0f); // Верх право

Автор:  MagicWolf [ 30 июл 2013 11:52 ]
Заголовок сообщения:  Re: урок 10, вопрос по положению камеры и коорд. текстур

Лучше всего думать о текстуре, как о снятой коже ;). Которую растянули на прямоугольник. Соответствено разные части текстуры будут отображены на разные грани объекта, когда эту текстуру будут натягивать на объект.

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/