屌炸天的3D引擎OpenCASCADE的用法及案例(转载之处:)
What CASCADE?
Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一。开源OCC对象库是一个面向对象C++类库,用于快速开发设计领域的专业应用程序。
用它可以做很多三维模型,如下面两种。简单地说它可以开发三维CAD或者Solidworks等等软件,可以说强大无比。
OpenCASCADE的下载与安装
1.OpenCASCADE下载。
1)去官网下载:https://dev.opencascade.org/release
2)去CSDN下载:https://download.csdn.net/download/xipengbozai/18883824
3)下载你需要的版本,推荐下载安装版,比较省事:https://download.csdn.net/download/xipengbozai/18883824
2.OpenCASCADE安装。
1)匹配VS版本,我的是VS2017 64位版本,所以安装的是opencascade-7.4.0-vc14-64.exe
2)单机安装,选择下一步
3)然后安装full版本,也就是完全版,单击安装直到完成即可。
4)安装完的目录效果,opencascade-7.4.0是主目录,其他是附加库
OpenCASCADE的用法
1.建立项目工程,包含目录
2.添加库目录,如下所示
3.链接器-输入-附加依赖项输入如下项
TKBin.lib
TKBinL.lib
TKBinTObj.lib
TKBinXCAF.lib
TKBO.lib
TKBool.lib
TKBRep.lib
TKCAF.lib
TKCDF.lib
TKD3DHost.lib
TKDCAF.lib
TKDFBrowser.lib
TKDraw.lib
TKernel.lib
TKFeat.lib
TKFillet.lib
TKG2d.lib
TKG3d.lib
TKGeomAlgo.lib
TKGeomBase.lib
TKHLR.lib
TKIGES.lib
TKIVtk.lib
TKIVtkDraw.lib
TKLCAF.lib
TKMath.lib
TKMesh.lib
TKMeshVS.lib
TKOffset.lib
TKOpenGl.lib
TKPrim.lib
TKQADraw.lib
TKRWMesh.lib
TKService.lib
TKShapeView.lib
TKShHealing.lib
TKStd.lib
TKStdL.lib
TKSTEP.lib
TKSTEP209.lib
TKSTEPAttr.lib
TKSTEPBase.lib
TKSTL.lib
TKTInspector.lib
TKTInspectorAPI.lib
TKTObj.lib
TKTObjDRAW.lib
TKToolsDraw.lib
TKTopAlgo.lib
TKTopTest.lib
TKTreeModel.lib
TKV3d.lib
TKVCAF.lib
TKView.lib
TKViewerTest.lib
TKVInspector.lib
TKVRML.lib
TKXCAF.lib
TKXDEDRAW.lib
TKXDEIGES.lib
TKXDESTEP.lib
TKXMesh.lib
TKXml.lib
TKXmlL.lib
TKXmlTObj.lib
TKXmlXCAF.lib
TKXSBase.lib
TKXSDRAW.lib
4.添加头文件,一定要注意添加位置,#include <afxdisp.h> // MFC 自动化类之后,#ifndef _AFX_NO_OLE_SUPPORT之前的中间。
include <BRepTools.hxx>
include <Standard_DefineHandle.hxx>
include <DsgPrs_LengthPresentation.hxx>
include <GCPnts_TangentialDeflection.hxx>
include <Geom_Axis2Placement.hxx>
include <Geom_CartesianPoint.hxx>
include <Geom_Line.hxx>
include <Geom_Surface.hxx>
include <BRepAdaptor_Surface.hxx>
include <GeomAbs_CurveType.hxx>
include <GeomAdaptor_Curve.hxx>
include <GeomTools_Curve2dSet.hxx>
include <gp_Vec.hxx>
include <Graphic3d_NameOfMaterial.hxx>
include <MMgt_TShared.hxx>
include <OSD_Environment.hxx>
include <Precision.hxx>
include <Prs3d_IsoAspect.hxx>
include <Prs3d_LineAspect.hxx>
include <Prs3d_Projector.hxx>
include <Prs3d_Text.hxx>
include <Quantity_Factor.hxx>
include <Quantity_Length.hxx>
include <Quantity_NameOfColor.hxx>
include <Quantity_PhysicalQuantity.hxx>
include <Quantity_PlaneAngle.hxx>
include <Quantity_TypeOfColor.hxx>
include <SelectMgr_EntityOwner.hxx>
include <SelectMgr_SelectableObject.hxx>
include <SelectMgr_Selection.hxx>
include <SelectMgr_SelectionManager.hxx>
include <SelectMgr_ListOfFilter.hxx>
include <SelectMgr_Filter.hxx>
include <StdSelect_EdgeFilter.hxx>
include <StdSelect_ShapeTypeFilter.hxx>
include <Standard_Boolean.hxx>
include <Standard_CString.hxx>
include <Standard_ErrorHandler.hxx>
include <Standard_Integer.hxx>
include <Standard_IStream.hxx>
include <Standard_Macro.hxx>
include <Standard_NotImplemented.hxx>
include <Standard_OStream.hxx>
include <Standard_Real.hxx>
include <StdPrs_Curve.hxx>
include <StdPrs_Point.hxx>
include <StdPrs_PoleCurve.hxx>
include <TCollection_AsciiString.hxx>
include <TColgp_Array1OfPnt2d.hxx>
include <TColgp_HArray1OfPnt2d.hxx>
include <TCollection_AsciiString.hxx>
include <TColStd_HSequenceOfTransient.hxx>
include <TColStd_MapIteratorOfMapOfTransient.hxx>
include <TColStd_MapOfTransient.hxx>
include <TopExp_Explorer.hxx>
include <TopoDS.hxx>
include <TopoDS_Compound.hxx>
include <TopoDS_Shape.hxx>
include <TopoDS_Solid.hxx>
include <TopoDS_Vertex.hxx>
include <TopExp.hxx>
include <TopTools_HSequenceOfShape.hxx>
include <UnitsAPI.hxx>
include <V3d_View.hxx>
include <V3d_Viewer.hxx>
include <WNT_Window.hxx>
include <Prs3d_PointAspect.hxx>
include <AIS_Point.hxx>
include <AIS_InteractiveContext.hxx>
include <AIS_Shape.hxx>
include <BRep_Tool.hxx>
include <BRepAlgoAPI_Fuse.hxx>
include <BRepBuilderAPI_MakeEdge.hxx>
include <BRepBuilderAPI_MakeFace.hxx>
include <BRepBuilderAPI_MakeWire.hxx>
include <BRepBuilderAPI_MakeVertex.hxx>
include <BRepBuilderAPI_Transform.hxx>
include <BRepPrimAPI_MakeCone.hxx>
include <BRepPrimAPI_MakeRevol.hxx>
include <BRepFilletAPI_MakeFillet.hxx>
include <BRepBuilderAPI_Copy.hxx>
include <BRepBuilderAPI_MakePolygon.hxx>
include <BRepLib.hxx>
include <BRepOffsetAPI_MakeThickSolid.hxx>
include <BRepOffsetAPI_ThruSections.hxx>
include <BRepPrimAPI_MakeCylinder.hxx>
include <BRepPrimAPI_MakePrism.hxx>
include <BRepPrimAPI_MakeTorus.hxx>
include <BRepAlgoAPI_Section.hxx>
include <BRepPrimAPI_MakeSphere.hxx>
include <BRepFeat_SplitShape.hxx>
include <TColgp_HArray1OfPnt.hxx>
include <GeomAPI_Interpolate.hxx>
include <GC_MakeArcOfCircle.hxx>
include <GC_MakeSegment.hxx>
include <GC_MakeCircle.hxx>
include <GCE2d_MakeSegment.hxx>
include <gp.hxx>
include <gp_Ax1.hxx>
include <gp_Ax2.hxx>
include <gp_Ax2d.hxx>
include <gp_Dir.hxx>
include <gp_Dir2d.hxx>
include <gp_Pnt.hxx>
include <gp_Pnt2d.hxx>
include <gp_Trsf.hxx>
include <gp_Vec.hxx>
include <Geom_CylindricalSurface.hxx>
include <Geom_Plane.hxx>
include <Geom_Surface.hxx>
include <Geom_TrimmedCurve.hxx>
include <Geom2d_Ellipse.hxx>
include <Geom2d_TrimmedCurve.hxx>
include <TopExp_Explorer.hxx>
include <TopoDS.hxx>
include <TopoDS_Edge.hxx>
include <TopoDS_Face.hxx>
include <TopoDS_Wire.hxx>
include <TopoDS_Shape.hxx>
include <TopoDS_Compound.hxx>
include <GCPnts_AbscissaPoint.hxx>
include <BRepAdaptor_Curve.hxx>
include <GeomLib.hxx>
include <GeomConvert_CompCurveToBSplineCurve.hxx>
include <TopTools_ListOfShape.hxx>
include <TopTools_ListIteratorOfListOfShape.hxx>
include <TopTools_DataMapOfShapeInteger.hxx>
include <TopTools_DataMapOfShapeReal.hxx>
include <TopTools_IndexedDataMapOfShapeAddress.hxx>
include <V3d_PositionalLight.hxx>
include <V3d_DirectionalLight.hxx>
include <V3d_AmbientLight.hxx>
include <IGESControl_Controller.hxx>
include <IGESControl_Writer.hxx>
include <Interface_Static.hxx>
include <OpenGl_GraphicDriver.hxx>
include <Graphic3d_GraphicDriver.hxx>
OpenCASCADE开发案例
1.建立MFC工程
2.stdafx.h头文件中包含OpenCASCADE头文件
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
pragma once
ifndef VC_EXTRALEAN
define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料
endif
include "targetver.h"
define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的
// 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏
define _AFX_ALL_WARNINGS
include <afxwin.h> // MFC 核心组件和标准组件
include <afxext.h> // MFC 扩展
include <afxdisp.h> // MFC 自动化类
include <BRepTools.hxx>
include <Standard_DefineHandle.hxx>
include <DsgPrs_LengthPresentation.hxx>
include <GCPnts_TangentialDeflection.hxx>
include <Geom_Axis2Placement.hxx>
include <Geom_CartesianPoint.hxx>
include <Geom_Line.hxx>
include <Geom_Surface.hxx>
include <BRepAdaptor_Surface.hxx>
include <GeomAbs_CurveType.hxx>
include <GeomAdaptor_Curve.hxx>
include <GeomTools_Curve2dSet.hxx>
include <gp_Vec.hxx>
include <Graphic3d_NameOfMaterial.hxx>
include <MMgt_TShared.hxx>
include <OSD_Environment.hxx>
include <Precision.hxx>
include <Prs3d_IsoAspect.hxx>
include <Prs3d_LineAspect.hxx>
include <Prs3d_Projector.hxx>
include <Prs3d_Text.hxx>
include <Quantity_Factor.hxx>
include <Quantity_Length.hxx>
include <Quantity_NameOfColor.hxx>
include <Quantity_PhysicalQuantity.hxx>
include <Quantity_PlaneAngle.hxx>
include <Quantity_TypeOfColor.hxx>
include <SelectMgr_EntityOwner.hxx>
include <SelectMgr_SelectableObject.hxx>
include <SelectMgr_Selection.hxx>
include <SelectMgr_SelectionManager.hxx>
include <SelectMgr_ListOfFilter.hxx>
include <SelectMgr_Filter.hxx>
include <StdSelect_EdgeFilter.hxx>
include <StdSelect_ShapeTypeFilter.hxx>
include <Standard_Boolean.hxx>
include <Standard_CString.hxx>
include <Standard_ErrorHandler.hxx>
include <Standard_Integer.hxx>
include <Standard_IStream.hxx>
include <Standard_Macro.hxx>
include <Standard_NotImplemented.hxx>
include <Standard_OStream.hxx>
include <Standard_Real.hxx>
include <StdPrs_Curve.hxx>
include <StdPrs_Point.hxx>
include <StdPrs_PoleCurve.hxx>
include <TCollection_AsciiString.hxx>
include <TColgp_Array1OfPnt2d.hxx>
include <TColgp_HArray1OfPnt2d.hxx>
include <TCollection_AsciiString.hxx>
include <TColStd_HSequenceOfTransient.hxx>
include <TColStd_MapIteratorOfMapOfTransient.hxx>
include <TColStd_MapOfTransient.hxx>
include <TopExp_Explorer.hxx>
include <TopoDS.hxx>
include <TopoDS_Compound.hxx>
include <TopoDS_Shape.hxx>
include <TopoDS_Solid.hxx>
include <TopoDS_Vertex.hxx>
include <TopExp.hxx>
include <TopTools_HSequenceOfShape.hxx>
include <UnitsAPI.hxx>
include <V3d_View.hxx>
include <V3d_Viewer.hxx>
include <WNT_Window.hxx>
include <Prs3d_PointAspect.hxx>
include <AIS_Point.hxx>
include <AIS_InteractiveContext.hxx>
include <AIS_Shape.hxx>
include <BRep_Tool.hxx>
include <BRepAlgoAPI_Fuse.hxx>
include <BRepBuilderAPI_MakeEdge.hxx>
include <BRepBuilderAPI_MakeFace.hxx>
include <BRepBuilderAPI_MakeWire.hxx>
include <BRepBuilderAPI_MakeVertex.hxx>
include <BRepBuilderAPI_Transform.hxx>
include <BRepPrimAPI_MakeCone.hxx>
include <BRepPrimAPI_MakeRevol.hxx>
include <BRepFilletAPI_MakeFillet.hxx>
include <BRepBuilderAPI_Copy.hxx>
include <BRepBuilderAPI_MakePolygon.hxx>
include <BRepLib.hxx>
include <BRepOffsetAPI_MakeThickSolid.hxx>
include <BRepOffsetAPI_ThruSections.hxx>
include <BRepPrimAPI_MakeCylinder.hxx>
include <BRepPrimAPI_MakePrism.hxx>
include <BRepPrimAPI_MakeTorus.hxx>
include <BRepAlgoAPI_Section.hxx>
include <BRepPrimAPI_MakeSphere.hxx>
include <BRepFeat_SplitShape.hxx>
include <TColgp_HArray1OfPnt.hxx>
include <GeomAPI_Interpolate.hxx>
include <GC_MakeArcOfCircle.hxx>
include <GC_MakeSegment.hxx>
include <GC_MakeCircle.hxx>
include <GCE2d_MakeSegment.hxx>
include <gp.hxx>
include <gp_Ax1.hxx>
include <gp_Ax2.hxx>
include <gp_Ax2d.hxx>
include <gp_Dir.hxx>
include <gp_Dir2d.hxx>
include <gp_Pnt.hxx>
include <gp_Pnt2d.hxx>
include <gp_Trsf.hxx>
include <gp_Vec.hxx>
include <Geom_CylindricalSurface.hxx>
include <Geom_Plane.hxx>
include <Geom_Surface.hxx>
include <Geom_TrimmedCurve.hxx>
include <Geom2d_Ellipse.hxx>
include <Geom2d_TrimmedCurve.hxx>
include <TopExp_Explorer.hxx>
include <TopoDS.hxx>
include <TopoDS_Edge.hxx>
include <TopoDS_Face.hxx>
include <TopoDS_Wire.hxx>
include <TopoDS_Shape.hxx>
include <TopoDS_Compound.hxx>
include <GCPnts_AbscissaPoint.hxx>
include <BRepAdaptor_Curve.hxx>
include <GeomLib.hxx>
include <GeomConvert_CompCurveToBSplineCurve.hxx>
include <TopTools_ListOfShape.hxx>
include <TopTools_ListIteratorOfListOfShape.hxx>
include <TopTools_DataMapOfShapeInteger.hxx>
include <TopTools_DataMapOfShapeReal.hxx>
include <TopTools_IndexedDataMapOfShapeAddress.hxx>
include <V3d_PositionalLight.hxx>
include <V3d_DirectionalLight.hxx>
include <V3d_AmbientLight.hxx>
include <IGESControl_Controller.hxx>
include <IGESControl_Writer.hxx>
include <Interface_Static.hxx>
include <OpenGl_GraphicDriver.hxx>
include <Graphic3d_GraphicDriver.hxx>
ifndef _AFX_NO_OLE_SUPPORT
include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持
endif
ifndef _AFX_NO_AFXCMN_SUPPORT
include <afxcmn.h> // MFC 对 Windows 公共控件的支持
endif // _AFX_NO_AFXCMN_SUPPORT
include <afxcontrolbars.h> // 功能区和控件条的 MFC 支持
ifdef _UNICODE
if defined _M_IX86
pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'"")
elif defined _M_X64
pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'"")
else
pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='' publicKeyToken='6595b64144ccf1df' language=''"")
endif
endif
3.mfcoccc.h文件中创建三维引擎句柄,
Handle(Graphic3d_GraphicDriver) m_GraphicDriver;
Handle(Graphic3d_GraphicDriver) GetGraphicDriver() { return m_GraphicDriver; }
4.mfcocccDoc.h文件中声明上下文和显示view句柄,绘图函数声明
Handle(AIS_InteractiveContext) myAISContext;
Handle(V3d_Viewer) myViewer;
Handle(V3d_Viewer) GetViewer(void) { return myViewer; }
void DrawSphere(double Radius);
void DrawBox(double MyHeight,double MyWidth,double MyThickness); //画盒子
5.mfcocccView.h中声明视图句柄
Handle(V3d_View) myView;
6.实现代码较多,这里就不一一列出来了
7.案例达到的效果如下,是一个立体的空瓶子。
源码下载地址:https://download.csdn.net/download/xipengbozai/18884650
屌炸天的3D引擎OpenCASCADE的用法及案例(转载之处:)的更多相关文章
- 炸天的3D引擎OpenCASCADE的用法及案例(https://blog.csdn.net/xipengbozai/article/details/117044032?spm=1001.2014.3001.5502)
What CASCADE?Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一.开 ...
- 支持Android 的几款开源3D引擎调研
最近由于工作需要,对支持Android的一些开源3D引擎做了调研,结果如下: 1.Ogre 十分强大的一款3D引擎,号称工业级标准的开源项目,不仅可以用于游戏,还可以用于其他和3D相关的软件.大多数该 ...
- 从0开发3D引擎(四):搭建测试环境
目录 上一篇博文 了解自动化测试 单元测试 集成测试 端对端测试 通过打印日志来调试 了解运行测试 断点调试 通过Spector.js测试WebGL 通过log调试Shader 移动端测试 了解性能测 ...
- 关于如何学好游戏3D引擎编程的一些经验[转]
此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 ——阿哲VS自己 QQ79134054多希望大家一起交流与沟通 这篇文章是 ...
- 万圣节福利:红孩儿3D引擎开发课程《3ds max导出插件初步》
ds max文件夹,插件文件夹以及3ds max的可执行程序文件夹: 位的,这里要改成x64,否则启动程序后3ds max会提示"不是有效的win32程序"之类的对话框. 然后要将 ...
- 来手撸一个小小小小小"3D引擎"
开始的唠叨 说是3D引擎确实有点过于博眼球了,其实就是实现了一个透视投影,当然也不是那么简单的. 此篇文章是纯粹给小白看的 高手请勿喷 .也称之为小向带你图形学入门基础 . 哇哈哈哈哈 一说到做一个3 ...
- Flash Alternativa 3D引擎-基础理论
自由行走的花 网站设计,flash网站设计与动画制作,web,as3 2010-12-31 14:29 [转]Flash Alternativa 3D引擎-基础理论 <本文转载自:http:// ...
- 如何学好游戏3D引擎编程
注:本文是网上看到的一篇文章,感觉写的很好,因此收藏了下来 <如何学好游戏3D引擎编程>此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才 ...
- 转:典型开源3D引擎分类比较
常见的3D引擎有:Unreal.Quake.Lithtech.OGRE.Nebula.Irrlicht.Truevision3D... 其中开源免费的有:OGRE.irrlicht.fly3d.Neo ...
随机推荐
- Spring的循环依赖
本文简要介绍了循环依赖以及Spring解决循环依赖的过程 一.定义 循环依赖是指对象之间的循环依赖,即2个或以上的对象互相持有对方,最终形成闭环.这里的对象特指单例对象. 二.表现形式 对象之间的循环 ...
- 基于Hive进行数仓建设的资源元数据信息统计:Spark篇
在数据仓库建设中,元数据管理是非常重要的环节之一.根据Kimball的数据仓库理论,可以将元数据分为这三类: 技术元数据,如表的存储结构结构.文件的路径 业务元数据,如血缘关系.业务的归属 过程元数据 ...
- IDEA中Maven本地仓库与镜像配置
1 Maven Maven是一个用于项目构建与管理的工具,IDEA自带了Maven,在安装目录下的 plugins\maven\lib\maven3 IDEA也可以集成使用非自带的Maven,也就是自 ...
- GO-03-基础
可见性 Go语言中,使用大小写来决定标识符(常量.变量.类型.接口.结构或函数)是否可以被外部包所调用. 大写字母开头,那么其对象就可以被外部包的代码所使用,如同public. 小写字母开头,则对包外 ...
- 击鼓传花联想到了Java设计模式:责任链模式
目录 应用场景 简单示例 责任链模式 定义 意图 主要解决问题 何时使用 优缺点 击鼓传花的故事 应用场景 http web请求处理,请求过来后将经过转码.解析.参数封装.鉴权等一系列的处理(责任), ...
- fastjson反序列化漏洞实际案例利用
fastjson反序列化rce实际案例利用全过程: 存在问题网站:http://***.com/ 在网站上寻找一些安全漏洞的时候,发现一条json数据包 数据包如下: POST /*** HTTP/1 ...
- 2021S软件工程——个人阅读作业1
2021S软件工程--个人阅读作业1 项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任建) 这个作业的要求在哪里 2021年软工-热身阅读作业 我在这个课程的目标是 了解并熟悉软件开发 ...
- 022- Java算数运算符
算数运算符有哪些: 输入以下代码: public class Operator01 { public static void main(String[]args){ int a = 10; int b ...
- hdu3986 spfa + 枚举最短路上的边
题意: 删除一条边后,求最短路中最长的那个(敌人搞破坏). 思路: 如果你是敌人你肯定删除最短路上的边,删除别的边最短路的值是不会变的,所以直接枚举最短路上的边去删除,取得最大的就行了... #inc ...
- 缓冲区溢出之栈溢出利用(手动编写无 payload 的 Exploit)
0x01 介绍 Exploit 的英文意思就是利用,它在黑客眼里就是漏洞利用.有漏洞不一定就有Exploit(利用),有Exploit就肯定有漏洞.编写缓冲区溢出的Exploit分为3个方面:漏洞溢出 ...