Bài giảng Đồ họa hiện thực ảo: Bài 8 - Lê Tấn Hùng

11 20 0
Bài giảng Đồ họa hiện thực ảo: 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 giảng Đồ họa hiện thực ảo - Bài 8: Ngôn ngữ mô hình hóa thực tại ảo VRML cung cấp cho người học các kiến thức: Tính chất, cấu trúc file VRML, phần tử cơ bản của VRML, cấu trúc cảnh, cấu trúc phân lớp, cấu trúc ảnh bitmap,... Mời các bạn cùng tham khảo 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 #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 ký tự thờng (case sensitive) Ví d nót Shape, Box, Appearance, Material,lights, sounds, (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn CuuDuongThanCong.com Page https://fb.com/tailieudientucntt 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 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ị 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ơ nút shape (c) SE/FIT/HUT 2002 „ 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 c¸c nót shape { radius # nh−ng cịng 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 „ „ 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 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn CuuDuongThanCong.com z Material (c) SE/FIT/HUT 2002 Cơ nót shape „ z Appearance diffuseColor „ (c) SE/FIT/HUT 2002 Nút Shape 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 Page https://fb.com/tailieudientucntt 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 ë trªn 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ạ độ thuận 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ạ độ nã • 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ạ ®é bëi X,Y vµ 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, vµ 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 „ „ 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 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn CuuDuongThanCong.com Page https://fb.com/tailieudientucntt 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 vật thể: thuộc 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 c¸c thc tÝnh vỊ chÊt liƯu cđa 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 cẩn nhóm đối tợng lại víi VRML dïng nót Group ®Ĩ thùc hiƯn ®iỊu Nút Group có nút Có thể nút 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 mét 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 „ „ Cịng nh− trang Web , siªu liªn kÕt cịng s½n cã VRML Cã thĨ kÕt nèi tới kiểu liệu hợp lệ , bao gồm trang VRML khác, trang HTML ứng dơng CGI VÞ trÝ (x, y, z) cđa trỏ đợc truyền tới URL, thực cã Ých víi c¸c øng dơng CGI (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn CuuDuongThanCong.com Page https://fb.com/tailieudientucntt 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 mét 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 mét 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 cđa mét file VRML kh¸c „ ChØ nót child đợc hiển thị Nút đọc từ file đợc chọn URL Kích chuột 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 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 vật thể có thuộc 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 „ „ „ „ „ (c) SE/FIT/HUT 2002 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 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn CuuDuongThanCong.com USE bắt buộc phải chử hoa Sử dụng lại nút đà đợc đặt tên gọi biến hay thể 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 Giới thiệu hoạt cảnh u điểm Page https://fb.com/tailieudientucntt 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 „ „ „ 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 kiện thời gian tới nút khác Nút TimeSensor tạo hai kiện thời gian lµ 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 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn CuuDuongThanCong.com Page https://fb.com/tailieudientucntt 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 nã lµ 0.0 „ KÕt thóc mét 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 liệu isActive : Ra liệu TRUE thời gian bắt đầu Ra liƯu lµ FALSE bé thêi gian kÕt thóc Tr−êng 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 Sự kiện đầu vào set_fraction : ã Đặt thời gian phân đoạn thời theo khoá đờng dẫn Sự kiện đầu value_changed : ã Đa vị trí theo đờng dẫn fraction đợc đặt Chạy ví dụ Xem code (c) SE/FIT/HUT 2002 Interpolating positions Mỗi khoá vị trí với đờng dẫn có: Một khoá giá trị key value (nh vị trí) Một khoá thời gian phân đoạn Phép nội suy điền vàu giá trị vàu giá trị khoá: „ Fractional TimePosition „ „ 0.1 „ „ (c) SE/FIT/HUT 2002 Sư dơng c¸c nót interpolator kh¸c „ Kích hoạt vị trí PositionInterpolator Kích ho¹t h−íng OrientationInterpolator KÝch ho¹t co gi·n Position Interpolator KÝch hoạt màu sắc ColorInterpolator Kích hoạt tính suốt ScalarInterpolator (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn CuuDuongThanCong.com đặ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 „ (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 „ „ 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 míi (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà ni Email: hunglt@it-hut.edu.vn CuuDuongThanCong.com Đị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 } Page 10 https://fb.com/tailieudientucntt 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 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 ); „ „ „ (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn CuuDuongThanCong.com 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 { } Page 11 https://fb.com/tailieudientucntt ... 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 Lê Tấn Hùng CNTT- ĐHBK... dông CGI (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn CuuDuongThanCong.com Page https://fb.com/tailieudientucntt C¸c nút Group-Switch-Transform Nút Anchor Inline... 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 Lê Tấn Hùng CNTT- ĐHBK Hà nội

Ngày đăng: 20/09/2020, 12:36

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

Tài liệu liên quan