Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > [OpenGL] Текстуры + MD2


Автор: SAVEL 10.2.2011, 19:07
Ув. форумчане подскажите почему не правильно накладывается текстура на мою 3D анимированную модель формата MD2! То ли расслоение глубины, то ли еще что! В общем целая головоломка!
Дело в том, что она почти правильно ложится, но модель становится как бы полу прозрачной, т.е. глядя на фигуру сперди - видишь текстуру спины и наоборот. Как решить эту задачу, что бы все корректно отображалось? smile 

Автор: Rickert 13.2.2011, 08:50
Включаю телепатию и вижу ваш код, а также скрины модели smile 

Автор: SAVEL 14.2.2011, 19:16
Цитата

Включаю телепатию и вижу ваш код, а также скрины модели  


Возможно это поможет
спереди
http://imglink.ru/show-image.php?id=35d18b15045e3ff36445fddf6b85276b

слева
http://imglink.ru/show-image.php?id=775fde7fea5c46e6f62036a25861a3bc

справа
http://imglink.ru/show-image.php?id=e44b74643deea70948db1b81c7db0af4

сзади
http://imglink.ru/show-image.php?id=0ebca371cadc0d1dcbfe959daa8090c2

А загружаю модель так:

Язык: objectiveC

Код


- (void) drawModel 
{
        static GLfloat lightPosition[4] = { 200.0, 0.0, 1.0, 1.0};
    static GLfloat lightDefuse[4] = { 1.0, 1, 1, 1.0};
    static GLfloat lightAmbient[4] = { 0, 0, 0, 1.0};
    
    [self.timeKeeper tick];

    glMatrixMode(GL_MODELVIEW);

    glEnable(GL_DEPTH_TEST);
    
    // Draw Character
    glEnable( GL_LIGHTING);
    glEnable( GL_LIGHT0);
    glLightfv( GL_LIGHT0, GL_DIFFUSE, lightDefuse);
    glLightfv( GL_LIGHT0, GL_AMBIENT, lightAmbient);
    glLightf( GL_LIGHT0, GL_SPOT_EXPONENT, 268);
    glLightfv( GL_LIGHT0, GL_POSITION, lightPosition);
    
    glTranslatef( player.x, player.y, player.z-2);
    glRotatef( 180, 380, -180, 0);
    glScalef( 0.100, 0.100, 0.100);
    [self.character doTick:self.timeKeeper.time];
    [self.character setupForRenderGL];
    [self.character renderGL];
    [self.character cleanupAfterRenderGL];
    glDisable( GL_LIGHT0);
    glDisable( GL_LIGHTING);
}

- (void) setupForRenderGL
{    
    glEnable( GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable( GL_TEXTURE_2D);
    glBindTexture( GL_TEXTURE_2D, self.texture.name);
    glEnableClientState( GL_VERTEX_ARRAY);
    glEnableClientState( GL_TEXTURE_COORD_ARRAY);
    glEnableClientState( GL_NORMAL_ARRAY);
    //glEnableClientState( GL_COLOR_ARRAY);
}

/****************************************************************************************************
 *    renderGL
 ****************************************************************************************************/

- (void) renderGL
{
    glVertexPointer( 3, GL_FLOAT, sizeof( GLVertex), &_vertices[0].position);
    glTexCoordPointer( 2, GL_FLOAT, sizeof( GLVertex), &_vertices[0].textureCoords);
    glNormalPointer( GL_FLOAT, sizeof( GLVertex), &_vertices[0].normal);
    //glColorPointer( 4, GL_FLOAT, sizeof( GLVertex), &_vertices[0].color);
    glDrawArrays( GL_TRIANGLES, 0, _header.triangleCount * 3);
}





Автор: SAVEL 18.2.2011, 19:40
Для всех 120 человек, кто просмотрел эту тему, и в особенности комодератору Rickret !!!, и не нашел ни слова, не дал ни совета, ни подсказки, как мне решить эту элементарную проблему отвечаю, и для тех кто сталкнется с подобной проблемой, что все заключалось в комманде glFrontFace(GL_CW)
 smile 
Убедительная просьба администраторам Vingrad удалить мой аккаунт с этого форума!!!

Автор: BorisVorontsov 19.2.2011, 14:49

Автор: kemiisto 19.2.2011, 14:54
SAVEL, ты такой смишной. smile 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)