?? vrml第一章到第十一章.txt
字號(hào):
第一章 瀏覽器
1、瀏覽方式控制
Walk 模擬人在虛擬世界中的走動(dòng)和轉(zhuǎn)向
Pan 在虛擬世界中的向上下或左右的平移
Turn 改變?yōu)g覽者的視野角度,相當(dāng)于現(xiàn)實(shí)世界中人們的仰視、俯視、左轉(zhuǎn)和右轉(zhuǎn)。但是Turn可以實(shí)現(xiàn)任意角度的旋轉(zhuǎn),會(huì)形成一些在現(xiàn)實(shí)世界中不可能出現(xiàn)的奇怪視角,容易使瀏覽者分不清方向。
Roll 在一個(gè)垂直面上實(shí)現(xiàn)順時(shí)針的和逆時(shí)針的視角的轉(zhuǎn)動(dòng)。
Goto 單擊一個(gè)對(duì)象就將靠近單擊的位置觀察。
Study 在瀏覽者的面前以不同的方向和不同的角度旋轉(zhuǎn)一個(gè)或一組漂浮在空間的物體,對(duì)感興趣造型的某些細(xì)節(jié)進(jìn)行仔細(xì)觀察。
2、瀏覽視點(diǎn)控制
View 視點(diǎn)是瀏覽者在三維空間中的觀察位置。如果VRML文件設(shè)置了多個(gè)視點(diǎn),那么單擊View兩側(cè)的箭頭將切換視點(diǎn)為當(dāng)前視點(diǎn)的前一個(gè)視點(diǎn)或后一個(gè)視點(diǎn),而單擊View則返回當(dāng)前視點(diǎn),另外右擊View將彈出一個(gè)所有視點(diǎn)的列表,選擇其中之一將顯示視點(diǎn)之間的快速切換。
Zoon Out 當(dāng)瀏覽者在一個(gè)并不熟悉的虛擬世界中迷失了方向時(shí),它將自動(dòng)切換到一個(gè)遠(yuǎn)景的視點(diǎn)上,在這個(gè)視點(diǎn)上瀏覽者將看到整個(gè)的虛擬世界。
Straighten Up 使瀏覽者的視線快速轉(zhuǎn)移到正前方,且使其與地面平行。
Restore 將瀏覽者的視點(diǎn)切換到VRML文件默認(rèn)的觀點(diǎn)上,也就是瀏覽者進(jìn)入虛擬世界的第一個(gè)視點(diǎn)。
第二章 VRML文件的基本內(nèi)容
1、文件頭
#VRML V2.0 utf8
2、路由
將各個(gè)不同的節(jié)點(diǎn)綁定在一起以使虛擬空間具有動(dòng)感和交互性。
在綁定路由的過(guò)程中應(yīng)注意:
1.和節(jié)點(diǎn)的域和域值一樣,輸入接口(eventIn)和輸出接口(eventOut)同樣有一定的數(shù)值類型。且綁定在一起的輸入和輸出接口就應(yīng)該具有相同的數(shù)值類型,否則必將導(dǎo)致意想不到的錯(cuò)誤。
2.綁定兩個(gè)節(jié)點(diǎn)的路由在沒(méi)有觸發(fā)之前一直都處于休眠的狀態(tài),只有在被觸發(fā)時(shí),才有事件從輸出接口的節(jié)點(diǎn)產(chǎn)生,并且通過(guò)路由傳送到輸入接口的節(jié)點(diǎn),引起相應(yīng)的虛擬世界中的變化。
3.可以將多個(gè)節(jié)點(diǎn)綁定在一起,從而創(chuàng)建復(fù)雜的線路。
3、節(jié)點(diǎn)
1.VRML中的各種域值類型
域值類型 簡(jiǎn)要說(shuō)明
SFBool 開(kāi)關(guān)值。值為T(mén)RUE或FLASE,常用于指定某一個(gè)屬性的打開(kāi)或關(guān)閉
SFFloat/MFFloat 浮點(diǎn)值。值為具有正負(fù)之分的實(shí)數(shù),用于指定某一個(gè)確定的數(shù)值屬性
SFColor/MFColor 顏色值。值為由3個(gè)浮點(diǎn)值組成的數(shù)組,用于指定一個(gè)RGB規(guī)定的顏色
SFRotation/MFRotation 旋轉(zhuǎn)值。值為由4個(gè)浮點(diǎn)值組成的數(shù)組,前3個(gè)數(shù)指定旋轉(zhuǎn)的坐標(biāo)軸,第4個(gè)數(shù)指定旋轉(zhuǎn)的角度
SFString/MFString 字符串。值為由中括號(hào)中的一組字符,用于指定多個(gè)選擇中的一個(gè)選項(xiàng)
SFVec2f/MFVec2f 二維浮點(diǎn)矢量。值為2個(gè)浮點(diǎn)值,用于指定一個(gè)二維的位置
SFVec3f/MFVec3f 三維浮點(diǎn)矢量。值為3個(gè)浮點(diǎn)值,用于指定一個(gè)三維的位置
SFInt32/MFInt32 32位整數(shù)。值為正整數(shù)
SFImage 圖象值。用于指定描述圖象顏色的一系列的數(shù)值,用于繪制造型表面的紋理圖象
SFTime 時(shí)間值。值為一個(gè)從格林威治時(shí)間1970年1月1日零時(shí)整開(kāi)始的、以秒計(jì)算的時(shí)間,用于指定一個(gè)動(dòng)畫(huà)開(kāi)始和結(jié)束的時(shí)間
SFNode/MFNode 節(jié)點(diǎn)值。用于表明一個(gè)屬性節(jié)點(diǎn),控制造型節(jié)點(diǎn)創(chuàng)建造型
注:表中以SF開(kāi)頭的是單值類型,該數(shù)值只是一個(gè)單一的數(shù)或數(shù)組;而MF開(kāi)頭的是多值類型,該數(shù)組指定的是一個(gè)數(shù)或數(shù)組的列表。
2.定義節(jié)點(diǎn)名稱及其引用
定義一個(gè)名稱,然后在本文件的后面可以反復(fù)地引用該節(jié)點(diǎn)。
被定義的節(jié)點(diǎn)稱為原始節(jié)點(diǎn),對(duì)被命名節(jié)點(diǎn)的引用稱為實(shí)例。當(dāng)原始節(jié)點(diǎn)中的域值被修改,所有的實(shí)例也將自動(dòng)同時(shí)修改。
定義節(jié)點(diǎn)名稱的語(yǔ)法如下
DEF 節(jié)點(diǎn)名稱 節(jié)點(diǎn){ ...
... }
引用節(jié)點(diǎn)的語(yǔ)法如下
USE 節(jié)點(diǎn)名稱
注:1.節(jié)點(diǎn)名稱可以由大小寫(xiě)字母、數(shù)字和下劃線組成
2.節(jié)點(diǎn)名稱中的字母區(qū)分大小寫(xiě)
3.節(jié)點(diǎn)名稱不能以數(shù)字開(kāi)頭
4.節(jié)點(diǎn)名稱不能包括諸如空格、Tab等不能打印的字符
5.節(jié)點(diǎn)名稱不能包括單雙引號(hào)、加號(hào)、減號(hào)、逗號(hào)、句號(hào)、各種括號(hào)、英鎊符號(hào)等字符
6.在VRML中以下用作特殊用途的字符串也不能用作節(jié)點(diǎn)名稱:
DEF,EXTERNPROTO,F(xiàn)ALSE,IS,NULL,PROTO,ROUTE,TO,TRUE,USE,evevtIn,eventOut,expoesdField,field
4、注釋信息
注釋部分是以“#”字符開(kāi)頭,結(jié)束與該行行尾。
第三章 空間坐標(biāo)系
1、單位
VRML單位。與現(xiàn)實(shí)尺寸沒(méi)有可比性
2、角度單位
在VRML空間中使用的角度單位是通常使用的弧度。
弧度與角度之間的互換公式如下:
弧度=角度×π/180 ;π=3.1415926
一些常用角度的弧度值
角度值 0 30 45 60 90 120 135 150 180
弧度值 0.0 0.524 0.785 1.047 1.571 2.094 2.356 2.618 3.1416
3、空間坐標(biāo)系
略......
第四章 基本造型
1、
1.Shape節(jié)點(diǎn)語(yǔ)法
Shape{
appearance NULL #域值類型 SFNode
geometry NULL #域值類型 SFNode
}
appearance域的域值是一個(gè)定義了造型外觀的Appearance節(jié)點(diǎn)。Appearance節(jié)點(diǎn)將定義造型外觀的顏色和紋理。缺省值表示為一個(gè)白色且發(fā)光的造型外觀。Appearance域中包含有set_appearance的輸入接口和appearance_changed的輸出接口,可以通過(guò)將正確的事件傳送到前者來(lái)改變appearance域的域值,新的域值將通過(guò)后者輸出去。
geometry域的域值是一個(gè)定義了空間造型的幾何尺寸大小的造型節(jié)點(diǎn)。缺省值表示沒(méi)有造型存在。包含set_geometry和geometry_changed(同上)。
2.Appearance節(jié)點(diǎn)語(yǔ)法
Appearance(
material NULL #域值類型 SFNode
texture NULL #域值類型 SFNode
texture Transform NULL #域值類型 SFNode
}
3.Material節(jié)點(diǎn)語(yǔ)法
Material{
ambientIntensity 0.2 #域值類型 SFFloat
diffuseColor 0.8 0.8 0.8 #域值類型 SFColor
emissiveColor 0.0 0.0 0.0 #域值類型 SFColor
shininess 0.2 #域值類型 SFFloat
specularColor 0.0 0.0 0.0 #域值類型 SFColor
transparency 0.0 #域值類型 SFFloat
}
2、基本的VRML造型節(jié)點(diǎn)
1.BOX節(jié)點(diǎn)語(yǔ)法(正方體、長(zhǎng)方體)
Box{
size 2.0 2.0 2.0 #域值類型 SFVec3f
}
2.Cylinder節(jié)點(diǎn)語(yǔ)法(圓柱體)
Cylinder(
radius 1.0 #域值類型 SFFloat
height 2.0 #域值類型 SFFloat
side TRUE #域值類型 SFBool
top TRUE #域值類型 SFBool
bottom TRUE #域值類型 SFBool
}
3.Cone節(jié)點(diǎn)語(yǔ)法(圓錐體)
Cone{
bottomRadius 1.0 #域值類型 SFFloat
height 2.0 #域值類型 SFFloat
side TRUE #域值類型 SFBool
bottom TRUE #域值類型 SFBool
}
4.Sphere節(jié)點(diǎn)語(yǔ)法(球體)
Sphere{
radius 1.0 #域值類型 SFFloat
}
3、節(jié)點(diǎn)的編組
通過(guò)Group編組節(jié)點(diǎn)將不同的VRML節(jié)點(diǎn)組織在一起來(lái)創(chuàng)建復(fù)雜的造型,進(jìn)而構(gòu)造整個(gè)的虛擬世界。
Group節(jié)點(diǎn)語(yǔ)法
Group{
children [] #域值類型 MFNode
bboxCenter 0.0 0.0 0.0 #域值類型 SFVec3f
bboxSize -1.0 -1.0 -1.0 #域值類型 SFVec3f
addChildren #輸入接口 MFNode
removeChildren #輸出接口 MFNode
}
注:children域用于指定該組的組元的一個(gè)列表,各個(gè)組元在自己的最后用逗號(hào)與其他的組元分開(kāi)。children域的域值通常包含造型節(jié)點(diǎn)Shape和其他的Group節(jié)點(diǎn)。children缺省域值為一個(gè)空的組元列表,即一個(gè)空組。
見(jiàn)示例:[航空塔.wrl]
第五章 文本造型
1、Text節(jié)點(diǎn)語(yǔ)法
Text{
string [] #域值類型 MFString
length [] #域值類型 MFFloat
maxExtent 0.0 #域值類型 SFFloat
fontStyle NULL #域值類型 SFNode
}
1.string域
用于指定所要?jiǎng)?chuàng)建的文本內(nèi)容。創(chuàng)建多行文本只需將所要?jiǎng)?chuàng)建的各行文本分別用引號(hào)引出,其中用逗號(hào)隔開(kāi)即可。
輸入接口set_string和輸出接口string_changed。
2.length域
文本的缺省字符尺寸大小為1.0單位,字符間距1.0單位。
length域的域值用于指定每一行的文本造型的長(zhǎng)度,使用的單位為VRML單位。Length域的缺省域值為0.0,代表文本造型將以原本的字符大小和間距來(lái)創(chuàng)建。
當(dāng)string域指定的是多行文本,可以分別指定每一行文本造型的長(zhǎng)度,只要在中括號(hào)中給出一串以逗號(hào)分隔開(kāi)來(lái)的長(zhǎng)度值即可。若長(zhǎng)度值過(guò)少則后面的用缺省值,多的則忽略。
3.maxExtent
用來(lái)指定一個(gè)string域中創(chuàng)建的各個(gè)文本行的最大的長(zhǎng)度,即長(zhǎng)度大于這個(gè)最大長(zhǎng)度的文本行將被壓縮至指定的長(zhǎng)度,而長(zhǎng)度小于最大長(zhǎng)度的文本將保持原有的長(zhǎng)度不變。
4.fontStyle
用于指定Text節(jié)點(diǎn)所創(chuàng)建的文本的外觀特征。fontStyle域的域值通常為一個(gè)FontStyle節(jié)點(diǎn)。
2、FontStyle節(jié)點(diǎn)語(yǔ)法
FontStyle{
family "SERIF" #域值類型 SFString
style "PLAIN" #域值類型 SFString
size 1.0 #域值類型 SFFloat
spacing 1.0 #域值類型 SFFloat
justify "BEGIN" #域值類型 SFString
horizontal TRUE #域值類型 SFBool
leftToRight TRUE #域值類型 SFBool
topToBottom TRUE #域值類型 SFBool
language "" #域值類型 SFString
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -