Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » OpenGL » MilkShape Models laden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
13.08.2007, 18:03 Uhr
mmc20
puss in boots


hi,
ich will in einer Ogl-view, einfache models welche mit milkshape erstellt wurden anzeigen.
kennt sich da wer aus?
hab mal einfach eine "box" erstellt und das ganze als "txt" gespeichert, aber irgendwie komm ich mit den werten in der datei auf keinen grünen zweig...

Code:
SimpleMeshFormat 1
1
Box01
8
-19.75 19.75 19.5
-19.75 -19.75 19.5
19.75 19.75 19.5
19.75 -19.75 19.5
19.75 19.75 -20
19.75 -19.75 -20
-19.75 19.75 -20
-19.75 -19.75 -20
12
1 0 1 2 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0
1 1 3 2 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0
2 2 3 4 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0
2 3 5 4 1 0 0 1 0 0 1 0 0 0 1 1 1 1 0
1 4 5 6 0 0 -1 0 0 -1 0 0 -1 0 0 0 1 1 0
1 5 7 6 0 0 -1 0 0 -1 0 0 -1 0 1 1 1 1 0
2 6 7 0 -1 0 0 -1 0 0 -1 0 0 0 0 0 1 1 0
2 7 1 0 -1 0 0 -1 0 0 -1 0 0 0 1 1 1 1 0
3 6 0 4 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0
3 0 2 4 0 1 0 0 1 0 0 1 0 0 1 1 1 1 0
3 1 7 3 0 -1 0 0 -1 0 0 -1 0 0 0 0 1 1 0
3 7 5 3 0 -1 0 0 -1 0 0 -1 0 0 1 1 1 1 0


hat jemand nen link wo das etwas genauer beschrieben ist ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.08.2007, 18:31 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja
die ersten 8 sind deine eckpunkte, die 12 sachen sind deine Seitenflächen (texturkoordinaten denke ich mal sind da mit dabei)

aber es dürfte genauere infos auf den einschlägigen programmier seiten geben, für 3ds-objekte gibts ja auch guten ladecode für gl
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.08.2007, 15:43 Uhr
mmc20
puss in boots


so, hab jetzt ne klasse welche .ms2d's lädt ( NeHe-Tut Lesson31, mann muss nur suchen... ;-) )

leider bekomm ich meine "test"-models nur weiss angezeigt, weil ich keine texturen verwendet habe ( brauch ich auch eigentlich nicht ) sondern nur "normale" oberflächen.
was muss ich in der gl-view einstellen damit diese models mit den geladenen "materials" dargestellt werden ? oder muss ich explizit texturen verwenden ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.08.2007, 17:21 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
du musst halt die Materials laden (in welcher Form die auch vorliegen mögen) und verwenden.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.08.2007, 18:22 Uhr
mmc20
puss in boots


mh, naja geladen werden sie ja, ist ja in der loaderclass alles drin, hab eher den eindruck das ich in der view noch irgend was setzen muss, weil wenn ich ein einfaches farbiges dreieck zeichne, wird das auch nur weiss dargestellt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.08.2007, 21:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja GL_TEXTURES_2D musste evtl aktivieren (glEnable), bzw für materials evtl noch eigene flags (z.b Lighting o.ä)
--
class God : public ChuckNorris { };

Dieser Post wurde am 18.08.2007 um 21:53 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.08.2007, 22:51 Uhr
mmc20
puss in boots


naja, das lighting is on

C++:
    GLfloat LightAmbient[]=        { 0.5f, 0.5f, 0.5f, 1.0f };
    GLfloat LightDiffuse[]=        { 1.0f, 1.0f, 1.0f, 1.0f };
    GLfloat LightPosition[]=    { 0.0f, 0.0f, 2.0f, 1.0f };

    glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);
    glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);
    glLightfv(GL_LIGHT1, GL_POSITION, LightPosition);
    glEnable(GL_LIGHT1);


und GL_TEXTURES_2D wird in der draw() der modelclass gesetzt

C++:
void ModelMS3D::draw()
{
    GLboolean texEnabled = glIsEnabled( GL_TEXTURE_2D );

    // Draw by group
    for ( int i = 0; i < m_numMeshes; i++ )
    {
        int materialIndex = m_pMeshes[i].m_materialIndex;
        if ( materialIndex >= 0 )
        {
            glMaterialfv( GL_FRONT, GL_AMBIENT, m_pMaterials[materialIndex].m_ambient );
            glMaterialfv( GL_FRONT, GL_DIFFUSE, m_pMaterials[materialIndex].m_diffuse );
            glMaterialfv( GL_FRONT, GL_SPECULAR, m_pMaterials[materialIndex].m_specular );
            glMaterialfv( GL_FRONT, GL_EMISSION, m_pMaterials[materialIndex].m_emissive );
            glMaterialf( GL_FRONT, GL_SHININESS, m_pMaterials[materialIndex].m_shininess );

            if ( m_pMaterials[materialIndex].m_texture > 0 ) {
                glBindTexture( GL_TEXTURE_2D, m_pMaterials[materialIndex].m_texture );
                glEnable( GL_TEXTURE_2D );
            } else {
                glDisable( GL_TEXTURE_2D );
            }
        } else     {
            // Material properties?
            glDisable( GL_TEXTURE_2D );
        }

        glBegin( GL_TRIANGLES );
        {
            for ( int j = 0; j < m_pMeshes[i].m_numTriangles; j++ )
            {
                int triangleIndex = m_pMeshes[i].m_pTriangleIndices[j];
                const Triangle* pTri = &m_pTriangles[triangleIndex];

                for ( int k = 0; k < 3; k++ )
                {
                    int index = pTri->m_vertexIndices[k];
                    glNormal3fv( pTri->m_vertexNormals[k] );
                    glTexCoord2f( pTri->m_s[k], pTri->m_t[k] );
                    glVertex3fv( m_pVertices[index].m_location );
                }
            }
        }
        glEnd();
    }

    if ( texEnabled )
        glEnable( GL_TEXTURE_2D );
    else
        glDisable( GL_TEXTURE_2D );
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.08.2007, 09:31 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


dann sind die texturen evtl keine 2^n-texturen - mit was anderem kommt OpenGL nämlich nicht zurecht (außer man benutzt die nicht gut unterstützte non-power-of-two-texture-extension)

Ansonsten - wie werden die Texturen geladen? bzw wie wird deine Matrix initialisiert? evtl ist da was schiefgegangen. Oder hast du geschaut ob er überhaupt in das Enable/Bind springt?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.08.2007, 11:34 Uhr
mmc20
puss in boots


mit den texturen ist alles ok, die lädt er auch richtig und transformiert sie notfalls in 2^n, bzw. die werden ja richtig angezeigt. mir gehts ja um die nicht texturierten flächen, die sind eben nur weiß.
Dieser Post wurde am 21.08.2007 um 11:34 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.08.2007, 12:53 Uhr
mmc20
puss in boots


so, jetzt gehts...
man muss eben nur mal die lichtquelle etwas weiter weg positionieren,
und vlt. auch nicht so hell einstellen...

Dieser Post wurde am 21.08.2007 um 12:55 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ OpenGL ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: