Assimp

Open Asset Import Library (short name: Assimp) is a portable Open Source library to import various well-known 3D model formats in a uniform manner. The most recent version also knows how to export 3d files and is therefore suitable as a general-purpose 3D model converter. See the feature list.
open3mod is a Windows-based model viewer. It loads all file formats that Assimp supports and is perfectly suited to quickly inspect 3d assets.Written in C++, it is available under a liberal BSD license. There is a C API as well as bindings to various other languages, 
Assimp aims to provide a full asset conversion pipeline for use in game engines / realtime rendering systems of any kind, but it is not limited to this purpose. In the past, it has been used in wide range of applications. including C#/.net, Python and D. Assimp loads all input model formats into one straightforward data structure for further processing. This feature set is augmented by various post processing tools, including frequently-needed operations such as computing normal and tangent vectors.


Assimp,开源图形库(Open Asset Import Library)是一种便携式的可支持读取多种模型资源的开源库,它可以用统一的方式输入各种格式的3D模型,而其最新版本能实现输出3D模型的文件,因此该资源库也作为通用的3D模型转换器。assimp旨在提供用于游戏引擎实时渲染系统的一种完整的资源转换管道,但它不局限于这个目的,但在过去已被广泛应用。Assimp是用C++编写的,可以基于C语言应用程序编程接口或者绑定其它其它语言,如C#、.net、Python。为了进一步处理资源,Assimp加载了输入的模型格式为一个简单的数据结构,这个功能是由后处理工具加强的,包括一些常用的操作比如计算正常和切向量。

assimp是一种库,它主要用来加载和处理各种数据格式的几何场景。它主要针对的是那些支持节点层次、静态表层网格、材料、具有质感的动画和潜在纹理数据。assimp库不是为了提高速度而设计的,它最重要的用处就是,将每一个不同来源的资源导入并且在每一次的加载中以一种特殊的格式将它方便、快捷的存储起来。assimp也能够运用各种后处理步骤导入相应的数据,如转换为索引网格,计算法线和切线/双切线或转换从右手到左手坐标系统。assimp目前支持以下文件格式(请注意,一些装载机缺乏格式的一些特点,因为有些文件格式包含assimp不支持的数据,所以会需要很多的转换工作,而因此缺乏适当的格式规范并没有实现)
Collada ( *.dae;*.xml )
Blender ( *.blend ) 3
Biovision BVH ( *.bvh )
3D Studio Max 3DS ( *.3ds )
3D Studio Max ASE ( *.ase )
Wavefront Object ( *.obj )
Stanford Polygon Library ( *.ply )
AutoCAD DXF ( *.dxf ) 
IFC-STEP, Industry Foundation Classes ( *.ifc )
Neutral File Format ( *.nff )
Sense8 WorldToolkit ( *.nff )
Valve Model ( *.smd,*.vta ) 3
Quake I ( *.mdl )
Quake II ( *.md2 )
Quake III ( *.md3 )
Quake 3 BSP ( *.pk3 ) 1
RtCW ( *.mdc )
Doom 3 ( *.md5mesh;*.md5anim;*.md5camera )
DirectX X ( *.x ).
Quick3D ( *.q3o;q3s ).
Raw Triangles ( .raw ).
AC3D ( *.ac ).
Stereolithography ( *.stl ).
Autodesk DXF ( *.dxf ).
Irrlicht Mesh ( *.irrmesh;*.xml ).
Irrlicht Scene ( *.irr;*.xml ).
Object File Format ( *.off ).
Terragen Terrain ( *.ter )
3D GameStudio Model ( *.mdl )
3D GameStudio Terrain ( *.hmp )
Ogre (*.mesh.xml, *.skeleton.xml, *.material)3
Milkshape 3D ( *.ms3d )
LightWave Model ( *.lwo )
LightWave Scene ( *.lws )
Modo Model ( *.lxo )
CharacterStudio Motion ( *.csm )
Stanford Ply ( *.ply )
TrueSpace ( *.cob, *.scn )2
XGL ( *.xgl, *.zgl )
支持以下格式的导出:
Collada(.dae)
Wavefront Object(.obj)
Stereolithography(.stl)
Stanford Polygon Library(.ply)

assimp本质上市独立的操作系统,它提供了一个C++界面易于游戏引擎的集合,也提供了一个C界面并且允许其绑定其它编程语言。目前assimp库可以运行在一些小端平台包括X86/Windows/Linux/Mac and X64/Windows/Linux/Mac。特别值得关注的是assimp库对平台的依赖性在逐渐减少。一些大端系统如PPC-Mac或者PPC-Linux系统现在暂时是不支持assimp库的,但是,大多数格式的处理都是将格式正确的转换,所以assimp库的一大部分是可以实现此功能的。assimp库是在BSD 3-clause的前提下,用来连接后台与用户申请的。而这意味着你完全可以使用它的那些开放式源代码或者封闭式源代码的项目,你可以将它用于商业或非商业的目的,只要你保留许可证的信息,并且你要为你所做的事情负责任。

安装
assimp可以采用两种方式:链接预建库和自己构建的库。前一选择是容易的, 但是assimp分布包含了在Visual C++2005和2008基础上的预先配置的库。如果你要应用其它的编译器则你就要为自己量身打造assimp库,这就是个性化的设置,不过所需做的工作也相对比较多一些,这两种安装方式都将呈现在安装页面。

使用
当将完成的库整合到你的IDE/project中后,你就可以使用了。这里有两个独立的接口,通过它可以访问库:C++接口和使用平面功能的C接口。前者比较容易处理,而后者如果能与其它的编程语言成功连接则也还是比较容易处理的。如果现在还没有提供一些其它语言的绑定,那么可以在使用网页上仔细阅读详细的解释和例子代码。


数据结构
当数据被成功输入后,那些被导入的数据将转换为aiScene结构,这时你就可以访问那些文件所包含的各种场景/模型的数据结构的根。而数据结构的页面可以看到对这些数据的解释。

延长库
世界上有很多的3D文件格式,而assimp将尽可能的支持更多的文件格式。如果我们在使用过程中需要一个特定的文件格式的支持,而assimp库中又没有我们需要的,那么我们就需要自己将它添加到assimp库中,而这对于assimp输入插件来说是很简单的操作。它将完成大部分添加库的工作,而剩下的那些不可避免的整个后处理工作将由我们自己完成。


读取模型文件的一个例子:
#include      // 导入器在该头文件中定义
#include           // 读取到的模型数据都放在scene中
#include     // 该头文件中包含后处理的标志位定义

bool Import( const std::string& pFile) 
{   
    // 定义一个导入器 
    Assimp::Importer importer;   
    
    // 使用导入器导入选定的模型文件 
    const aiScene* scene = importer.ReadFile( pFile,
        aiProcess_CalcTangentSpace|            //后处理标志,自动计算切线和副法线
        aiProcess_Triangulate|                //后处理标志,自动将四边形面转换为三角面
        aiProcess_JoinIdenticalVertices|    //后处理标志,自动合并相同的顶点
        aiProcess_SortByPType);                //后处理标志,将不同图元放置到不同的模型中去,图片类型可能是点、直线、三角形等
                                             
    if( !scene)   
    {
        //导入错误,获取错误信息并进行相应的处理
        //DoTheErrorLogging( importer.GetErrorString());     
        return false;  
    }   
    // 根据需要获取scene中的模型数据
    //DoTheSceneProcessing( scene);   
 
    return true; 
}
.asm, .prt, .xt, stp, igs

你可能感兴趣的:(Assimp)