Chương 2: Tạo mơ hình VRML 2.4 Màu sắc chất liệu 2.4.1 Material Cú pháp Material { ambientIntensity 0.2 diffuseColor emissiveColor shininess # [0,1] 0.8 0.8 0.8 # [0,1] 000 0.2 specularColor 000 transparency # [0,1] # [0,1] # [0,1] # [0,1] } Xác định tính chất vật liệu bề mặt cho nút hình học sử dụng công thức chiếu sáng VRML dựng Các trường nút xác định cách chiếu sáng để tạo màu cho đối tượng Màu sắc VRML thể qua tham số R G B (Red-Green-Blue) Thuộc tính diffuseColor: Màu sắc đối tượng Trường phản chiếu tất nguồn sáng VRML tùy thuộc vào góc bề mặt nguồn sáng emissiveColor: Màu ánh sáng phát từ đối tượng transparency: Độ suốt đối tượng (0.0: hiển thị rõ, 1.0: suốt) ambientIntensity: Lượng phản chiếu ánh sáng đối tượng với ánh sáng môi trường Ánh sáng môi trường từ hướng phụ thuộc vào số lượng nguồn sáng mà vị trí cụ thể bề mặt specularColor: Xác định màu sắc điểm sáng bóng bề mặt đối tượng shininess: Cường độ sáng cho điểm sáng bóng Giá trị shininess thấp tạo mềm mại, giá trị cao tạo sắc nét bật Ví dụ Shape { appearance Appearance { material Material { diffuseColor 1.0 0.5 0.0 emissiveColor 0.0 0.0 0.0 transparency 0.5 specularColor 0.5 0.5 0.5 shininess 0.3 ambientIntensity 0.4 } } geometry Box { size 1.0 1.0 1.0} } 2.4.2 Pixel texture Cú pháp PixelTexture { image 000 repeatS TRUE repeatT TRUE } Định nghĩa đồ kết cấu hình ảnh 2D giống mảng giá trị điểm ảnh thông số kiểm soát việc lặp kết cấu đối tượng Cho phép vẽ hình bề mặt đối tượng Hình vẽ tạo từ tập hợp điểm ảnh Thuộc tính image: Xây dựng hình vẽ từ tập hợp điểm ảnh repeatS: Xác định cách kết cấu bao phủ lặp theo hướng S repeatT: Tương tự repeatS Ví dụ: Shape { appearance Appearance { material Material {} texture PixelTexture { image 0xFF0000 0xFF00 0 0 0xFFFFFF 0xFFFF00 repeatS TRUE repeatT TRUE } } geometry Cylinder {height 5} } 2.4.2 Image texture Cú pháp ImageTexture { url [] repeatS TRUE repeatT TRUE } Định nghĩa đồ kết cấu cách file ảnh thông số để ánh xạ đến đối tượng(dán ảnh có sẵn lên đối tượng) Bản đồ kết cấu định nghĩa hệ tọa độ 2D (s,t) có cận [0.0,1.0] theo hai hướng Cạnh hình ảnh tương ứng với trục S, cạnh bên tương ứng với trục T Các pixel bên trái tương ứng s=0, t=0, pixel bên phải tương ứng s=1, t=1 Thuộc tính url: Đường dẫn đến tệp tin, rỗng([]) vơ hiệu hóa kết cấu repeatS Xác định cách kết cấu bao phủ theo hướng S Mặc định TRUE đồ kết cấu lặp phạm vi [0.0,1.0] theo hướng S để lấp đầy hình dạng Nếu FALSE kết cấu giới hạn theo hướng S phạm vi [0.0,1.0] repeatT: Tương tự repeatS Các định dạng ảnh sử dụng GIF: 8bit, có hỗ trợ suốt, lựa chọn tốt cho “texture mapping” hình ảnh bị “bể” dán lên đối tượng JPEG: từ 8-16 bit, không hỗ trợ suốt, lựa chọn tốt cho “texture mapping” PNG: từ 8-16 bit, hỗ trợ suốt điểm ảnh, lựa chọn tốt cho “texture mapping” 2.4.3 Movie texture Cú pháp MovieTexture { loop FALSE speed 1.0 # (- ∞, ∞) startTime # (- ∞, ∞) stopTime # (- ∞, ∞) url [] repeatS TRUE repeatT TRUE eventOut SFTime duration_changed eventOut SFBool isActive } Xác định đồ kết cấu phụ thuộc vào thời gian thực (tệp video) Thuộc tính loop: Xác định tính lặp lại phim startTime stopTime: Xác định khoảng thời gian chiếu dừng phim dựa thời gian thực url: Liên kết đến tập tin video speed: Tốc độ chiếu phim, ví dụ speed có giá trị tốc độ chiếu phim nhanh gấp hai lần Giá trị speed âm phát ngược lại Nút MovieTexture tham chiếu trường texture nút Appearance trường source nút Sound Ví dụ Group { children [ Shape { appearance Appearance { texture DEF MT1 MovieTexture { url "test.mpeg" loop FALSE } material DEF M Material { diffuseColor 1 } } geometry DEF IFS IndexedFaceSet { coord Coordinate { point [ -1.1 -1 0, -1 0, 1 0, -1.1 ] } coordIndex [ ] } } DEF TS1 TouchSensor {} Background { skyColor 1 } ]} ROUTE TS1.touchTime TO MT1.startTime 2.4.4 Nút TextureTransform Cú pháp TextureTransform { center 00 # (- ∞, ∞) rotation # (- ∞, ∞) 11 # (- ∞, ∞) scale translation 0 } # (- ∞, ∞) Định nghĩa biến đổi 2D áp dụng cho tọa độ kết cấu Các phép: Dịch chuyển Quay Co giãn Các hoạt động xuất đảo ngược nhìn bề mặt hình học Ví dụ giá trị scale (2,2) thu nhỏ tọa độ kết cấu sử dụng cho việc lặp kết cấu Dịch chuyển (0.5,0.0) dịch -0.5 theo trục S bề mặt hình học Quay pi/2 quay –pi/2 bề mặt hình học Thuộc tính center: Xác định dịch chuyển tương đối tọa độ kết cấu rotation scale áp dụng scale: Tỉ lệ co giãn theo S T tọa độ kết cấu theo điểm center rotation: Góc quay tính theo radian tọa độ kết cấu theo điểm center sau phép co giãn áp dụng Giá trị dương quay tọa độ kết cấu ngược chiều kim đồng hồ kết cấu xuất ngược chiều kim đồng hồ translation: xác định dịch chuyển tọa độ kết cấu 2.5 Nhóm đối tượng 2.5.1 Anchor Cú pháp Anchor { children [] description "" parameter url [] [] bboxCenter bboxSize 000 # (-∞, ∞) -1 -1 -1 # (0,) or -1,-1,-1 } Gắn siêu liên kết đến url Thế giới VRML khác Trang HTML Dữ liệu mà trình duyệt đọc Thuộc tính children: Chứa nút url: Xác định địa siêu liên kết parameter: Xác định cửa sổ mà url hiển thị description: Hiển thị ghi di chuột qua bboxCenter: Tâm hình hộp bao quanh bboxSize: Kích thước hình hộp bao quanh Nếu -1 -1 -1 hình hộp khơng xác định Ví dụ Anchor { children [ Shape { geometry Sphere {} }] url "http://google.com.vn/" description "Tìm kiếm với Google" parameter ["target=my_frame" ] bboxCenter 0 bboxSize -1 -1 -1 } 2.5.2 Group Cú pháp Group { children [] bboxCenter 0 # (- ∞, ∞) bboxSize -1 -1 -1 # (0, ∞) -1,-1,-1 } Tạo tập hợp đối tượng thực thể Thuộc tính children: Chứa nút nhóm bboxCenter: Xác định tâm hình hộp bao quanh nút nhóm bboxSize: Xác định kích thước hình hộp bao quanh nút nhómNếu nút khơng nằm hình hộp hình hộp khơng xác định Ví dụ Group { # Root Group node children [ DEF G1 Group { # Group containing box, sphere, & cone children [ Transform { translation -3 0 children Shape { geometry Box {} } } Transform { children Shape { geometry Sphere {} } } Transform { translation 0 children Shape { geometry Cone {} } }] } Transform { translation -3 children USE G1 # Instance of G1 group }] } 2.5.3 Switch Cú pháp Switch { choice [] whichChoice -1 # [-1, ∞) } Chuyển đổi nút con, có nút nhóm hiển thị người dùng lựa chọn Thuộc tính choice: Chứa tập nút nhóm whichChoice: Xác định số child chọn Các nút đánh số thứ tự từ 0, trường whichChoice có giá trị -1 lớn số lượng nút khơng chọn nút 2.5.4 Billboard Cú pháp Billboard { axisOfRotation children bboxCenter bboxSize # (-∞, ∞) [] # (-∞, ∞) 000 -1 -1 -1 # (0, ∞) or -1,-1,-1 } Biến đổi hệ tọa độ địa phương, trục địa phương Z quay phía người nhìn Nút có chứa nút con, cháu, Thuộc tính axisOfRotation: Xác định trục dùng để quay Trục định nghĩa hệ tọa độ địa phương bboxCenter bboxSize: Xác định hộp bao quanh children nút Billboard Nếu hộp nhỏ so với kích thước thực tế children thời điểm kết khơng xác định Hộp mặc định bboxSize có giá trị (-1,-1,-1) trình duyệt tự tính tốn cho phù hợp 2.6 Tái sử dụng 2.6.1 Inline Cú pháp Inline { url [] bboxCenter 0 # (- ∞, ∞) bboxSize -1 -1 -1 # (0,) or -1,-1,-1 } Tạo nhóm đối tượng đặc biệt lấy từ tập tin VRML khác Tất đối tượng tập tin hiển thị Nút thường sử dụng để gọi trực tiếp đối tượng bên ngồi vào giới Thuộc tính url: Chứa tập đường dẫn tập tin VRML giới bboxCenter: Xác định tâm hình hộp bao quanh nút nhóm bboxSize: Xác định kích thước hình hộp bao quanh nút nhóm Nếu nút khơng nằm hình hộp hình hộp khơng xác định 2.6.2 DEF Cú pháp [DEF ] { } Định nghĩa nút người dùng 2.6.3 USE Cú pháp USE Sử dụng nút định nghĩa người dùng ... kết cấu hình ảnh 2D giống mảng giá trị điểm ảnh thơng số kiểm sốt việc lặp kết cấu đối tượng Cho phép vẽ hình bề mặt đối tượng Hình vẽ tạo từ tập hợp điểm ảnh Thuộc tính image: Xây dựng hình vẽ... đầy hình dạng Nếu FALSE kết cấu giới hạn theo hướng S phạm vi [0.0,1.0] repeatT: Tương tự repeatS Các định dạng ảnh sử dụng GIF: 8bit, có hỗ trợ suốt, lựa chọn tốt cho “texture mapping” hình. .. biến đổi 2D áp dụng cho tọa độ kết cấu Các phép: Dịch chuyển Quay Co giãn Các hoạt động xuất đảo ngược nhìn bề mặt hình học Ví dụ giá trị scale (2,2) thu nhỏ tọa độ kết cấu sử dụng cho việc