致遠管理學院資訊管理學系 授課老師:謝慧民 九十三學年度第一學期

Slides:



Advertisements
Similar presentations
偵辦侵害營業秘密犯罪之執行情形 法務部調查局. 一、前言 ( 一 )102 年 1 月 30 日公告施行營業秘密法 ( 一 )102 年 1 月 30 日公告施行營業秘密法 修正案,增加侵害營業秘密之刑事 修正案,增加侵害營業秘密之刑事 責任,對於意圖在境外使用而竊取 責任,對於意圖在境外使用而竊取.
Advertisements

庄文忠 副教授 世新大学行政管理学系 2012/7/6 SPSS 之应用 ( 庄文忠副教授 ) 1 SPSS 的环境与基本操作.
1 計量技術人員考訓制度. 2 簡 報 大 綱 計量考訓制度簡介 應考須知說明 考試範圍內容、題型及配分權重.
動動腦時間 — 腦筋急轉彎 —. 1. 有三個小朋友在猜 拳,一個出石頭,一 個出布,一個出剪刀, 請問三個人共有幾根 指頭? 答案: 60 根.
徐州工业职业技术学院. 人才市场需求 2013 年我国安全类专业统计表 学历层次专业名称专业代码毕业生数招生数在校生数开设学校数 本科 安全工程 专科 安全技术管理 中专 0000.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
應收帳款承購業務 FACTORING 台灣銀行製作.
广州宜家选址分析 0连锁 李若谷 陈玉风 黄小飞 蓝柔盈.
上海九晶电子材料股份有限公司 招聘简章.
政府採購錯誤行為態樣 報告人:張錦川 日 期:96年7月.
現代中國 議題: 「一帶一路」.
2009年周口市公共机构高效照明产品推介会
香港浸會大學 - 全人教育 卓越創新 陳新滋教授 香港浸會大學校長 2011年2月24日.
第八章:网络应用制作技术 本章介绍网络各种应用中所涉及的基本概念和制作技术,包括HTML、网页的制作、Java、Java Script语言的初步基础,VRML语言的基本功能,以及网络环境下分布式数据库系统和客户服务体系的构造方法及技术。
採購法規概要 報告人:臺北市政府法規委員會 編審 陳世超 土木技師高考及格 結構技師高考及格 公務人員高考及格 國立中興大學土木工程碩士
運輸安全白皮書(Ⅲ) 軌道安全篇 主辦單位:運輸安全組.
微博红人:留几手.
汉字编码 汉字编码.
招投标知识培训 培训人: 日期:2011年04月08日 西安翼舞时风数码科技有限公司.
採購法規概要 報告人:臺北市政府法規委員會 編審 陳世超 土木技師高考及格 結構技師高考及格 公務人員高考及格 國立中興大學土木工程碩士

团队介绍 (1)西湖区社区街道挂职社会实践基地 (2)武义、缙云、双浦乡镇挂职社会实践基地 (3)BOX企业实习社会实践基地
『兩岸四地- 校園節能文化推廣』 座談會 2008年1月26日 澳門大學 校園管理總監 宋傑堯.
第五章 多媒体计算机辅助教学 “现代教育技术”课程组 制作:Xia Hongwen Shen Xialin.
Unicode和多语言信息处理 adoal.
中国教科文卫体工会全国委员会 陈志标 (2012年5月9日,中山大学)
新技术及其教学应用 虚拟现实技术 1.虚拟现实技术概述
第一章 面向对象程序设计.
健康產業定義與分類介紹 定義: 能夠促進生理、心理及社會適應三方面良好狀態之相關產業。 何謂健康(健康的定義):
东宝大厦简介及服务特色.
第二章 數字系統:電腦內部的資料表示法 在第一章中,我們對於電腦有了初步的認識,在深入介紹電腦的各項組成元件之前,首先我們必須先了解另一種不同於人類使用習慣的二進位表示法,由於電腦的半導體、磁性、光學元件適合用來表示二進位,因此二進位表示法非常適合用來設計電腦。
经济全球化与对外开放 1.面对经济全球化 2.积极参与国际竞争与合作.
滨海学坛 周刊 总第13期 2012年10月22日 本期编辑:李秀青 温州滨海学校教科室主办.
质量管理 刘春霞
Google App Engine Google 應用服務引擎.
市司法局党委党组织书记 党务工作者和党员培训班 市委组织部组织处 张 海
財物及勞務採購作業程序及注意事項 報告人 劉麗琴
Tree(樹) 什麼是「樹」? 「樹」的範例 「樹」的定義 「樹」的表示法.
教学目的和要求 学习和掌握资本主义从自由竞争发展到垄断的进程和垄断资本主义的发展趋势
程式設計 博碩文化出版發行.
Visual Basic 6.0 學習範本 第三章 基本資料型態.
第二章 C# 基础知识.
(Exec1) GIS 空间分析-使用ArcGIS (Exec1)
第3章 變數、資料型別與運算子.
Chap 3 資料庫模型與處理架構.
精進教師研習 QR Code製作教學 資料來源:
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
Depixelizing Pixel Art 像素风格画的矢量化
第十三章 其他的C語言課題.
第3章 變數、常數與資料型態 3-1 C語言的識別字 3-2 變數的宣告與初值 3-3 指定敘述 3-4 C語言的資料型態
Chapter 2 Basic Elements of Fortran
辅导课程十三.
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
進階 WWW 程式設計 -- PHP 語言結構 靜宜大學資訊管理學系 蔡奇偉副教授 2003
Chinese World hmwang.
105-1 Data Structure Exam /12/27.
致遠管理學院資訊管理學系 授課老師:謝慧民 九十三學年度第一學期
Java變數 2014/6/24.
CH10. 屬性與方法.
第二节 纤维性修复 概念:由于组织、细胞损伤过重或有感 染等,不能用完全再生方式加以修复; 而以增生的纤维母细胞和毛细血管组成
第11章 從C到C++語言 11-1 C++語言的基礎 11-2 C++語言的資料型態與運算子 11-3 C++語言的輸出與輸入
▲重合的概念 ▲對應頂點、對應邊、對應角 ▲全等的記法 ▲全等性質 ▲三角形全等性質
Ch16. 協定.
重庆市第一0四中学 王继军.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
方案假設 因果連結 (如果…就會…) 將問題情況轉變為所需服務 確保方案的合理性 利於方案評估 例:青少年墮胎
CSS基礎 靜宜大學 資管系 楊子青.
第6章 层次原理图设计和多通道技术: 重点内容: 掌握自上而下的层次原理图设计方法 掌握自下而上的层次原理图设计方法
變數與資料型態  綠園.
Presentation transcript:

致遠管理學院資訊管理學系 授課老師:謝慧民 九十三學年度第一學期 VRML虛擬實境網頁語言知城數位 第三章 VRML的檔案架構 致遠管理學院資訊管理學系 授課老師:謝慧民 九十三學年度第一學期

VRML檔案的概述 VRML的檔案就和大部分程式語言的檔案相同,是個文字敘述(textual description)的檔案。所以可以使用任何的文字編輯器來撰寫VRML,只要存檔時,存成file.wrl即可。而".wrl"通常讀成"dot world",由副檔名可以感受到VRML的目的就是去建造一個世界(world)。

圖3-1

VRML檔案的概述 這個範例是一個很典型的VRML程式,包含檔案標頭、註解、節點、欄位等,透過瀏覽器我們將可以看見程式執行的結果如圖3-1。將在下列各節對這些構成VRML檔案的基本項目做更詳細的說明與介紹。

VRML的檔案標頭 範例3-1的第一行 這就是VRML的檔案標頭,在任何VRML程式的第一行一定要寫上這個標頭。 #VRMLV2.0utf8 這就是VRML的檔案標頭,在任何VRML程式的第一行一定要寫上這個標頭。 VRML的檔案標頭對這個檔案有以下的描述: 它是個VRML的檔案。 它是使用VRML2.0版的規格來完成。 檔案是使用國際UTF-8的字元集合。

VRML的檔案標頭 在很多語言中,UTF-8字元集合是一個標準的字元集合,包含英文。它使得VRML能夠支援英文字元,例如:A到Z。只要是能在鍵盤上找到的字元,UTF-8字元集合都包含在內,所以能鍵入任何ASCII碼在一個UTF-8的VRML檔案中。

UTF-8字元集合小常識 UTF的是UCS Transform Format的所寫,而UCS是Universal Multiple-Octet Coded Character Set。UTF8是由ISO ( International Organization for Standards)的規範《ISO/IEC 10646-1:1993)所提出。

VRML的檔案註解 我們看到範例3-1的第二行 #Drawthecolumn 它可以幫助程式設計師紀錄本段程式的意義,以便日後修正。 它可以幫助程式設計師除錯(debug)時,先將部分程式轉成註解。 它可以幫助非此程式設計者閱讀此程式時,了解程式的目的。 在VRML的程式中,註解的使用方式就是在每行程式的開頭加上"#","#"之後該行的文字便失去了程式執行的功能,變成註解。

節點 Node在本書中翻譯成節點。節點(Node)是VRML檔案中最基本的單位,每個節點還包含子節點(Child Node)和描述節點屬性的欄位(Fields)。 以Shape節點為例,它是一個用來形容物件幾何型狀(Geometry Node,例如:球體、長方體、圓柱體)和外觀(Appearance Node,例如:表面的顏色、透明度、光滑度)的節點。

節點 由圖3-2可以清楚地看到Shape節點包含了許多相關的節點(Node和欄位(Field),所以Shape節點是一個非常重要的節點,將會在第四章和第五章裡再詳細地說明。

節點 以下是範例3-1中,所使用的一個節點。 由以上可知一個節點通常包含: geometry Cylinder { radius 0.5 height 4.0 } 由以上可知一個節點通常包含: 1.節點的名稱(例如:Cylinder)。 2.一對大括號“{}"。 3.欄位和欄位值(例如:radius 0.5)

節點 所以在日後的各節中,將會介紹很多節點(Node)的語法(Syntax),先看下面Cone節點的語法: 其中欄位值,如:SFFloat、SFBoo1等的意義將在3-4節中說明。

節點 關於節點的分類方法,其實並沒有一定的分類方式,但依照規範的節點種類,可以分成群節點(Grouping Nodes)和子節點(Child Nodes)。 群節點(Grouping Nodes)可以將其它的節點放在這個群節點中。例如:在範例3-1中,Transform節點是一個群節點,它包含了Shape這個子節點,Transform節點可以控制在其節點內之子節點的位置、方位和尺寸,從範例3-1中可以了解。

節點 而子節點(Child Nodes)又該如何定義呢?所有的節點都可以視為子節點,當然也包括群節點。 哪些節點是群節點(Grouping Nodes)呢?其實並不多只有八個,在第六章將會介紹所有的群節點。由圖3-3可以看出哪些是群節點(Grouping Nodes)和不是群節點的子節點(Child Nodes)。

本書各章的分類,是依照各節點的特徵性質來區分,共分成八類,從第四章到第十一章,如表3-1所示。

欄位和欄位值 在這一節中主要是介紹欄位的語法和欄位值的型態。一個節點是由欄位和欄位值所組成,它們是用來描述節點的屬性。 欄位可以分成兩類:一類是欄位只包含一個單獨的值,開頭的名稱為SF (Single-value fields);另一類則是包含多重的值,開頭名稱為MF (Multiple-valued fields)。

欄位和欄位值 多重值的欄位值是有順序地寫在中括號"[]"裡。假如欄位沒有任何值,只需列出中括號"[]";假如只有一個值就將中括號"[]"省略。例如:有一個欄位值型態為MFInt32的多重欄位叫做foo,但它只含一個欄位值1,有以下表示方式: foo 1 foo[1,] foo[1]

欄位和欄位值 在範例3-1中,欄位和欄位值如下 geometry Cylinder { radius 0.5 height 4.0 } Cylinder節點的欄位有radius和height,而欄位值(Field Value)0.5、4.0皆為浮點數(Float),欄位值的型態為SFFloat。

欄位和欄位值 在一個節點的標準語法(Syntax)中: 欄位值(Field Value) SFFloat和SFBool所代表的意義是什麼呢?由以下的介紹,將可以對於各種不同欄位值的型態更加了解。

SFBool 它是一個布林值或邏輯值。它的值不是TRUE就是FALSE。常被使用去開啟或關閉一個節點的性質特徵。例如:Cone這個節點的side和bottom這兩個欄位,它們的欄位值就是布林值,用來決定四週或底部是否顯現。例如: fooBool FALSE fooBool是一個值為SFBool的欄位,它定義的布林值為FALSE。一個值為SFBool的eventOut事件,它的初始布林值為FALSE。

SFColor和MFColor 它總共包含三個浮點值,分別介於(0,1)之間,各自所描述的長紅、綠、藍(R-G-B),經由三個不同值的混合可以顯現出不同的顏色。常被使用在描述一個幾何外型或光線的顏色。例如:1.0 0.0 0.0是紅色;0.75 0.75 0.75是灰色。下面有一個R-G-B三原色混何參考表(表3-2)。 fooColor [1.0 0.0 0.0 , 0.0 1.0 0.0 , 0.0 0.0 1.0]

SFColor和MFColor fooColor是一個值為MFColor的欄位,它包含三組主要的顏色,分別為紅、綠、藍。一個值為SFColor的eventOut事件,它的初始值為(0 0 0)。一個值為MFColor的eventOut事件,它的初始值為空的中括號"[]"。 基本上,所有的色彩皆由紅、綠、藍三種顏色混合組成的,稱之為三原色。以下為一個三原色混合的參考表:

SFFloatc和MFFloat 值是浮點數。它可以是正值或負值,可以有小數點,值分布在(-,+ ),例如:88.75、-333.111等。 , fooFloat [3.1415926 , 133.5e-5 , 0.00006] fooFloat是一個欄位值為MFFloat的欄位,它包含三組浮點數值。若一個值為SFFloat的eventOut事件,它的初始值為0.0。一個值為MFFloat的eventOut事件,它的初始值為空的中括號"[]"。

SFImage 用來描述數位圖片的一列值。可以表示一個物體外觀的表面紋路顏色。 fooImage<width><height><num components><pixels Values> 其中<width> <height> <num components>為整數值;<pixels values>是用十六進位法(hexadecimal)表示。例如: fooImage 1 2 1 0xFF 0x00

SFImage fooImage是一個值為SFImage的欄位。它定義了一個1個圖素(pixel)寬和2個圖素(Pixels)高的圖片,只含一個元件圖片,底部的圖素是白(0xFF),頂部的圖素是黑(0x00)。一個值為SFImage的eventOut事件,它的初始值為(0 0 0)。

SFInt32和 MFInt32 值是32bit的整數值。它可以是正值或負值,不可以有小數點,例如:123、-963等。值為SFInt32和MFInt32的欄位和事件,其值可以用十進位或十六進位的格式來表示。例如: fooIt32 [ 17 , -0xE20 , -518820 ] fooInt32是一個值為MFInt32的欄位,它包含了三組整數值(十進位或十六進位)。值為SFInt32的eventOut事件,它的初始值是0。值為MFInt32的eventOut事件,它的初始值是空的中括號"[]"。

SFNode和MFNode 值為SFNode的欄位就是一個VRML的節點。值為MFNode的欄位可以是零或多個節點。例如: fooNode[ Transform {transltin 1 0 0} DEF CUBE BOX{} USE CUBE USE SOME_OTHER_NODE ] fooNode是一個值為MFNode的欄位,它定義了四組節點。若一個值為SFNode的eventOut事件,它的初始值為NULL。一個值為MFNode的eventOut事件,它的初始值是空的中括號"[]"。

SFRotation和MFRoation 它是由四個浮點值構成的欄位值。前三個值定義出旋轉軸,根據右手定則(圖3-4);最後一個值定義出旋轉角度,單位以弧度(radian)表示。通常被使用在定義一個物體的方位。例如: fooRotation 0.0 1.0 0.0 3.14159265 fooRotation是個值為SFRotation的欄位,它表示對y軸旋轉(180度)的意思。若一個值為SFRotation的eventOut事件,它的初始值為(0 1 0)。一個值為MFRotation的eventOut事件,它的初始值是空的中括號"[]"。

SFString和MFString 它的一個欄位值是由在一對雙引號中的字元所構成("string")。它通常被用來表示一些選項的名字或描述事物。例如: fooString["One, Two, Three","She is a cute girl"] fooString是一個值為MFString的欄位,它包含了兩組字串。若一個值為SFString的eventOut事件,它的初始值為空的雙引號“”。一個值為MFString的eventOut事件,它的初始值是空的中括號"[]"。

SFTime和MFTime 它是一個浮點值。時間值是使用真實世界中的絕對時間,單位是用秒來表示,從某一個特別的時間(西元1970年,1月1日。子夜00:00:00 GMT)開始計算。通常是被應用在動畫中,決定何時開始或停止。例如: fooTime 0.0 fooTime是一個值為SFTime的欄位,表示一個0.0秒的時間。一個值為SFTime的eventOut事件,它的初始值為-1。一個值為MFTime的eventOut事件,它的初始值是空的中括號"[]"。

SFVec2f和MFVec2f 欄位值是一個二維的浮點數向量。由兩個浮點數構成一組欄位值。通常被使用來表示一個2-D的位置。例如: fooVec2f[91 44.91, 26 94] fooVec2f是一個值為MFVec2f的欄位,它包含兩組向量。一個值為SFVec2f的eventOut事件,它的初始值為(0 0)。一個值為MFVec2f的eventOut事件,它的初始值是空的中括號"[]"。

SFVec3f和MFVec3f 欄位值是一個三維的浮點數向量。由三個浮點數構成一組欄位值。通常被使用來表示一個3-D的位置。例如: fooVec3f[66 0.5 30 ,69 11 22] fooVec2f是一個值為MFVec2f的欄位,它包含兩組向量。一個值為SFVec3f的eventOut事件,它的初始值為(0 0 0)。一個值為MFVec3f的eventOut事件,它的初始值是空的中括號"[]"。

定義節點名稱 (DEF) 重用節點名稱 (USE) 將介紹如何定義一節點的名字。首先先來想想為什麼會有這個功能呢? 最大的功能就是增加重用性。當我們建構一棟房子時,房子一定會用到很多的柱、樑、窗戶和門等,可以發現絕大多數的柱、樑、窗戶和門的尺寸或外觀是相同的,只是位置不同,所以一開始『要先定義一根標準柱、一根標準樑、一個標準窗、一個標準門,把柱、樑、窗戶和門都視為單一的物件,而他們的屬性、尺寸也都設定在其中。接下來在建構這房子時,只要用組合的方式,將以上定義的各種物件放置於正確的位置即可。圖3-6是一根標準柱,圖3-7是一個標準樑,而圖3-8則是由標準柱和標準樑構成的樑柱結構系統。

圖3-7 標準樑 圖3-6 標準柱

DEF SYNTAX DEF node-name node-type{……………..} 去定義一個節點來當作重用案例,要在節點之前,加上“DEF”和所要定義的節點名稱“node-name”。在VRML的檔案中,可以定義任意個節點名稱,但是不能重複定義相同的名稱在同一個VRML的檔案中。node-name可以是任何你覺得方便的字串名稱,有大、小寫的差異,node-name叫做“ERlCA”和“erica”的意義對VRML瀏覽器來說是不一樣的。字元可以是字母、數字和底線(underscore,“_”)。下列是一些合法node-name的例子:

DEF SYNTAX node-name的標頭不可以是數字。它不可以包含不能顯現的ASCII字元,像是space、tabs;它也不能使用到標點符號或是運算符號,像是雙引號("")、各種括號、正負號等。 還有一些對VRML有特別意義的名稱也不可以使用來當作node-name,例如:

USE SYNTAX USE node-name 如果你在一個檔案中定義了一個節點名稱,可以用「USE」來重用已經定義的節點名稱在相同的檔案中。原本被定義名字的節點稱作「來源節點」(original node);每次被重用的節點則叫做「案例」(instance)。所有使用案例(instance)的地方,都可以具有和來源節點(original node)相同的屬性,如果要改變所有案例(instance)的屬性,只要變動來源節點(original node)的屬性就可以了。

USE SYNTAX USE node-name 在範例3-1中,先定義了一個Appearance的節點叫做Yellow,原本是用來形容Cylinder節點的外觀顏色;在下面Yellow又被用來形容Box節點的外觀顏色。透過範例3-1讀者應該對"DEF"和"USE"的用法有更基本的認識。

事件和路由--事件(Event) 節點是可以透過接收事件而改變。大部分的節點有能力去處理進入事件(eventIns)。靠著接收eventIns的指示,節點可以改變目前的狀態。例如:一個節點的顏色(color)可以被改變,set_color。當一個節點被改變了,它會對改變的狀態有所反應,藉著送出一些發生事件(eventOuts),例如:Color_changed。

事件(Event) 一個exposedField能夠接收事件,像是eventIn;能夠產生事件,像是eventOut。事件是短暫的,事件值是不會被寫入VRML的檔案中。exposedField就像是欄位一樣被放置在VRML檔案中。如果一個exposeField叫做zzz,那麼它的eventln事件為set_zzz,eventOut事件則為zzz_Changed。

事件(Event) 下列是一些eventIns和eventOuts的規則: 大部分的eventIns都是以"set_"為開頭的事件,除了addChildren和removieChildren這兩個eventIns以外。 大部分的eventOuts都是以"_changed"為結尾的事件,除了型態為SFBool的eventOuts。布林值的eventOuts是以"is"作為標頭,例如:isBound、isActive等。 eventIns和eventOuts的型態為SFTime時,就不是再使用"set_"和"changed_"作為連接。例如:bindTime、touchTime等。

路由 (Route) Route的功能是連接一個節點所產生的事件(eventOuts)和一個節點接收的事件(eventIns)。Route並不是節點,它只是簡單的語法架構,告訴一個事件該如何從某個節點到達另一個節點。換句話說,Route的目的是負責建立兩個節點間的路徑。 Route可以放置在VRML檔案的最頂層、在PROTO的定義中或在會出現欄位的節點內。 ROUTE Syntax: ROUTE NodeName.eventOutName_cnanged TO NodeName.set_eventInName

範例說明 透過這個範例主要的目的是讓讀者了解ROUTE的功能,對一個初學的讀者應該是不懂這範例的意思,但筆者的重點是讓讀者知道ROUTE如何建立節點間的路徑,並傳送事件。這個範例的執行結果是畫面中的球體會不斷地改變尺寸,如圖3-9所示。

總結 讀完這章後,讀者對於整個VRML的檔案架構應該有所認識。一個VRML的檔案架構就是在本章各節中所介紹的內容,像是檔案標頭的定義、註解的應用、節點和欄位的定義、DEF與USE的使用時機、事件與路由的結合。 在本章中,對只做了文字上的描述和範例介紹。在往後的章節中,本章所提的架構會一再地出現於範例中。讀者從本章中獲得了這些基本概念後,對接下來的學習內容應該可以有所助益。