Перевод OpenGL pModel - PullRequest
       4

Перевод OpenGL pModel

0 голосов
/ 24 декабря 2011

Когда я загружаю файл .obj в GMax, он располагается в центре пробела (0,0,0). Как я могу изменить эту позицию? Есть ли особая функция?

Я не хочу использовать glTranslatef. Скорее, я бы хотел, чтобы весь pModel переместился (структура pModel изменилась). Я нашел функцию glmScale. Есть ли что-нибудь похожее для перевода или вращения?

Когда я загружаю объект, я делаю что-то вроде этого:

pModelScaun=glmReadOBJ(filename);   
glmUnitize(pModelScaun);
glmFacetNormals(pModelScaun);
glmVertexNormals(pModelScaun,90.0);

и затем я использую треугольник для определения положения света и тени.

for (unsigned int i = 0; i < pModelScaun->numtriangles; i++)
{
    //compute the light vector (between the center of the current 
    //triangle and the position of the light (converted to object space)
    for (unsigned int j = 0; j < 3; j++)
    {
        fvIncidentLightDir[j] = (pModelScaun->vertices[3*pModelScaun->triangles[i].vindices[0]+j] +
                                pModelScaun->vertices[3*pModelScaun->triangles[i].vindices[1]+j] +
                                pModelScaun->vertices[3*pModelScaun->triangles[i].vindices[2]+j]) / 3.0 - lp[j];            
    }

Можете ли вы указать мне, каким образом я мог бы использовать матрицы преобразования в этой ситуации?

1 Ответ

0 голосов
/ 26 декабря 2011

Поскольку вы используете вершины в объектном пространстве и преобразовали свет в их объектное пространство, вы можете умножить fvIncidentLightDir на матрицу преобразования вашего объекта, чтобы преобразовать его обратно в мировое пространство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...