版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
HOOPS基礎(chǔ)培訓(xùn)課程安排HOOPS簡介1HOOPS3dGS基礎(chǔ)1HOOPS3dGSAPI1HOOPSMVO1幾何、屬性、坐標(biāo)2幾何體的編輯2選擇與高亮3大模型顯示3動(dòng)畫3HOOPSStream3HOOPS/ACISBridge3HOOPS基礎(chǔ)培訓(xùn)課程安排HOOPS簡介1HOOPS3dG1HOOPS幾何相應(yīng)的計(jì)算函數(shù)HOOPS幾何圖元與建模內(nèi)核中的定義不同HOOPS幾何圖元的創(chuàng)建HC_Insert_PolylineHC_Insert_PolygonHC_Insert_Cutting_Plane練習(xí)4:HOOPS幾何圖元的創(chuàng)建HOOPS幾何相應(yīng)的計(jì)算函數(shù)2相應(yīng)的計(jì)算函數(shù)3D坐標(biāo)HPoint(floatX,floatY,floatZ=0.0f)voidSet(floatX,floatY,floatZ=0.0f)voidAdd(floatX,floatY,floatZ=0.0f)boolEqual(HPoint*p)const計(jì)算函數(shù)的主坐標(biāo)HC_Compute_Cross_Product //叉乘HC_Compute_Dot_Product //點(diǎn)乘HC_Compute_Normalized_Vector //單位化可以指定HOOPS坐標(biāo)左右手系HC_Set_HandednessZYX相應(yīng)的計(jì)算函數(shù)3D坐標(biāo)ZYX3HOOPS幾何圖元基本圖元markerslinespolylinesimagestextcylinderscirculararcsellipticalarcsNURBcurvesNURBsurfacesHOOPS幾何圖元基本圖元markerscirculara4HOOPS幾何圖元基本圖元gridsmeshesshellscylinderspolygonspolucylindercirclesellipsescircularchordscircularwedgeNURBcurvesBURBsurfacesHOOPS幾何圖元基本圖元gridscircles5HOOPS幾何圖元特定的圖元cuttingplaneslightsHOOPS幾何圖元特定的圖元6與建模內(nèi)核中的定義不同即使在術(shù)語方面是相同的,但是表達(dá)的意思是不同的在HOOPS中拓?fù)湟馕吨噙呅沃g的關(guān)系在HOOPS中使用表面幾何來表示3D形體在HOOPS中殼是指多表面幾何在HOOPS中邊/面是所屬表面幾何的一個(gè)元素HOOPSMarkerPolylineEdgeFaceSHELLACISVertexEdgeFaceShellBODY與建模內(nèi)核中的定義不同即使在術(shù)語方面是相同的,但是表達(dá)的意思7HOOPS幾何圖元的創(chuàng)建創(chuàng)建voidHC_Insert_XXX(XXX)在創(chuàng)建的時(shí)候得到ID鍵值HC_KEY_KInsert_XXX(XXX)保留模式并不依賴于序列數(shù)目HOOPS幾何圖元的創(chuàng)建創(chuàng)建8HC_Insert_Polyline插入PolylinevoidHC_Insert_Polyline(intcount,constHC_POINT*point)count:頂點(diǎn)數(shù)目HC_POINT:定點(diǎn)坐標(biāo)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_Polyline插入PolylineHP9HC_Insert_Polygon插入polygonvoidInsert_Polygon(intcount,constHC_POINT*point)count:頂點(diǎn)數(shù)目HC_POINT:頂點(diǎn)坐標(biāo)兩部分組成Edge:連接頂點(diǎn)的多義線Face:由邊所圍成的區(qū)域法線依賴于點(diǎn)的排列次序用于背平面剔除HC_Insert_Polygon插入polygon10使用示例: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_PolygonHPointp11HC_Insert_PolyCylinder插入多義圓柱體voidInsert_PolyCylinder(intp_count
constHC_POINT*pts,
intr_count,
constfloat*radii,
constchar*capping)p_count:中心點(diǎn)的數(shù)目pts:中心點(diǎn)的坐標(biāo)r_count:半徑的數(shù)目radii:半徑列表capping:字符串指定哪一部分要封閉適合建議一個(gè)用圓進(jìn)行掃描生成的實(shí)體管道圓錐箭頭HC_Insert_PolyCylinder插入多義圓柱體12使用示例: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_PolyCylinderHPo13HC_Insert_Cutting_Plane插入切平面
voidInsert_Cutting_Plane(doublea,
doubleb,
doublec,
doubled);a,b,c,d:平面方程ax+by+cz+d=0中的參數(shù)值,定義了一個(gè)平面所有幾何沿切平面法向端的部分被切除關(guān)閉切平面的可見性屬性將不執(zhí)行切除操作可以設(shè)置局部切平面—存在于一個(gè)段切平面幾何(R14)
HC_Insert_Cutting_Plane(0,0,1,-0.001f);HC_Insert_Cutting_Plane插入切平面
v14練習(xí)4:切平面對(duì)象的顯示在練習(xí)3的工程中增加一個(gè)切平面增加一個(gè)命令:菜單-[Test]-[CuttingPlane]在view類中實(shí)現(xiàn)所需的幾何為切平面的框架繪制一條多義線為切平面的面繪制多邊形繪制一個(gè)箭頭來控制切平面的方向插入切平面(-1,1,0)(1,1,0)(-1,-1,0)(1,-1,0)(0,0,0)練習(xí)4:切平面對(duì)象的顯示在練習(xí)3的工程中增加一個(gè)切平面(-115HOOPS幾何圖元(續(xù))Mesh和ShellHC_Insert_MeshHC_Insert_ShellTextHC_Insert_TextLightHC_Insert_Distant_LightHC_Insert_Local_LightHC_Insert_Spot_Light練習(xí)5:插入Mesh和ShellHOOPS幾何圖元(續(xù))Mesh和Shell16Mesh和ShellMesh和Shell是高層次幾何可以設(shè)置一些特殊的渲染效果Phong和gouraud性能優(yōu)化分解成三角片并連接它們,然后建立合適的三角帶建立三角帶是在后處理(在插入以后的第一次更形)中進(jìn)行的共用頂點(diǎn)以減少內(nèi)存長的三角帶=更好的性能三角帶表示v2v1v3v4v5v0最終結(jié)果v2v1v3v4v5v0Mesh和ShellMesh和Shell是高層次幾何三角帶表17Mesh和Shell擁有邊(edge)和面(face)每一個(gè)頂點(diǎn)處都有一個(gè)標(biāo)記(marker)邊可以根據(jù)在表面上的位置來區(qū)分三角網(wǎng)格的外邊界邊三角網(wǎng)格的側(cè)面輪廓邊四邊形網(wǎng)格(去除對(duì)角線后)可以對(duì)面、邊和標(biāo)記設(shè)置不同的屬性Mesh和Shell擁有邊(edge)和面(face)18HC_Insert_Mesh插入網(wǎng)格voidHC_Insert_Mesh(introws,
intcolumns,
constHC_POINT*points)rows:行數(shù)columns:列數(shù)points:頂點(diǎn)坐標(biāo)很容易構(gòu)造三角帶因?yàn)橥負(fù)涫枪潭ǖ腍C_Insert_Mesh插入網(wǎng)格19使用示例:HC_Insert_MeshHPoint*posMesh=newHPoint[10];inti,j,k;k=0;for(i=0,i<=1;i++){ for(j=0;j<5;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;使用示例:HC_Insert_MeshHPoint*pos20Shell具有連接信息的多邊形組合可以退化點(diǎn)不能重合可以有孔邊的號(hào)碼可以使用負(fù)數(shù)。例如(-3,7,4,…)面表的排列是非常重要的渲染效果性能Shell具有連接信息的多邊形組合21HC_Insert_Shell插入ShellvoidHC_Insert_Shell(intpcount,
constHC_POINT*points,
intflist_length,
constint*face_list)pcount:頂點(diǎn)數(shù)目points:頂點(diǎn)坐標(biāo)flist_length:面列表的數(shù)目face_list:面列表face_list是構(gòu)成多邊形的頂點(diǎn)序號(hào)整數(shù)數(shù)組構(gòu)成多邊形的頂點(diǎn)個(gè)數(shù)在多邊形點(diǎn)序號(hào)之前三角形:3舉行:4在頂點(diǎn)個(gè)數(shù)之后列出了組成多邊形點(diǎn)序號(hào)HC_Insert_Shell插入Shell22使用示例: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);使用示例:HC_Insert_ShellHPointpoi23Text根據(jù)參考點(diǎn)位置和字符串來插入文本使用鍵值來操作文本HC_Edit_TextHC_Move_TextHC_Scroll_Text計(jì)算出所給文本輪廓的多面體描述HC_Compute_Text_Outline計(jì)算一個(gè)文本的場景大小HC_Compute_Text_ExtentText根據(jù)參考點(diǎn)位置和字符串來插入文本24HC_Insert_Text文本的插入voidHC_Insert_Text(doublex,
doubley,
doublez,
constchar*text)x,y,z:文本的坐標(biāo)string:文本字符串可以作為塊的形式來插入文本在文本字符串中可以使用換行符”\n”HC_Insert_Text文本的插入25Light3種類型的光照平行光源發(fā)散點(diǎn)光源聚光源光照的有效區(qū)域是包含它的窗口對(duì)父類幾何體是有效的使用HC_Set_Color()來調(diào)整光的強(qiáng)度使用HC_Move_XXX_Light()來調(diào)整光的位置當(dāng)關(guān)閉光的可見性時(shí)就不進(jìn)行光照計(jì)算在特定的段中不進(jìn)行相應(yīng)幾何光照的計(jì)算Light3種類型的光照26HC_Insert_Distant_Light插入平行光源(無窮遠(yuǎn)處)voidHC_Insert_Distant_Light(doubledi,
doubledj,
doubledk)di,dj,dk:光的矢量HC_Insert_Distant_Light(0,0,-1);HC_Insert_Distant_Light插入平行光源(27HC_Insert_Local_Light插入一個(gè)全方位的點(diǎn)光源voidHC_Insert_Local_Light(doubledi,
doubledj,
doubledk)di,dj,dk:光所在的位置坐標(biāo)HC_Insert_local_Light(0,0,0);HC_Insert_Local_Light插入一個(gè)全方位的點(diǎn)28HC_Insert_Spot_Light插入一個(gè)圓錐形光源voidHC_Insert_Spot_Light(constHC_POINT*position,
constHC_POINT*target,
constchar*list)position:光的位置坐標(biāo)target:光的目標(biāo)坐標(biāo)list:設(shè)置字符串HPointposition,target;position.Set(0.0f,0.0f,0.0f);target.Set(1.0f,0.0f,0.0f);HC_Insert_Spot_Light(position,target,”illuminationcone=30”);HC_Insert_Spot_Light插入一個(gè)圓錐形光源29練習(xí)5:創(chuàng)建一個(gè)mesh和一個(gè)shell在練習(xí)4的工程中加入一個(gè)顏色條和一個(gè)塊加入一個(gè)命令,菜單-[Test]-[ColorBar]加入一個(gè)命令,菜單-[Test]-[Bolck]在view類中實(shí)現(xiàn)顏色條在document類中加入一個(gè)立方體所需要的幾何使用網(wǎng)格繪制顏色條在條的右邊繪制字符串使用殼繪制立方體插入一個(gè)平行的光源練習(xí)5:創(chuàng)建一個(gè)mesh和一個(gè)shell在練習(xí)4的工程中加入30屬性設(shè)置顏色的方法HC_Set_Color_By_ValueHC_Set_Color_By_IndexHC_Set_Color_By_FindexSub-options文本練習(xí)6:屬性相機(jī)網(wǎng)格和殼屬性練習(xí)7:屬性屬性設(shè)置顏色的方法31設(shè)置顏色的方法名稱HC_Set_Color使用字符串來設(shè)置顏色數(shù)值HC_Set_Color_By_Value使用數(shù)值來設(shè)置顏色索引HC_Set_Color_By_Index使用索引來設(shè)置顏色F索引HC_Set_Color_By_Findex使用細(xì)節(jié)索引來設(shè)置顏色設(shè)置顏色的方法名稱32HC_Set_Color_By_Value使用數(shù)值來設(shè)置顏色
voidHC_Set_Color_By_Value(constchar*types,
constchar*colorspace,
doublea,
doubleb,
doublec)支持HLS,HSV,HIC,RGBz顏色模型red_col=(float)10.0f/255.0f;green_col=(float)20.0f/255.0f;blue_col=(float)30.0f/255.0f;HC_Set_Color_By_Value(“everything”,”RGB”,red_col,green_col,blue_col);HC_Set_Color_By_Value使用數(shù)值來設(shè)置顏色33HC_Set_Color_By_Index通過索引來設(shè)置顏色
voidHC_Set_Color_By_Index(constchar*types,intindex)使用HC_Set_Color_Map()來定義索引HC_Set_Color_Map(“pink,yellow,pinegreen,peach,blue,orange,cyan”);HC_Set_Color_By_Index(“markers”,1);HC_Set_Color_By_Index通過索引來設(shè)置顏色34HC_Set_Color_By_Findex使用細(xì)節(jié)索引來設(shè)置顏色
voidHC_Set_Color_By_Findex(constchar*types,doublefindex)使用顏色映射來改變顏色的F索引(FractionalIndex)用來得到合適的Shell和Mesh顏色HC_Set_Color_By_Findex使用細(xì)節(jié)索引來設(shè)35使用示例:HC_Set_Color_By_Findexdouble*dColorValue=newdouble[3];dColorValue[0]=0;dColorValue[1]=0.5;dColorValue[2]=1;inti;HC_Open_Geometry(key);for(i=0;i<3;i++){ HC_Open_Vertex(i); HC_Set_Color_By_Findex(“faces”,dColorValue[i]); HC_Close_Vertex();}HC_Close_Geometry();delete[]dColorValue;使用示例:HC_Set_Color_By_Findexdou36HC_Set_Color_Map_By_Value設(shè)置顏色與顏色數(shù)目之間的關(guān)系
voidHC_Set_Color_Map_By_Value(constchar*color_space,
intcount,
constHC_POINT*values)color_space:顏色模型設(shè)置count:數(shù)目設(shè)置values:顏色值HPointposColor[3];posColor[0].Set(0.0f,0.0f,1.0f); //BlueposColor[1].Set(0.0f,1.0f,0.0f); //GreenposColor[2].Set(1.0f,0.0f,0.0f); //RedHC_Open_Segment(“colorfield”);HC_Set_Color_Map_By_Value(“RGB”,3,posColor);HC_Close_Segment();HC_Set_Color_Map_By_Value設(shè)置顏色與37子選項(xiàng)使用示例:顏色子選項(xiàng)HC_Set_Color(faces=(diffuse=value,
specular=value,
transmission=value,
environment=[texturename],
mirror=value)
)描述表面對(duì)光照的反射率和投射率漫反射(diffuse)可以看作是曲面的常規(guī)顏色例如:red或者(R=1,G=0,B=0)鏡面反射(specular)指的是鏡面反射光的顏色光澤(gloss)用來反映材料的光潔度透射(transmission)用來定義透明度子選項(xiàng)使用示例:顏色子選項(xiàng)38子選項(xiàng)使用示例:可見性子選項(xiàng)HC_Set_Visibility(“edges=(everything=off,
perimeters=on,
interiorsilhouettes=on),
faces=on” )HC_Set_Visibility(“l(fā)ights=(edges=off,
faces=on )”)可嵌套子選項(xiàng)使用示例:可見性子選項(xiàng)可嵌套39HC_Set_Text_Font為文字選擇字符類型來使用
voidHC_Set_Text_Font(constchar*list)list:提供的字符串或者字符串變量包含一個(gè)所需設(shè)置的列表主要的設(shè)置選項(xiàng)size(pts,pixels,wru,oru)transformations(off,on,characterpossitiononly)name=(variants:arial.ttf,arial-GDI-VECTOR,arial-GDI-RASTER,roman)textgreeking[no]greekinglimit=(ffforu/wru/pts)
這個(gè)選項(xiàng)設(shè)置了一個(gè)文本尺寸閥值得最小值,當(dāng)文本尺寸比該閥值還小時(shí)用一個(gè)舉行符號(hào)來代替HC_Set_Text_Font為文字選擇字符類型來使用
v40HC_Set_Text_Alignment根據(jù)參考點(diǎn)的位置來確定文本的對(duì)齊方式
voidHC_Set_Text_Alignment(constchar*locater)locator:從∧,∨,*,<或>中選擇一個(gè)或兩個(gè)字符HC_Set_Text_Alignment根據(jù)參考點(diǎn)的位置來41HC_Set_Text_Spacing可以調(diào)整字符串中的字符間距
voidHC_Set_Text_Spacing(doublespacing)spacing:比例因子HC_Set_Text_Spacing可以調(diào)整字符串中的字符42練習(xí)6:增加顯示屬性為切平面增加顯示屬性框架設(shè)置顏色為藍(lán)色設(shè)置線寬為5設(shè)置線型為虛線設(shè)置切平面打開平面設(shè)置光的顏色為綠色設(shè)置一半的透明度設(shè)置邊不可見設(shè)置切平面關(guān)閉箭頭設(shè)置顏色微桔紅色設(shè)置邊不可見將HOOPS映射為ACIS,可從HOOPS類中派生練習(xí)6:增加顯示屬性為切平面增加顯示屬性將HOOPS映射為A43相機(jī)通過相機(jī)將可見的場景映射到了輸出設(shè)備上它與每一個(gè)驅(qū)動(dòng)實(shí)例相對(duì)應(yīng)相機(jī)由5各參數(shù)來定義位置目標(biāo)范圍向上矢量投射類型兩種方法來定義相機(jī)HC_Set_Camera可以獨(dú)立設(shè)置每一個(gè)參數(shù)HC_Set_Camera_By_Volume照相機(jī)的Z軸是假設(shè)的相機(jī)通過相機(jī)將可見的場景映射到了輸出設(shè)備上44相機(jī)操作相機(jī)的函數(shù)HC_Oribit_Camera(theta,phi)改變相機(jī)空間位置可以改變上矢量HC_Pan_camera(theta,phi)改變目標(biāo)位置可以改變向上矢量HC_Dolly_Camera(right,up,in)同時(shí)移動(dòng)相機(jī)position和targetHC_Roll_Camera()調(diào)整向上矢量HC_Zoom_Camera()調(diào)整照相機(jī)的區(qū)域相機(jī)操作相機(jī)的函數(shù)45HC_Set_Camera可以完全定義視圖相機(jī)的位置,方位和視圖區(qū)域
voidHC_Set_Camera(constHC_POINT*position,
constHC_POINT*target,
constHC_POINT*up,
doublewidth,
doubleheigh,
constchar*projection)position:相機(jī)的坐標(biāo)target:相機(jī)的坐標(biāo)up:向上矢量width:寬度hight:高度projection:投影方式HC_Set_Camera可以完全定義視圖相機(jī)的位置,方位和46使用示例:HC_Set_CameraHPointpos,tar,up;pos.Set(0.0f,0.0f,0.0f);tar.Set(0.0f,0.0f,1.0f);up.Set(0.0f,1.0f,0.0f);floatwidth=1.0f;floatheitht=1.0f;HC_Open_Segment(“l(fā)egendbar”);HC_Set_Camera(&pos,&tar,&up,width,height,”orthographic”);HC_Close_Segment();使用示例:HC_Set_CameraHPointpos,t47Shell和Mesh的屬性可以打開幾何并設(shè)置屬性FaceEdgeMarker可以設(shè)置、顯示和取消設(shè)置用戶可以改變的主要屬性顏色法矢樣式可見性線寬屬性區(qū)分原則管理相同段中的lines,markers和faces,即使屬性是不同的與性能有一定的關(guān)系Shell和Mesh的屬性可以打開幾何并設(shè)置屬性48使用示例:Shell和Mesh的屬性HC_KEYshellKey=HC_KInsert_Shell(…);HC_Open_Geometry(shellKey); HC_Open_Face(2); HC_Set_Color(“faces=red”); HC_Close_Face();HC_Close_Geometry();使用示例:Shell和Mesh的屬性HC_KEYshell49練習(xí)7:顏色條屬性為練習(xí)5中的模型設(shè)置3個(gè)色差顏色條將模型插入到段“l(fā)egendbar”中在段”legendbar”中加入一個(gè)相機(jī)從0到2為網(wǎng)格的每個(gè)標(biāo)記設(shè)置數(shù)值HC_Set_Color_By_Findex設(shè)置斷”Colorfield”的映射HC_Set_Color_Map_By_Value模型在段”colorfield”中插入模型設(shè)置塊的底面為0,塊的頂面為2HC_Open_GeometryHC_Open_VertexHC_set_Color_By_FIndex練習(xí)7:顏色條屬性為練習(xí)5中的模型設(shè)置3個(gè)色差50渲染屬性渲染HC_Set_Rendering_Options隱藏面消除算法(hsra)hsra選項(xiàng)使用的示例:hsra選項(xiàng)練習(xí)8:渲染屬性渲染屬性渲染51渲染當(dāng)顯示場景時(shí)選擇一個(gè)隱藏面消除算法(hsra)對(duì)每一個(gè)驅(qū)動(dòng)實(shí)例進(jìn)行設(shè)置可以改變實(shí)例需要對(duì)每個(gè)驅(qū)動(dòng)進(jìn)行合適的設(shè)置優(yōu)化的2D模型不執(zhí)行hsra的計(jì)算HC_Set_Heuristics(“nohiddensurfaces”)在這種模型中所有場景的Z值都是0渲染當(dāng)顯示場景時(shí)選擇一個(gè)隱藏面消除算法(hsra)52HC_Set_Rendering_Options控制場景繪制的性能
voidHC_Set_Rendering_Options(constchar*list)大氣霧化屬性鎖定顏色/材料插補(bǔ)光照補(bǔ)償隱藏面消除算法量子化(抖動(dòng)算法)幀緩沖選項(xiàng)隱藏線選項(xiàng)技術(shù)設(shè)置網(wǎng)格化選項(xiàng)HC_Set_Rendering_Options控制場景繪制53隱藏面消除算法(hsra)有如下可行的隱藏面消除算法Painters:細(xì)分相交多邊形,從后向前渲染Z-sort:和Painters類似,只是它不檢查多邊形相交SoftwareZ-buffer:軟件效仿Z-buffer算法HardwareZ-buffer:使用專門的硬件幀緩沖區(qū)Hiddenline:用一系列隱藏線和可見線來渲染場景對(duì)于透明幾何可以設(shè)置不同的hsra渲染到屏幕之前的緩沖可以實(shí)現(xiàn)平滑動(dòng)畫幀緩沖區(qū)和雙緩沖隱藏面消除算法(hsra)有如下可行的隱藏面消除算法54使用示例:hsra選項(xiàng)2D顯示驅(qū)動(dòng)器(X11/WindowsGDI)3D顯示驅(qū)動(dòng)器(OpenGL/XGL/Starbase)硬拷貝驅(qū)動(dòng)器(Postscript/CGM/HPGL/Image)HC_Set_Rendering_Option(“hsra=painters,notechnology”);HC_Set_Rendering_Option(“hsra=softwarez-buffer,
notechnology”);HC_Set_Driver_Options(“doubebuffering”);HC_Set_Rendering_Option(“hsra=softwarez-buffer,
technology=softwareframebuffer”);HC_Set_Driver_Options(“nodoubebuffering”);使用示例:hsra選項(xiàng)2D顯示驅(qū)動(dòng)器(X11/Windows55練習(xí)8:渲染屬性在練習(xí)7中加入一下命令[Test]-[WireFrame][Test]-[HiddenLine][Test]-[Flatshading][Test]-[Phong][Test]-[Gouraud]練習(xí)8:渲染屬性在練習(xí)7中加入一下命令56坐標(biāo)系5種坐標(biāo)系坐標(biāo)系的任務(wù)(對(duì)象坐標(biāo)系)Objectspace(世界坐標(biāo)系)Worldspace(視點(diǎn)坐標(biāo)系)Viewpointspace(窗口坐標(biāo)系)Windowspace(象素坐標(biāo)系)PixelspaceHC_Compute_Coordinates練習(xí)9:在單擊點(diǎn)處創(chuàng)建標(biāo)記坐標(biāo)系5種坐標(biāo)系575種坐標(biāo)系HOOPS中使用的坐標(biāo)系(對(duì)象坐標(biāo)系)Objectspace(世界坐標(biāo)系)Worldspace(視點(diǎn)坐標(biāo)系)Viewpointspace(外部窗口坐標(biāo)系)OuterWindowspace(象素坐標(biāo)系)Pixelspace幾何體最終通過象素來顯示對(duì)象(object)>>世界(World)>>視點(diǎn)(ViewPoint)>>外窗口(OuterWindow)>>象素(Pixel)5種坐標(biāo)系HOOPS中使用的坐標(biāo)系58坐標(biāo)系的任務(wù)Object
World
Viewpoint
Outer
Window>Pixel
>>>GUIInputGASGASGAS坐標(biāo)系的任務(wù)Object
World
Viewpoint
O59對(duì)象空間段的局部坐標(biāo)系有一個(gè)變換矩陣每個(gè)函數(shù)都對(duì)對(duì)象空間起作用HC_Translate_ObjectHC_Rotate_ObjectHC_Scale_Object有限笛卡兒坐標(biāo)空間全局坐標(biāo)是通過與父段的連接確定下來的當(dāng)應(yīng)用了所有的變換矩陣,它就成為了全局坐標(biāo)對(duì)象空間段的局部坐標(biāo)系60世界空間顯示出在每個(gè)段中幾何體的最終位置全局坐標(biāo)系統(tǒng)幾何體所在的這個(gè)空間被應(yīng)用了所有的幾何變換用戶場景的相機(jī)可以看到的空間相機(jī)空間=世界空間GASGASGASGAS世界空間顯示出在每個(gè)段中幾何體的最終位置GASGASGASG61視點(diǎn)空間與當(dāng)前視圖平面正交Z軸的方向與照相機(jī)面的方向一致Y軸的方向與向上矢量的方向一致原點(diǎn)落在相機(jī)的位置可以在當(dāng)前視圖平面下創(chuàng)建幾何體YZ視點(diǎn)空間與當(dāng)前視圖平面正交YZ62窗口空間窗口空間的定義是:x方向從-1到1,y方向從-1到1Z方向一般為0每個(gè)窗口都有這個(gè)空間每個(gè)相機(jī)將視圖區(qū)域投影到所在窗口的窗口空間-11-11窗口空間窗口空間的定義是:x方向從-1到1,y方向從-1到163象素空間顯示設(shè)備上的象素坐標(biāo)系用于返回來自GUI的事件0123456……象素空間顯示設(shè)備上的象素坐標(biāo)系0123456……64HC_Compute_Coordinates從一個(gè)坐標(biāo)系到另一個(gè)坐標(biāo)系間的轉(zhuǎn)換
HC_BOOLEANCompute_Coordinates(constchar*segment,
constchar*in_system,
constHC_POINT*in_position,
constchar*out_system,
HC_POINT*out_Position)segment:有窗口和相機(jī)對(duì)象的段in_system:輸入坐標(biāo)系in_position:輸出坐標(biāo)out_system:輸出坐標(biāo)系out_position:輸出坐標(biāo)HC_Compute_Coordinates從一個(gè)坐標(biāo)系到另65相應(yīng)的坐標(biāo)系外部窗口坐標(biāo)系(outerwindow)在最頂層段的窗口空間局部窗口坐標(biāo)系(localwindow)局部窗口空間局部象素坐標(biāo)系(localpixels)在局部窗口下的屏幕象素值外部象素坐標(biāo)系(outerpixels)在外部窗口下的屏幕象素值視點(diǎn)坐標(biāo)系(viewpoint)基于相機(jī)的坐標(biāo)系世界坐標(biāo)系(world)Z值在相機(jī)“target”平面上的投影Z對(duì)象坐標(biāo)系(object)對(duì)象空間相應(yīng)的坐標(biāo)系外部窗口坐標(biāo)系(outerwindow)66HC_Compute_Coordinates從GUI到真實(shí)場景坐標(biāo)值的改變從象素坐標(biāo)到世界坐標(biāo)建立視圖平面上的幾何體從視點(diǎn)坐標(biāo)到世界坐標(biāo)從世界坐標(biāo)到視點(diǎn)坐標(biāo)HC_Compute_Coordinates從GUI到真實(shí)場67HEventInfo封裝了鍵盤和鼠標(biāo)的操作要使用HBaseOperator中的一個(gè)參數(shù)可以得到不同坐標(biāo)系統(tǒng)下的數(shù)值可以得到有關(guān)鼠標(biāo)狀態(tài)的信息Ctrl、Shift等HEventInfo封裝了鍵盤和鼠標(biāo)的操作68練習(xí)9:通過鼠標(biāo)的點(diǎn)取來生成標(biāo)記增加一個(gè)通過鼠標(biāo)的左擊操作來生成標(biāo)記得函數(shù)增加一個(gè)命令,菜單[Test]-[Point]建立一個(gè)新的類,由HBaseOperator派生得到類名:COpTestMarker類的類型:Generic父類:HBaseOperator對(duì)view類的事件處理設(shè)置一個(gè)操作執(zhí)行函數(shù)OnLButtonDown來生成標(biāo)記,它是新類的一個(gè)函數(shù)得到窗口坐標(biāo)坐標(biāo)變換插入標(biāo)記幾何練習(xí)9:通過鼠標(biāo)的點(diǎn)取來生成標(biāo)記增加一個(gè)通過鼠標(biāo)的左擊操作來69練習(xí)9:類的設(shè)計(jì)包含的類HBaseViewHBaseOperator構(gòu)造函數(shù)的參數(shù)HBaseView*viewintDoRepeat=0intDoCapture=1成員函數(shù)virtualvoidGetName(char*name);virtualintOnLButtonDown(HEventInfo&event);成員變量HBaseView*m_pHBaseView;練習(xí)9:類的設(shè)計(jì)包含的類70HOOPS幾何圖元的編輯幾何的ID鍵值幾何的刪除幾何信息的收集和編輯使用的示例:幾何信息的獲取和編輯練習(xí)10:編輯幾何圖元HOOPS幾何圖元的編輯幾何的ID鍵值71幾何的ID鍵值可以得到一個(gè)長整型作為幾何地ID鍵值識(shí)別指定幾何地唯一方法可以設(shè)置結(jié)婚的ID鍵值與段是相同的幾何與應(yīng)用程序數(shù)據(jù)的連接鍵值用于選擇和搜索幾何的ID鍵值可以得到一個(gè)長整型作為幾何地ID鍵值72幾何的刪除刪除特定的幾何
voidHC_Delete_By_Key(HC_KEYkey)刪除指定段中所有的幾何
voidHC_Flush_Geometry(constchar*segment)在調(diào)用Update_Display之前對(duì)象沒有被刪除需要對(duì)場景進(jìn)行重繪幾何的刪除刪除特定的幾何
voidHC_Delete_By73幾何信息的獲取和編輯得到所需幾何的數(shù)目HC_Show_XXX_Count()在信息獲取之前可以設(shè)定一個(gè)合適的大小得到所選的幾何數(shù)據(jù)
HC_Show_XXX()幾何的編輯
HC_Edit_XXX()幾何信息的獲取和編輯得到所需幾何的數(shù)目74HC_Show_XXX_Count()得到擁有幾何地隊(duì)列的大小
voidHC_Show_XXX_Count(int*count)用戶可以使用大小來分配內(nèi)存使用相應(yīng)的Show函數(shù)來獲取數(shù)據(jù)HC_Show_XXX_Count()得到擁有幾何地隊(duì)列的大75HC_Show_XXX得到幾何的信息
voidHC_Show_XXX(XXX)HC_Show_XXX得到幾何的信息
voidHC_Sho76使用示例:幾何信息獲取和編輯多義線的編輯Voidadd_line1_to_line2(HC_KEYline1,HC_KEYline2,offset){ intcount; HC_Show_Polyline_Count(line2,&count); HPoint*polyline=newHPoint[count]; HC_Show_Polyline(line2,polyline); HC_Edit_Polyline(line1,offset,0,count,polyline); delete[]polyline;}使用示例:幾何信息獲取和編輯多義線的編輯77HC_Compute_Optimized_Shell對(duì)Shell進(jìn)行優(yōu)化
voidCompute_Optimized_Shell(
intpcount
constHC_POINT*points,
constHC_POINT*normals,
intflist_length,
constint*face_list,
constchar*options,
int*new_pcount,
HC_POINT*new_point,
int*new_flist_length,
int*new_face_list,
int*point_mapping_list,
int*face_mapping_list)減少冗余頂點(diǎn)確保產(chǎn)生長的三角帶HC_Compute_Optimized_Shell對(duì)She78HC_KCompute_Boolean_Shell執(zhí)行布爾操作
HC_KEYHC_KCompute_Boolean_Shell(
inttargerpcount,
constHC_POINT*targetpoints,
constHC_POINT*targernormals,
inttargerflist_length,
constint*targetface_list,
inttoolpcount,
constHC_POINT*toolpoints,
constHC_POINT*toolnormals,
inttoolflist_length,
constint*toolface_list,
constchar*options)ptargetcount,ptoolcount:目標(biāo)幾何和作用幾何的頂點(diǎn)數(shù)目targetpoints,toolpoints:目標(biāo)幾何和作用幾何地頂點(diǎn)坐標(biāo)targetnormals,toolnormals:目標(biāo)幾何和作用幾何的法線targerflist_length,toolflist_length:目標(biāo)幾何和作用幾何地面列表長度targetflist,toolflist:面列表選項(xiàng)布爾類型=union布爾類型=subtract布爾類型=intersectHC_KCompute_Boolean_Shell執(zhí)行布爾操79練習(xí)10:幾何布爾運(yùn)算給練習(xí)9的工程加一個(gè)布爾函數(shù)增加一個(gè)命令,菜單-[Test]-[Boolean]在document類中執(zhí)行建立一個(gè)函數(shù)TestSubtract參數(shù):目標(biāo)幾何的鍵值,作用幾何的鍵值返回值:利用作用幾何,從目標(biāo)幾何減去后殼的鍵值建立兩個(gè)殼并調(diào)用函數(shù)testSubtract幾何目標(biāo)幾何一個(gè)立方體,邊長是1中心是原點(diǎn)作用幾何一個(gè)立方體,邊長是1中心是(0.5,0.5,0.5)局限+基于三角網(wǎng)格練習(xí)10:幾何布爾運(yùn)算給練習(xí)9的工程加一個(gè)布爾函數(shù)局限+80·搜索搜索主搜索程序使用的示例:搜索·搜索搜索81搜索在HOOPS的數(shù)據(jù)庫中執(zhí)行搜索用戶可以使用通配符作為段的名稱搜索過程不是遞歸的使用標(biāo)記“…”來實(shí)現(xiàn)遞歸Include段中的數(shù)據(jù)不參加遍歷所有的搜索有相同的語法
HC_Begin_XXX_Search(segment,filter);
HC_Show_XXX_Count(total_count);
while(HC_Find_XXX(type,key))
type_count+=1;
HC_End_XXX_Search();搜索在HOOPS的數(shù)據(jù)庫中執(zhí)行搜索82主搜索程序回調(diào)名(Callback_Name)當(dāng)前數(shù)據(jù)庫中所有的回調(diào)名眼色名(Color_Name)當(dāng)前數(shù)據(jù)庫中所有的顏色名內(nèi)容(Contents)在數(shù)據(jù)庫中查詢幾何(可以使用修飾符)字體(Font)驅(qū)動(dòng)設(shè)備上所有可能的字體段(Segment)主搜索程序回調(diào)名(Callback_Name)83使用示例:搜索inttotal_count,polygon_count=0;HC_KEYkey;chartype[256];HC_Begin_Contents_Search(“.”,”polygon,shells,meshes”);HC_Show_Contents_Count(&total_count);while(HC_Find_Contents(type,&key)){ if(streq(type,“polygon”)) polygon_count+=1;}HC_End_Contents_Search();使用示例:搜索inttotal_count,polygon84演講完畢,謝謝觀看!演講完畢,謝謝觀看!85HOOPS基礎(chǔ)培訓(xùn)課程安排HOOPS簡介1HOOPS3dGS基礎(chǔ)1HOOPS3dGSAPI1HOOPSMVO1幾何、屬性、坐標(biāo)2幾何體的編輯2選擇與高亮3大模型顯示3動(dòng)畫3HOOPSStream3HOOPS/ACISBridge3HOOPS基礎(chǔ)培訓(xùn)課程安排HOOPS簡介1HOOPS3dG86HOOPS幾何相應(yīng)的計(jì)算函數(shù)HOOPS幾何圖元與建模內(nèi)核中的定義不同HOOPS幾何圖元的創(chuàng)建HC_Insert_PolylineHC_Insert_PolygonHC_Insert_Cutting_Plane練習(xí)4:HOOPS幾何圖元的創(chuàng)建HOOPS幾何相應(yīng)的計(jì)算函數(shù)87相應(yīng)的計(jì)算函數(shù)3D坐標(biāo)HPoint(floatX,floatY,floatZ=0.0f)voidSet(floatX,floatY,floatZ=0.0f)voidAdd(floatX,floatY,floatZ=0.0f)boolEqual(HPoint*p)const計(jì)算函數(shù)的主坐標(biāo)HC_Compute_Cross_Product //叉乘HC_Compute_Dot_Product //點(diǎn)乘HC_Compute_Normalized_Vector //單位化可以指定HOOPS坐標(biāo)左右手系HC_Set_HandednessZYX相應(yīng)的計(jì)算函數(shù)3D坐標(biāo)ZYX88HOOPS幾何圖元基本圖元markerslinespolylinesimagestextcylinderscirculararcsellipticalarcsNURBcurvesNURBsurfacesHOOPS幾何圖元基本圖元markerscirculara89HOOPS幾何圖元基本圖元gridsmeshesshellscylinderspolygonspolucylindercirclesellipsescircularchordscircularwedgeNURBcurvesBURBsurfacesHOOPS幾何圖元基本圖元gridscircles90HOOPS幾何圖元特定的圖元cuttingplaneslightsHOOPS幾何圖元特定的圖元91與建模內(nèi)核中的定義不同即使在術(shù)語方面是相同的,但是表達(dá)的意思是不同的在HOOPS中拓?fù)湟馕吨噙呅沃g的關(guān)系在HOOPS中使用表面幾何來表示3D形體在HOOPS中殼是指多表面幾何在HOOPS中邊/面是所屬表面幾何的一個(gè)元素HOOPSMarkerPolylineEdgeFaceSHELLACISVertexEdgeFaceShellBODY與建模內(nèi)核中的定義不同即使在術(shù)語方面是相同的,但是表達(dá)的意思92HOOPS幾何圖元的創(chuàng)建創(chuàng)建voidHC_Insert_XXX(XXX)在創(chuàng)建的時(shí)候得到ID鍵值HC_KEY_KInsert_XXX(XXX)保留模式并不依賴于序列數(shù)目HOOPS幾何圖元的創(chuàng)建創(chuàng)建93HC_Insert_Polyline插入PolylinevoidHC_Insert_Polyline(intcount,constHC_POINT*point)count:頂點(diǎn)數(shù)目HC_POINT:定點(diǎn)坐標(biāo)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_Polyline插入PolylineHP94HC_Insert_Polygon插入polygonvoidInsert_Polygon(intcount,constHC_POINT*point)count:頂點(diǎn)數(shù)目HC_POINT:頂點(diǎn)坐標(biāo)兩部分組成Edge:連接頂點(diǎn)的多義線Face:由邊所圍成的區(qū)域法線依賴于點(diǎn)的排列次序用于背平面剔除HC_Insert_Polygon插入polygon95使用示例: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_PolygonHPointp96HC_Insert_PolyCylinder插入多義圓柱體voidInsert_PolyCylinder(intp_count
constHC_POINT*pts,
intr_count,
constfloat*radii,
constchar*capping)p_count:中心點(diǎn)的數(shù)目pts:中心點(diǎn)的坐標(biāo)r_count:半徑的數(shù)目radii:半徑列表capping:字符串指定哪一部分要封閉適合建議一個(gè)用圓進(jìn)行掃描生成的實(shí)體管道圓錐箭頭HC_Insert_PolyCylinder插入多義圓柱體97使用示例: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_PolyCylinderHPo98HC_Insert_Cutting_Plane插入切平面
voidInsert_Cutting_Plane(doublea,
doubleb,
doublec,
doubled);a,b,c,d:平面方程ax+by+cz+d=0中的參數(shù)值,定義了一個(gè)平面所有幾何沿切平面法向端的部分被切除關(guān)閉切平面的可見性屬性將不執(zhí)行切除操作可以設(shè)置局部切平面—存在于一個(gè)段切平面幾何(R14)
HC_Insert_Cutting_Plane(0,0,1,-0.001f);HC_Insert_Cutting_Plane插入切平面
v99練習(xí)4:切平面對(duì)象的顯示在練習(xí)3的工程中增加一個(gè)切平面增加一個(gè)命令:菜單-[Test]-[CuttingPlane]在view類中實(shí)現(xiàn)所需的幾何為切平面的框架繪制一條多義線為切平面的面繪制多邊形繪制一個(gè)箭頭來控制切平面的方向插入切平面(-1,1,0)(1,1,0)(-1,-1,0)(1,-1,0)(0,0,0)練習(xí)4:切平面對(duì)象的顯示在練習(xí)3的工程中增加一個(gè)切平面(-1100HOOPS幾何圖元(續(xù))Mesh和ShellHC_Insert_MeshHC_Insert_ShellTextHC_Insert_TextLightHC_Insert_Distant_LightHC_Insert_Local_LightHC_Insert_Spot_Light練習(xí)5:插入Mesh和ShellHOOPS幾何圖元(續(xù))Mesh和Shell101Mesh和ShellMesh和Shell是高層次幾何可以設(shè)置一些特殊的渲染效果Phong和gouraud性能優(yōu)化分解成三角片并連接它們,然后建立合適的三角帶建立三角帶是在后處理(在插入以后的第一次更形)中進(jìn)行的共用頂點(diǎn)以減少內(nèi)存長的三角帶=更好的性能三角帶表示v2v1v3v4v5v0最終結(jié)果v2v1v3v4v5v0Mesh和ShellMesh和Shell是高層次幾何三角帶表102Mesh和Shell擁有邊(edge)和面(face)每一個(gè)頂點(diǎn)處都有一個(gè)標(biāo)記(marker)邊可以根據(jù)在表面上的位置來區(qū)分三角網(wǎng)格的外邊界邊三角網(wǎng)格的側(cè)面輪廓邊四邊形網(wǎng)格(去除對(duì)角線后)可以對(duì)面、邊和標(biāo)記設(shè)置不同的屬性Mesh和Shell擁有邊(edge)和面(face)103HC_Insert_Mesh插入網(wǎng)格voidHC_Insert_Mesh(introws,
intcolumns,
constHC_POINT*points)rows:行數(shù)columns:列數(shù)points:頂點(diǎn)坐標(biāo)很容易構(gòu)造三角帶因?yàn)橥負(fù)涫枪潭ǖ腍C_Insert_Mesh插入網(wǎng)格104使用示例:HC_Insert_MeshHPoint*posMesh=newHPoint[10];inti,j,k;k=0;for(i=0,i<=1;i++){ for(j=0;j<5;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;使用示例:HC_Insert_MeshHPoint*pos105Shell具有連接信息的多邊形組合可以退化點(diǎn)不能重合可以有孔邊的號(hào)碼可以使用負(fù)數(shù)。例如(-3,7,4,…)面表的排列是非常重要的渲染效果性能Shell具有連接信息的多邊形組合106HC_Insert_Shell插入ShellvoidHC_Insert_Shell(intpcount,
constHC_POINT*points,
intflist_length,
constint*face_list)pcount:頂點(diǎn)數(shù)目points:頂點(diǎn)坐標(biāo)flist_length:面列表的數(shù)目face_list:面列表face_list是構(gòu)成多邊形的頂點(diǎn)序號(hào)整數(shù)數(shù)組構(gòu)成多邊形的頂點(diǎn)個(gè)數(shù)在多邊形點(diǎn)序號(hào)之前三角形:3舉行:4在頂點(diǎn)個(gè)數(shù)之后列出了組成多邊形點(diǎn)序號(hào)HC_Insert_Shell插入Shell107使用示例: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);使用示例:HC_Insert_ShellHPointpoi108Text根據(jù)參考點(diǎn)位置和字符串來插入文本使用鍵值來操作文本HC_Edit_TextHC_Move_TextHC_Scroll_Text計(jì)算出所給文本輪廓的多面體描述HC_Compute_Text_Outline計(jì)算一個(gè)文本的場景大小HC_Compute_Text_ExtentText根據(jù)參考點(diǎn)位置和字符串來插入文本109HC_Insert_Text文本的插入voidHC_Insert_Text(doublex,
doubley,
doublez,
constchar*text)x,y,z:文本的坐標(biāo)string:文本字符串可以作為塊的形式來插入文本在文本字符串中可以使用換行符”\n”HC_Insert_Text文本的插入110Light3種類型的光照平行光源發(fā)散點(diǎn)光源聚光源光照的有效區(qū)域是包含它的窗口對(duì)父類幾何體是有效的使用HC_Set_Color()來調(diào)整光的強(qiáng)度使用HC_Move_XXX_Light()來調(diào)整光的位置當(dāng)關(guān)閉光的可見性時(shí)就不進(jìn)行光照計(jì)算在特定的段中不進(jìn)行相應(yīng)幾何光照的計(jì)算Light3種類型的光照111HC_Insert_Distant_Light插入平行光源(無窮遠(yuǎn)處)voidHC_Insert_Distant_Light(doubledi,
doubledj,
doubledk)di,dj,dk:光的矢量HC_Insert_Distant_Light(0,0,-1);HC_Insert_Distant_Light插入平行光源(112HC_Insert_Local_Light插入一個(gè)全方位的點(diǎn)光源voidHC_Insert_Local_Light(doubledi,
doubledj,
doubledk)di,dj,dk:光所在的位置坐標(biāo)HC_Insert_local_Light(0,0,0);HC_Insert_Local_Light插入一個(gè)全方位的點(diǎn)113HC_Insert_Spot_Light插入一個(gè)圓錐形光源voidHC_Insert_Spot_Light(constHC_POINT*position,
constHC_POINT*target,
constchar*list)position:光的位置坐標(biāo)target:光的目標(biāo)坐標(biāo)list:設(shè)置字符串HPointposition,target;position.Set(0.0f,0.0f,0.0f);target.Set(1.0f,0.0f,0.0f);HC_Insert_Spot_Light(position,target,”illuminationcone=30”);HC_Insert_Spot_Light插入一個(gè)圓錐形光源114練習(xí)5:創(chuàng)建一個(gè)mesh和一個(gè)shell在練習(xí)4的工程中加入一個(gè)顏色條和一個(gè)塊加入一個(gè)命令,菜單-[Test]-[ColorBar]加入一個(gè)命令,菜單-[Test]-[Bolck]在view類中實(shí)現(xiàn)顏色條在document類中加入一個(gè)立方體所需要的幾何使用網(wǎng)格繪制顏色條在條的右邊繪制字符串使用殼繪制立方體插入一個(gè)平行的光源練習(xí)5:創(chuàng)建一個(gè)mesh和一個(gè)shell在練習(xí)4的工程中加入115屬性設(shè)置顏色的方法HC_Set_Color_By_ValueHC_Set_Color_By_IndexHC_Set_Color_By_FindexSub-options文本練習(xí)6:屬性相機(jī)網(wǎng)格和殼屬性練習(xí)7:屬性屬性設(shè)置顏色的方法116設(shè)置顏色的方法名稱HC_Set_Color使用字符串來設(shè)置顏色數(shù)值HC_Set_Color_By_Value使用數(shù)值來設(shè)置顏色索引HC_Set_Color_By_Index使用索引來設(shè)置顏色F索引HC_Set_Color_By_Findex使用細(xì)節(jié)索引來設(shè)置顏色設(shè)置顏色的方法名稱117HC_Set_Color_By_Value使用數(shù)值來設(shè)置顏色
voidHC_Set_Color_By_Value(constchar*types,
constchar*colorspace,
doublea,
doubleb,
doublec)支持HLS,HSV,HIC,RGBz顏色模型red_col=(float)10.0f/255.0f;green_col=(float)20.0f/255.0f;blue_col=(float)30.0f/255.0f;HC_Set_Color_By_Value(“everything”,”RGB”,red_col,green_col,blue_col);HC_Set_Color_By_Value使用數(shù)值來設(shè)置顏色118HC_Set_Color_By_Index通過索引來設(shè)置顏色
voidHC_Set_Color_By_Index(constchar*types,intindex)使用HC_Set_Color_Map()來定義索引HC_Set_Color_Map(“pink,yellow,pinegreen,peach,blue,orange,cyan”);HC_Set_Color_By_Index(“markers”,1);HC_Set_Color_By_Index通過索引來設(shè)置顏色119HC_Set_Color_By_Findex使用細(xì)節(jié)索引來設(shè)置顏色
voidHC_Set_Color_By_Findex(constchar*types,doublefindex)使用顏色映射來改變顏色的F索引(FractionalIndex)用來得到合適的Shell和Mesh顏色HC_Set_Color_By_Findex使用細(xì)節(jié)索引來設(shè)120使用示例:HC_Set_Color_By_Findexdouble*dColorValue=newdouble[3];dColorValue[0]=0;dColorValue[1]=0.5;dColorValue[2]=1;inti;HC_Open_Geometry(key);for(i=0;i<3;i++){ HC_Open_Vertex(i); HC_Set_Color_By_Findex(“faces”,dColorValue[i]); HC_Close_Vertex();}HC_Close_Geometry();delete[]dColorValue;使用示例:HC_Set_Color_By_Findexdou121HC_Set_Color_Map_By_Value設(shè)置顏色與顏色數(shù)目之間的關(guān)系
voidHC_Set_Color_Map_By_Value(constchar*color_space,
intcount,
constHC_POINT*values)color_space:顏色模型設(shè)置count:數(shù)目設(shè)置values:顏色值HPointposColor[3];posColor[0].Set(0.0f,0.0f,1.0f); //BlueposColor[1].Set(0.0f,1.0f,0.0f); //GreenposColor[2].Set(1.0f,0.0f,0.0f); //RedHC_Open_Segment(“colorfield”);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版土地租賃與使用權(quán)置換協(xié)議3篇
- 校企攜手2025年度共建紡織工藝培訓(xùn)基地合同3篇
- 二零二五年度文化藝術(shù)展覽場地臨時(shí)使用協(xié)議書3篇
- 2025版建筑工程碎石料采購與安全管理合同3篇
- 2025年度個(gè)人教育培訓(xùn)機(jī)構(gòu)投資合同書(教育連鎖版)4篇
- 二零二五年深海油氣資源開發(fā)電焊工勞務(wù)分包協(xié)議3篇
- 囧媽觀后感15篇
- 個(gè)人出租車的對(duì)外承包協(xié)議書 3篇
- 二零二五版淋浴房環(huán)保材料生產(chǎn)與應(yīng)用合同3篇
- 二零二五年度城市道路施工監(jiān)理合同標(biāo)準(zhǔn)版4篇
- 定額〔2025〕1號(hào)文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價(jià)格水平調(diào)整的通知
- 2024年城市軌道交通設(shè)備維保及安全檢查合同3篇
- 【教案】+同一直線上二力的合成(教學(xué)設(shè)計(jì))(人教版2024)八年級(jí)物理下冊(cè)
- 湖北省武漢市青山區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末質(zhì)量檢測(cè)數(shù)學(xué)試卷(含解析)
- 單位往個(gè)人轉(zhuǎn)賬的合同(2篇)
- 科研倫理審查與違規(guī)處理考核試卷
- GB/T 44101-2024中國式摔跤課程學(xué)生運(yùn)動(dòng)能力測(cè)評(píng)規(guī)范
- 高危妊娠的評(píng)估和護(hù)理
- 2024年山東鐵投集團(tuán)招聘筆試參考題庫含答案解析
- 兒童10歲生日-百日宴-滿月酒生日會(huì)成長相冊(cè)展示(共二篇)
- 2023年高考全國甲卷數(shù)學(xué)(理)試卷【含答案】
評(píng)論
0/150
提交評(píng)論