Bài giảng Đồ họa máy tính: Bài 8 - Lê Tấn Hùng

11 7 0
Bài giảng Đồ họa máy tính: Bài 8 - Lê Tấn Hùng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài 8 - Ngôn ngữ mô hình hóa thực tại ảo VRML. Những nội dung chính được trình bày trong bài gồm có: VRML là gì? Tính chất của VRML, cấu trúc file VRML, phần tử cơ bản của VRML, cấu trúc phân lớp, cấu trúc cảnh, cơ bản về nút shape,... Mời các bạn cùng tham khảo để biết thêm các nội dung chi tiết.

Ngôn ngữ mô hình hóa thực ảo VRML VRML ? Lịch sử VRML ngôn ngữ văn dùng để mô tả môi trờng tơng tác vật thể 3-D Các file text VRML có đuôi wrl VRML 1.0 dựa ngôn ngữ mô tả Silicon Graphics 3D gäi lµ “Open Inventor” VRML 1.0 cho phép mô tả cảnh tỉnh không tơng tác VRML 2.0 ngôn ngữ mô tả dựa Silicon Graphics đợc goi Moving Worlds VRML1 (1994) & VRML2 (1997) có mở rộng thêm chủ đề liªn quan „ „ „ „ „ (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 CÊu tróc file VRML TÝnh chÊt „ Bạn xem file VRML nhờ trình duyệt VRML : Một ứng dụng hỗ trợ VRML Một ứng dụng VRML nhúng vào trình duyệt HTML Bạn xem file VRML từ đĩa cứng , hay qua mạng Internet Toàn trang Web „ Nhóng vµo trang Web „ Toµn bé khung cđa trang Web „ Nhóng vµo khung cđa trang Web Nhúng vào ứng dụng đa thời gian Bạn tạo file VRML nhờ : Một trình soạn thảo văn đơn giản Một chơng trình ứng dụng Một trình dịch định dạng mô hình hóa 3D Một ngôn ngữ tạo vật thể (nh ngôn ngữ kịch Perl ) Trong file VRML gồm có : Đầu đề file „ Comments – chó thÝch cđa b¹n „ Nodes nút chứa thông tin quan trọng cảnh vật Fields thuộch tính nút mà bạn thay đổi Values thuộc tính giá trị Và (c) SE/FIT/HUT 2002 Comments-chó thÝch „ „ „ „ „ Lêi chó thích bắt đầu với ký tự # Ký tự # nháy kép bắt đầu thích Chú ý dòng đầu VRML 2.0 : #VRML 2.0 utf8 bắt buộc ! Từ khóa utf dïng ®Ĩ nãi ®Õn bé ký tù qc tÕ UTF-8 đợc dùng file Lời thích khoảng trắng không đợc bảo toàn VRML document server (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn #VRML V2.0 utf8 # example1.wrl - a yellow box Shape { geometry Box{ } # default box appearance Appearance # override appearance {material Material # with a new material {diffuseColor 1.0 1.0 0.0 # yellow } } } (c) SE/FIT/HUT 2002 Phần tử VRML: Nót „ „ „ „ „ „ „ Mét file VRML gồm có danh sách nút, nút chứa phần thông tin mô tả toàn cảnh Một nút định nghĩa hình dạng vật thể, hay thuộc tính của đối tợng , nh màu màu sắc hệ tọa độ Mỗi nút có tên, theo sau cặp dấu { } không chứa trờng nhiều trờng Một câu lệnh trờng gồm có tên trờng sau có hay nhiều giá trị.Các trờng đợc viết theo trật tự khác Tên nút bắt đầu ký tự hoa, tên trờng bắt ®Çu b»ng ký tù th−êng (case sensitive) VÝ dụ nót Shape, Box, Appearance, Material,lights, sounds, (c) SE/FIT/HUT 2002 Page CÊu tróc ph©n líp „ „ „ „ „ „ CÊu tróc c¶nh Nót Shape chøa hai tr−êng, geometry appearance, trờng lại chứa nút khác đợc coi nh giá trị chúng Shape { appearance NULL exposedField SFNode geometry NULL exposedField SFNode } Đôi nót Shape cã mét tr−êng Appearance nh−ng kh«ng cã tr−êng geometry (ví dụ nh vật thể không nhìn thấy!) Tr−êng geometry chøa nót Box vµ tr−êng appearance coi nót Appearance nh giá trị có Nút Appearance lại chứa nút khác Material Câu trúc nút mà nút lại đợc chứa nút khác gọi scene graph z Shape ã ã ã ã ã Box Cone Cylinder Sphere Text „ C¸c tr−êng cđa nót Geometry điều khiển kích thớc Kích thớc thờng có đơn vị m, nhng đơn vị g× „ „ Box {size 12 10 d) } Xem code Cone { bottomRadius units wide height side bottom Xem code } „ „ „ „ # x, y, z (=w, h, „ Ch¹y vÝ dơ # so 10 12 TRUE TRUE Ch¹y vÝ dơ Nót text „ VRML giúp bạn chia lớp thành khoanh quản lý đợc Mỗi nút riêng lẻ đơn giản, kết nối nút cho phép tạo lớp phức tạp Nút shape đợc tạo nên trung tâm giới VRML Mét file VRML cã thĨ chøa nhiỊu nót shape C¸c nút shape trùng lên chúng đợc tạo nên vị trí Bạn nên xem sử dụng trờng geometries sau Cơ b¶n vỊ nót shape „ (c) SE/FIT/HUT 2002 „ z Material (c) SE/FIT/HUT 2002 Cơ nút shape z Appearance diffuseColor „ (c) SE/FIT/HUT 2002 Nót Shape lµ viên gạch tạo nên giới VRML Các nút Shape gốc khối chuẩn : z Box appearance material „ „ geometry Cylinder { radius # chiÒu réng lµ height bottom TRUE # “cup” cã cạnh đáy side TRUE top FALSE # nhng đỉnh } Chạy ví dụ Xem code Sphere # đơn giản nút shape { radius # nhng phức tạp Chạy ví dụ } Xem code (c) SE/FIT/HUT 2002 Cấu trúc ảnh bitmap Tránh tạo đặc tả kỹ thuật Web-based 3D/VR Text rt hu ích hệ chuyên gia,ví dụ nh khoa häc vÒ trùc quan Text { string “Hi!” # multi-field length # stretch to this width (0=natural width) fontStyle FontStyle { family“SERIF” # or SANS or TYPEWRITER style PLAIN # or BOLD ITALIC size } Chaỵ vÝ dô } Xem code (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn „ „ Sö dụng ảnh bitmap thay cho mô hình 3D thật cụ thể tiết kiệm đợc nhiều thời gian xư lý Tuy vËy viƯc sư dơng réng r·i ảnh bitmap có bất lợi sau: Cấu trúc ảnh đợc gủi cho trình duyệt ,có thể phải qua trình thông tin chậm Thiết kế ảnh bitmap đa lên hình công đoạn xử lý kỹ l−ìng (c) SE/FIT/HUT 2002 Page CÊu tróc VRML „ „ „ Appearance { texture ImageTexture { url “skin.gif” # GIF, JPG or PNG repeatSTRUE # repeat or stretch? repeatT TRUE } } Xem code Chạy ví dụ Các Texture URL đầy đủ URLtơng đối đơn giản nh sử dụng Có ba kiểu nút texture : ImageTexture, MovieTexture and PixelTexture Xem code Chạy ví dụ Hệ tọa độ „ „ „ „ „ „ „ „ Mét file VRML xây dựng nên thành phần giới VRML Một file thành đợc xây dựng giới hệ toạ độ Theo mặc định , tất vật thể đợc xây dựng từ gốc hệ toạ ®é VRML sư dơng hƯ to¹ ®é thn hƯ to¹ độ Đề Các Đơn vị chuẩn đo chều dài khoảng cách VRML m Góc radian Một vòng quay radian 360 radian, khoảng 6.28 radian, 90 /2 radian, khoảng 1.57 radian (c) SE/FIT/HUT 2002 Chuyển đổi hệ toạ độ Một nút transform tạo hệ toạ độ cã: „ Positioned :gèc „ Rotated :gãc quay „ Scaled :tỷ lệ Liên hệ với hệ toạ độ cha Các vật thể đợc xây dựng hệ toạ độ đợc định vị ,quay tỷ lệ với Nhóm nút Transform tạo nhóm với toạ độ ã rotation hớng ã scale kích cỡ ã translation vị trí ã children vật thậ tạo Transform { translation rotation scale children [ ] } „ (c) SE/FIT/HUT 2002 Tr−êng children „ Tr−êng children bao gåm mét danh s¸ch mét hay nhiỊu nót „ Transform { children [ Shape { } Shape { } Transform { } ] } (c) SE/FIT/HUT 2002 Nót transform „ „ (c) SE/FIT/HUT 2002 Nót transform Trờng Translation định vị hệ toạ độ X,Y Z „ Transform { # X Y Z translation 2.0 0.0 0.0 children [ ]} Tr−êng Scale ®Ĩ co hay giản hệ toạ độ dựa vàu hệ số tỷ lệ trục X, Y, Z Transform { # X Y Z scale 0.5 0.5 0.5 children [ ] } Trờng Rotation định hớng hệ toạ độ quay quoanh cạnh góc quay ã Góc thờng đợc đu đơn vị radian • radian = ®é/ 180.0 * 3.141 Transform { # X Y Z Angle rotation 0.0 0.0 1.0 0.52 children [ ] } „ (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn „ Co giÃn , xoay dịch hệ toạ độ, sau Transform { translation 2.0 0.0 0.0 rotation 0.0 0.0 1.0 0.52 scale 0.5 0.5 0.5 children [ ] } C¸c thao tác đợc thực từ dới lên bottom-up: Trờng children đợc co giÃn ,xoay sau dịch Thứ tự trờng đợc ấn định, độc lập với trật tự trờng Chạy ví dụ Xem code (c) SE/FIT/HUT 2002 Page nót Appearance „ nút Material Các vật thể gốc có màu phát từ bề Một nút Appearance miêu tả toàn màu trắng hình dạng vật thể Bạn điều khiển màu ã Trờng material gåm c¸c vËt thĨ: thc tÝnh nh− color, transparency, etc ã Màu bóng Shape { ã Màu phát appearance Appearance { • TÝnh suèt material } ã Tính không chiếu sáng geometry } ã Cờng độ ánh sáng bao quanh Một nút Material điều khiển thuộc tính chất liệu vật thể ã diffuseColor màu bóng ã emissiveColor màu phát ã transparency Trong suèt hay kh«ng Shape { appearance Appearance { material Material { diffuseColor 0.8 0.8 0.8 emissiveColor 0.0 0.0 0.0 transparency 0.0 } } geometry } (c) SE/FIT/HUT 2002 Nút material Bảng màu thờng dùng Nút Material điều khiển tính chiếu sáng vật thể ã specularColor điểm có màu bật ã shininess kích cở chỗ bật ã ambientIntensity hiêu ứng ánh sáng xung quanh „ (c) SE/FIT/HUT 2002 Shape { appearance Appearance { material Material { specularColor 0.71 0.70 0.56 shininess 0.16 ambientIntensity 0.4 } } geometry } Xem code Ch¹y vÝ dơ „ „ Th«ng th−êng chóng ta cÈn nhãm đối tợng lại với VRML dùng nút Group ®Ĩ thùc hiƯn ®iỊu nµy Nót Group cã thĨ cã nút Có thể nút c¸c nót group Cã c¸c kiĨu nót group sau: Transform Group Anchor Inline Collision Switch specular Color shininess 0.30 0.30 0.30 0.50 0.70 0.70 0.80 0.10 Copper 0.26 0.30 0.11 0.00 0.75 0.33 0.00 0.08 Gold 0.40 0.22 0.15 0.00 0.71 0.70 0.56 0.16 Metalic Purple 0.17 0.10 0.03 0.22 0.64 0.00 0.98 0.20 Metalic Red 0.15 0.27 0.00 0.00 0.61 0.13 0.18 0.20 Plastic Blue 0.10 0.20 0.20 0.71 0.83 0.83 0.83 0.12 (c) SE/FIT/HUT 2002 KÕt nèi tới vị trí khác nút Group diffuse Color Aluminum (c) SE/FIT/HUT 2002 ambient Intensity Mô tả LOD Billboard Bạn nhóm vật thể lại với để tạo thành vật thể phức t¹p VRML cã nhiỊu nót group bao gåm Group { } Switch { } Transform { } Billboard { } Anchor { } Inline { } Chaỵ ví dụ Xem code (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn „ „ „ Còng nh− trang Web , siêu liên kết sẵn có VRML Có thể kết nối tới kiểu liệu hợp lệ , bao gåm c¸c trang VRML kh¸c, c¸c trang HTML ứng dụng CGI Vị trí (x, y, z) trỏ đợc truyền tới URL, chØ thùc sù cã Ých víi c¸c øng dơng CGI (c) SE/FIT/HUT 2002 Page C¸c nót Group-Switch-Transform Nót Anchor Inline Nút Group tạo nút khác Mỗi nút child group đợc hiĨn thÞ „ Group { children [ ] } „ Nót nhãm Switch t¹o mét nhãm cã thĨ chun cho „ ChØ cã mét nót child group is nhóm đợc hiển thị Bạn chọn nút child ã Nút đợc đánh số tờng minh từ ã A -1 không chän nót nµo Switch { whichChoice choice [ ] } Xem code Chaỵ ví dụ Nút Transform tạo nhóm dựa hệ toạ độ Mỗi nút child đợc hiển thị Transform { translation 0.0 0.0 0.0 rotation 0.0 1.0 0.0 0.0 scale 1.0 1.0 1.0 children [ ] } Nót nhãm Billboard t¹o nhóm với hệ toạđộ đặc biệt ã Mỗi nút child đợc hiển thị displayed ã Hệ toạ độ trở lại mặt xem Billboard { axisOfRotation 0.0 1.0 0.0 children [ ] } Nót Anchor t¹o nhóm mà hoạt Nút Inline tạo nhóm đặc biệt từ động nh kiểu kích chuột đợc nội dung file VRML khác Chỉ nút child đợc hiển thị Nút ®äc tõ file ®−ỵc chän bëi URL „ KÝch cht vào nút child theo sau URL Mỗi nút child đợc hiển thị Trờng description đặt tªn cho nót „ Inline { url "table.wrl" } anchor „ Inline { url "table.wrl" } Anchor { Transform { url "stairwy.wrl" translation -0.95 0.0 0.0 description "Twisty Stairs" rotation 0.0 1.0 0.0 3.14 children [ ] } children [ Inline { url "chair.wrl" } ] } Xem code Ch¹y vÝ dơ Ch¹y vÝ dô Xem code „ „ (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Đặt tên Từ khóa use Nếu nhiều vật thể giống yếu tố hình học hay hình dạng , bạn phải dùng nhiều nút giống hệt Thay vào , định nghĩa tên cho nút tìm thấy Sau đó, sử dụng tên để chia sẻ cho nút tơng tự ngữ cảnh Cú pháp DEF tạo tên cho nút Shape { appearance Appearance { material DEF RedColor Material { diffuseColor 1.0 0.0 0.0 } } geometry } DEF bắt buộc phải ký tự hoa Có thể đặt tên cho nút Tên hầu hết chuỗi ký tự số Trong file tên phải Từ khoá USE cho phép sử dụng nút đà đợc đặt tªn tr−íc „ Shape { appearance Appearance { material USE RedColor } geometry } Xem code (c) SE/FIT/HUT 2002 USE bắt buộc phải chử hoa Sử dụng lại nút đà đợc đặt tên gäi lµ mét biÕn hay mét thĨ hiƯn Mét nót đà đợc đặt tên có vài thể Mỗi thể chia sẻ miêu tả nút Chỉ có thể hiên mà tên nút đà đợc định nghĩa file (c) SE/FIT/HUT 2002 Giới thiệu hoạt cảnh u điểm Chạy ví dụ Đặt tên sử dụng nút: Lu đà đánh vào Giảm kích thớc file Cho phép thay đổi nhanh chãng c¸c vËt thĨ cã cïng thc tÝnh „ Tăng tốc độ cho trình xử lý trình duyệt Tên cần thiết cho cảnh động „ „ „ (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn C¸c nót nh− Billboard Anchor có hành động xây dựng sẵn Bạn tạo hành động riêng bạn nh làm cho vật thể di chuyển,xoay, co giÃn Chúng ta cần phơng thức để kích , thời gian hoá, đáp ứng chuỗi kiện theo trật tự để tơng tác tốt ngời dùng giới bên Hầu hết nút thành phần dòng hoạt cảnh Nút hoạt động nh phần điện tử ảo Nút gửi nhận kiện Các đờng dây nối nút lại với Một kiện thông báo đợc gửi nút Một giá trị liệu (giống nh dịch chuyển) Thời gian hoàn thành (Khi kiện đợc chứng nhận đà đợc gửi) (c) SE/FIT/HUT 2002 Page Thêm kiện Cài đặt hoạt cảnh Để quay vật thể: ã Nối mét nót mµ gưi sù kiƯn rotation víi tr−êng rotation nút Transform Để làm vật thể nhấp nháy: • Nèi nót gưi sù kiƯn color víii tr−êng diffuseColor nút Material Để cài đặt dòng hoạt cảnh , bạn cần ba thứ : Một nút gửi kiện Nút phải đợc đặt tên với câu lệnh DEF Một nút nhận kiện Nút phải đợc đặt tên với câu lệnh DEF Một đờng dây kết nốichúng lại Mỗi nút có trờng , thông tin vào thông tin cần có: field: Một giá trị liệu đợc lu trử eventIn: đầu vào eventOut: đầu Một trờng exposedField viết gọn cho giá trị liệu, đầu vào đầu (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Các ví dụ Vào- Nút OrientationInterpolator có kiện : value_changed đa giá trị gãc xoay „ Nót PositionInterpolator cã sù kiƯn : value_changed đa vị trí Nút TimeSensor có sù kiƯn ra: „ time ®−a thêi gian Tõ khóa route Nút Transform có kiện vào: „ set_translation „ set_rotation „ set_scale „ Nót „ „ Material có kiện vàu: set_diffuseColor set_emissiveColor set_transparency Câu lệnh ROUTE cho phép kết nối Các quy ớc đặt tên hai nút lại với : Hầu hết nút có exposedFields Tên nút gửi kiện Nếu trờng exposed tên xxx, thì: Tên nút nhận s kiện vàu ã set_xxx kiện vào ROUTE đợc gán cho trờng MySender.rotation_changed ã xxx_changed kiện TO MyReceiver.set_rotation đợc gửi trờng thay ROUTE TO bắt buộc phải đổi ký tự hoa ã Các tiếp ngữ set_ _changed tuỳ chọn nhng nên có để phân biệt Nút Transform có: Trờng rotation ã Sự kiện vào set_rotation ã Sự kiện rotation_changed (c) SE/FIT/HUT 2002 Hoạt cảnh (c) SE/FIT/HUT 2002 điều khiển thời gian Hoạt cảnh cho phép thay đổi qua thời gian: ã Vị trí ô tô ã Hớng - máy bay lợn ã Màu sắc đổi mùa Hoạt cảnh bắt buộc điều khiển qua thời gian: ã Khi bắt đầu dừng ã Møc ®é nhanh chËm (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn „ „ „ „ Nút TimeSensor cho phép bạn điều khiển thời gian bắt đầu kết thúc Nút cảm ứng tạo kiện thời gian chạy Để kích hoạt , dÉn c¸c sù kiƯn thêi gian tíi c¸c nót khác Nút TimeSensor tạo hai kiện thời gian absolute and fractional Sự kiện thời gian Absolute tạo thời gian thực ã Thời gian tuyệt đối đợc đu giây từ 12:00h mồng tháng năm 1970! • RÊt cã Ých cho viƯc triƯu gäi mét sù kiƯn ë thêi gian thĨ (c) SE/FIT/HUT 2002 Page sử dụng thời gian phân đoạn Sự kiện thời gian phân đoạn nhận giá trị sè tõ 0.0 tíi 1.0 „ Khi nót c¶m øng thời gian bắt đầu , đầu 0.0 Kết thúc chu kỳ_ cycle, đầu 1.0 Số giây 0.0 1.0 đợc xác định xung tuần hoàn_ cycle interval Cảm biến thời gian chạy mÃi , chạy qua vòng dừng Nút timesensor Nút TimeSensor tạo kiện dựa vào thời gian Thời gian bắt đầu_ startTime thêi gian kÕt thóc_ stopTime „ ch¹y „ Thêi gian tuần hoàn_cycleInterval thời gian cho chu kỳ Lặp_loop có lặp lại hay không „ TimeSensor { cycleInterval 1.0 loop FALSE „ startTime 0.0 stopTime 0.0 } „ (c) SE/FIT/HUT 2002 Tr−êng d÷ liệu isActive : Ra liệu TRUE thời gian bắt đầu Ra liệu FALSE bé thêi gian kÕt thóc Tr−êng d÷ liệu time : Đa thời gian tuyệt đối Trờng liệu fraction_changed : Đa giá trị từ 0.0 tới 1.0 suốt chu ký Đặt lại giá trị 0.0 lúc bắt đầu chu kỳ Chạy ví dụ Xem code Để kích hoạt vị trí vật thể VRML cung cấp: ã Một danh sách khoá vị trí key positions cho đờng di chuyển ã Thời gian bắt đầu vị trí Nút interpolator chuyển đổi đầu vàu thời gian thành đầu toạ độ ã Khi thời gian hai khoá vị trí, nút interpolator tính toán vị trí trung gian (c) SE/FIT/HUT 2002 Nót positioninterpolator „ „ Nót PositionInterpolator miêu tả vị trí đờng dẫn ã key khoá thời gian phân đoạn ã keyValue khoá vÞ trÝ PositionInterpolator { key [ 0.0, ] keyValue [ 0.0 0.0 0.0, ] } Thờng để gửi vào kiện đầu vào set_translation nút Transform đặt thời gian bắt đầu Chuyển đổi thời gian toạ độ Sự kiện vàu liệu set_stopTime : đặt bé thêi gian kÕt thóc (c) SE/FIT/HUT 2002 Tr−êng liệu Để tạo thời gian chạy liên tục: loop TRUE stopTime blue -> red) DEF NewColour ColorInterpolator { key [0.0, 0.33, 0.66, 1.0 ] keyValue [1.0 0.2 0.2, 0.2 1.0 0.2, 0.2 0.2 1.0, 1.0 0.2 0.2 ] } (Above is Grouped with the object we’re changing) # use clock to run a ColorInterpolator, generating smoothly varying colour ROUTE Clock.fraction_changed TO NewColour.set_fraction # use varying colour value to feed material's diffuseColor field ROUTE NewColour.value_changed TO SphereColour.set_diffuseColor (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 nút Script ngôn ngữ kịch Nhiều hành động phức tạp nút hoạt cảnh ã Tính toán đờng (ví dụ lực hấp dẫn) ã Giải thuật vật thể (eg fractals) ã Các môi trờng cần công tác (ví dụ game) Bạn tạo nút sensors, interpolators, vân vân , cánh sử dụng chơng trình kịch viết ngôn ngử ã Java ngôn ngử lập trình mạnh ã JavaScript ngôn ngử kịch dễ học ã VRMLscript giống JavaScript Ngôn ngữ VRML không bắt buộc phải hỗ trợ ngôn ngữ kịch ã Hầu hết trình duyêt hõ trợ JavaScript ã Nhiều trình duyêt hỗ trợ Java VRMLScript = JavaScript = ECMAScript ã JavaScript không giống Java ã VRMLScript phần mềm Cosmo Software hỗ trợ JavaScript ã Các đặc tả kỹ thuật ISO VRML gọi ECMAScript, phiên có hỗ trơ JavaScript Nút Script chọn chơng trình kịch để chạy: url chọn chơng trình kịch „ DEF Bouncer Script { url "bouncer.class" or url "bouncer.js" or url "javascript: " or url "vrmlscript: " } „ Xem code „ „ „ „ Ch¹y ví dụ (c) SE/FIT/HUT 2002 Java Định nghĩa giao tiếp chơng trình kịch ứng dụng Nút Script khai báo giao tiếp chơng trình kịch ã field, eventIn, eventOut thao tác xuất nhập ã Mỗi có tên kiểu liệu ã Các trờng có giá trị khởi ®Çu DEF Bouncer Script { field SFFloat bounceHeight 3.0 eventIn SFFloat set_fraction eventOut SFVec3f value_changed } (c) SE/FIT/HUT 2002 Java class So với ngôn ngữ nh JavaScript/VRMLscript, Java có khả năng: ã Mô đun chơng trình tốt ã Cấu trúc liệu tốt ã Khả thực nhanh ã Truy cập mạng Với công việc đơn giản sử dụng JavaScript/VRMLscript Những chơng trình phức tạp dùng Java Khai báo giao tiếp chơng trình kịch Với chơng trình kịch viết ngôn ngữ Java tạo file class trờng url củanút Script ã file class đợc biên dịch chơng trình kịch Java DEF Bouncer Script { field SFFloat bounceHeight 3.0 eventIn SFFloat set_fraction eventOut SFVec3f value_changed url "bounce2.class" } (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn „ „ „ Nhập package cho lớp Java File chơng trình kịch bảnphải import package VRML : ã Đợc cung cấp công ty phân phối trình duyệt VRML „ import vrml.*; „ import vrml.field.*; „ import vrml.node.*; T¹o file Java class Các chơng trình kịch phải định nghĩa lớp có tính public kế thõa tõ líp Script „ public class bounce2 extends Script { } ã Phơng thức tuỳ chọn initialize đợc gọi script đợc tải ã public void initialize ( ) { } ã Quá trình khởi tạo xẩy khi: ã Nút Script đợc tạo (thờng trình duyệt nạp giới vật thể) ã Phơng thức shutdown đợc gọi đến script nạp ã public void shutdown ( ) { } • Shutdown xÈy : • Nót Script bị xoá ã Trình duyệt nạp giới (c) SE/FIT/HUT 2002 Page 10 Sù kiÖn -event „ Tr−êng eventout từ java Đáp ứng kiện ã Phơng thức processEvent đợc gọi kiện nhận đợc , chuyển đối tợng kiện chứa ã Giá trị kiện ã Thời gian public void processEvent( Event event ) { } Xem code vrml „ „ Truy nhËp c¸c tr−êng tõ Java Mỗi trờng giao tiếp đợc đọc viết ã Gọi getField để đọc trờng đối tợng „ obj = (SFFloat) getField( "bounceHeight" ); • Gäi getValue để lấy giá trị trờng lastval = obj.getValue( ); ã Gọi setValue đặt giá trị cho trờng „ obj.setValue( newval ); Xem code java (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn „ Truy nhập trờng eventOuts từ Java Mỗi giao tiếp eventOut đọc ghi ã gọi getEventOut để ®äc tr−êng eventOut cđa ®èi t−ỵng „ obj = (SFVec3f) getEventOut( "value_changed" ); ã Gọi getValue đọc giá trị cuối đợc gửi lastval = obj.getValue( ); ã Gọi setValue ®Ĩ gưi mét sù kiƯn „ obj.setValue( newval ); „ „ „ VÝ dơ Java script T¹o nót interpolator vớiquả bóng nẩy tính trọng lực nh chuyển động nẩy ngang từ liệu đầu vào thời gian phân đoạn Nút cần: DEF Ball Transform { } DEF Clock TimeSensor { } DEF Bouncer Script { } (c) SE/FIT/HUT 2002 Page 11 ... Hớng - máy bay lợn ã Màu sắc đổi mùa Hoạt cảnh bắt buộc điều khiển qua thời gian: ã Khi bắt đầu dừng ã Mức độ nhanh chËm (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn... radian ã radian = ®é/ 180 .0 * 3.141 Transform { # X Y Z Angle rotation 0.0 0.0 1.0 0.52 children [ ] } „ (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn „ „ Co giÃn... } Anchor { } Inline { } Chaỵ ví dụ Xem code (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn „ „ „ Cịng nh− trang Web , siªu liên kết sẵn có VRML Có thể kết

Ngày đăng: 11/05/2021, 03:48

Tài liệu cùng người dùng

Tài liệu liên quan