版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
三
基于VRML的虚拟建模
VRML场景创建VRML颜色、纹理与灯光模型VRML声音与LOD加速VRML动画与交互地形的LOD模型实现实习工具VRML编辑器VRMLPadVRML浏览ParallelGraphics公司的Cortona3DSMAXCortona浏览器界面:VRML场景创建VRML中几何形体的基本构成模块是造型,造型由节点和其域及域值描述构成VRML中几何造型节点5类原始几何造型节点(Box,Cone,Cylinder,Sphere)点、线、面集节点(PointSet,IndexedLineSet,IndexedFaceSet,Coordinate)海拔节点(ElevationGrid)挤出节点(Extrusion)文本造型节点(Text)VRML文件结构
文本叙述(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
}
}
]
}节点
VRML文件最基本的单位,节点还包含子节点(ChildNode)和描述节点属性的字段(Fields)。
Shape节点:用来形容对象的几何形状(Geometry节点,如球体、长方体和圆柱体)及外观(Appearance节点,如表面的颜色、透明度和光滑度)的节点。
前例中的一个节点
geometryCylinder{radius0.5height4.0}
一个节点通常包含节点的名称(如Cylinder),一对大括号{},以及字段和字段值(如radius0.5)。
字段和字段值描述节点的属性。Shape造型节点——重要的基本节点之一定义一个VRML造型具有的几何尺寸和外观所有的VRML造型都使用shape节点创建
Shape节点:构建虚拟对象的轮廓,即模型。包含两个字段,Appearance(外观)节点和Geometry(几何)节点字段。Shape节点语法:Shape{
exposedFieldSFNodeappearanceNULL
exposedFieldSFNodegeometryNULL
}字段说明字段说明appearance该字段包含一个Appearance节点。geometry该字段包含一个Appearance节点。
节点值(SFNode):表明一个属性节点,控制造型节点创建造型。几何造型节点——GeometryGeometry域的域值用于设定一个几何造型节点简单几何造型节点长方体BOX球体Sphere圆锥体Cone圆柱体Cylinder复杂几何造型节点点集线集面集几何箱型节点——BoxBox节点:构建一个箱型几何对象,是Shape节点的Geometry节点之一字段是size,控制箱型的尺寸,长、高和宽分别位于X轴、Y轴和Z轴。如果没有设置箱型对象的位置,它的几何中心默认位置在原点(0,0,0),长、高、宽的默认值为(2,2,2)。yxzSize[2]Size[2]Size[2]Box节点Box节点语法:Box{
fieldSFVec3fsize222#(0,∞)
}字段说明字段说明size该字段用于控制箱型体尺寸的大小,默认值为(222)。
三维浮点矢量(SFVec3f和MFVec3f):值为3个浮点值,用于指定三维位置。#VRMLV2.0utf8
Shape{
appearanceAppearance{
materialMaterial{}
}
geometryBox{
size323
}
}几何圆锥体节点——ConeCone(圆锥体)节点:圆锥体。Shape节点的Geometry节点之一。尺寸由bottomRadius(底部半径)和height(高)两个字段控制;还有两个布尔值的字段分别为side和bottom,控制圆锥体四周和底部是否要创建。它的默认位置,顶点在(0,height/2,0),底部圆心在(0,-height/2,0)。
布尔值(SFBool):开关值。值为TRUE或FALSE,常用于指定某一属性的开关或关闭。bottomRadiusheight/2height+x+y+zConeNodeSyntaxCone{
fieldSFFloatbottomRadius1#(0,∞)
fieldSFFloatheight2#(0,∞)
fieldSFBoolsideTRUE
fieldSFBoolsideTRUE
}字段说明字段说明bottomRadius定义圆锥体的底部圆半径大小,默认值为1。height定义圆锥体的高,默认值为2。side该字段是一个布尔值,用来决定圆锥体的四周是否创建。bottom该字段是一个布尔值,用来决定圆锥体的底部是否创建,默认值为TRUE。
浮点值(SFFloat):浮点值。值为具有正负之分的实数,用于指定某一确定的数值属性。#VRMLV2.0utf8
Shape{
appearanceAppearance{
material Material{}
}
geometryCone{
bottomRadius2
height4
sideTRUE
bottomFALSE
}
}几何圆柱体节点——CylinderCylinder(圆柱体)节点:构建一个圆柱体。是Shape节点的Geometry节点之一。控制外型大小的字段分别是height(高)和radius(半径);还有三个布尔值的字段分别是bottom、side和top,确定底部、四周和顶部是否创建。若没有给定任何的起始位置,它的几何中心位置在原点(0,0,0)。+x+y+zsidetoptottomradiusheight/2heightCyliderNodeSyntaxCylinder{
fieldSFBoolbottomTRUE
fieldSFFloatheight2#(0,∞)
fieldSFFloatradius1#(0,∞)
fieldSFBoolsideTRUE
fieldSFBooltopTRUE
}字段说明字段说明bottom该字段是一个布尔值,决定圆柱体的底部是否建立,默认值为TRUE。height用于定义圆柱体的高度,默认值为2。radius用于定义圆柱体的底部半径,默认值为1。side该字段是一个布尔值,决定圆柱体的四周是否创建。默认值为TRUE。top该字段是一个布尔值,用于决定圆柱体的顶部是否创建,默认值为TRUE。#VRMLV2.0utf8
Shape{
appearanceAppearance{
material Material{}
}
geometryCylinder{
radius1.5
height3
sideTRUE
bottomTRUE
topFALSE
}
}几何球体节点——SphereSphere节点是一个最基本的Geometry节点。用于构建球体,只有一个字段,控制半径的radius字段,其默认几何中心位置在原点(0,0,0)。+x+y+zradiusSphereNodeSyntaxSphere{
fieldSFFloatradius1#(0,∞)
}字段说明字段说明radius用来定义球体的半径,默认值为1。#VRMLV2.0utf8
Shape{
appearanceAppearance{
material Material{}
}
geometrySphere {
radius1.6
}
}点集合节点——PointSet
一个VRML的点是利用坐标x、y、z定义出位置。PointSet节点是将很多点集合起来。PointSet包含两个字段,这两个字段都是节点:一个是color字段,用Color节点来控制颜色;另一个是coord字段,用Coordinate节点来控制坐标。字段说明字段说明color该字段包含一个Color节点,用来定义每一个点的颜色。coord该字段包含一个Coordinate节点,用来定义每一个点的坐标。PointSetNodeSyntaxPointSet{
exposedFieldSFNodecolorNULL
exposedFieldSFNodecoordNULL
}字段说明字段说明point该字段用来定义一连串几何对象的坐标值。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
]
}
}}
指针线集合节点——IndexedLineSetVRML的线是由两点连接所构成的一条直线。IndexedLineSet节点就是将许多线集合在一起,并给定每条线一个指针(Index)。字段说明字段说明color该字段包含一个Color节点,用来定义每一个点的颜色。coord该字段包含一个Coordinate节点,用来定义每一个位置。colorIndex该字段用来定义一连串指针,每个指针对应Color节点的每组颜色值。coordPerVertex该字段是布尔值,TRUE表示提供每一个顶点一个颜色,此为默认值;FALSE表示提供每一组PolyLines一个颜色。coordIndex该字段用来定义一连串指针用于Coordinate节点,每个指针用来指出那些顶点相连和相连的顺序。事件说明事件说明set_colorIndex该事件是一个eventIn事件,用来设置colorIndex字段的值。set_coordIndex该事件是一个eventIn事件,用来设置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
]
}
}上例中创建一个四角锥。坐标指针坐标(x,y,z)00,1,011,0,121,0,-13-1,0,-14-1,0,1由上表构成的5组PolyLinesPolylines1,2,3,4,10,10,20,30,402143三维PolyLines四角锥地表网格节点——ElevationGrid用来描述地表特征的节点:高山、丘陵和平地的地表不规则变化将某一个要描述的地表区域分割成很多网格,定义网格的个数,再定义网格的长和宽,最后定义网格的高度,可以描述出想要表达的地表形状ElevationGrid节点适合于立体地形图的构建;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节点,以提供每个顶点或四边形所需的颜色。normal该字段可以包含一个Normal节点,如果想确切地定义出ElevationGrid节点所构建的虚拟对象的向量值,就可以用Normal节点自行定义;如果没有使用Normal节点,浏览器则会自动地产生向量值。txtCord该字段可以包含一个TextCoordinate节点,以准确地粘贴材质图(texture)到ElevationGrid节点所构建的虚拟对象表面。height用于定义一连串的高度值,每个高度值都对应到所定义的网格顶点上,依照列(row)顺序。ccw该字段是布尔值。它是counterclockwise(逆时针)的缩写。如果字段值为TRUE,就是逆时针建立边界,也就是表面朝向+Y轴,此为默认值;如果字段值为FALSE,就是顺时针建立边界,也就是表面朝向-Y轴。colorPerVertex该字段是布尔值。TRUE表示提供每个顶点一个颜色,此为默认值;FALSE表示提供每一个四边形一个颜色。字段说明字段说明creaseAngle该字段的意思是摺痕的角度,而这个角度的单位是弧度(radian)。默认值为0.0,若creaseAngle使用较小的弧度,那么整个表面看起来就会比较平滑;若使用较大的角度,那么摺痕就会变得很清楚。normalPerVertex该字段是布尔值。TRUE表示对每一个顶点提供一个向量值,此为默认值;FALSE则表示对每一个四边形提供一个向量值。solid该字段是布尔值,TRUE表示只创建正面,不建立反面,这是默认值;FALSE表示正反面都创建。当ccw是TRUE,solid也是TRUE时,那么只创建面向+Y轴的一面;若ccw是FALSE,solid还是TRUE时,则只会创建-Y轴的一面。这样可以节省时间。xDimension定义在x轴方向的顶点个数,默认值为0。xSpacing定义在x轴方向每个顶点间的距离,默认值0.0。zDimension定义在z轴方向的顶点个数,默认值为0。zSpacing定义在z轴方向每个顶点间的距离,默认值0.0。事件说明事件说明set_height该事件是一个eventIn事件。允许设置高度阵列的高度值。字段说明字段说明color定义一连串的RGB三原色值。用来描述一个对象表面或顶点的颜色。ColorNodeSyntaxColor{
exposedFieldMFVec3fvector[]#(-,∞)
}字段说明字段说明vector用来定义单位长度的正规向量值。NormalNodeSyntaxNormal{
exposedFieldMFVec3fvector[]#(-,∞)
}
#VRMLV2.0utf8
Shape{
appearanceAppearance{material Material{}}
geometryElevationGrid{
xDimension6(x方向创建6个顶点)
zDimension4(z方向创建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
]
}
}成形节点——Extrusion
Extrusion(成形)节点可以创造出特殊的形状,而且变化的弹性很大,与前面介绍的基本Geometry节点不同。控制Extrusion节点外形的主要有两个,分别是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表示创建起始端,此为默认值;FALSE则不创建。ccw该字段是布尔值。如果是为TRUE,就是逆时针地创建边界,也就是表面朝向+Y轴,此为默认值;如果是FALSE,则是顺时针地创建边界,即表面朝向-Y轴。convex该字段是布尔值,TRUE表示起始端和结束端断面是凸的,此为默认值;FALSE则表示为凹的。如果beginCap字段和endCap字段是FALSE,convex字段就不具意义。creaseAngle该字段的意思是摺痕的角度,而这个角度的单位是弧度(radian)。默认值是0,整个表面看起来会比较平滑;若使用较大的角度,那么摺痕就会变得很清楚。crossSection该字段的功能是定义二维的断面形状。默认值为[11,1–1,-1–1,11,11],是一个正方形。字段说明字段说明endcap该字段是布尔值。TRUE表示创建结束端,此为默认值。FALSE则不创建。orientation该字段定义一连串的方位值,每个断面的方位值都对应一个路径的位置值。若只有一个方位值,则所有的路径位置都对应它。默认值为(000)。scale该字段定义一连串的缩放值,每一个断面的缩放值都对应一个路径的位置值。若只有一个缩放值,则所有的路径位置都对应它。默认值为(11)。solid该字段是布尔值。TRUE时,只会建立正面,反面不建立,此为默认值;FALSE时,正反两面都会创建。spine该字段是定义一条三维空间中的路径,所有由crossSection节点定义的断面,其几何中心都依照这条路径来变化。默认值为[000,010]。事件说明事件说明set_crossSection该事件为eventIn事件,用来设置段面形状。set_orientation该事件为eventIn事件,用来设置方位值。set_scale该事件为eventIn事件,用来设置缩放值。set_spine该事件为eventIn事件,用来设置路径值。#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
]
}
}
上图中,断面为半圆,路径为曲线路径。起始端和结束端是不创建的(beginCap和endCap都是FALSE);solid为FALSE,所以两面都会创建。文字节点——TextText用于在虚拟现实中创建文字,是Shape节点中的Geometry节点之一。而文字是创建在x-y平面上。Text节点有4个字段,分别是string、FontStyle、length和maxExtent字段说明字段说明String这个字段可以包含一行或一行以上的字符串,每行字符串要用双引号将字符串包起来(“string”)
。而这些字符串就是在虚拟现实中建立的字符串。length这个字段定义在string字段中,控制每一行字符串的长度。也就是在length字段中的第一个长度控制string字段中的第一行字符串。如果length已经定义好,字符串太短,那么字符串建立时将会拉长;字符串太长,那么字符串建立时将会被压缩。maxExtent这个字段是用来定义最大的可能长度。如果各行的字符串长度大于maxExtent,当字符串建立时,它的宽度和间距将被压缩;如果长度小于maxExtent,将没有任何影响。FontStyle这是一个控制字体、字号、间距等的节点。TextNodeSyntaxText{
exposedFieldMFStringstring[]
exposedFieldSFNodeFontStyleNULL
exposedFieldMFFloatlength[]#
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论