您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > HOOPS基础培训课程2
HOOPS基础培训课程安排HOOPS简介1HOOPS3dGS基础1HOOPS3dGSAPI1HOOPSMVO1几何、属性、坐标2几何体的编辑2选择与高亮3大模型显示3动画3HOOPSStream3HOOPS/ACISBridge3HOOPS几何相应的计算函数HOOPS几何图元与建模内核中的定义不同HOOPS几何图元的创建•HC_Insert_Polyline•HC_Insert_Polygon•HC_Insert_Cutting_Plane练习4:HOOPS几何图元的创建相应的计算函数3D坐标•HPoint(floatX,floatY,floatZ=0.0f)•voidSet(floatX,floatY,floatZ=0.0f)•voidAdd(floatX,floatY,floatZ=0.0f)•boolEqual(HPoint*p)const计算函数的主坐标•HC_Compute_Cross_Product//叉乘•HC_Compute_Dot_Product//点乘•HC_Compute_Normalized_Vector//单位化可以指定HOOPS坐标左右手系•HC_Set_HandednessZYXHOOPS几何图元基本图元markerslinespolylinesimagestextcylinderscirculararcsellipticalarcsNURBcurvesNURBsurfacesHOOPS几何图元基本图元gridsmeshesshellscylinderspolygonspolucylindercirclesellipsescircularchordscircularwedgeNURBcurvesBURBsurfacesHOOPS几何图元特定的图元•cuttingplanes•lights与建模内核中的定义不同即使在术语方面是相同的,但是表达的意思是不同的•在HOOPS中拓扑意味着多边形之间的关系•在HOOPS中使用表面几何来表示3D形体在HOOPS中壳是指多表面几何在HOOPS中边/面是所属表面几何的一个元素HOOPSMarkerPolylineEdgeFaceSHELLACISVertexEdgeFaceShellBODYHOOPS几何图元的创建创建•voidHC_Insert_XXX(XXX)在创建的时候得到ID键值•HC_KEY_KInsert_XXX(XXX)•保留模式并不依赖于序列数目HC_Insert_Polyline插入Polyline•voidHC_Insert_Polyline(intcount,constHC_POINT*point)•count:顶点数目•HC_POINT:定点坐标HPointpoints[5];points[0].Set(10,10,0);points[1].Set(-10,10,0);points[2].Set(-10,-10,0);points[3].Set(10,-10,0);points[4].Set(10,10,0);HC_Insert_Polyline(5,points);HC_Insert_Polygon插入polygon•voidInsert_Polygon(intcount,constHC_POINT*point)•count:顶点数目•HC_POINT:顶点坐标两部分组成•Edge:连接顶点的多义线•Face:由边所围成的区域法线依赖于点的排列次序•用于背平面剔除使用示例:HC_Insert_PolygonHPointpoints[5];points[0].Set(10,10,0);points[1].Set(-10,10,0);points[2].Set(-10,-10,0);points[3].Set(10,-10,0);points[4].Set(10,10,0);HC_Insert_Polygon(5,points);HC_Insert_PolyCylinder插入多义圆柱体•voidInsert_PolyCylinder(intp_countconstHC_POINT*pts,intr_count,constfloat*radii,constchar*capping)•p_count:中心点的数目•pts:中心点的坐标•r_count:半径的数目•radii:半径列表•capping:字符串指定哪一部分要封闭适合建议一个用圆进行扫描生成的实体•管道•圆锥•箭头使用示例:HC_Insert_PolyCylinderHPointposArray[6];floatfRad[6];posArray[0].Set(0,0,0);posArray[1].Set(0,0,10);posArray[2]=posArray[1];posArray[3]=posArray[1];posArray[4]=posArray[1];posArray[5].Set(0,0,15);fRad[0]=5;fRad[1]=5;fRad[2]=5;fRad[3]=8;fRad[4]=8;fRad[5]=0;HC_Insert_PolyCylinder(6,posArray,6,fRad,”first”);HC_Insert_Cutting_Plane插入切平面voidInsert_Cutting_Plane(doublea,doubleb,doublec,doubled);•a,b,c,d:平面方程ax+by+cz+d=0中的参数值,定义了一个平面所有几何沿切平面法向端的部分被切除关闭切平面的可见性属性将不执行切除操作可以设置局部切平面—存在于一个段切平面几何(R14)HC_Insert_Cutting_Plane(0,0,1,-0.001f);练习4:切平面对象的显示在练习3的工程中增加一个切平面•增加一个命令:菜单-[Test]-[CuttingPlane]•在view类中实现所需的几何•为切平面的框架绘制一条多义线•为切平面的面绘制多边形•绘制一个箭头来控制切平面的方向•插入切平面(-1,1,0)(1,1,0)(-1,-1,0)(1,-1,0)(0,0,0)HOOPS几何图元(续)Mesh和Shell•HC_Insert_Mesh•HC_Insert_ShellText•HC_Insert_TextLight•HC_Insert_Distant_Light•HC_Insert_Local_Light•HC_Insert_Spot_Light练习5:插入Mesh和ShellMesh和ShellMesh和Shell是高层次几何可以设置一些特殊的渲染效果•Phong和gouraud性能优化•分解成三角片并连接它们,然后建立合适的三角带建立三角带是在后处理(在插入以后的第一次更形)中进行的•共用顶点以减少内存•长的三角带=更好的性能三角带表示v2v1v3v4v5v0最终结果v2v1v3v4v5v0Mesh和Shell拥有边(edge)和面(face)每一个顶点处都有一个标记(marker)边可以根据在表面上的位置来区分•三角网格的外边界边•三角网格的侧面轮廓边•四边形网格(去除对角线后)可以对面、边和标记设置不同的属性HC_Insert_Mesh插入网格•voidHC_Insert_Mesh(introws,intcolumns,constHC_POINT*points)•rows:行数•columns:列数•points:顶点坐标很容易构造三角带因为拓扑是固定的使用示例:HC_Insert_MeshHPoint*posMesh=newHPoint[10];inti,j,k;k=0;for(i=0,i=1;i++){for(j=0;j5;j++){posMesh[k].x=(float)i*0.1+1;posMesh[k].y=(float)j*0.1+1;posMesh[k].z=0.0f;k++;}}HC_Insert_Mesh(2,5,posMesh);delete[]posMesh;Shell具有连接信息的多边形组合可以退化•点不能重合可以有孔•边的号码可以使用负数。例如(-3,7,4,…)面表的排列是非常重要的•渲染效果•性能HC_Insert_Shell插入Shell•voidHC_Insert_Shell(intpcount,constHC_POINT*points,intflist_length,constint*face_list)•pcount:顶点数目•points:顶点坐标•flist_length:面列表的数目•face_list:面列表face_list是构成多边形的顶点序号整数数组•构成多边形的顶点个数在多边形点序号之前三角形:3举行:4•在顶点个数之后列出了组成多边形点序号使用示例:HC_Insert_ShellHPointpoints[8];points[0].Set(-0.5f,-0.5f,-0.5f);points[1].Set(-0.5f,-0.5f,-0.5f);points[2].Set(-0.5f,-0.5f,-0.5f);points[3].Set(-0.5f,-0.5f,-0.5f);points[4].Set(-0.5f,-0.5f,-0.5f);points[5].Set(-0.5f,-0.5f,-0.5f);points[6].Set(-0.5f,-0.5f,-0.5f);points[7].Set(-0.5f,-0.5f,-0.5f);intface_list[]={4,0,1,2,3,4,1,5,6,2,4,5,4,7,6,4,4,0,3,7,4,3,2,6,7,4,0,4,5,1};HC_Insert_Shell(8,points,30,face_list);Text根据参考点位置和字符串来插入文本使用键值来操作文本•HC_Edit_Text•HC_Move_Text•HC_Scroll_Text计算出所给文本轮廓的多面体描述•HC_Compute_Text_Outline计算一个文本的场景大小•HC_Compute_Text_ExtentHC_Insert_Text文本的插入•voidHC_Insert_Text(doublex,doubley,doublez,constchar*text)•x,y,z:文本的坐标•string:文本字符串•可以作为块的形式来插入文本在文本字符串中可以使用换行符”\n”Light3种类型的光照•平行光源•发散点光源•聚光源光照的有效区域是包含它的窗口•对父类几何体是有效的使用HC_Set_Color()来调整光的强度使用HC_Move_XXX_Light()来调整光的位置当关闭光的可见性时就不进行光照计算•在特定的段中不进行相应几何光照的计算HC_Insert_Distant_Light插入平行光源(无穷远处)•voidHC_Insert_Distant_Light(doubledi,doubledj,doubledk)•di,dj,dk:光的矢量HC_Insert_Distant_Light(0,0,-1);HC_Insert_Local_Light插入一个全方位的点光源•voidHC_Insert_Local_Light(doubledi,doubledj,doubledk)•di,dj,dk:光所在的位置坐标HC_Insert_local_Light(0,0,0);HC_Insert_Spot_Light插入一个圆锥形光源•voidHC_Insert_Spot_Light(constHC_POINT*position,constHC_POINT*target,constchar*list)•position:光的位置坐标•target:光的目标坐标•l
本文标题:HOOPS基础培训课程2
链接地址:https://www.777doc.com/doc-958555 .html