Tìm hiểu ngôn ngữ VRML

Trong xu thế tin học hoá toàn bộ cuộc sống đang diễn ra tấp nập hiện nay,lĩnh vực đồ hoạ đóng góp một vai trò cực kỳ to lớn.Ở đâu ta cũng có thể tìm thấy những minh hoạ cho việc áp dụng đồ hoạ máy tính vào cuộc sống : xử lý ảnh, phim hoạt hình, đặc biệt là thực tại ảo(Virtual Reality_VR).Thực tại ảo,là một nghành công nghệ cao,có ứng dụng đặc biệt rộng rãi.Từ các trò chơi 3D cực kì sống động đến những mô phỏng phức tạp trong công nghiệp và khoa học công nghệ(mô phỏng các vụ thử hạt nhân,mô phỏng thế giới ảo dùng để huấn luỵện phi công ),từ những trường hợp đơn giản đến các trường hợp cực kì quan trọng.

Một phần quan trọng của VR là mô phỏng thế giới thực xung quanh chúng ta.Để làm được điều này, chúng ta có thể dùng ngôn ngữ VRML(Virtual Reality Modeling Language).Đây là một ngôn ngữ tương đối đơn giản nhưmg cực kỳ hiệu quả.Với VRML,kết hợp với trình duyệt IE hay Nescape,chúng ta có thể mô phỏng thế giới quanh ta một cách như ý.Trong thế giới đó,có các vật thể,có các tương tác và có các cảm biến y như thế giới thực.Ứng dụng của VRML cũng rất rộng rãi : mô phỏng nhà cửa,thiết kế các phòng học ảo,các thiết bị thí nghiệm ảo, lập trình không gian ảo

 

doc47 trang | Chia sẻ: luyenbuizn | Lượt xem: 1793 | Lượt tải: 1download
Bạn đang xem trước 20 trang nội dung tài liệu Tìm hiểu ngôn ngữ VRML, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Tìm hiểu ngôn ngữVRML Lời nói đầu Trong xu thế tin học hoá toàn bộ cuộc sống đang diễn ra tấp nập hiện nay,lĩnh vực đồ hoạ đóng góp một vai trò cực kỳ to lớn.Ở đâu ta cũng có thể tìm thấy những minh hoạ cho việc áp dụng đồ hoạ máy tính vào cuộc sống : xử lý ảnh, phim hoạt hình, đặc biệt là thực tại ảo(Virtual Reality_VR)..Thực tại ảo,là một nghành công nghệ cao,có ứng dụng đặc biệt rộng rãi.Từ các trò chơi 3D cực kì sống động đến những mô phỏng phức tạp trong công nghiệp và khoa học công nghệ(mô phỏng các vụ thử hạt nhân,mô phỏng thế giới ảo dùng để huấn luỵện phi công…),từ những trường hợp đơn giản đến các trường hợp cực kì quan trọng. Một phần quan trọng của VR là mô phỏng thế giới thực xung quanh chúng ta.Để làm được điều này, chúng ta có thể dùng ngôn ngữ VRML(Virtual Reality Modeling Language).Đây là một ngôn ngữ tương đối đơn giản nhưmg cực kỳ hiệu quả.Với VRML,kết hợp với trình duyệt IE hay Nescape,chúng ta có thể mô phỏng thế giới quanh ta một cách như ý.Trong thế giới đó,có các vật thể,có các tương tác và có các cảm biến y như thế giới thực.Ứng dụng của VRML cũng rất rộng rãi : mô phỏng nhà cửa,thiết kế các phòng học ảo,các thiết bị thí nghiệm ảo, lập trình không gian ảo… Trong bài tập lớn môn học này,em đã tìm hiểu về VRML và dùng ngôn ngữ VRML để mô phỏng toà nhà C14-15 của trường đại họcBKHN.Tuy được sự hướng dẫn tận tình của thầy Hùng nhưng do thời gian và năng lực còn có hạn nên kết quả còn nhiều thiếu sót.Tuy nhiên,em rất cám ơn thầy Hùng vì môn học và bài tập lớn này đã đem lại cho em nhiều hiếu biết về thế giới đồ hoạ,mở ra cho chúng em một hướng đi mới trong lĩnh vực tin học. BÁO CÁO BÀI TẬP LỚN MÔN HỌC "ĐỒ HOẠ MÁY TÍNH VÀ HIỆN THỰC ẢO" I.Giới thiệu về VRML 1.Về ngôn ngữ VRML a,VÒ tr×nh duyÖt §iÒu ®Çu tiªn b¹n cÇn lµ VRML browser, ®Ó quan s¸t c¸c thÕ giíi cña b¹n. PhÇn lín c¸c brower VRML ho¹t ®éng cho Nescape vµ Internet Explorer, c¸c browser cã s½n ®èi víi c¸c hÖ ®iÒu hµnh. §Ó biÕt thªm th«ng tin b¹n h·y tra trong VRML Repository. b,Soạn thảo VRML §iÒu tiÕp theo b¹n cÇn lµ t¹o nªn c¸c thÕ giíi cña b¹n. Cã hai c¸ch ®Ó thùc hiÖn ®iÒu nµy. §Çu tiªn b¹n cã thÓ sö dông mét trong c¸c c«ng cô t¹o ra VRML, chÝnh lµ c¸c m« h×nh 3D mµ b¹n cã thÓ t¹o ra thÕ giíi cña b¹n. Mét ph­¬ng ph¸p thùc hiÖn VRML lµ m· ho¸ b»ng tay, tÊt c¶ b¹n cÇn lµ viÖc so¹n th¶o v¨n b¶n wordpad hoÆc notepad. VrmlPad lµ bé so¹n th¶o Vrml ®Æc biÖt hiÖu qu¶ víi ®Æc ®iÓm næi bËt có ph¸p. Lo¹i ®¬n gi¶n ®­îc m· ho¸ chØ ra, ®­îc cÊt d­íi file cã d¹ng filename.wrl. Sau ®ã b¹n cã thÓ t¶i vµo browser vµ lÊy ra ®Ó xem. NÕu b¹n sö dông bé so¹n th¶o phøc t¹p h¬n, nh­ Wordpad, h·y ®¶m b¶o cÊt d­íi file ®¬n gi¶n hoÆc nÕu kh«ng nã sÏ kh«ng lµm viÖc. Lµm viÖc víi VRML ch­a cã kinh nghiÖm, nã cã thÓ rÊt khã ®Ó t¹o ra c¸c ®èi t­îng phøc t¹p. §Ó thùc hiÖn ®iÒu nµy b¹n cÇn ph¶i sö dông hoÆc c«ng cô b¶n quyÒn møc cao hoÆc ng«n ng÷ m« h×nh ho¸. NÕu b¹n ®i ®Õn c¸c lùa chän muén h¬n, b¹n cã thÓ sÏ cÇn vµi lo¹i file ch­¬ng tr×nh biªn dÞch ®Ó chuyÓn gi÷a c¸c d¹ng m« h×nh ho¸ vµ VRML. Bé biªn dÞch miÔn phÝ lµ crossroads. C¸c c«ng cô VRML cÊp cao cã s½n ®èi víi nhiÒu c«ng ty. c. Kü thuËt nÐn, MIME vµ xuÊt b¶n Sù më réng th«ng th­êng cho c¸c file VRML lµ .wrl vµ .wrz sö dông cho viÖc nÐn VRML. Browser cã thÓ ®äc c¸c file VRML bÞ nÐn bëi GZIP. C¸c file nÐn cã thÓ sö dông nh­ .wrz, .wrl.gz hoÆc sù më réng chuÈn .wrl. GZIP lµ mét chuÈn c©n b»ng trªn c¸c hÖ thèng UNIX nh­ng b¹n cã thÓ nhËn thÊy trªn phiªn b¶n PC hoÆc Mac. C¸ch tèt nhÊt ®Ó nÐn c¸c file lµ sö dông Chisel, lµ bé x¸c nhËn vµ bé ®¸nh gi¸ VRML cã thÓ bÞ cÊt c¸c file VRML GZIP. §©y lµ mét c«ng cô tèt ®Ó cã bÊt kú c¸ch nµo cho viÖc gì rèi m· bëi v× kh«ng cã ai viÕt VRML hoµn h¶o ngay tõ lÇn ®Çu tiªn. TÊt c¶ c¸c tµi liÖu internet theo chuÈn MIME, chuÈn VRML MIME lµ model/vrml, t­¬ng tù nã cã thÓ lµ x-world/x-wrml. Mçi khi b¹n t¹o thÕ giíi cña b¹n, b¹n cÇn t¹o nã lªn trang web ®Ó mäi ng­êi cã thÓ xem nã. §èi víi viÖc nµy b¹n cÇn mét vµi ISP (Internet Service Provider). B¹n cã thÓ sö dông kh«ng gian nµy ®Ó ®­a c¸c file lªn trang web, cã thÓ lµ c¸c file HTML th«ng th­êng. d. Headers vµ chó thÝch. VRML(Virtual Reality Modeling Language), là ngôn ngữ cho phép mô tả các đối tượng 3D của thể giới thực, và chạy trên môi trường web. Nó cho phép xây dựng nên các file . wrl có thể mở được bằng các trình duyệt web như IE hay NESCAPE. Một file vrml có dạng như sau: Tiêu đề file: #VRML V2.0 utf8 trong đó utf8 là cụm từ cho phép dùng các ký tự quốc tế trong file VRML sau đó là các nút. §iÒu nµy nãi cho c¸c browser xem xÐt file VRML, vµ phiªn b¶n nµy nã ®ang sö dông. Trong tr­êng hîp nµy nã lµ phiªn b¶n 2.0. VRML lµ tr­êng hîp dÔ bÞ ¶nh h­ëng(case sensetive), viÖc sö dông chÝnh x¸c nh­ b¹n ®· thÊy. PhÇn utf8 th«ng b¸o cho browser chuÈn chuçi v¨n b¶n ®Ó sö dông. VRML 1.0 hoÆc lµ ascii hoÆc utf8 nh­ng phiªn b¶n 2.0 chØ lµ utf8, tèt nhÊt ®Ó sö dông. BÊt kú dßng nµo b¾t ®Çu víi kÝ tù # lµ chó thÝch, vµ bÞ lê ®i khái bé ph©n tÝch có ph¸p VRML. TiÕp theo lµ VRML hîp lÖ. e,C¸c nót trong VRML Nút đầu tiên thường là nút WORLDINFO chứa thông tin đặc tả về file vrml sau đó là các loại nút khác để xây dựng nên file vrml. Nót nµy chøa th«ng tin chung vÒ thÕ giíi ( the world) nh­ tiªu ®Ò cña thÕ giíi, ®­îc hiÓn thÞ trong thanh tiªu ®Ò cña cö sæ browser t­¬ng tù nh­ cê TITLE trong HTML. WorldInfo còng cã thÓ chøa mét chuçi th«ng tin, chøa c¸c th«ng tin kh¸c vÒ file. B¹n cã thÓ ®Æt vµo c¸c tõ kho¸ cho c¸c search engine. Mét nót WorldInfo mÉu ®­îc chØ ra ë d­íi ®©y: WorldInfo { title "Floppy's VRML97 Tutorial Example 1" info ["(C) Copyright 1999 Vapour Technology" "guide@vapourtech.com"] } Cã thÓ cã c¸c chuçi phøc t¹p trong tr­êng info, b»ng c¸ch ®Æt chóng bªn trong ngoÆc vu«ng. Tiªu ®Ò kh«ng cÇn ngoÆc vu«ng, khi nã chØ lµ mét chuçi ®¬n lÎ. File VRML cã thÓ cã nhiÒu nót WorldInfo nh­ng chØ cã nót ®Çu tiªn ®­îc ph©n tÝch, c¸c phÇn sau bÞ lê ®i. VRML có 54 loại nút khác nhau, và được chia làm 9 nhóm, bao gồm: . Grouping Nodes : Các nút nhóm . Special Group Nodes: Các nút nhóm đặc biệt . Common Nodes: Các nút chung . Sensor Nodes: Các nút cảm biến . Geometry : Các nút hình học . Geometric Properties Nodes: Các nút thuộc tính hình học . Appearance Nodes : Các nút hình dáng . Interpolators Nodes Các nút nội suy . Bindable Nodes: Các có thể ghép nối được Một nút gồm có : Tên nút: Thường bắt đầu bằng chữ in hoa và chỉ có thể là một trong các tên chuẩn do vrml cung cấp, sau đó là đến các trường của nút chúng thường bắt đầu là chữ thường, mổi loại nút có các trường khác nhau. Gía trị của trường có thể là các giá trị thực hoặc các bộ giá trị thực hoặc có thể là một nút cơ bản, ta có thể hình dung các nút như các lớp trong lập trình hướng đối tượng. VRML không cho bạn định nghĩa thêm các nút mới của mình mà chỉ được dùng các nút cơ bản của nó. Một hình dạng hình học bất kỳ có thể được xây dựng qua nút Shape. Cấu trúc của nút này có dạng như sau: Shape{ appearance Appearance{ material Material{ diffuColor 1 0 0 Shininess 0 } textture ImageTextTure{} } geometry Box{} } trong đó appearance là thuộc tính của nút giá trị của nó chỉ có thể là nút Appearance dùng chỉ dạng bề mặt của vật thể . Trong nút Appearance co các trường material dùng để chỉ màu, độ bóng, độ trong suốt của vật thể. Trường textture dùng để chỉ kết cấu của vật thể, giá trị của trường này có thể là các nút ImageTextture,MovieTextture... Chúng ta điểm qua một số nút cơ bản e1.C¸c nót appearrance Khi chóng ta nh×n thÊy ®èi t­îng FBOX chóng ta ®· ®Þnh nghÜa tr­íc ®©y, nót Shape cã mét tr­êng gäi lµ appearance, nã sö dông ®Ó chøa tr­êng Appearance ®­îc chØ ra d­íi ®©y: DEF FBOX Shape { appearance Appearance { material Material { } } geometry Box { } } VÝ dô nµy cã mét tr­êng bªn trong nót Appearance, tr­êng material. Theo c¸ch nµy cã c¸c nót bªn trong c¸c nót d­êng nh­ lµ khã kh¨n, nh­ng cho phÐp b¹n ®Þnh nghÜa c¸c h×nh d¹ng do sö dông DEF vµ USE. §iÒu nµy lµ hiÖu qu¶ trong viÖc cã nhiÒu ®èi t­îng theo cïng mét c¸ch quan s¸t. Nót Appearance cã thÓ chøa tr­êng material vµ texture. tr­êng material chøa nót Material. Nót texture chøa mét trong sè c¸c lo¹i nót kÕt cÊu. Nh÷ng ®iÒu nµy ®­îc m« t¶ trong phÇn sau, tr­íc tiªn chóng ta gi¶i quytÕt c¸c nót Material. e2.C¸c nót Material Nót Material cã thÓ chøa 6 tr­êng, ®ã lµ: diffuseColor mµu s¾c th«ng th­êng cña ®èi t­îng specularColor mµu s¾c næi bËt cña c¸c ®èi t­îng chiÕu s¸ng emissiveColor §èi t­îng 'glows' víi ¸nh s¸ng cña nã tõ mµu s¾c nµy, nã kh«gn ph¶i lµ ¸nh s¸ng mÉu tõ c¸c ®èi t­îng kh¸c. ambientIntensity Sè l­îng c¸c ¸nh s¸ng bao xung quanh mµ ®èi t­îng ph¶n chiÕu. shininess c¸ch ¸nh x¹ cña ®èi t­îng transparency c¸ch lµm râ rµng ®èi t­îng. chó ý mét vµi browsers kh«ng hç trî c¸c ®èi t­îng tõng phÇn kh«ng râ rµng. Ba tham sè ®Çu tiªn lµ c¸c gi¸ trÞ mµu, ba tham sè sau lµ c¸c gi¸ trÞ ®¬n gi¶n gi÷a 0 vµ 1. C¸c mµu s¾c ®­îc chØ râ nh­ c¸c thµnh phÇn red, green vµ blue nh­ trong HTML. B¹n cã thÓ lÊy bÊt kú mµu nµo b¹n thÝch tõ viÖc kÕt hîp c¸c mµu red, green vµ blue. C¸c gi¸ trÞ mµu ®¬n lÎ n»m gi÷a 0( kh«ng mµu) vµ 1(mµu ®Çy ®ñ), v× vËy red ®Çy ®ñ ®­îc ®Þnh nghÜa lµ 1 0 0, tr¾ng lµ 1 1 1, x¸m lµ 0.5 0.5 0.5...C¸ch nµy cã thÓ chØ râ c¸c mµu trong khi sö dông nh­ng b¹n cã thÓ sö dông bé lùa chän mµu trong PaintShop Pro hoÆc mét vµi thø ®Ó cã thÓ nhËn ®­îc c¸c mµu b¹n thÝch vµ chuyÓn chóng thµnh gi¸ trÞ VRML. V× vËy nÕu b¹n muèn t¹o h×nh khèi ban ®Çu, víi mµu xanh b¸n trong suèt, b¹n sÏ ®Þnh nghÜa d¹ng cña nã nh­ sau: Shape { appearance Appearance { material Material { emissiveColor 0 0.8 0 transparency 0.5 } } geometry Box { } } e3,KÕt cÊu h×nh ¶nh( image texture) C¸c mµu s¾c thó vÞ lµ rÊt tèt nh­ng ®Ó tr«ng thùc sù lµ hÊp dÉn, chóng ta ph¶i cã s¬ ®å kÕt cÊu c¸c vËt thÓ. §iÒu nµy ®­îc thùc hiÖn qua tr­êng texture cña nót Appearance . tr­êng nµy chøa ba lo¹i nót kÕt cÊu. Lo¹i ®Çu tiªn chóng ta xem xÐt lµ ImageTexture. §©y lµ s¬ ®å kÕt cÊu c¬ së, ¸nh x¹ toµn bé h×nh ¶nh vµo mét ®èi t­îng. Nót cã thÓ lµ s¬ ®å kÕt cÊu mét ®èi t­îng víi file JPEG hoÆc PNG. Mét vµi browser cã thÓ hç trî nã, nh­ng ®©y kh«ng ph¶i lµ chuÈn. nót cã thÓ chøa ba tr­êng. §Çu tiªn, url chØ râ h×nh ¶nh ®Ó sö dông chuÈn d¹ng URL. B¹n cã thÓ chØ râ danh s¸ch h×nh ¶nh trong c¸c ngoÆc vu«ng, browser sÏ hiÓn thÞ h×nh ¶nh ®Çu tiªn trong danh s¸ch mµ nã t×m thÊy. Hai tr­êng kh¸c lµ repeatS vµ repeatT, th«ng b¸o liÖu kÕt cÊu lÆp l¹i theo h­íng trôc ngang (S) hay trôc däc(T). §iÒu nµy dÉn ®Õn gi¸ trÞ boolean lµ TRUE hoÆc FALSE. chóng chØ thùc sù hiÖu qu¶ khi kÕt hîp víi TextureTransform, chóng ta kh«g tr×nh bµy kü ë phÇn sau. B¹n cã thÓ chØ râ c¸c th«ng tin trong suèt trong c¸c h×nh ¶nh ®· sö dông trong tr­êng hîp nã thay thÕ l¹i sù trong suèt cña c¸c ®èi t­îng ban ®Çu. NÕu b¹n sö dông kÕt cÊu tØ lÖ x¸m, diffuseColor ®­îc nh©n lªn víi ®é dµy cña kÕt cÊu ®Ó t¹o ra kÕt cÊu thùc sù. Thùc tÕ, b¹n cã thÓ t¹o nhiÒu hiÖu qu¶ do kÕt hîp nót Material vµ ImageTexture. Nãi chung, chóng chØ thùc hiÖn nh÷ng g× b¹n mong muèn, v× vËy chØ cÇn quan s¸t vµ mét chót kinh nghiÖm lµ b¹n cã thÓ t¹o ra ®­îc. V× vËy ®Ó ®Þnh d¹ng kÕt cÊu cña hép thø hai víi kÕt cÊu g¹ch, chóng ta cã thÓ sö dông nh­ sau: Appearance { texture ImageTexture { url "brick.jpg" } } khi nót appearance cña hép thø hai. e4. Movie Texture MovieTexture nhËn lÊy phim MPEG vµ s¬ ®å kÕt cÊu lªn mét ®èi t­îng theo c¸ch nh­ ImageTexture. Nã cã ba tr­êng gièng nhau, ngoµi ra cã mét sè tr­êng kh¸c, ®ã lµ: speed Gi¸ trÞ speed mÆc ®Þnh lµ 1, 2 lµ tèc ®é t¨ng 2 lÇn. Gi¸ trÞ 0 lu«n hiÓn thÞ ë c¬ cÊu ®Çu tiªn. loop Gi¸ trÞ boolean ( (TRUE hoÆc FALSE), chØ râ liÖu phim lÆp hay kh«ng. startTime Khi b¾t ®Çu phim, trong mét vµi gi©y tõ nöa ®ªm cña ngµy 1 th¸ng giªng 1970. stopTime Khi kÕt thóc phim, trong mét vµi gi©y tõ nöa ®ªm cña ngµy 1 th¸ng giªng 1970. e5. Pixel Texture Nót nµy cho phÐp b¹n ®Þnh nghÜa c¸c kÕt cÊu b»ng tay trong file VRML. §iÒu nµy d­êng nh­ khã tin lµ cã thÓ ®Çy ®ñ nh­ng nã kh«ng cã nh­ ®· sö dông, b¹n sÏ thÊy sau ®©y. Nã cã tr­êng image thay thÕ cho tr­êng URL. Tr­êng image bao gåm hai con sè chØ râ chiÒu réng vµ cao cña kÕt cÊu, tiÕp theo lµ mét con sè chØ râ sè l­îng c¸c thµnh phÇn. Thµnh phÇn mµu s¾c lµ tØ lÖ x¸m, hai thµnh phÇn mµu s¾c lµ tØ lÖ x¸m víi ®é trong suèt, thµnh phÇn thø ba lµ mµu RGB vµ thø t­ lµ RGB víi ®é trong suèt. Sau c¸c ®èi sè nµy lµ danh s¸ch c¸c ®iÓm pixel, lµ c¸c sè hexa víi mét byte cho mçi thµnh phÇn. V× vËy pixel thµnh phÇn thø t­ lµ red vµ 50 % ®é trong suèt lµ 0xFF00007F. C¸c pixel ®­îc s¾p xÕp theo thø tù tõ ®¸y tr¸i ®Õn ®Ønh bªn ph¶i. VÝ dô ®­îc chØ ra d­íi ®©y: DEF PIXMAP Appearance { texture PixelTexture { image 2 2 3 0xFF0000 0x00FF00 0x0000FF 0xFF0000 } } Chóng ta chØ cÇn m« t¶ nhanh vÒ c¸c sè hexa. Th«ng th­êng ë m¸y tÝnh thuËn tiÖn khi chØ râ c¸c con sè lµ c¸c sè thËp ph©n th«ng th­êng (0-9) hoÆc nhÞ ph©n (0-1) vµ ngoµi ra cã mét lo¹i kh¸c lµ hexadecimal, cã d¹ng nh­ sau: Hexadecimal Decimal 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 A 10 B 11 C 12 D 13 E 14 F 15 F trong sè hexa lµ 15 trong sè thËp ph©n. 10 trong hexa lµ 16 trong sè thËp ph©n. Ch÷ sè hexa th«ng th­êng ®­îc chØ râ 0x ë phÝa tr­íc ®Ó dÔ dµng nhËn ra. VÝ dô 0x10 = 16, 0xFF = 255, vµ 0x7F = 12. e6. V¨n b¶n vµ kiÓu font( text vµ fontstyle) Nót nµy t¹o v¨n b¶n 2D trong thÕ giíi. TÊt c¶ ®Òu thùc sù ®¬n gi¶n trõ phi b¹n muèn thùc hiÖn c¸c ®iÒu phøc t¹p h¬n sö dông Fontstyle. Nót Text cã 4 tr­êng. Tr­êng ®Çu tiªn lµ string, b¹n cã thÓ ®Þnh nghÜa chuçi hoÆc danh s¸ch c¸c chuçi ®Ó hiÓn thÞ. Tr­êng fontStyle chøa nót FontStyle. Hai tr­êng cuèi lµ maxExtent, b¹n chØ râ ®é réng lín nhÊt ( theo ®¬n vÞ mÐt) cña v¨n b¶n vµ length lµ danh s¸ch chiÒu dµi ®èi víi mçi chuçi, v× vËy b¹n cã thÓ chØ râ ®é réng riªng biÖt cña mçi chuçi. NÕu c¸c length ®­îc chØ râ, browser sÏ ®Þnh l¹i kÝch th­íc cña v¨n b¶n ®Ó cho võa víi kÝch th­íc ®ã. geometry Text { string ["Hello", "World"] fontStyle USE HELLOFONT maxExtent 5 length [3, 3] } Nót Text lµ phøc t¹p, FontStyle phøc t¹p h¬n. C¸ch tèt nhÊt ®Ó thùc hiÖn ë ®©y lµ liÖt kª danh s¸ch c¸c tr­êng. FontStyle { size family style horizontal leftToRight topToBottom language justify spacing } size lµ chiÒu cao cña dßng v¨n b¶n theo hÖ mÐt. Tr­êng family cã thÓ nhËn 3 gi¸ trÞ vµ thay ®æi lo¹i bÒ mÆt cuØa font. Ba lo¹i ®ã lµ "SERIF", "SANS", hoÆc "TYPEWRITER", chóng rÊt râ rµng. §Ó thay ®æi c¸ch xem xÐt v¨n b¶n, b¹n cã thÓ sö dông tr­êng style, cã thÓ nhËn mét trong c¸c kiÓu sau: "PLAIN", "BOLD", "ITALIC", hoÆc"BOLD ITALIC". horizontal lµ gi¸ trÞ boolean chØ ra liÖu v¨n b¶n lµ ngang horizontal ("TRUE") hoÆc däc vertical ("FALSE"). leftToRight vµ topToBottom còng lµ gi¸ trÞ boolean vµ c©n b»ng trong c¸c ho¹t ®éng tr­íc. T­¬ng tù chuçi utf-8 cã thÓ xuÊt hiÖn kh¸c nhau, phô thuéc vµo ng«n ng÷ trong nã, v× vËy ®iÒu nµy lµ m· ho¸ hai kÝ tù ®èi víi ng«n ng÷. Thùc sù kh«ng biÕt c¸c m· lµ g×, tèt nhÊt lµ lê ®i tr­êng nµy. justify lµ hiÖu qu¶ vµ cãthÓ lµ mét trong bÊt kú "BEGIN", "MIDDLE", hoÆc "END". spacing lµ sè l­îng kh«ng gian tr«ngd gi÷a c¸c dßng trong v¨n b¶n. 1 lµ b×nh th­êng, 2 lµ gÊp ®èi kho¶ng c¸ch (dßng trång gi÷a mçi dßng. §ã lµ FontStyle , b¹n cã thÓ thùc sù lê ®i c¸c tr­êng nh­ng style, family vµ justify thùc sù lµ hiÖu qu¶. e7,Các đối tượng cơ bản Để chỉ hình dáng vật thể ta dùng trường geometry. Giá trị của trường này là các nút hình học cơ bản.VRML hỗ trợ 4 đối tượng cơ bản , đó là: Cone(hình nón), Cylinder(Hình trụ), Box(Hình hộp), Sphere(Hình cầu). Đây là bốn đối tượng hình học cơ bản giúp ta xây dựng nên các đối tượng hình học của mình .Cấu trúc của các nút này như sau Nút Box: Box{size cd cc cr}. Trong đó cd, cc, cr là các số thực lần lượt là chiều dài, chiều cao, chiều rộng của hình hộp. Tâm của hình hộp là gốc tọa độ hệ thống Nút Cylinder: Cone{ radius dk Chỉ bán kính của hình trụ height cc Chỉ chiều cao của hình hộp bottom TRUE/FALSE top TRUE/FALSE Hai giá trị này để chỉ xem hình trụ có nắp (TRUE) hay không(FALSE) ở đáy(bottom), đỉnh(top) của hình trụ } Nút Cone: Cone{ radius Một giá trị thực chỉ bán kính đáy của hình nón height Môt giá trị thực chỉ chiều cao của hình hộp } Nút Sphere: Sphere{ radius } trường radius chỉ bán kính của hình cầu Đây là bốn nút hình học cơ bản để bạn xây dựng nên các đối tượng hình học cơ bản của mình.Chúng được gọi là các nút hình học chuẩn. Để xây dựng nên các đối tượng hình học không chuẩn bạn có thể dùng các nút IndexedFaceSet, IndexedLineSet, IndexedPointSet,ElavationGrid, Extrusion Thông thường khi bạn tạo ra một đối tượng tâm của nó trùng với tâm của hệ toạ độ địa phương, để di chuểyn đối tượng bạn dùng nút Transform. Transform{ Scale Chỉ sự biến đối của đối tượng Translation chỉ các giá trị dịch chuyển theo các trục x, y, z Rotation chỉ góc quay và trục quay Children[] các nút con chịu tác động của translation và rotation } Trong nút Transform Scale có tác động đầu tiên, sau đó đến rotation và translation Để gom nhiều nút lại với nhau ta sử dụng nút Group, cú pháp của nó như sau: Group{ Children[] chứa các nút con của nút này } Trong VRML còn có các nút cảm biến với đuôi là Sensor, cho phép chúng ta mô phỏng một số loại cảm biến trong thực tế, như TimerSensor, TouchSensor, PlaneSensor.... Các nút nội suy, như PositionInterpolator, OrientationInterpolator, ColorInterpolator, cho phép bạn chuyển các giá trị khác kiểu về kiểu giá trị mà bạn mong muốn như chuyên sự thay đôi thời gian về giá trị dịch chuyển của một vật thể. Các nút nội suy đóng vai trò là các Engine trong luồng Animation của VRML. TRong VRML còn có một số loại nút khác như LOD, Switch.. 2.Các kiểu dữ liệu trong VRML Nh­ ®· nãi ë phÇn tr­íc, c¸c file VRML bao gåm mét nhãm c¸c nót. C¸c nót nµy cã thÓ chøa c¸ nót kh¸c vµ cã thÓ chøa c¸c tr­êng. Mçi tr­êng cã c¸c kiÓu d÷ liÖu kh¸c nhau. Sau ®©y lµ m« t¶ cña chóng. SFBool §©y lµ gi¸ trÞ boolean ®¬n lÎ, cã thÓ nhËn gi¸ trÞ "TRUE" or "FALSE". SFColor & MFColor SFColor lµ mét tr­êng chøa mµu ®¬n lÎ, ®­îc t¹o nªn tõ ba sè thùc dÊu chÊm ®éng gi÷a 0 vµ 1 t­¬ng øng víi c¸c gi¸ trÞ mµu red, green vµ blue, vÝ dô 0 1 0 lµ green. MFColor lµ mét tr­êng chøa c¸c sè nh©n, vÝ dô [0 1 0, 1 0 0, 0 0 1]. SFFloat & MFFloat SFFloat lµ gi¸ trÞ dÊu chÊm ®éng ®¬n lÎ, vÝ dô 7.5. MFFloat lµ mét sè c¸c gi¸ trÞ dÊu chÊm ®éng, vÝ dô [1.0, 3.4, 76.54]. SFImage SFImage lµ h×nh ¶nh hai chiÒu hoÆc lµ mµu hoÆc lµ x¸m. Nã bao gåm: Hai sè nguyªn, ®¹i diÖn chiÒu réng hoÆc chiÒu cao cña h×nh ¶nh Mét sè nguyªn biÓu thÞ sè thµnh phÇn cña h×nh ¶nh. 1 chØ lµ c¸ møc x¸m, 2 lµ c¸c møc x¸m víi ®é trong suèt, 3 lµ mµu RGB, 4 lµ RGB víi ®é trong suèt. Sau ®ã, cã c¸c con sè hexa are width * height bao gåm ahi ch÷ sè cho mçi thµnh phÇn. V× vËy 0xFF lµ mµu tr¾ng trong h×nh ¶nh 1- thµnh phÇn vµ 0xFF00007F sÏ lµ nöa mµu ®á trong h×nh ¶nh 4- thµnh phÇn. C¸c pixel ®­îc chØ râ tõ tr¸i sang ph¶i, tõ trªn xuèng d­íi. SFInt32 & MFInt32 C¸c sè nguyªn ®¬n lÎ hoÆc chuçi 32 bit cã thÓ theo d¹ng thËp ph©n hoÆc hexa. C¸c sè hexa b¾t ®Çu víi 32 bit, vÝ dô 0xFF lµ 255 hÖ thËp ph©n. SFNode & MFNode SFNode lµ mét nót ®¬n lÎ vµ MFNode lµ danh s¸ch c¸c nót. Tr­êng children víi nhiÒu nót lµ kiÓu MFNode. SFRotation & MFRotation C¸c tr­êng nµy chØ râ mét phÐp quay xung quanh mét trôc. Nã ®­îc t¹o nªn tõ 4 sè thùc dÊu chÊm ®éng. Ba sè thùc ®Çu tiªn chØ râ c¸c to¹ ®é X, Y vµ Z cho c¸c vect¬ t­¬ng øng víi trôc ®Ó quay, sè thø t­ lµ radian ®Ó quay. H¬n n÷a sù lùa chän lµ rotation trong phÇn 1.3. SFRotation lµ tËp c¸c gi¸ trÞ ®¬n lÎ, MFRotation lµ mét danh s¸ch. SFString & MFString Lo¹i nµy chøa danh s¸ch c¸c kÝ tù trong tËp kÝ tù utf-8. ASCII lµ tËp hîp phô cña utf-8, v× vËy b¹n kh«ng cÇn lo l¾ng vÒ tËp c¸c kÝ tù kh¸c nhau hoÆc vÒ bÊt kú ®iÒu g× kh¸c. Chuçi (SFString) nh­ "Hello", trong dÊu nh¸y kÐp. Mét danh s¸ch (MFString) tr«ng gièng nh­ : ["Hello", "World"]. SFTime & MFTime Thêi gian ®¬n lÎ hoÆc mét danh s¸ch thêi gian. Thêi gian ®­îc chØ râ nh­ c¸c sè dÊu chÊm ®éng biÓu thÞ sè l­îng c¸c gi©y tr«i qua tõ nöa ®ªm ngµy 1 th¸ng giªng 1970. §iÒu nµy t¹o nªn nhiÒu c¶nh quan h¬n khi chó ý ®Õn c¸c sù kiÖn sau ®ã. SFVec2f & MFVec2f C¸c vect¬ ®¬n lÎ hoÆc danh s¸ch c¸c vect¬ 2D. Mét vect¬ 2D lµ mét cÆp c¸c sè thùc dÊu chÊm ®éng. SFVec3f & MFVec3f C¸c vect¬ ®¬n lÎ hoÆc danh s¸ch c¸c vect¬ 3D. Mét vect¬ 3D lµ mét bé 3 c¸c sè thùc dÊu chÊm ®éng. 3.Hệ toạ độ trongVRML TÊt c¶ c¸c kho¶ng c¸ch trong VRML ®­îc ®o b»ng mÐt. . HÖ thèng to¹ ®é VRML ®­îc chØ ra trong s¬ ®å sau: X Y Z C¸c phÐp quay trong VRML lµm viÖc theo luËt tay ph¶i. NÕu b¹n t­ëng t­îng viÖc ®Æt bµn tay bao trïm lªn mét trong sè c¸c trôc, víi ngãn tay c¸i chØ theo chiÒu d­¬ng, h­íng quay d­¬ng cïng chiÒu víi h­íng cña bµn tay, nghÜa lµ ng­îc chiÒu víi kim ®ång hå lµ h­íng d­¬ng. §iÒu nµy lµ ®óng ®èi víi c¸c phÐp quay ®èi víi bÊt kú trôc nµo, v× vËy nÕu b¹n muèn quay mét ®èi t­îng mét gãc 90 xung quanh trôc X, b¹n sÏ ph¶i sö dông gãc quay ©m 90. §iÒu nµy còng ¸p dông cho c¸c phÐp quay xung quanh mét trôc tuú ý, ®­îc gi¶i thÝch trong phÇn sau cña tµi liÖu nµy. Mét ®iÓm cÇn chó ý lµ c¸c phÐp quay ®­îc ®o b»ng radian chø kh«ng ®o b»ng ®é. V× vËy ®Ó thùc hiÖn phÐp quay nh­ ®· m« t¶ ë trªn, b¹n phải thùc hiÖn phÐp quay -1.57 xung quanh trôc X. Ta phải nhớ là 3.14 radian tương ứng với 180 độ 4,Các phép biến đổi trong VRML §Ó t¹o nªn thÕ giíi sö dông tÊt c¶ mäi thø, chóng ta cÇn cã thÓ biÕn ®æi ®­îc mäi ®èi t­îng. VRML cã ba lo¹i biÕn ®æi cã thÓ ¸p dông cho c¸c ®èi t­îng. §ã lµ translations, rotations, vµ scales, vµ chóng ®­îc sö dông trong nót Transform. Nh­ng kh«ng ph¶i mét nót Transform ph¶i cã ®Çy ®ñ ba lo¹i biÕn ®æi trªn, vÝ dô trong nót Transform chØ cã phÐp quay rotation. C¸c phÐp biÕn ®æi trong Transform cã thÓ ¸p dông cho c¸c nót con children cña nót. §iÒu nµy gäi lµ mét tæ hîp, mét nót cha cã thÓ cã nhiÒu nót con. Có ph¸p cho vÊn ®Ò nµy ®­îc chØ ra d­íi ®©y, ¸p dông cho nót Transform . Transform { translation 1 1 1 rotation 0 1 0 0.78 scale 2 1 2 children [ USE FBOX ] } Mét nót Transform cã thÓ cã c¸c tæ hîp kh¸c bªn trong nót con cña nã, cho phÐp b¹n thùc hiÖn tuÇn tù mét chuçi c¸c phÐp biÕn ®æi. Chó ý r»ng trËt tù c¸c phÐp biÕn ®æi lµ kh«ng quan träng. Mét phÐp quay ®­îc tiÕp theo mét phÐp biÕn ®æi kh«ng gièng víi mét phÐp biÕn ®æi thùc hiÖn sau phÐp quay. Bªn trong mét nót Transform ®¬n lÎ, c¸c phÐp biÕn ®æi ®­îc thùc hiÖn theo mét trËt tù chÆt chÏ: Scale, Rotate vµ Translate. V× vËy nÕu b¹n muèn thùc hiÖn phÐp biÕn ®æi sau phÐp quay, b¹n cÇn tæ hîp c¸c nót Transform bªn trong c¸c nót kh¸c. TiÕp theo chóng ta cÇn m« t¶ mçi lo¹i phÐp biÕn ®æi lµm viÖc nh­ thÕ nµo. Translation and Scale ( PhÐp biÕn ®æi vµ tÝnh tØ lÖ) Cã hai phÐp biÕn ®æi t­îng tù nhau, c¶ hai ®Òu nhËn ba ®èi sè : gi¸ trÞ x, y vµ z. PhÐp biÕn ®æi dÞch chuyÓn trung t©m cña ®èi t­îng trong c¸c kho¶ng c¸ch nµy theo h­íng thÝch hîp. TØ lÖ nh©n víi kÝch th­íc cña ®èi t­îng bëi c¸c gi¸ trÞ nµy theo c¸c h­íng thÝch hîp. Mét phÐp biÕn ®æi 0 theo mét h­íng sÏ lo¹i bá c¸c ®èi t­îng kh«ng ¶nh h­ëng ®Õn h­íng. YÕu tè tØ lÖ 0 lµm cho ®èi t­îng kh«ng chÝnh x¸c theo h­íng ®ã, lµ ®iÒu b×nh th­êng kh«ng ®­îc mong muèn. YÕu tè 1 ®­îc yªu cÇu mµ kh«ng cã ¶nh h­ëng nµo c¶. Quan träng chó ý r»ng viÖc tÝnh tØ lÖ lµ t­¬ng ®èi cho nguyên bản, kh«ng ph¶i lµ trung t©m cña ®èi t­îng. V× vËy ®Ó tÝnh tØ lÖ cña trung t©m cña ®èi t­îng, chóng ta ph¶i ®¶m b¶o r»ng ®èi t­îng ®­îc ®Æt trung t©m t¹i phÇn më ®Çu. §ã lµ lÝ do t¹i sao viÖc tÝnh tØ lÖ ph¶i thùc hiÖn tr­íc phÐp quay vµ phÐp biÕn ®æi. Rotation ( phÐp quay) PhÐp quay cã ®iÓm h¬i kh¸c so víi hai lo¹i ë trªn. Nã nhËn 4 tham sè, ®Çu tiªn lµ ba to¹ ®é x¸c ®Þnh trôc cña phÐp quay vµ cuèi cïng lµ gãc quay, tÝnh b»ng radian. VÝ dô ®Ó quay 1 radian xung quanh trôc Y, b¹n ph¶i viÕt: Transform { rotate 0 1 0 1 children [ USE FBOX ] } ChiÒu dµi cña trôc quay lµ bÊt kú, kh«ng cÇn thiÕt lµ 1. B¹n cã thÓ sö dông gi¸ trÞ Y lµ 50 nÕu b¹n thÝch nh­ng nã kh«ng thùc hiÖn ®iÒu g× kh¸c víi gi¸ trÞ Y lµ 1. Trôc quay hoµn toµn lµ tuú ý, b¹n cã thÓ quay quanh bÊt kú trôc nµo b¹n thÝch. VÝ dô trôc 1 0.3 2.45 lµ hoµn toµn hîp lý. ThËt lµ khã kh¨n ®Ó t¹o c¸c phÐp quay theo c¸ch nµy, tuy nhiªn chóng cã thÓ khã kh¨n ®Ó quan s¸t, ®Æc biÖt nÕu b¹n kh«ng cã bÊt kú sù luyÖn tËp nµo. ChÝnh v× ®iÒu ®ã Vapour Technology ®· t¹o ra mét cÆp c«ng cô Dizzy vµ Twister. Twister t¹o phÐp quay vu«ng gãc víi trôc tõ mét lo¹i ®¬n gi¶n h¬n vµ Dizzy kÕt hîp nh©n c¸c phÐp quay vu«ng gãc víi trôc ®Ó t¹o mét lo¹i ®¬n gi¶n h¬n víi hiÖu qu¶ t­¬ng tù. B¹n cã thÓ sö dông c¸c ®iÒu nµy ®Ó dÔ dµng h¬n trong viÖc quay c¸c ®èi t­îng trong thÕ giíi. 5.C¸c sù kiÖn Mét sè c¸c tr­êng, hÇu nh­ c¸c nót ®Òu chøa c¸c sù kiÖn. Cã hai lo¹i sù kiÖn , eventIn vµ eventOut. C¸c eventOut lµ c¸c sù kiÖn s¾p ®i ra, ph¸t sinh c¸c th«ng tin nh­ thay ®æi nh­ thay ®æi mét gi¸ trÞ hoÆc thêi gian cña kÝch chuét. C¸c eventIn lµ c¸c sù kiÖn s¾p ®Õn, chÊp nhËn th«ng tin tõ bªn ngoµi cña nót vµ thùc hiÖn mét vµi ®iÒu víi nã. Mçi sù kiÖn cã mét lo¹i d÷ liÖu thÝch hîp víi chóng, nh

Các file đính kèm theo tài liệu này:

  • doc77857.DOC
Tài liệu liên quan