- Uv coords are no flipped so that they are correct now
- Custom Materials can be read (see Ogre importer documentation) - Blender Ogre Exporter Material Template File added git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@477 67173fc5-114c-0410-ac8e-9d2fd5bffc1fpull/1/head
parent
8cfb2e26cf
commit
3cb336ff7d
|
@ -55,7 +55,7 @@ void OgreImporter::InternReadFile(const std::string &pFile, aiScene *pScene, Ass
|
|||
throw new ImportErrorException("Failed to create XML Reader for "+pFile);
|
||||
|
||||
|
||||
DefaultLogger::get()->info("Mesh File opened");
|
||||
DefaultLogger::get()->debug("Mesh File opened");
|
||||
|
||||
//Read root Node:
|
||||
if(!(XmlRead(MeshFile) && string(MeshFile->getNodeName())=="mesh"))
|
||||
|
@ -76,7 +76,7 @@ void OgreImporter::InternReadFile(const std::string &pFile, aiScene *pScene, Ass
|
|||
{
|
||||
SubMesh NewSubMesh;
|
||||
NewSubMesh.MaterialName=GetAttribute<string>(MeshFile, "material");
|
||||
DefaultLogger::get()->info("Loading Submehs with Material: "+NewSubMesh.MaterialName);
|
||||
DefaultLogger::get()->debug("Loading Submehs with Material: "+NewSubMesh.MaterialName);
|
||||
ReadSubMesh(NewSubMesh, MeshFile);
|
||||
}
|
||||
//_______________________________________________________________-
|
||||
|
@ -124,7 +124,7 @@ void OgreImporter::ReadSubMesh(SubMesh &theSubMesh, XmlReader *Reader)
|
|||
//some info logging:
|
||||
unsigned int NumFaces=GetAttribute<int>(Reader, "count");
|
||||
stringstream ss; ss <<"Submesh has " << NumFaces << " Faces.";
|
||||
DefaultLogger::get()->info(ss.str());
|
||||
DefaultLogger::get()->debug(ss.str());
|
||||
|
||||
while(XmlRead(Reader) && Reader->getNodeName()==string("face"))
|
||||
{
|
||||
|
@ -145,7 +145,7 @@ void OgreImporter::ReadSubMesh(SubMesh &theSubMesh, XmlReader *Reader)
|
|||
//some info logging:
|
||||
unsigned int NumVertices=GetAttribute<int>(Reader, "vertexcount");
|
||||
stringstream ss; ss<<"VertexCount: "<<NumVertices;
|
||||
DefaultLogger::get()->info(ss.str());
|
||||
DefaultLogger::get()->debug(ss.str());
|
||||
|
||||
//General Informations about vertices
|
||||
XmlRead(Reader);
|
||||
|
@ -193,7 +193,7 @@ void OgreImporter::ReadSubMesh(SubMesh &theSubMesh, XmlReader *Reader)
|
|||
XmlRead(Reader);
|
||||
aiVector3D NewUv;
|
||||
NewUv.x=GetAttribute<float>(Reader, "u");
|
||||
NewUv.y=GetAttribute<float>(Reader, "v");
|
||||
NewUv.y=GetAttribute<float>(Reader, "v")*(-1)+1;//flip the uv vertikal, blender exports them so!
|
||||
Uvs.push_back(NewUv);
|
||||
}
|
||||
XmlRead(Reader);
|
||||
|
@ -201,7 +201,7 @@ void OgreImporter::ReadSubMesh(SubMesh &theSubMesh, XmlReader *Reader)
|
|||
|
||||
}
|
||||
}
|
||||
DefaultLogger::get()->info(str(format("Positionen: %1% Normale: %2% TexCoords: %3%") % Positions.size() % Normals.size() % Uvs.size()));
|
||||
DefaultLogger::get()->debug(str(format("Positionen: %1% Normale: %2% TexCoords: %3%") % Positions.size() % Normals.size() % Uvs.size()));
|
||||
|
||||
|
||||
//Make all Vertexes unique: (this is required by assimp)
|
||||
|
@ -407,8 +407,36 @@ aiMaterial* OgreImporter::LoadMaterial(std::string MaterialName)
|
|||
}
|
||||
}
|
||||
}//end of technique
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
DefaultLogger::get()->info(Line);
|
||||
//read informations from a custom material:
|
||||
if(Line=="set")
|
||||
{
|
||||
ss >> Line;
|
||||
if(Line=="$specular")//todo load this values:
|
||||
{
|
||||
}
|
||||
if(Line=="$diffuse")
|
||||
{
|
||||
}
|
||||
if(Line=="$ambient")
|
||||
{
|
||||
}
|
||||
if(Line=="$colormap")
|
||||
{
|
||||
ss >> Line;
|
||||
NewMaterial->AddProperty(&aiString(Line.c_str()), AI_MATKEY_TEXTURE(aiTextureType_DIFFUSE, 0));
|
||||
}
|
||||
if(Line=="$normalmap")
|
||||
{
|
||||
ss >> Line;
|
||||
NewMaterial->AddProperty(&aiString(Line.c_str()), AI_MATKEY_TEXTURE(aiTextureType_NORMALS, 0));
|
||||
}
|
||||
}
|
||||
}//end of material
|
||||
}
|
||||
else {} //this is the wrong material, proceed the file until we reach the next material
|
||||
|
|
11
doc/dox.h
11
doc/dox.h
|
@ -804,6 +804,9 @@ DefaultLogger::create("AssimpLog.txt",Logger::VERBOSE)
|
|||
Implement the Assimp::BaseImporter::CanRead(), Assimp::BaseImporter::InternReadFile() and Assimp::BaseImporter::GetExtensionList().
|
||||
Just copy'n'paste the template from Appendix A and adapt it for your needs.
|
||||
</li>
|
||||
<li>For error handling, throw a dynamic allocated ImportErrorException (see Appendix A) for critical errors, and log errors, warnings, infos and debuginfos
|
||||
with DefaultLogger::get()->[error, warn, debug, info].
|
||||
</li>
|
||||
<li>
|
||||
Make sure the loader compiles against all build configurations on all supported platforms. This includes <i>-noboost</i>! To avoid problems,
|
||||
see the boost section on this page for a list of all 'allowed' boost classes (again, this grew historically when we had to accept that boost
|
||||
|
@ -1429,12 +1432,18 @@ the name of the material file. This is especially usefull if multiply materials
|
|||
The importer will first try to load the material with the same name as the mesh and only if this can't be open try
|
||||
to load the alternate material file. The default material filename is "Scene.material".
|
||||
|
||||
We suggest that you use custom materials, because they support multiple textures (like colormap and normalmap). First of all you
|
||||
should read the custom material sektion in the Ogre Blender exporter Help File, and than use the assimp.tlp template, which you
|
||||
can find in scripts/OgreImpoter/Assimp.tlp. If you don't set all values, don't worry, they will be ignored during import.
|
||||
|
||||
If you want more propertiesin custom materials, you can easily expand the ogre material loader, it will be just a few lines for each property.
|
||||
|
||||
What will be loaded?
|
||||
|
||||
Mesh: Faces, Positions, Normals and one Uv pair. The Materialname will be used to load the material
|
||||
|
||||
Material: The right material in the file will be searched, the importer should work with materials who
|
||||
have 1 technique and 1 pass in this technique. From there, the texturename will be loaded. Also, the
|
||||
have 1 technique and 1 pass in this technique. From there, the texturename (for 1 color- and 1 normalmap) will be loaded. Also, the
|
||||
materialname will be set.
|
||||
|
||||
Skeleton: Nothing, yet.
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
material %_materialName
|
||||
{
|
||||
set $specular %_specular
|
||||
set $diffuse %_diffuse
|
||||
set $ambient %_ambient
|
||||
|
||||
set $colormap %color._texture
|
||||
set $normalmap %normal._texture
|
||||
}
|
Loading…
Reference in New Issue