基于VRML的虛擬建模培訓(xùn)課件_第1頁
基于VRML的虛擬建模培訓(xùn)課件_第2頁
基于VRML的虛擬建模培訓(xùn)課件_第3頁
基于VRML的虛擬建模培訓(xùn)課件_第4頁
基于VRML的虛擬建模培訓(xùn)課件_第5頁
已閱讀5頁,還剩66頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于VRML的虛擬建模

VRML場景創(chuàng)建VRML顏色、紋理與燈光模型VRML聲音與LOD加速VRML動畫與交互地形的LOD模型實現(xiàn)實習(xí)工具VRML編輯器VRMLPadVRML瀏覽ParallelGraphics公司的Cortona3DSMAXCortona瀏覽器界面:VRML場景創(chuàng)建VRML中幾何形體的基本構(gòu)成模塊是造型,造型由節(jié)點和其域及域值描述構(gòu)成VRML中幾何造型節(jié)點5類原始幾何造型節(jié)點(Box,Cone,Cylinder,Sphere)點、線、面集節(jié)點(PointSet,IndexedLineSet,IndexedFaceSet,Coordinate)海拔節(jié)點(ElevationGrid)擠出節(jié)點(Extrusion)文本造型節(jié)點(Text)VRML文件結(jié)構(gòu)

文本敘述(TextualDescription)文件,可用任何文本編輯器編寫VRML文件,保存成.wrl文件。#VRMLV2.0utf8

#Drawthecolumn

Shape{

appearanceDEFYellowAppearance{

materialMaterial{

diffuseColor1.01.00.0

}

}

geometryCylinder{

radius0.5

height4.0

}

}

#Drawthebase

Transform{

translation 0-30

children[

Shape{

appearanceUSEYellow

geometryBox{ size2.02.02.0

}

}

]

}節(jié)點

VRML文件最基本的單位,節(jié)點還包含子節(jié)點(ChildNode)和描述節(jié)點屬性的字段(Fields)。

Shape節(jié)點:用來形容對象的幾何形狀(Geometry節(jié)點,如球體、長方體和圓柱體)及外觀(Appearance節(jié)點,如表面的顏色、透明度和光滑度)的節(jié)點。

前例中的一個節(jié)點

geometryCylinder{radius0.5height4.0}

一個節(jié)點通常包含節(jié)點的名稱(如Cylinder),一對大括號{},以及字段和字段值(如radius0.5)。

字段和字段值描述節(jié)點的屬性。Shape造型節(jié)點——重要的基本節(jié)點之一定義一個VRML造型具有的幾何尺寸和外觀所有的VRML造型都使用shape節(jié)點創(chuàng)建

Shape節(jié)點:構(gòu)建虛擬對象的輪廓,即模型。包含兩個字段,Appearance(外觀)節(jié)點和Geometry(幾何)節(jié)點字段。Shape節(jié)點語法:Shape{

exposedFieldSFNodeappearanceNULL

exposedFieldSFNodegeometryNULL

}字段說明字段說明appearance該字段包含一個Appearance節(jié)點。geometry該字段包含一個Appearance節(jié)點。

節(jié)點值(SFNode):表明一個屬性節(jié)點,控制造型節(jié)點創(chuàng)建造型。幾何造型節(jié)點——GeometryGeometry域的域值用于設(shè)定一個幾何造型節(jié)點簡單幾何造型節(jié)點長方體BOX球體Sphere圓錐體Cone圓柱體Cylinder復(fù)雜幾何造型節(jié)點點集線集面集幾何箱型節(jié)點——BoxBox節(jié)點:構(gòu)建一個箱型幾何對象,是Shape節(jié)點的Geometry節(jié)點之一字段是size,控制箱型的尺寸,長、高和寬分別位于X軸、Y軸和Z軸。如果沒有設(shè)置箱型對象的位置,它的幾何中心默認(rèn)位置在原點(0,0,0),長、高、寬的默認(rèn)值為(2,2,2)。yxzSize[2]Size[2]Size[2]Box節(jié)點Box節(jié)點語法:Box{

fieldSFVec3fsize222#(0,∞)

}字段說明字段說明size該字段用于控制箱型體尺寸的大小,默認(rèn)值為(222)。

三維浮點矢量(SFVec3f和MFVec3f):值為3個浮點值,用于指定三維位置。#VRMLV2.0utf8

Shape{

appearanceAppearance{

materialMaterial{}

}

geometryBox{

size323

}

}幾何圓錐體節(jié)點——ConeCone(圓錐體)節(jié)點:圓錐體。Shape節(jié)點的Geometry節(jié)點之一。尺寸由bottomRadius(底部半徑)和height(高)兩個字段控制;還有兩個布爾值的字段分別為side和bottom,控制圓錐體四周和底部是否要創(chuàng)建。它的默認(rèn)位置,頂點在(0,height/2,0),底部圓心在(0,-height/2,0)。

布爾值(SFBool):開關(guān)值。值為TRUE或FALSE,常用于指定某一屬性的開關(guān)或關(guān)閉。bottomRadiusheight/2height+x+y+zConeNodeSyntaxCone{

fieldSFFloatbottomRadius1#(0,∞)

fieldSFFloatheight2#(0,∞)

fieldSFBoolsideTRUE

fieldSFBoolsideTRUE

}字段說明字段說明bottomRadius定義圓錐體的底部圓半徑大小,默認(rèn)值為1。height定義圓錐體的高,默認(rèn)值為2。side該字段是一個布爾值,用來決定圓錐體的四周是否創(chuàng)建。bottom該字段是一個布爾值,用來決定圓錐體的底部是否創(chuàng)建,默認(rèn)值為TRUE。

浮點值(SFFloat):浮點值。值為具有正負(fù)之分的實數(shù),用于指定某一確定的數(shù)值屬性。#VRMLV2.0utf8

Shape{

appearanceAppearance{

material Material{}

}

geometryCone{

bottomRadius2

height4

sideTRUE

bottomFALSE

}

}幾何圓柱體節(jié)點——CylinderCylinder(圓柱體)節(jié)點:構(gòu)建一個圓柱體。是Shape節(jié)點的Geometry節(jié)點之一??刂仆庑痛笮〉淖侄畏謩e是height(高)和radius(半徑);還有三個布爾值的字段分別是bottom、side和top,確定底部、四周和頂部是否創(chuàng)建。若沒有給定任何的起始位置,它的幾何中心位置在原點(0,0,0)。+x+y+zsidetoptottomradiusheight/2heightCyliderNodeSyntaxCylinder{

fieldSFBoolbottomTRUE

fieldSFFloatheight2#(0,∞)

fieldSFFloatradius1#(0,∞)

fieldSFBoolsideTRUE

fieldSFBooltopTRUE

}字段說明字段說明bottom該字段是一個布爾值,決定圓柱體的底部是否建立,默認(rèn)值為TRUE。height用于定義圓柱體的高度,默認(rèn)值為2。radius用于定義圓柱體的底部半徑,默認(rèn)值為1。side該字段是一個布爾值,決定圓柱體的四周是否創(chuàng)建。默認(rèn)值為TRUE。top該字段是一個布爾值,用于決定圓柱體的頂部是否創(chuàng)建,默認(rèn)值為TRUE。#VRMLV2.0utf8

Shape{

appearanceAppearance{

material Material{}

}

geometryCylinder{

radius1.5

height3

sideTRUE

bottomTRUE

topFALSE

}

}幾何球體節(jié)點——SphereSphere節(jié)點是一個最基本的Geometry節(jié)點。用于構(gòu)建球體,只有一個字段,控制半徑的radius字段,其默認(rèn)幾何中心位置在原點(0,0,0)。+x+y+zradiusSphereNodeSyntaxSphere{

fieldSFFloatradius1#(0,∞)

}字段說明字段說明radius用來定義球體的半徑,默認(rèn)值為1。#VRMLV2.0utf8

Shape{

appearanceAppearance{

material Material{}

}

geometrySphere {

radius1.6

}

}點集合節(jié)點——PointSet

一個VRML的點是利用坐標(biāo)x、y、z定義出位置。PointSet節(jié)點是將很多點集合起來。PointSet包含兩個字段,這兩個字段都是節(jié)點:一個是color字段,用Color節(jié)點來控制顏色;另一個是coord字段,用Coordinate節(jié)點來控制坐標(biāo)。字段說明字段說明color該字段包含一個Color節(jié)點,用來定義每一個點的顏色。coord該字段包含一個Coordinate節(jié)點,用來定義每一個點的坐標(biāo)。PointSetNodeSyntaxPointSet{

exposedFieldSFNodecolorNULL

exposedFieldSFNodecoordNULL

}字段說明字段說明point該字段用來定義一連串幾何對象的坐標(biāo)值。CoordinateNodeSyntaxCoorinate{

ExposedFieldMFVec3fpoint[]#(-∞,∞)

}#VRMLV2.0utf8

Shape{

geometryPointSet{

colorColor {

color[

1.00.00.0,#RED

0.01.00.0,#GREEN

0.00.01.0,#BLUE

0.00.00.0,#BLACK

1.01.01.0,#WHITE

1.01.00.0,#YELLOW

0.01.01.0,#GREENBLUE 1.00.01.0#PURPLE

]

}

coordCoordinate{

point[

1.01.01.0,

1.0-1.01.0,

-1.0-1.01.0,

-1.01.01.0,

1.01.0-1.0,

1.0-1.0-1.0,

-1.0-1.0-1.0,

-1.01.0-1.0

]

}

}}

指針線集合節(jié)點——IndexedLineSetVRML的線是由兩點連接所構(gòu)成的一條直線。IndexedLineSet節(jié)點就是將許多線集合在一起,并給定每條線一個指針(Index)。字段說明字段說明color該字段包含一個Color節(jié)點,用來定義每一個點的顏色。coord該字段包含一個Coordinate節(jié)點,用來定義每一個位置。colorIndex該字段用來定義一連串指針,每個指針對應(yīng)Color節(jié)點的每組顏色值。coordPerVertex該字段是布爾值,TRUE表示提供每一個頂點一個顏色,此為默認(rèn)值;FALSE表示提供每一組PolyLines一個顏色。coordIndex該字段用來定義一連串指針用于Coordinate節(jié)點,每個指針用來指出那些頂點相連和相連的順序。事件說明事件說明set_colorIndex該事件是一個eventIn事件,用來設(shè)置colorIndex字段的值。set_coordIndex該事件是一個eventIn事件,用來設(shè)置coordIndex字段的值。#VRMLV2.0utf8

Shape{

appearanceAppearance{

materialMaterial{emissiveColor1.01.01.0}

}

geometryIndexedLineSet {

coordCoordinate{

point[

0.01.00.0, #Index0

1.00.01.0, #Index1

1.00.0-1.0, #Index2

-1.00.0-1.0, #Index3

-1.00.01.0, #Index4

]

}

coordIndex[

#side

0,1,-1,

0,2,-1,

0,3,-1,

0,4,-1,

#bottom

1,2,3,4,1,-1

]

}

}上例中創(chuàng)建一個四角錐。坐標(biāo)指針坐標(biāo)(x,y,z)00,1,011,0,121,0,-13-1,0,-14-1,0,1由上表構(gòu)成的5組PolyLinesPolylines1,2,3,4,10,10,20,30,402143三維PolyLines四角錐地表網(wǎng)格節(jié)點——ElevationGrid用來描述地表特征的節(jié)點:高山、丘陵和平地的地表不規(guī)則變化將某一個要描述的地表區(qū)域分割成很多網(wǎng)格,定義網(wǎng)格的個數(shù),再定義網(wǎng)格的長和寬,最后定義網(wǎng)格的高度,可以描述出想要表達(dá)的地表形狀ElevationGrid節(jié)點適合于立體地形圖的構(gòu)建;zxDimension,i=0~4zDimension,i=0~3xy012345101501123423981419181716xSpacingzSpacingheight(18)ElevationGridNodeSyntaxElevationGrid{

eventInMFFloatset-height

exposedFieldSFNodecolorNULL

exposedFieldSFNodenormalNULL

exposedFieldSFNodetexCoordNULL

fieldMFFloatheight[]#(-,)

fieldSFBoolccwTRUE

fieldSFBoolcolorPerVertexTRUE

fieldSFFloatcreaseAngle0#[0,∞]

fieldSFBoolnormalPerVertexTRUE

fieldSFBoolsolidTRUE

fieldSFINT32xDimension0#[0,∞]

fieldSFFlostxSpacing1.0#[0,∞]

fieldSFINT32zDimension0#[0,∞]

fieldSFFlostzSpacing1.0#[0,∞]

}字段說明字段說明color該字段可以包含一個Color節(jié)點,以提供每個頂點或四邊形所需的顏色。normal該字段可以包含一個Normal節(jié)點,如果想確切地定義出ElevationGrid節(jié)點所構(gòu)建的虛擬對象的向量值,就可以用Normal節(jié)點自行定義;如果沒有使用Normal節(jié)點,瀏覽器則會自動地產(chǎn)生向量值。txtCord該字段可以包含一個TextCoordinate節(jié)點,以準(zhǔn)確地粘貼材質(zhì)圖(texture)到ElevationGrid節(jié)點所構(gòu)建的虛擬對象表面。height用于定義一連串的高度值,每個高度值都對應(yīng)到所定義的網(wǎng)格頂點上,依照列(row)順序。ccw該字段是布爾值。它是counterclockwise(逆時針)的縮寫。如果字段值為TRUE,就是逆時針建立邊界,也就是表面朝向+Y軸,此為默認(rèn)值;如果字段值為FALSE,就是順時針建立邊界,也就是表面朝向-Y軸。colorPerVertex該字段是布爾值。TRUE表示提供每個頂點一個顏色,此為默認(rèn)值;FALSE表示提供每一個四邊形一個顏色。字段說明字段說明creaseAngle該字段的意思是摺痕的角度,而這個角度的單位是弧度(radian)。默認(rèn)值為0.0,若creaseAngle使用較小的弧度,那么整個表面看起來就會比較平滑;若使用較大的角度,那么摺痕就會變得很清楚。normalPerVertex該字段是布爾值。TRUE表示對每一個頂點提供一個向量值,此為默認(rèn)值;FALSE則表示對每一個四邊形提供一個向量值。solid該字段是布爾值,TRUE表示只創(chuàng)建正面,不建立反面,這是默認(rèn)值;FALSE表示正反面都創(chuàng)建。當(dāng)ccw是TRUE,solid也是TRUE時,那么只創(chuàng)建面向+Y軸的一面;若ccw是FALSE,solid還是TRUE時,則只會創(chuàng)建-Y軸的一面。這樣可以節(jié)省時間。xDimension定義在x軸方向的頂點個數(shù),默認(rèn)值為0。xSpacing定義在x軸方向每個頂點間的距離,默認(rèn)值0.0。zDimension定義在z軸方向的頂點個數(shù),默認(rèn)值為0。zSpacing定義在z軸方向每個頂點間的距離,默認(rèn)值0.0。事件說明事件說明set_height該事件是一個eventIn事件。允許設(shè)置高度陣列的高度值。字段說明字段說明color定義一連串的RGB三原色值。用來描述一個對象表面或頂點的顏色。ColorNodeSyntaxColor{

exposedFieldMFVec3fvector[]#(-,∞)

}字段說明字段說明vector用來定義單位長度的正規(guī)向量值。NormalNodeSyntaxNormal{

exposedFieldMFVec3fvector[]#(-,∞)

}

#VRMLV2.0utf8

Shape{

appearanceAppearance{material Material{}}

geometryElevationGrid{

xDimension6(x方向創(chuàng)建6個頂點)

zDimension4(z方向創(chuàng)建4個頂點)

xSpacing2.0(間距為2)

zSpacing2.0(間距為2)

ccw TRUE

solidTRUE

height[

0,0.8,0.6,0.3,0.7,1.2, #j=0 0,1.1,0.9,0.88,0.65,0, #j=1 0,0.2,0.8,0.16,0.45,1.1, #j=2 0.1,0.6,0.4,0.9,1.0,0.8 #j=3

]

}

}

#VRMLV2.0utf8

Shape{

appearanceAppearance{material Material{}}

geometryElevationGrid{

xDimension6

zDimension4

xSpacing2.0

zSpacing2.0

ccw TRUE

solidTRUE

creaseAngle1.2

height[

0,0.8,0.6,0.3,0.7,1.2, #j=0 0,1.1,0.9,0.88,0.65,0, #j=1 0,0.2,0.8,0.16,0.45,1.1, #j=2 0.1,0.6,0.4,0.9,1.0,0.8 #j=3

]

}

}成形節(jié)點——Extrusion

Extrusion(成形)節(jié)點可以創(chuàng)造出特殊的形狀,而且變化的彈性很大,與前面介紹的基本Geometry節(jié)點不同??刂艵xtrusion節(jié)點外形的主要有兩個,分別是crossSection和spine。crossSection字段控制斷面形狀,它是一個二維輪廓,可以是正方形、圓形、半圓形和多邊形。xyxyxyxyspine字段是一個三維路徑,crossSection定義好的斷面,斷面的幾何中心會沿著這個路徑畫出來。有直線路徑、封閉路徑、曲線路徑和半圓路徑。xzyxzyxzyxzyExtrusionNodeSyntaxExtrusion{

eventInMFVec2fset_crossSection

eventInMFRotationset_orientation

eventInMFVec2fset_scale

eventInMFVec3fet_spine

fieldSFBoolbeginCapTRUE

fieldSFBoolccwTRUE

fieldSFBoolconvexTRUE

fieldSFFloatcreaseAngle

fieldMFVec2fcrossSection[11,1-1,

-1-11,111]#(-,∞)

fieldSFBoolendCapTRUE

fieldMFRotationorientation001#(-1,-1),

(-∞,∞)

fieldMFVec2fscale11#(-,∞)

fieldSFBoolsolidTRUE

fieldMFVec3fspine[000,010]

#(-∞,∞)

}字段說明字段說明beginCap該字段是布爾值。TRUE表示創(chuàng)建起始端,此為默認(rèn)值;FALSE則不創(chuàng)建。ccw該字段是布爾值。如果是為TRUE,就是逆時針地創(chuàng)建邊界,也就是表面朝向+Y軸,此為默認(rèn)值;如果是FALSE,則是順時針地創(chuàng)建邊界,即表面朝向-Y軸。convex該字段是布爾值,TRUE表示起始端和結(jié)束端斷面是凸的,此為默認(rèn)值;FALSE則表示為凹的。如果beginCap字段和endCap字段是FALSE,convex字段就不具意義。creaseAngle該字段的意思是摺痕的角度,而這個角度的單位是弧度(radian)。默認(rèn)值是0,整個表面看起來會比較平滑;若使用較大的角度,那么摺痕就會變得很清楚。crossSection該字段的功能是定義二維的斷面形狀。默認(rèn)值為[11,1–1,-1–1,11,11],是一個正方形。字段說明字段說明endcap該字段是布爾值。TRUE表示創(chuàng)建結(jié)束端,此為默認(rèn)值。FALSE則不創(chuàng)建。orientation該字段定義一連串的方位值,每個斷面的方位值都對應(yīng)一個路徑的位置值。若只有一個方位值,則所有的路徑位置都對應(yīng)它。默認(rèn)值為(000)。scale該字段定義一連串的縮放值,每一個斷面的縮放值都對應(yīng)一個路徑的位置值。若只有一個縮放值,則所有的路徑位置都對應(yīng)它。默認(rèn)值為(11)。solid該字段是布爾值。TRUE時,只會建立正面,反面不建立,此為默認(rèn)值;FALSE時,正反兩面都會創(chuàng)建。spine該字段是定義一條三維空間中的路徑,所有由crossSection節(jié)點定義的斷面,其幾何中心都依照這條路徑來變化。默認(rèn)值為[000,010]。事件說明事件說明set_crossSection該事件為eventIn事件,用來設(shè)置段面形狀。set_orientation該事件為eventIn事件,用來設(shè)置方位值。set_scale該事件為eventIn事件,用來設(shè)置縮放值。set_spine該事件為eventIn事件,用來設(shè)置路徑值。#VRMLV2.0utf8

Shape{

appearanceAppearance{

materialMaterial{}

}

geometryExtrusion{

creaseAngle 0.2

endCapFALSE

beginCapFALSE

solidFALSE

crossSection[

1.000.00,0.920.38,

0.71 0.71,0.380.92,

0.001.00,-0.380.92,

-0.710.71,-0.920.38

-1.00 0.00 ]spine[

1.004.000.00, 0.923.750.38,

0.713.500.71, 0.383.250.92,

0.003.001.00,-0.382.750.92,

-0.712.500.71,-0.922.250.38,

-1.002.000.00,-0.921.75-0.38,

-0.711.50-0.71,-0.381.25-0.92,

0.001.00-1.00,0.380.75-0.92,

0.710.50-0.71,0.920.25-0.38,

1.000.000.00,0.92-0.250.38,

0.71-0.500.71,0.38-0.750.92,

0.00-1.001.00,-0.38-1.250.92,

-0.71-1.500.71,-0.92-1.750.38,

-1.00-2.000.00,-0.92-2.25-0.38,

-0.71-2.50-0.71,-0.38-2.75-0.92,

0.00-3.00-1.00,0.38-3.25-0.92,

0.71-3.50-0.71,0.92-3.75-0.38,

1.00-4.000.00

]

}

}

上圖中,斷面為半圓,路徑為曲線路徑。起始端和結(jié)束端是不創(chuàng)建的(beginCap和endCap都是FALSE);solid為FALSE,所以兩面都會創(chuàng)建。文字節(jié)點——TextText用于在虛擬現(xiàn)實中創(chuàng)建文字,是Shape節(jié)點中的Geometry節(jié)點之一。而文字是創(chuàng)建在x-y平面上。Text節(jié)點有4個字段,分別是string、FontStyle、length和maxExtent字段說明字段說明String這個字段可以包含一行或一行以上的字符串,每行字符串要用雙引號將字符串包起來(“string”)

。而這些字符串就是在虛擬現(xiàn)實中建立的字符串。length這個字段定義在string字段中,控制每一行字符串的長度。也就是在length字段中的第一個長度控制string字段中的第一行字符串。如果length已經(jīng)定義好,字符串太短,那么字符串建立時將會拉長;字符串太長,那么字符串建立時將會被壓縮。maxExtent這個字段是用來定義最大的可能長度。如果各行的字符串長度大于maxExtent,當(dāng)字符串建立時,它的寬度和間距將被壓縮;如果長度小于maxExtent,將沒有任何影響。FontStyle這是一個控制字體、字號、間距等的節(jié)點。TextNodeSyntaxText{

exposedFieldMFStringstring[]

exposedFieldSFNodeFontStyleNULL

exposedFieldMFFloatlength[]#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論