基于OpenCASCADE自制三维建模软件(十)编译ASSIMP库

一、ASSIMP介绍

Assimp是Open Asset Import Library(开放的资产导入库)的缩写。Assimp能够导入很多种不同的模型文件格式(并也能够导出部分的格式),它会将所有的模型数据加载至Assimp的通用数据结构中。当Assimp加载完模型之后,我们就能够从Assimp的数据结构中提取我们所需的所有数据了。由于Assimp的数据结构保持不变,不论导入的是什么种类的文件格式,它都能够将我们从这些不同的文件格式中抽象出来,用同一种方式访问我们需要的数据。1

  1. 可导入格式

常见的交换格式

  • Autodesk ( .fbx )
  • Collada ( .dae )
  • glTF ( .gltf, .glb )
  • Blender 3D ( .blend )
  • 3ds Max 3DS ( .3ds )
  • 3ds Max ASE ( .ase )
  • Wavefront Object ( .obj )
  • Industry Foundation Classes (IFC/Step) ( .ifc )
  • XGL ( .xgl,.zgl )
  • Stanford Polygon Library ( .ply )
  • *AutoCAD DXF ( .dxf )
  • LightWave ( .lwo )
  • LightWave Scene ( .lws )
  • Modo ( .lxo )
  • Stereolithography ( .stl )
  • DirectX X ( .x )
  • AC3D ( .ac )
  • Milkshape 3D ( .ms3d )
  • *TrueSpace ( .cob,.scn )

动作捕捉格式

  • Biovision BVH ( .bvh )
  • *CharacterStudio Motion ( .csm )

图形引擎格式

  • Ogre XML ( .xml )
  • Irrlicht Mesh ( .irrmesh )
  • *Irrlicht Scene ( .irr )

游戏文件格式

  • Quake I ( .mdl )
  • Quake II ( .md2 )
  • Quake III Mesh ( .md3 )
  • Quake III Map/BSP ( .pk3 )
  • *Return to Castle Wolfenstein ( .mdc )
  • Doom 3 ( .md5* )
  • *Valve Model ( .smd,.vta )
  • *Open Game Engine Exchange ( .ogex )
  • *Unreal ( .3d )

其他文件格式

  • BlitzBasic 3D ( .b3d )
  • Quick3D ( .q3d,.q3s )
  • Neutral File Format ( .nff )
  • Sense8 WorldToolKit ( .nff )
  • Object File Format ( .off )
  • PovRAY Raw ( .raw )
  • Terragen Terrain ( .ter )
  • 3D GameStudio (3DGS) ( .mdl )
  • 3D GameStudio (3DGS) Terrain ( .hmp )
  • Izware Nendo ( .ndo )
  1. 可导出格式
  • DAE (Collada)
  • STL
  • OBJ
  • PLY
  • X
  • 3DS
  • JSON
  • ASSBIN
  • STEP
  • glTF 1.0 (partial)
  • glTF 2.0 (partial)
  • 3MF ( experimental )
  • FBX ( experimental )

二、生成ASSIMP工程

  1. 下载assimp源码
    https://github.com/assimp/assimp

  2. 解压并创建build文件夹
    在这里插入图片描述

  3. 生成工程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

三、编译工程

  1. 打开VS2015 x64 本机工具命令提示符
    在这里插入图片描述

  2. 在提示符打开工程位置
    提示符中输入以下命令

    cd D:\workspace\assimp-master\build
    
  3. 编译工程
    提示符中输入以下命令

    msbuild Assimp.sln
    

    编译完毕:
    在这里插入图片描述

  4. 安装工程
    提示符中输入以下命令

    msbuild INSTALL.vcxproj
    

    安装完成:
    在这里插入图片描述

四、导入ASSIMP库

  1. 在pro文件中添加头文件及库

    # 外部库根目录
    LIBRARY_ROOT_PATH = D:\Libraries\VS2015x64
    
    # ASSIMP库
    ASSIMP_PATH = $$LIBRARY_ROOT_PATH\Assimp
    INCLUDEPATH += $$ASSIMP_PATH\include
    LIBS += -L$$ASSIMP_PATH\lib
    LIBS += -lassimp-vc140-mtd
    
  2. 在项目环境中添加动态库路径
    在这里插入图片描述

项目仓库

https://github.com/Jelatine/JellyCAD


  1. https://learnopengl-cn.github.io/03 Model Loading/01 Assimp/ ↩︎

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
下面是一个使用 OpenCASCADE 和 Qt 开发的简单三维显示程序的示例代码: ```cpp #include <QApplication> #include <QWidget> #include <Aspect_Handle.hxx> #include <Graphic3d_GraphicDriver.hxx> #include <OpenGl_GraphicDriver.hxx> #include <V3d_Viewer.hxx> #include <V3d_View.hxx> int main(int argc, char *argv[]) { // 创建 Qt 应用程序 QApplication app(argc, argv); // 创建 Qt 窗口 QWidget window; window.resize(800, 600); window.show(); // 获取窗口的原生句柄 Aspect_Handle hWindow = reinterpret_cast<Aspect_Handle>(window.winId()); // 创建 OpenCASCADE 图形驱动程序 Handle(Graphic3d_GraphicDriver) aGraphicDriver = new OpenGl_GraphicDriver(); // 创建三维视窗 Handle(V3d_Viewer) aViewer = new V3d_Viewer(aGraphicDriver); Handle(V3d_View) aView = aViewer->CreateViewFromWindow("MyView", hWindow); // 设置视窗参数 aView->SetBackgroundColor(Quantity_NOC_GRAY60); aView->MustBeResized(); aView->TriedronDisplay(Aspect_TOTP_LEFT_LOWER, Quantity_NOC_WHITE, 0.08, V3d_ZBUFFER); // 循环显示视窗,直到应用程序退出 while (!app.quitOnLastWindowClosed()) { aView->Redraw(); app.processEvents(); } return app.exec(); } ``` 这个示例代码演示了如何在一个 Qt 窗口中创建一个简单的三维视窗,并设置视窗的背景颜色和坐标轴显示。您可以根据需要自定义窗口的大小和其他参数。 要运行此代码,您需要先安装 Qt 和 OpenCASCADE ,并将其与您的 C++ 项目链接。请确保您已正确配置 Qt 和 OpenCASCADE 的环境。 请注意,这只是一个简单的示例,用于说明如何在 Qt 中集成 OpenCASCADE 的三维显示功能。在实际开发中,您可能需要更多的代码来处理用户交互、加载模型文件、添加其他功能等。希望这个示例对您有所帮助!如果您有更多问题,请随时提问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值