HOOPS基本功能介绍3

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

HOOPS基本培训课程日程安排内容第3天课程拾取与高亮3大模型显示3动画3HOOPSStream3HOOPS/ACISBridge3选择和高亮HOOPS选择事件选择示例联系11:选择高亮实现段间的移动联系12:高亮HOOPS选择事件一般来说输入的是鼠标位置•定义选择涉嫌•定义选择体•探测和选择射线相交的可选几何对象选择事件执行以下操作•遍历段结构树•将可选几何对象转换到窗口空间•用选择区域和可选几何对象比较•在列表中的对象执行Z排序‘selectionsorting’选项可以控制是否执行Z排序选择结果保存在选择队列中•与搜索函数返回的对象格式相同HC_Compute_Selection得到选中对象intHC_Compute_Selection(constchar*display,constchar*start_seg,constchar*action,doublex,doubley)•display:拥有驱动的段•start_seg:搜索起始段•action:作用于对象的鼠标事件•x,y:选择点在窗口空间的坐标值•函数变形By_AreaBy_PolygonBy_PolylineBy_VolumeBy_ShellHC_Compute_Selection选中的对象存储在选择列表中•按从前到后顺序排列可以设置选择邻近区域的大小•HC_Set_Driver_Option函数的”selectionproximity”选项可以设置选择列表中可以保存的对象的数目•HC_Set_Driver_Option函数的”relatedselectionlimit”选项可以搜索选择列表中的对象•HC_Show_Selection_XXX()•使用键值得到需要的几何对象HC_Show_Selection_XXX()搜索选择列表中的对象•voidHC_Show_Selection_XXX()函数变形•Show_Selection•Show_Selection_Element•Show_Selection_Elements•Show_Selection_Keys•Show_Selection_Original_Key•Show_Selection_Original_Keys•Show_Selection_Pathname•Show_Selection_Position•Show_Selection_SourceHC_Find_Related_Selection在选择列表中移动,指向下一个对象HC_BOOLEANHC_Find_Related_Selection(void)do{HC_Show_Selection_Element(&key,NULL,NULL,NULL);chartype[MVO_BUFFER_SIZE];HC_Show_Key_Type(key,type);HC_KEYtemp=note.IsNote(key);if(temp!=-1){m_pNoteKey=temp;break;}}while(HC_Fine_Related_Selection());HC_Set_Selectability设置段或基本图元的可选择性voidHC_Set_Selectability(constchar*list)•list:设置字符串缺省情况下不可见的对象是无法选中的•通过指定”invisible”或”on!”可以打开对不可见对象的选择•HC_Set_Selectability(“eveything=off”);选择示例longprimitive;intcount,offset1,offset2,offset3;chartype[32],pathname[128];count=HC_Compute_Selection(“.”,”.”,”v”,new_point.x,new_point.y);HC_Show_Selection_Element(&primitive,&offset1,&offset2,&offset3);HC_Show_Key_Type(primitive,type);if(streq(type,”marker”))HC_delete_By_Key(&primitive);elseHighlight_Primitive(&primitive);练习11:选择找出HOOPS可以从几何中得到的信息参考在线帮助提示HC_Show_Selection_element(key,offset1,offset2,offset3)高亮的实现需要高亮的几何被临时移动到高亮段高亮段拥有高亮颜色设置更新代价取决于属性更新•改变颜色时,宜采用增量更新•改变边的线宽时,需要采用全部更新段之间的移动可以用来移动段和几何几何接受了目标段的属性移动一个对象•HC_Move_By_Key•给定待移动对象的键值段的复制•HC_Copy_Segment•一般来说建议采用实力化的方式HC_Move_By_Key段之间的移动voidHC_Move_By_Key(HC_KEYkey,constchar*newowner)•key:待移动的段或几何的键值•newowner:移动目标段的名称HC_Move_By_Key(m_keyArrow,”./scene/Highlight”);HC_Copy_Segment将一个段中的内容拷贝到另一个段voidHC_Copy_Segment(constchar*old,constchar*new)•old:原先的段•new:目标段HC_Open_Segment(“viewport1”);HC_Copy_Segment(“../viewport4”,”./*”);HC_Close_Segment();练习12:高亮在联系6的切平面函数上增加一个预选择函数•构造一个由HBaseOperator派生的新类类名:COpTestCuttingPlane类的类型:Generic父类:HBaseOperator•修改响应命令的执行,菜单-[Test]-[CuttingPlane]将生成对象的这一过程移动到构造函数中给生成的对象设置操作•实现所定义类的高亮函数探测箭头和外框将箭头和外框移动到高亮段如果没有探测到任何东西就反悔原来的段中在被高亮段里创建临时段,再将高亮段移动到临时段里中间模式什么是中间模式使用中间模式示例中间模式示例练习13:中间模式什么是中间模式?中断HOOPS的更新处理•在渲染管道中的固定位置•允许回调机制可以用来控制应用程序•渲染什么?•怎样来渲染?•停止遍历•获得数据库和设备的属性提供子程序段显示•立即模式函数使用示例创建新的几何•2D•3D•样条线绘制创建新的属性•新标记样式•新的面型•新的线型•视区剪贴板设置依赖于视图的三角片划分•依赖于视图参数的基本图元避免复制数据•调用存储在应用程序中的数据使用示例//回调函数定义voidmy_marker(HT_Rendition*rendition,HT_DC_Point*point){HT_RGBred[]={1.0,0.0,0.0};HT_Rendition*new_rend=HIC_New_Rendition(rendition);HIC_Set_Marker_Color(new_rend,red);HIC_Draw_DC_Marker(new_rend,point);}//初始时注册回调函数注册HC_Define_Callback_Name(“mydrawdcmarker”,(void(HC_CDECL*)(HC_ANY_ARGS))(my_marker));//在适当地段中调用回调函数使用HC_Set_Callback(“drawdcmarker=mydrawdcmarker”);练习13:生成”√”标记的函数为联系12的工程增加一个生成”√”标记的函数•增加一个命令,菜单-[Test]-[CheckMark]•构造一个由HBaseOperator派生的新类类名:COpTestIM类的类型:Generic父类:HBaseOperator•在处理view类中的操作时设置对象的生成•执行回调•执行函数OnLButtonDown注册回调函数得到窗口坐标坐标转换调用回调函数大模型显示实现大模型显示的关键大模型显示技术剔除精细度级别(LOD)•两种方法生成LODS•LOD的设置:创建•两种方法来改变LOD•反馈选项Spriting练习14:LOD的实现实现大模型显示的关键性能依赖于图形数据库的大小减少图形数据库的大小•包含库的使用•当插入数据时尽可能使用By_RefHC_Insert_Shell_By_Ref•便面在应用程序与HOOPS之间的数据复制数据映射中间模式ACIS:EntityHOOPS:key映射使用包含库(includelib)插入时,采用引用大模型显示技术动态场景•整个场景在连续不断的改变相机运动•减少渲染几何大小的解决方案选择算法精细度级别:LOD动静态场景•场景中的大多数不变化相机固定小对象的创建•可以在帧缓冲器中快速的渲染Spriting静HOOPS会考虑是否需要对整个场景进行全部更新•在高亮的时候不会执行全部更新•当使用流化处理时,增量更新是很重要的剔除去掉不显示的(主要是3D)最流行的技术之一•不会导致显示退化视锥体剔除•不显示视锥体的对象背平面剔除•不出力背面(如光照等)遮挡剔除•不处理在场景中被遮挡的对象HC_Set_Heuristics指定启发式选项voidHC_Set_Heuristics(constchar*list)选项示例•backplaneculling•selectionsorting•clipping•concavepolygons•hiddensurfaces•memorypurge•incrementalupdates•partialerase•polygoncrossings•polygonhandedness•quickmoves•relatedselectionlimit视锥体剔除判断当前的相机能否可以看见看不见的就无需显示HOOPS缺省是打开该选项的•HC_Define_System_Options(“boundingvolumes”)•HC_Set_Heuristics(“viewfrustum”)这些对象可以是段,shell和mesh遮挡剔除判断一个对象是否被另一个对象遮挡住了被遮挡对象无需显示•HC_set_Heuristics(“culling=obscuration”)背平面剔除通过单面显示提高渲染性能需要设定多边形左右手系HC_Set_Heuristics(“[no]polygonhandedness=[=left/right]”)HC_Set_Heuristics(“backplaneculling”)精细度级别(LOD)只需要显示简化后的多边形•与原先的显示近似•只有shell提升渲染性能•LOD代替了原先的显示•当对象的显示不是重要的时候就会使用LOD两种方法生成LOD由原是网格生成LOD•需要考虑生成时间•读入模型时LOD选项由”preprocess”指定•更新模型时HC_Regenerate_LOD插入一个已生成的LOD模型(自定义)•可以是任意图形对象Open_LOD(level)Insert_*(…)Close_LOD()HC_Set_Rendering_Options(“lod=on,lodo=(fallback=coarsest,preprose)”)LOD设置打开LOD•HC_Set_Rendering_Options(“lod=on”);•设置是否在所有渲染过程中使用LODLOD子选项设置•HC_Set_Rendering_Options(“lodo=(opt1,opt2,…)”);

1 / 95
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功