From 21fb3fbcaf9e557fd382991350b84672e659a18d Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Tue, 6 Apr 2010 21:10:36 +0200 Subject: Dual pattern test. --- assimp.cpp | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 1 deletion(-) (limited to 'assimp.cpp') diff --git a/assimp.cpp b/assimp.cpp index f5aab14..aea1187 100755 --- a/assimp.cpp +++ b/assimp.cpp @@ -19,7 +19,7 @@ class FiskPattern : public Pattern { Texture** textures; public: - FiskPattern() : Pattern("patt.jon") { + FiskPattern() : Pattern("patterns/m1.patt") { scene = importer->ReadFile("tewi.x", 0); if(scene) { @@ -107,6 +107,106 @@ class FiskPattern : public Pattern { } }; +class MarisaPattern : public Pattern { + private: + const aiScene* scene; + + Texture** textures; + + public: + MarisaPattern() : Pattern("patterns/m2.patt") { + scene = importer->ReadFile("kirisame_marisa.x", 0); + + if(scene != NULL) { + std::cout << "Loaded model: " << scene->mNumMeshes << " meshes, " << scene->mNumMaterials << " materials." << std::endl; + for(int i = 0; i < scene->mNumMaterials; i++) { + aiMaterial* material = scene->mMaterials[i]; + + std::cout << "Material " << i << ": " << material->mNumProperties << " properties." << std::endl; + + for(int j = 0; j < material->mNumProperties; j++) { + aiMaterialProperty* property = material->mProperties[j]; + + std::cout << " " << std::string(property->mKey.data, property->mKey.length) << ": " << std::string(property->mData, property->mDataLength) << std::endl; + } + + } + + for(int i = 0; i < scene->mNumMeshes; i++) { + aiMesh* mesh = scene->mMeshes[i]; + + std::cout << "Mesh " << i << ": mMaterialIndex = " << mesh->mMaterialIndex << ", mNumBones = " << mesh->mNumBones << std::endl; + + } + + } else { + std::cerr << "Failed to import model." << std::endl << importer->GetErrorString() << std::endl; + } + + Texture* tex_head = new TextureSDL("Ma-head.tga"); + Texture* tex_1 = new TextureSDL("Marisa-1.bmp"); + Texture* tex_B = new TextureSDL("B.spa"); + Texture* tex_2 = new TextureSDL("Marisa-2.tga"); + Texture* tex_S = new TextureSDL("S.spa"); + + textures = new Texture*[8]; + + //textures[0] = tex_head; + //textures[1] = tex_1; + //textures[2] = tex_B; + //textures[3] = tex_1; + //textures[4] = tex_B; + //textures[5] = tex_2; + //textures[6] = tex_1; + //textures[7] = tex_2; + + textures[0] = tex_head; // face + textures[1] = tex_1; // body + hat + textures[2] = tex_B; // buttons + textures[3] = tex_2; // skirt, arms, hair, legs + textures[4] = tex_S; // accessories + + patt_width = 10.0; + } + + protected: + virtual void draw() { + double gl_para[16]; + arglCameraView(patt_trans_kake, gl_para, 1.0); + + glMatrixMode(GL_MODELVIEW); + glLoadMatrixd(gl_para); + + //glTranslatef(0.0, -8.0, 0.0); + + glRotatef(90, 1, 0, 0); + glRotatef(180, 0, 1, 0); + + //glColor4f(1, 0, 0, 0.5); + glPolygonMode(GL_FRONT, GL_FILL); + + for(int i = 0; i < scene->mNumMeshes; i++) { // scene->mNumMeshes + aiMesh* mesh = scene->mMeshes[i]; + + glBindTexture(GL_TEXTURE_2D, textures[i]->tex()); + + for(int j = 0; j < mesh->mNumFaces; j++) { + aiFace* face = &mesh->mFaces[j]; + + glBegin(GL_POLYGON); + for(int k = 0; k < face->mNumIndices; k++) { + aiVector3D* texcoord = &mesh->mTextureCoords[0][face->mIndices[k]]; + glTexCoord2f(texcoord->x, 2 - texcoord->y); + aiVector3D* vertice = &mesh->mVertices[face->mIndices[k]]; + glVertex3f(vertice->x, vertice->y, vertice->z); + } + glEnd(); + } + } + + } +}; + int main(int argc, char **argv) { try { Application* app = new Application(); @@ -116,6 +216,11 @@ int main(int argc, char **argv) { app->patt = new FiskPattern(); + Assimp::Importer _importer2; + importer = &_importer2; + + app->patt2 = new MarisaPattern(); + app->run(); } catch(std::runtime_error e) { std::cerr << "Exception caught: " << e.what() << std::endl; -- cgit v1.2.3