HOOPS基础培训课程2.ppt
《HOOPS基础培训课程2.ppt》由会员分享,可在线阅读,更多相关《HOOPS基础培训课程2.ppt(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、HOOPSHOOPS基础培训课程安排基础培训课程安排HOOPSHOOPS简介简介1 1HOOPS 3dGSHOOPS 3dGS基础基础1 1HOOPS 3dGS APIHOOPS 3dGS API1 1HOOPS MVOHOOPS MVO1 1几何、属性、坐标几何、属性、坐标2 2几何体的编辑几何体的编辑2 2选择与高亮选择与高亮3 3大模型显示大模型显示3 3动画动画3 3HOOPS StreamHOOPS Stream3 3HOOPS/ACIS BridgeHOOPS/ACIS Bridge3 32021/9/262021/9/261 1HOOPS几何n n相应的计算函数n nHOOPS几
2、何图元n n与建模内核中的定义不同n nHOOPS几何图元的创建HC_Insert_PolylineHC_Insert_PolylineHC_Insert_PolygonHC_Insert_PolygonHC_Insert_Cutting_PlaneHC_Insert_Cutting_Planen n练习4:HOOPS几何图元的创建2021/9/262021/9/262 2相应的计算函数n n3D3D坐标坐标 HPoint(float X,float Y,float Z=0.0f)HPoint(float X,float Y,float Z=0.0f)void Set(float X,floa
3、t Y,float Z=0.0f)void Set(float X,float Y,float Z=0.0f)void Add(float X,float Y,float Z=0.0f)void Add(float X,float Y,float Z=0.0f)bool Equal(HPoint*p)constbool Equal(HPoint*p)constn n计算函数的主坐标计算函数的主坐标 HC_Compute_Cross_ProductHC_Compute_Cross_Product/叉乘叉乘 HC_Compute_Dot_ProductHC_Compute_Dot_Product/
4、点乘点乘 HC_Compute_Normalized_VectorHC_Compute_Normalized_Vector/单位化单位化n n可以指定可以指定HOOPSHOOPS坐标左右手系坐标左右手系 HC_Set_HandednessHC_Set_HandednessZYX2021/9/262021/9/263 3HOOPS几何图元n n基本图元markerslinespolylinesimagestextcylinderscircular arcselliptical arcsNURB curvesNURB surfaces2021/9/262021/9/264 4HOOPS几何图元n
5、n基本图元gridsmeshesshellscylinderspolygonspolucylindercirclesellipsescircular chordscircular wedgeNURB curvesBURB surfaces2021/9/262021/9/265 5HOOPS几何图元n n特定的图元cutting planescutting planeslightslights2021/9/262021/9/266 6与建模内核中的定义不同n n即使在术语方面是相同的,但是表达的意思是不同的即使在术语方面是相同的,但是表达的意思是不同的 在在HOOPSHOOPS中拓扑意味着多边形
6、之间的关系中拓扑意味着多边形之间的关系 在在HOOPSHOOPS中使用表面几何来表示中使用表面几何来表示3D3D形体形体n n在在HOOPSHOOPS中壳是指多表面几何中壳是指多表面几何n n在在HOOPSHOOPS中边中边/面是所属表面几何的一个元素面是所属表面几何的一个元素HOOPSMarkerPolylineEdgeFaceSHELLACISVertexEdgeFaceShellBODY2021/9/262021/9/267 7HOOPS几何图元的创建n n创建void HC_Insert_XXX(XXX)void HC_Insert_XXX(XXX)n n在创建的时候得到ID键值HC_
7、KEY_KInsert_XXX(XXX)HC_KEY_KInsert_XXX(XXX)保留模式并不依赖于序列数目保留模式并不依赖于序列数目2021/9/262021/9/268 8HC_Insert_Polylinen n插入Polyline void HC_Insert_Polyline(int count,const HC_POINT*point)void HC_Insert_Polyline(int count,const HC_POINT*point)count:count:顶点数目顶点数目 HC_POINT:HC_POINT:定点坐标定点坐标HPoint points5;points
8、0.Set(10,10,0);points1.Set(-10,10,0);points2.Set(-10,-10,0);points3.Set(10,-10,0);points4.Set(10,10,0);HC_Insert_Polyline(5,points);2021/9/262021/9/269 9HC_Insert_Polygonn n插入插入polygonpolygon void Insert_Polygon(int count,const HC_POINT*point)void Insert_Polygon(int count,const HC_POINT*point)count:
9、count:顶点数目顶点数目 HC_POINT:HC_POINT:顶点坐标顶点坐标n n两部分组成两部分组成 EdgeEdge:连接顶点的多义线:连接顶点的多义线 FaceFace:由边所围成的区域:由边所围成的区域n n法线依赖于点的排列次序法线依赖于点的排列次序 用于背平面剔除用于背平面剔除2021/9/262021/9/261010使用示例:HC_Insert_PolygonHPoint points5;HPoint points5;points0.Set(10,10,0);points0.Set(10,10,0);points1.Set(-10,10,0);points1.Set(-1
10、0,10,0);points2.Set(-10,-10,0);points2.Set(-10,-10,0);points3.Set(10,-10,0);points3.Set(10,-10,0);points4.Set(10,10,0);points4.Set(10,10,0);HC_Insert_Polygon(5,points);HC_Insert_Polygon(5,points);2021/9/262021/9/261111HC_Insert_PolyCylindern n插入多义圆柱体插入多义圆柱体 void Insert_PolyCylinder(int p_countvoid I
11、nsert_PolyCylinder(int p_count const HC_POINT*pts,const HC_POINT*pts,int r_count,int r_count,const float*radii,const float*radii,const char*capping)const char*capping)p_count:p_count:中心点的数目中心点的数目 pts:pts:中心点的坐标中心点的坐标 r_count:r_count:半径的数目半径的数目 radii:radii:半径列表半径列表 capping:capping:字符串指定哪一部分要封闭字符串指定哪一
12、部分要封闭n n适合建议一个用圆进行扫描生成的实体适合建议一个用圆进行扫描生成的实体 管道管道 圆锥圆锥 箭头箭头2021/9/262021/9/261212使用示例:HC_Insert_PolyCylinderHPoint posArray6;HPoint posArray6;float fRad6;float fRad6;posArray0.Set(0,0,0);posArray0.Set(0,0,0);posArray1.Set(0,0,10);posArray1.Set(0,0,10);posArray2=posArray1;posArray2=posArray1;posArray3=
13、posArray1;posArray3=posArray1;posArray4=posArray1;posArray4=posArray1;posArray5.Set(0,0,15);posArray5.Set(0,0,15);fRad0=5;fRad0=5;fRad1=5;fRad1=5;fRad2=5;fRad2=5;fRad3=8;fRad3=8;fRad4=8;fRad4=8;fRad5=0;fRad5=0;HC_Insert_PolyCylinder(6,posArray,6,fRad,”first”);HC_Insert_PolyCylinder(6,posArray,6,fRad
14、,”first”);2021/9/262021/9/261313HC_Insert_Cutting_Planen n插入切平面插入切平面void Insert_Cutting_Plane(double a,void Insert_Cutting_Plane(double a,double b,double b,double c,double c,double d);double d);a,b,c,d:a,b,c,d:平面方程平面方程ax+by+cz+d=0ax+by+cz+d=0中的参数值中的参数值,定义了一个平面定义了一个平面n n所有几何沿切平面法向端的部分被切除所有几何沿切平面法向端的部
15、分被切除n n关闭切平面的可见性属性将不执行切除操作关闭切平面的可见性属性将不执行切除操作n n可以设置局部切平面可以设置局部切平面存在于一个段存在于一个段n n切平面几何(切平面几何(R14R14)HC_Insert_Cutting_Plane(0,0,1,-0.001f);HC_Insert_Cutting_Plane(0,0,1,-0.001f);2021/9/262021/9/261414练习4:切平面对象的显示n n在练习在练习3 3的工程中增加一个切平面的工程中增加一个切平面 增加一个命令:菜单增加一个命令:菜单Test-Test-Cutting PlaneCutting Plan
16、e 在在viewview类中实现类中实现n n所需的几何所需的几何 为切平面的框架绘制一条多义线为切平面的框架绘制一条多义线 为切平面的面绘制多边形为切平面的面绘制多边形 绘制一个箭头来控制切平面的方向绘制一个箭头来控制切平面的方向 插入切平面插入切平面(-1,1,0)(1,1,0)(-1,-1,0)(1,-1,0)(0,0,0)2021/9/262021/9/261515HOOPS几何图元(续)n nMeshMesh和和ShellShell HC_Insert_MeshHC_Insert_Mesh HC_Insert_ShellHC_Insert_Shelln nTextText HC_In
17、sert_TextHC_Insert_Textn nLightLight HC_Insert_Distant_LightHC_Insert_Distant_Light HC_Insert_Local_LightHC_Insert_Local_Light HC_Insert_Spot_LightHC_Insert_Spot_Lightn n练习练习5 5:插入:插入MeshMesh和和ShellShell2021/9/262021/9/261616Mesh和Shelln nMeshMesh和和ShellShell是高层次几何是高层次几何n n可以设置一些特殊的渲染效果可以设置一些特殊的渲染效果
18、PhongPhong和和gouraudgouraudn n性能优化性能优化 分解成三角片并连接它们,然后建立合适的三角带分解成三角片并连接它们,然后建立合适的三角带n n建立三角带是在后处理(在插入以后的第一次更形)中进行的建立三角带是在后处理(在插入以后的第一次更形)中进行的 共用顶点以减少内存共用顶点以减少内存 长的三角带更好的性能长的三角带更好的性能三角带表示v2v1v3v4v5v0最终结果v2v1v3v4v5v02021/9/262021/9/261717Mesh和Shelln n拥有边(拥有边(edgeedge)和面()和面(faceface)n n每一个顶点处都有一个标记(每一个顶
19、点处都有一个标记(markermarker)n n边可以根据在表面上的位置来区分边可以根据在表面上的位置来区分 三角网格的外边界边三角网格的外边界边 三角网格的侧面轮廓边三角网格的侧面轮廓边 四边形网格(去除对角线后)四边形网格(去除对角线后)n n可以对面、边和标记设置不同的属性可以对面、边和标记设置不同的属性2021/9/262021/9/261818HC_Insert_Meshn n插入网格 void HC_Insert_Mesh(int rows,void HC_Insert_Mesh(int rows,int columns,int columns,const HC_POINT*po
20、ints)const HC_POINT*points)rowsrows:行数:行数 columnscolumns:列数:列数 pointspoints:顶点坐标:顶点坐标n n很容易构造三角带因为拓扑是固定的2021/9/262021/9/261919使用示例:HC_Insert_MeshHPoint*posMesh=new HPoint10;HPoint*posMesh=new HPoint10;int i,j,k;int i,j,k;k=0;k=0;for(i=0,i=1;i+)for(i=0,i=1;i+)for(j=0;j5;j+)for(j=0;j5;j+)posMeshk.x=(f
21、loat)i*0.1+1;posMeshk.x=(float)i*0.1+1;posMeshk.y=(float)j*0.1+1;posMeshk.y=(float)j*0.1+1;posMeshk.z=0.0f;posMeshk.z=0.0f;k+;k+;HC_Insert_Mesh(2,5,posMesh);HC_Insert_Mesh(2,5,posMesh);delete posMesh;delete posMesh;2021/9/262021/9/262020Shelln n具有连接信息的多边形组合n n可以退化点不能重合点不能重合n n可以有孔边的号码可以使用负数。例如(边的号码可
22、以使用负数。例如(-3,7,4,-3,7,4,)n n面表的排列是非常重要的渲染效果渲染效果性能性能2021/9/262021/9/262121HC_Insert_Shelln n插入插入ShellShell void HC_Insert_Shell(int pcount,void HC_Insert_Shell(int pcount,const HC_POINT*points,const HC_POINT*points,int flist_length,int flist_length,const int*face_list)const int*face_list)pcountpcount:
23、顶点数目:顶点数目 pointspoints:顶点坐标:顶点坐标 flist_length:flist_length:面列表的数目面列表的数目 face_list:face_list:面列表面列表n nface_listface_list是构成多边形的顶点序号整数数组是构成多边形的顶点序号整数数组 构成多边形的顶点个数在多边形点序号之前构成多边形的顶点个数在多边形点序号之前n n三角形:三角形:3 3n n举行:举行:4 4 在顶点个数之后列出了组成多边形点序号在顶点个数之后列出了组成多边形点序号2021/9/262021/9/262222使用示例:HC_Insert_ShellHPoint
24、points8;HPoint points8;points0.Set(-0.5f,-0.5f,-0.5f);points0.Set(-0.5f,-0.5f,-0.5f);points1.Set(-0.5f,-0.5f,-0.5f);points1.Set(-0.5f,-0.5f,-0.5f);points2.Set(-0.5f,-0.5f,-0.5f);points2.Set(-0.5f,-0.5f,-0.5f);points3.Set(-0.5f,-0.5f,-0.5f);points3.Set(-0.5f,-0.5f,-0.5f);points4.Set(-0.5f,-0.5f,-0.5f
25、);points4.Set(-0.5f,-0.5f,-0.5f);points5.Set(-0.5f,-0.5f,-0.5f);points5.Set(-0.5f,-0.5f,-0.5f);points6.Set(-0.5f,-0.5f,-0.5f);points6.Set(-0.5f,-0.5f,-0.5f);points7.Set(-0.5f,-0.5f,-0.5f);points7.Set(-0.5f,-0.5f,-0.5f);int face_list=4,0,1,2,3,int face_list=4,0,1,2,3,4,1,5,6,2,4,1,5,6,2,4,5,4,7,6,4,5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HOOPS 基础 培训 课程
限制150内