Đồ họa máy tính và hiện thực ảo

42 897 2
Đồ họa máy tính và hiện thực ảo

Đ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

Tài liệu tham khảo kỹ thuật công nghệ, chuyên ngành tin học Đồ họa máy tính và hiện thực ảo

Đồ hoạ máy tính thực ảo Ngơn ngữ VRML Tìm hiểu ngơn ngữVRML Lời nói đầu Trong xu tin học hố tồn sống diễn tấp nập nay,lĩnh vực đồ hoạ đóng góp vai trò to lớn.Ở đâu ta tìm thấy minh hoạ cho việc áp dụng đồ hoạ máy tính vào sống : xử lý ảnh, phim hoạt hình, đặc biệt thực ảo(Virtual Reality_VR) Thực ảo,là nghành cơng nghệ cao,có ứng dụng đặc biệt rộng rãi.Từ trò chơi 3D sống động đến mơ phức tạp công nghiệp khoa học công nghệ(mô vụ thử hạt nhân,mô giới ảo dùng để huấn luỵện phi công…),từ trường hợp đơn giản đến trường hợp quan trọng Một phần quan trọng VR mô giới thực xung quanh chúng ta.Để làm điều này, dùng ngôn ngữ VRML(Virtual Reality Modeling Language).Đây ngôn ngữ tương đối đơn giản nhưmg hiệu quả.Với VRML,kết hợp với trình duyệt IE hay Nescape,chúng ta mơ giới quanh ta cách ý.Trong giới đó,có vật thể,có tương tác có cảm biến y giới thực.Ứng dụng VRML rộng rãi : mô nhà cửa,thiết kế phòng học ảo,các thiết bị thí nghiệm ảo, lập trình khơng gian ảo… Trong tập lớn mơn học này,em tìm hiểu VRML dùng ngơn ngữ VRML để mơ tồ nhà C14-15 trường đại họcBKHN.Tuy hướng dẫn tận tình thầy Hùng thời gian lực cịn có hạn nên kết cịn nhiều thiếu sót.Tuy nhiên,em cám ơn thầy Hùng mơn học tập lớn đem lại cho em nhiều hiếu biết giới đồ hoạ,mở cho chúng em hướng lĩnh vực tin học Nguyễn Vĩnh Thuận –CNPM K46 Đồ hoạ máy tính thực ảo BÁO CÁO BÀI TẬP LỚN "ĐỒ HOẠ MÁY TÍNH VÀ HIỆN THỰC ẢO" Ngơn ngữ VRML MƠN HỌC I.Giới thiệu VRML 1.Về ngơn ngữ VRML a,Về trình duyệt Điều bạn cần VRML browser, để quan sát giới bạn Phần lớn brower VRML hoạt động cho Nescape Internet Explorer, browser có sẵn hệ điều hành Để biết thêm thông tin bạn hÃy tra VRML Repository b,Son tho VRML Điều bạn cần tạo nên giới bạn Có hai cách để thực điều Đầu tiên bạn sử dụng công cụ tạo VRML, mô hình 3D mà bạn tạo giới bạn Một phơng pháp thực VRML mà hoá tay, tất bạn cần việc soạn thảo văn wordpad notepad VrmlPad soạn thảo Vrml đặc biệt hiệu với đặc điểm bật cú pháp Loại đơn giản đợc mà hoá ra, đợc cất dới file có dạng filename.wrl Sau bạn tải vào browser lấy để xem Nếu bạn sử dụng 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 không không làm việc Làm việc với VRML cha có kinh nghiệm, khó để tạo đối tợng phức tạp Để thực điều bạn cần phải sử dụng công cụ quyền mức cao ngôn ngữ mô hình hoá Nếu bạn đến lựa chọn muộn hơn, bạn cần vài loại file chơng trình biên dịch để chuyển dạng mô hình hoá VRML Bộ biên dịch miễn phí crossroads Các công cụ VRML cấp cao có sẵn nhiều công ty c Kỹ thuật nén, MIME xuất Sự mở rộng thông thờng cho file VRML wrl wrz sư dơng cho viƯc nÐn VRML Browser cã thĨ đọc file VRML bị nén GZIP Các file nÐn cã thĨ sư dơng nh wrz, wrl.gz hc sù mở rộng chuẩn wrl GZIP chuẩn cân hệ thống UNIX nhng bạn nhận thấy phiên PC Mac Cách tốt để nén file sử dụng Chisel, xác nhận đánh giá VRML bị cất file VRML GZIP Đây công cụ tốt để có cách cho việc gỡ rối mà viết VRML hoàn hảo từ lần Tất tài liƯu internet theo chn MIME, chn VRML MIME lµ model/vrml, tơng tự x-world/x-wrml Mỗi bạn tạo giới bạn, bạn cần tạo lên trang Nguyễn Vĩnh Thuận –CNPM K46 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML web ®Ĩ ngời xem Đối với việc bạn cần vài ISP (Internet Service Provider) Bạn sử dụng không gian để đa file lên trang web, file HTML thông thêng d Headers vµ chó thÝch VRML(Virtual Reality Modeling Language), ngôn ngữ cho phép mô tả đối tượng 3D thể giới thực, chạy môi trường web Nó cho phép xây dựng nên file wrl mở trình duyệt web IE hay NESCAPE Một file vrml có dạng sau: Tiêu đề file: #VRML V2.0 utf8 utf8 cụm từ cho phép dùng ký tự quốc tế file VRML sau nút §iỊu nói cho browser xem xét file VRML, phiên sử dụng Trong trờng hợp phiên 2.0 VRML trờng hợp dễ bị ảnh hởng(case sensetive), việc sử dụng xác nh bạn đà thấy Phần utf8 thông báo cho browser chuẩn chuỗi văn để sử dụng VRML 1.0 ascii utf8 nhng phiên 2.0 utf8, tốt để sử dụng Bất kỳ dòng bắt đầu với kí tự # thích, bị lờ khỏi phân tích cú pháp VRML Tiếp theo VRML hợp lệ e,Các nút VRML Nút thường nút WORLDINFO chứa thông tin đặc tả file vrml sau 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 đề giới, đợc hiển thị tiêu đề cử sổ browser tơng tự nh cê TITLE HTML WorldInfo cịng cã thĨ chøa mét chuỗi thông tin, chứa thông tin khác file Bạn đặt vào từ khoá cho search engine Một nút WorldInfo mẫu đợc dới đây: WorldInfo { title "Floppy's VRML97 Tutorial Example 1" info ["(C) Copyright 1999 Vapour Technology" "guide@vapourtech.com"] } Cã thÓ có chuỗi phức tạp trờng info, cách đặt chúng bên ngoặc vuông Tiêu đề không cần ngoặc vuông, chuỗi đơn lẻ File VRML cã thĨ cã nhiỊu nót WorldInfo nhng chØ có nút đợc phân tích, phần sau bị lờ VRML cú 54 loi nỳt khỏc nhau, chia làm nhóm, bao gồm: Grouping Nodes : Các nút nhóm Nguyễn Vĩnh Thuận –CNPM K46 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML 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 : Geometric Properties Nodes: Appearance Nodes : Interpolators Nodes Các nút hình học Các nút thuộc tính hình học Các nút hình dáng Các nút nội suy Bindable Nodes: Các ghép nối Một nút gồm có : Tên nút: Thường bắt đầu chữ in hoa tên chuẩn vrml cung cấp, sau đến trường nút chúng thường bắt đầu chữ thường, mổi loại nút có trường khác Gía trị trường giá trị thực giá trị thực nút bản, ta hình dung nút lớp lập trình hướng đối tượng VRML khơng cho bạn định nghĩa thêm nút mà dùng nút Một hình dạng hình học xây dựng qua nút Shape Cấu trúc nút có dạng sau: Shape{ appearance Appearance{ material Material{ diffuColor 0 Shininess } textture ImageTextTure{} } geometry Box{} } appearance thuộc tính nút giá trị nút Appearance dùng dạng bề mặt vật thể Trong nút Appearance co trường material dùng để màu, độ bóng, độ suốt vật thể Trường textture dùng để kết cấu vật thể, giá trị trường nút ImageTextture,MovieTextture Chúng ta điểm qua số nút Nguyễn Vĩnh Thuận –CNPM K46 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML e1.C¸c nót appearrance Khi chóng ta nhìn thấy đối tợng FBOX đà định nghĩa trớc đây, nút Shape có trờng gọi appearance, sử dụng để chứa trờng Appearance đợc dới đây: DEF FBOX Shape { appearance Appearance { material Material { } } geometry Box { } } Ví dụ có trờng bên nút Appearance, trờng material Theo cách có nút bên nút dờng nh khó khăn, nhng cho phép bạn định nghĩa hình dạng sử dụng DEF USE Điều hiệu việc có nhiều đối tợng theo 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 sè c¸c loại nút kết cấu Những điều đợc mô tả phần sau, trớc tiên giải quytết nót Material e2.C¸c nót Material Nót Material cã thĨ chøa trờng, là: diffuseColor màu sắc thông thờng đối tợng specularColor màu sắc bật đối tợng chiếu sáng emissiveColor Đối tợng 'glows' với ánh sáng từ màu sắc này, khôgn phải ánh sáng mẫu từ đối tợng khác ambientIntensity Số lợng ánh sáng bao xung quanh mà đối tợng phản chiếu shininess cách ánh xạ đối tợng transparency cách làm rõ ràng đối tợng ý vài browsers không hỗ trợ đối tợng phần không rõ ràng Ba tham số giá trị màu, ba tham số sau giá trị đơn giản Các màu sắc đợc rõ nh thành phần red, green blue nh HTML Bạn lấy màu bạn thích từ việc kết hợp màu red, green blue Các giá trị màu đơn lẻ nằm 0( không màu) 1(màu đầy đủ), red đầy đủ đợc định nghĩa Nguyn Vnh Thun CNPM K46 Đồ hoạ máy tính thực ảo Ngụn ng VRML 0, trắng 1 1, xám 0.5 0.5 0.5 Cách rõ màu sử dụng nhng bạn sử dụng lựa chọn màu PaintShop Pro vài thứ để nhận đợc màu bạn thích chuyển chúng thành giá trị VRML Vì bạn muốn tạo hình khối ban đầu, với màu xanh bán suốt, bạn định nghĩa dạng nh sau: Shape { appearance Appearance { material Material { emissiveColor 0.8 transparency 0.5 } } geometry Box { } } e3,KÕt cÊu hình ảnh( image texture) Các màu sắc thú vị tốt nhng để trông thực hấp dẫn, phải có sơ đồ kết cấu vật thể Điều đợc thực qua trờng texture nút Appearance trờng chứa ba loại nút kết cấu Loại xem xét ImageTexture Đây sơ đồ kết cấu sở, ánh xạ toàn hình ảnh vào đối tợng Nút sơ đồ kết cấu đối tợng với file JPEG PNG Một vài browser hỗ trợ nó, nhng chuẩn nút chứa ba trờng Đầu tiên, url rõ hình ảnh để sử dụng chuẩn dạng URL Bạn rõ danh sách hình ảnh ngoặc vuông, browser hiển thị hình ảnh danh sách mà tìm thấy Hai trờng khác repeatS 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 dẫn đến giá trị boolean TRUE FALSE chúng thực hiệu kết hợp với TextureTransform, khôg trình bày kỹ phần sau Bạn rõ thông tin suốt hình ảnh đà sử dụng trờng hợp thay lại suốt đố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 kết cấu ®Ĩ t¹o kÕt cÊu thùc sù Thùc tÕ, b¹n tạo nhiều hiệu kết hợp nút Material ImageTexture Nói chung, chúng thực bạn mong muốn, cần quan sát chút kinh nghiệm bạn tạo đợc Vì để định dạng kết cấu 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" Nguyễn Vĩnh Thuận –CNPM K46 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML } } nót appearance cđa hép thø hai e4 Movie Texture MovieTexture nhận lấy phim MPEG sơ đồ kết cấu lên đối tợng theo cách nh ImageTexture Nó cã ba trêng gièng nhau, ngoµi cã mét sè trờng khác, là: speed Giá trị speed mặc định 1, tốc độ tăng lần Giá trị hiển thị cấu loop Giá trị boolean ( (TRUE FALSE), rõ liệu phim lặp hay không startTime Khi bắt đầu phim, vài giây từ nửa đêm ngày tháng giêng 1970 stopTime Khi kết thúc phim, vài giây từ nửa đêm ngày tháng giêng 1970 e5 Pixel Texture Nút cho phép bạn định nghĩa kết cấu tay file VRML Điều dờng nh khó tin đầy đủ nhng nh đà sử dụng, bạn thấy sau Nó có trờng image thay cho trêng URL Trêng image bao gåm hai sè chØ râ chiỊu réng vµ cao cđa kÕt cÊu, tiÕp theo số rõ số lợng thành phần Thành phần màu sắc tỉ lệ xám, hai thành phần màu sắc tỉ lệ xám với độ suốt, thành phần thứ ba màu RGB thứ t RGB với độ suốt Sau đối số danh sách điểm pixel, số hexa với byte cho thành phần Vì pixel thành phần thứ t red 50 % độ suốt 0xFF00007F Các pixel đợc xếp theo thứ tự từ đáy trái đến đỉnh bên phải Ví dụ đợc dới đây: DEF PIXMAP Appearance { texture PixelTexture { image 2 0xFF0000 0x00FF00 0x0000FF 0xFF0000 } } Nguyễn Vĩnh Thuận –CNPM K46 10 Đồ hoạ máy tính thực ảo Ngụn ng VRML Chúng ta cần mô tả nhanh số hexa Thông thờng máy tính thuận tiện rõ số số thập phân thông thờng (0-9) nhị phân (0-1) có loại khác hexadecimal, có dạng nh sau: Hexadecimal A B C D E F Decimal 10 11 12 13 14 15 F sè hexa 15 số thập phân 10 hexa 16 số thập phân Chữ số hexa thông thờng đợc rõ 0x phía trớc để dễ dàng nhËn VÝ dô 0x10 = 16, 0xFF = 255, 0x7F = 12 e6 Văn kiểu font( text fontstyle) Nút tạo văn 2D giới Tất thực đơn giản bạn muốn thực điều phức tạp sử dụng Fontstyle Nút Text có trờng Trờng string, bạn định nghĩa chuỗi danh sách chuỗi để hiển thị Trờng fontStyle chứa nút FontStyle Hai trờng cuối maxExtent, bạn rõ độ rộng lớn ( theo đơn vị mét) văn length danh sách chiều dài chuỗi, bạn rõ độ rộng riêng biệt chuỗi Nếu length đợc rõ, browser định lại kích thớc văn vừa với kích thớc geometry Text { string ["Hello", "World"] fontStyle USE HELLOFONT maxExtent length [3, 3] } Nguyễn Vĩnh Thuận –CNPM K46 11 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML Nút Text phức tạp, FontStyle phức tạp Cách tốt để thực liệt kê danh sách trờng FontStyle { size family style horizontal leftToRight topToBottom language justify spacing } size lµ chiỊu cao dòng văn theo hệ mét Trờng family nhận giá trị thay đổi loại bề mặt cuỉa font Ba loại "SERIF", "SANS", "TYPEWRITER", chúng rõ ràng Để thay đổi cách xem xét văn bản, bạn sử dụng trờng style, cã thĨ nhËn mét c¸c kiĨu sau: "PLAIN", "BOLD", "ITALIC", hoặc"BOLD ITALIC" horizontal giá trị boolean liệu văn ngang horizontal ("TRUE") dọc vertical ("FALSE") leftToRight topToBottom giá trị boolean cân hoạt động trớc Tơng tự chuỗi utf-8 xuất khác nhau, phụ thuộc vào ngôn ngữ nó, điều mà hoá hai kí tự ngôn ngữ Thực mà gì, tốt lờ trờng justify hiệu cóthể "BEGIN", "MIDDLE", "END" spacing số lợng không gian trôngd dòng văn bình thờng, gấp đối khoảng cách (dòng trồng dòng Đó FontStyle , bạn thực lờ trờng nhng style, family justify thực hiệu e7,Các đối tượng Để hình dáng vật thể ta dùng trường geometry Giá trị trường nút hình học bản.VRML hỗ trợ đối tượng , là: Cone(hình nón), Cylinder(Hình trụ), Box(Hình hộp), Sphere(Hình cầu) Đây bốn đối tượng hình học giúp ta xây dựng nên đối tượng hình học Cấu trúc nút sau Nút Box: Box{size cd cc cr} Trong cd, cc, cr số thực chiều dài, chiều cao, chiều rộng hình hộp Tâm hình hộp gốc tọa độ hệ thống Nút Cylinder: Nguyễn Vĩnh Thuận –CNPM K46 12 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML Cone{ radius dk Chỉ bán kính hình trụ height cc Chỉ chiều cao hình hộp bottom TRUE/FALSE top TRUE/FALSE Hai giá trị để xem hình trụ có nắp (TRUE) hay khơng(FALSE) đáy(bottom), đỉnh(top) hình trụ } Nút Cone: Cone{ radius Một giá trị thực bán kính đáy hình nón height Mơt giá trị thực chiều cao hình hộp } Nút Sphere: Sphere{ radius } trường radius bán kính hình cầu Đây bốn nút hình học để bạn xây dựng nên đối tượng hình học mình.Chúng gọi nút hình học chuẩn Để xây dựng nên đối tượng hình học khơng chuẩn bạn dùng nút IndexedFaceSet, IndexedLineSet, IndexedPointSet,ElavationGrid, Extrusion Thông thường bạn tạo đối tượng tâm trùng với tâm hệ toạ độ địa phương, để di chuểyn đối tượng bạn dùng nút Transform Transform{ Scale Translation Rotation Children[] Chỉ biến đối đối tượng giá trị dịch chuyển theo trục x, y, z góc quay trục quay nút chịu tác động translation rotation } Trong nút Transform Scale có tác động đầu tiên, sau đến rotation translation Để gom nhiều nút lại với ta sử dụng nút Group, cú pháp sau: Group{ Children[] chứa nút nút Nguyễn Vĩnh Thuận –CNPM K46 13 Đồ hoạ máy tính thực ảo Ngôn ngữ VRML } Group { children [ DEF SENSOR1 SphereSensor { } DEF VECTOR1 Transform { children [ Transform { translation 0.5 children [ Shape { appearance Appearance { material Material { diffuseColor 0 } } geometry Cylinder { height radius 0.03 } } ] } ] } ] } Group { children [ DEF SENSOR2 SphereSensor { } DEF VECTOR2 Transform { children [ Transform { translation 0.5 children [ Shape { appearance Appearance { Nguyễn Vĩnh Thuận –CNPM K46 31 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML material Material { diffuseColor } } geometry Cylinder { height radius 0.03 } } ] } ] } ] } DEF CROSSVECTOR Transform { children [ Transform { translation 0.5 children [ Shape { appearance Appearance { material Material { diffuseColor 0 } } geometry Cylinder { height radius 0.03 } } ] } ] } DEF CROSS Script { eventIn SFRotation vector1_rotation_changed eventIn SFRotation vector2_rotation_changed Nguyễn Vĩnh Thuận –CNPM K46 32 Đồ hoạ máy tính thực ảo Ngôn ngữ VRML field SFVec3f vector1 field SFVec3f vector2 eventOut SFRotation crossvector_set_rotation eventOut SFVec3f crossvector_set_scale url "javascript: function calc_cross_product() { var crossVec = vector1.cross(vector2); var crossVecLength = crossVec.length(); if (crossVecLength < 0.001) crossVecLength = 0.001; crossvector_set_scale = new SFVec3f(1,crossVecLength,1); var unitVec = new SFVec3f(0,1,0); crossvector_set_rotation = new SFRotation(unitVec,crossVec); } function initialize() { calc_cross_product(); } function vector1_rotation_changed(value,time) { var unitVec = new SFVec3f(0,1,0); vector1 = value.multVec(unitVec); } function vector2_rotation_changed(value,time) { var unitVec = new SFVec3f(0,1,0); vector2 = value.multVec(unitVec); } function eventsProcessed() { calc_cross_product(); } " } ROUTE SENSOR1.rotation_changed TO VECTOR1.rotation ROUTE SENSOR1.rotation_changed TO CROSS.vector1_rotation_changed ROUTE SENSOR2.rotation_changed TO VECTOR2.rotation ROUTE SENSOR2.rotation_changed TO CROSS.vector2_rotation_changed ROUTE CROSS.crossvector_set_rotation TO CROSSVECTOR.set_rotation ROUTE CROSS.crossvector_set_scale TO CROSSVECTOR.set_scale Đầu tiên có đờng tròn (màu đỏ xanh) thể đơn vị vectơ Cả hai đợc gắn với Sphere Sensors, bạn di chuyển chúng Đờng tròn thứ (mµu xanh da trêi) thĨ hiƯn tÝch cđa vector Tích vectơ vectơ trực giao với vectơ chiều dài vectơ phụ thuộc vào góc vectơ ban đầu Bạn không thÓ di chuyÓn Nguyễn Vĩnh Thuận –CNPM K46 33 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML hình tròn màu xanh da trời đợc tạo từ Script, phụ thuộc vào vị trí hình tròn khác Để tạo vectơ tích, cần vectơ Tuy nhiên, mà có từ SphereSensors quay tròn, phải biến đổi chúng sang vectơ Việc đợc thực quản kiện cách tạo vectơ đơn vị quay chúng giá trị quay eventIn sử dụng phơng thức multVec() đối tợng SFRotation Kết đợc lu đối tợng SFVec3f cho ngời dùng tính vectơ tích Vì có sụ thay đổi, muốn tính toán lại vectơ tích đa kết Việc đơn giản hàm calc_cross_product Đầu tiên ta tính tích vector1 vector2, cho kết crossVec Tuy nhiên để có đợc vectơ VRML , cần biến đổi sang góc quay ban đầu chiều dài Sự thay đổi đợc thấy hình tròn màu xanh da trời Đầu tiên hÃy giải vấn đề tỉ lệ Chúng ta có chiều dài cách dùng phơng thức length() kiểu SFVec3f Tuy nhiên có tỉ lệ 0, cần kiểm tra xem tỉ lệ có khác hay không cách dùng lệnh if Bây mn lÊy tû lƯ b»ng trơc Y, v× thÕ tạo SFVec3f Chúng ta cần đặt góc quay cho Chúng ta dùng cÊu tróc cđa kiĨu SFRotation Nã cho phÐp b¹n t¹o góc quay dùng vectơ, from, to Góc quay đợc tạo góc từ vectơ from đến vectơ to Vì tạo vectơ đơn vị theo trục Y tạo góc quay sử dụng vectơ Đây góc quay cần dùng nh kết đa Bạn từ ví dụ để xắp xếp phơng thức hữu ích đối tợng chuẩn VRML 97 Sẽ rât hữu ích bạn đọc qua mô tả đối tợng trớc bạn bắt tay vào lập trình Nếu không bạn gặp nhiều sai sót mà việc sửa lỗi tốn thời gian gấp nhiều lần 5,The Browser object Đối tợng Browser đối tợng ECMAScript nằm bên trình dịch ECMAScript đợc cung cấp trình duyệt VRML Tất trình duyệt cần đợc cung cấp đối tợng Không may, script hỗ trợ VRML thờng mâu thuẫn nói chung thờng hỗ trợ không tốt Điều đáng tiếc script hỗ trợ đóng vai trò quan trọng Dù vậy, nh đà nói, đối tợng Browser đợc gắn liền dịch ECMAScript trình duyệt Đó đối tợng tĩnh, nghĩa bạn tạo biến kiểu đối tợng trớc bạn sử dụng phơng thức Để sử dụng phơng thức bên đối tợng Browser, cần sử dụng cú pháp sau : Browser.functionName() Nó thực thi phơng thức tĩnh bên đối tợng Browser Đối tợng Browser đối tợng sử dung nhiều Nó tài nguyên thông tin cung cấp số cách thay đổi giới quan cđa b¹n Tríc hÕt, chóng ta sÏ xem viƯc lÊy thông tin từ trình duyệt Bạn hÃy nhớ lại Script node có trờng đợc gọi directOutput mustEvaluate Chóng Nguyễn Vĩnh Thuận –CNPM K46 34 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML kh¸ quan trọng sử dụng Browser, nên nhắc lại cho bạn biết chúng có vai trò mustEvaluate Nếu có giá trị true, script đợc định lợng tức khắc Trình duyệt đợc phép ngăn lại trình xử lý script có trình quan trọng cần thực hiƯn tríc MustEvaluate nÕu b»ng true th× tr×nh dut sÏ khả làm điều mà phải thùc thi script tøc kh¾c directOutput – nÕu cã giá trị true, script ghi trực tiếp tới eventIns đọc trực tiếp từ eventOuts nút mà nã truy cËp tíi B×nh thêng, script cã thĨ chØ làm nh gửi nhận kiện tập kiện bình thờng Information Technology Tập phơng thức mà xem đối tợng Brower phơng thức lấy thông tin Tôi xếp chúng lại, kèm theo mô tả ngắn gọn phơng thức : Browser.getName() Đây phơng thức trả lại chuỗi chứa tên trình duyệt, ví dụ nh "Cosmo Player" Nó trả chuỗi rỗng thông tin.It returns Browser.getVersion() Phơng thức trả lại chuỗi chứa thông tin phiên trình duyệt Nó chuỗi rỗng thông tin Browser.getWorldURL() Phơng thức trả lại chuỗi URL đợc load Browser.getCurrentFrameRate() Trả lại giá trị tơng đơng với tốc độ load frame hành (số hình ảnh trình duyệt thể đợc giây) Browser.getCurrentSpeed() Đây phơng thức trả giá trị số, thời gian tốc độ chuyển động ngời dùng, liên quan đến hệ thống toạ độ Viewpoint's Browser.setDescription(string description) cần mustEvaluate có giá trị TRUE phơng thức thay đổi mô tả trang Web chuỗi, tơng đơng tham số Browser.loadURL(MFString url, MFString parameter)-cần mustEvaluate có giá TRUE Nó load thông tin từ file khác Đối số danh sách MFString để thử The chuẩn VRML, phần tử danh sách đợc thử thành công Đối số thứ 2, parameter, cung cấp thêm thông số, chẳng hạn cửa sổ TARGET vv Những tham số bạn hoàn toàn sư dơng cho node Anchor Thùc tÕ cã nhiỊu c«ng việc làm giống nh Anchor Nếu trang Web đợc load xuống lúc trang bị đóng xuống đợc thay nội dung Nguyễn Vĩnh Thuận –CNPM K46 35 Đồ hoạ máy tính thực ảo Ngôn ngữ VRML Browser.replaceWorld(MFNode nodes) - cần mustEvaluate có giá trị TRUE Nó thay toàn trang load node đối tợng MFNode Phơng thức không bào quay lui lại đợc, giống nh script vận hành đợc thay Có phơng thức cho phép bạn tạo phần VRML , chúng đợc biết tới nh phơng thức createVrmlFromX Chúng : Browser.createVrmlFromString(String string) Browser.createVrmlFromURL(MFString url, SFNode node, String eventIn) Các phơng thức cho phép ta tạo phần VRML từ chuỗi file Cả phơng thức tạo đối tợng MFNode mới, bạn sử dụng để thêm vào nhóm node thông qua addChildren eventIn.Tất node có kiện eventIn này, bạn thêm node nơi bạn muốn Hai phơng thức làm việc theo cách không khác mấy, nh bạn thấy định nghĩa phơng thức Tại có điều không rõ Bạn cịng cã thĨ nghÜ chóng lµm viƯc nh nhau, nhng thực tế createVrmlFromString lấy chuỗi làm tham số trả lại đối tợng MFNode chứa VRML từ chuỗi Chuỗi phải VRML có giá trị phải độc lập hoàn toàn Có nghĩa sử dụng DEFed chuỗi nh cho định nghĩa PROTO Bạn tính đến ROUTEs chuỗi Về bản, chuỗi giống nh file VRML sử dụng quy định file cho chuỗi Ví dụ, bên mét script mµ cã sù kiƯn eventOut cđa MFNode gọi newChildren, dẫn đến kiện addChildren nhóm node, làm mét sè viÖc nh sau newVRML = 'Shape {'; newVRML += ' appearance Appearance {'; newVRML += ' material Material {'; newVRML += ' diffuseColor 0'; newVRML += ' }'; newVRML += ' }'; newVRML += ' geometry Box {'; newVRML += ' }'; newVRML += '}'; newChildren = Browser.createVrmlFromString(newVRML); Chúng kết hợp thành chuỗi mà cần sau tạo thành MFNode từ chuỗi MFNode đợc gán cho kiện eventOut newChildren, đợc gửi tới nhóm node Nút thời nhóm đợc thay thế, node đợc thêm vào Còn phơng thức khác phức tạp createVrmlFromString() làm việc đơn giản linh hoạt Ngợc lại, , createVrmlFromURL() phức tạp không linh hoạt Nguyn Vnh Thuận –CNPM K46 36 Đồ hoạ máy tính thực ti o Ngụn ng VRML Với phơng thức này, bạn phải cung cấp MFString chứa danh sách URL để thử thay vào tham số phơng thức Các file hoàn toàn phải có giá trị VRML tuân theo luật bình thờng Các node bên file đợc đọc biến đổi sang node míi cho b¹n sư dơng Sù lóng tóng sÏ đến bạn thử gửi MFNode tới nhóm node bên Phơng thức createVrmlFromString cho bạn đối tợng MFNode đơn giản mà bạn vận dụng cách linh hoạt làm bạn muốn Phơng thức createVrmlFromURL không trả lại giá trị Thay vào đó, gửi MFNode nó, từ bên phơng thức Đó vai trò tham số Đầu tiên tham chiếu đến nút bạn muốn thêm phần thứ hai tên MFNode eventIn mà nhận nút Tôi nghĩ ví dụ sau nói rõ DEF GROUP Group { } Script { field SFNode group USE GROUP url "javascript: function initialize() { urlString = new MFString('cone.wrl'); Browser.createVrmlFromURL(urlString,group,'addChildren'); } " } Nh bạn thấy, tham số tên file đợc dùng, SFNode tham chiếu, tên kiện eventIn Phơng thức quản lý thứ khác cho bạn, gửi nút vào addChildren eventIn nhóm Tôi không chắn lại làm nh vậy, nhng biết có lý Tôi nói cho bạn biết lý Khi lựa chọn bạn bỏ qua phơng thức createVrmlFromURL() sử dụng phơng thức createVrmlFromString() với nút Inline chứa tên file bạn muốn thay thÕ, nh : newVRML = 'Inline { url "cone.wrl" }'; newChildren = Browser.createVrmlFromString(newVRML); Nó đa chức giống nh phơng thức createVrmlFromURL() với việc sử dụng cách createVrmlFromString() Cám ơn Eyal Teler cho đề xuất Trở lại công việc hay xem ví dụ sau : #VRML V2.0 utf8 WorldInfo { title "Floppy's VRML97 Tutorial Example 4.5b" info ["(C) Copyright 2000 Vapour Technology Ltd." "guide@vapourtech.com"] Nguyễn Vĩnh Thuận –CNPM K46 37 Đồ hoạ máy tính thực ảo Ngôn ngữ VRML } NavigationInfo { type ["NONE"] } Viewpoint { description "Default View" position 0.5 } Transform { translation -0.25 -0.15 children [ DEF CUBESENSOR TouchSensor { } Shape { appearance Appearance { material Material { diffuseColor 0 } } geometry Box { size 0.1 0.1 0.17 } } ] } Transform { translation -0.15 children [ DEF SPHERESENSOR TouchSensor { } Shape { appearance Appearance { material Material { diffuseColor } } Nguyễn Vĩnh Thuận –CNPM K46 38 Đồ hoạ máy tính thực ảo Ngôn ngữ VRML geometry Sphere { radius 0.05 } } ] } Transform { translation 0.25 -0.15 children [ DEF CONESENSOR TouchSensor { } Shape { appearance Appearance { material Material { diffuseColor 0 } } geometry Cone { bottomRadius 0.05 height 0.1 } } ] } DEF TOP Transform { translation 0.5 children [ Transform { rotation 0 1.57 children [ Shape { appearance Appearance { material Material { diffuseColor 0.4 0.4 0.4 } } geometry Box { size 1e-8 Nguyễn Vĩnh Thuận –CNPM K46 39 Đồ hoạ máy tính thực ảo Ngôn ngữ VRML } } ] } ] } DEF CREATOR Script { eventIn SFTime cube_touchTime eventIn SFTime sphere_touchTime eventIn SFTime cone_touchTime field SFNode parentNode USE TOP eventOut MFNode newChildren mustEvaluate TRUE url "javascript: function cube_touchTime(value,time) { newVRML = 'Group {'; newVRML += ' children ['; newVRML += ' DEF SENSOR PlaneSensor {'; newVRML += ' maxPosition 0.45 0.45'; newVRML += ' minPosition -0.45 -0.45'; newVRML += ' }'; newVRML += ' DEF OBJECT Transform {'; newVRML += ' children ['; newVRML += ' Shape {'; newVRML += ' appearance Appearance {'; newVRML += ' material Material {'; newVRML += ' diffuseColor 0'; newVRML += ' }'; newVRML += ' }'; newVRML += ' geometry Box {'; newVRML += ' size 0.1 0.1 0.1'; newVRML += ' }'; newVRML += ' }'; newVRML += ' ]'; newVRML += ' }'; newVRML += ' ]'; newVRML += '}'; newVRML += 'ROUTE SENSOR.translation_changed TO OBJECT.set_translation'; Nguyễn Vĩnh Thuận –CNPM K46 40 Đồ hoạ máy tính thực ảo Ngôn ngữ VRML newChildren = Browser.createVrmlFromString(newVRML); } function sphere_touchTime(value,time) { newVRML = 'Group {'; newVRML += ' children ['; newVRML += ' DEF SENSOR PlaneSensor {'; newVRML += ' maxPosition 0.45 0.45'; newVRML += ' minPosition -0.45 -0.45'; newVRML += ' }'; newVRML += ' DEF OBJECT Transform {'; newVRML += ' children ['; newVRML += ' Shape {'; newVRML += ' appearance Appearance {'; newVRML += ' material Material {'; newVRML += ' diffuseColor 0'; newVRML += ' }'; newVRML += ' }'; newVRML += ' geometry Sphere {'; newVRML += ' radius 0.05'; newVRML += ' }'; newVRML += ' }'; newVRML += ' ]'; newVRML += ' }'; newVRML += ' ]'; newVRML += '}'; newVRML += 'ROUTE SENSOR.translation_changed TO OBJECT.set_translation'; newChildren = Browser.createVrmlFromString(newVRML); } function cone_touchTime(value,time) { urlString = new MFString('cone.wrl'); Browser.createVrmlFromURL(urlString, parentNode, 'addChildren'); } " } ROUTE CUBESENSOR.touchTime TO CREATOR.cube_touchTime ROUTE SPHERESENSOR.touchTime TO CREATOR.sphere_touchTime ROUTE CONESENSOR.touchTime TO CREATOR.cone_touchTime Nguyễn Vĩnh Thuận –CNPM K46 41 Đồ hoạ máy tính thực ảo Ngôn ngữ VRML ROUTE CREATOR.newChildren TO TOP.addChildren TÊt phơng thức đơn giản, đa ví dụ, qua bạn thấy hoạt động chúng Trong bạn không hiểu tất thứ đà quen thuộc TimeSensor ví dụ có vai trò cập nhật bình thờng văn hình #VRML V2.0 utf8 WorldInfo { title "Floppy's VRML97 Tutorial Example 4.5a" info ["(C) Copyright 2000 Vapour Technology Ltd." "guide@vapourtech.com"] } NavigationInfo { } Viewpoint { description "Default View" } Shape { appearance Appearance { material Material { diffuseColor 1 } } geometry DEF TEXT Text { fontStyle FontStyle { size 0.5 justify "MIDDLE" } } } DEF TIMER TimeSensor { loop TRUE Nguyễn Vĩnh Thuận –CNPM K46 42 Đồ hoạ máy tính thực ảo Ngôn ngữ VRML startTime stopTime -1 cycleInterval 0.1 } DEF TEXTCREATOR Script { eventIn SFTime ping eventOut MFString string url "javascript: function ping(value,time) { browserString = 'Browser: ' + Browser.getName(); versionString = 'Version: ' + Browser.getVersion(); urlString = 'URL: ' + Browser.getWorldURL(); speedString = 'Speed: ' + Browser.getCurrentSpeed(); frameString = 'Frame Rate: ' + Browser.getCurrentFrameRate() + ' fps'; string = new MFString(browserString, versionString, urlString, speedString, frameString); } " } ROUTE TIMER.cycleTime TO TEXTCREATOR.ping ROUTE TEXTCREATOR.string TO TEXT.string III.Nội dung tập lớn Trong tập lớn tập trung mô tồ nhà (lấy mơ hình từ nhà C14_15 DHBKHN) sử dụng ngơn ngữ VRML kèm theo JavaScript.Chương trình cho phép người dùng quan sát nhà từ xa hay gần,có thể tham quan phịng học(giống thực tế, bao gồm bàn ghế,cửa vào,cửa sổ,quạt trần ) IV.Các đối tượng tập lớn 1,Cửa vào Nguyễn Vĩnh Thuận –CNPM K46 43 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML Mã VRML có dạng sau: SENSOR CylinderSensor { diskAngle 0.78 maxAngle minAngle } DEF OBJECT Transform { children [ canhcua{ pos 0 0} ] } ROUTE SENSOR.rotation_changed TO OBJECT.rotation Như để xây dựng cánh cửa quay ,ta xây dựng cánh cửa tĩnh sau đưa vào Cylindersensor với điều kiện tâm hệ toạ độ di chuyển cạnh bên cánh cửa 2,Cửa kéo Nguyễn Vĩnh Thuận –CNPM K46 44 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML Mã VRML có dạng sau: Group { children [ Transform { translation 0.4 2.39 scale 0.6 1.52 children [ DEF SENSOR PlaneSensor { maxPosition minPosition 0.05 } DEF SLIDER Transform { rotation 1.57 children [ cuaso{pos 0 0} ] } 3,Quạt trần Quạt trần quay nhờ quạt có định nghĩa nút nội suy hướng, hoạt động theo TimerSensor Nguyễn Vĩnh Thuận –CNPM K46 45 .. .Đồ hoạ máy tính thực ảo BÁO CÁO BÀI TẬP LỚN "ĐỒ HOẠ MÁY TÍNH VÀ HIỆN THỰC ẢO" Ngơn ngữ VRML MƠN HỌC I.Giới thiệu VRML 1.V ngụn ng VRML... K46 27 Đồ hoạ máy tính thực ti o Ngụn ng VRML hảo Sun, hoàn toàn độc lập với máy Bạn dịch chơng trình sang dạng mà byte(bytecode) chơng trình đích đợc tạo chạy loại máy nh thể có máy java ảo đÃ... tham quan phịng học(giống thực tế, bao gồm bàn ghế,cửa vào,cửa sổ,quạt trần ) IV.Các đối tượng tập lớn 1,Cửa vào Nguyễn Vĩnh Thuận –CNPM K46 43 Đồ hoạ máy tính thực ảo Ngơn ngữ VRML Mã VRML có

Ngày đăng: 21/11/2012, 09:55

Hình ảnh liên quan

4,Bảng kộo - Đồ họa máy tính và hiện thực ảo

4.

Bảng kộo Xem tại trang 44 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan