Tìm hiểu một số kĩ thuật xây dựng mô hình 3D và ứng dụng trong tạo lập Web

Phần mở đầu Cùng với sự bùng nổ của Internet, nhu cầu sử dụng Website và số lượng Website ngày càng tăng cao. Website trở thành một công cụ để người ta quảng bá mọi vấn đề, mọi lĩnh vực, đặc biệt là trong thương mại. Các công nghệ mới luôn được áp dụng vào Website: công nghệ quản trị nội dung, kiết xuất thông tin, tác tử v.v . Trong đó, sử dụng yếu tố đồ hoạ vào trong Website là một công nghệ đang rất được quan tâm. Công nghệ thiết kế đồ hoạ cho Website cũng có nhiều cách tiếp cận khác nhau. Cách tiếp cận lâu đời và đang phổ biến hiện nay đó là Website sử dụng các hình ảnh 2 chiều. Các hình ảnh hai chiều chỉ thể hiện được các sự vật theo chiều dài và chiều rộng. Điều này sẽ hạn chế khá nhiều khi muốn quan sát một vật nào đó một cách kĩ càng. Với các trang Web giới thiệu sản phẩm, nếu giới thiệu một cách tỉ mỉ một sản phẩm nào đó thì người ta phải trình bày các bức ảnh chụp sản phẩm ở các góc độ khác nhau sẽ tốn bộ nhớ, tốn thời gian tải, tốn diện tích trang Web. Một cách tiếp cận khác chính là sử dụng các hình ảnh 3 chiều. Trong đó, cũng rẽ ra làm hai khuynh hướng. Đó là 3D giả lập và 3D. 3D giả lập chỉ mô phỏng các nguyên lý dựng hình 3 chiều. Tiêu biểu cho 3D giả lập là flash. Quả thật dùng flash đã làm cho Website trông sống động hơn rất nhiều. Các file này cũng khá nặng và đòi hỏi ở máy khách phải cài các phần mềm mới có thể đọc được. Và nói chung, người xem vẫn ở thế bị động vì các flash chuyển động không phụ thuộc vào ý muốn của người xem. Để giải quyết các vấn đề trên, khoá luận của em được thực hiện nhằm hai mục đích: - Tìm hiểu các kĩ thuật dựng hình phổ biến hiện nay. Quá trình tìm hiểu này nhằm phân tích các kĩ thuật dựng hình vốn rất phong phú hiện nay để tìm hiểu thế mạnh của từng kĩ thuật và áp dụng kĩ thuật nào vào trường hợp dựng hình cụ thể nào thì cho hiệu quả tốt nhất. - Tìm hiểu các kĩ thuật tạo Web3D theo khuynh hướng thứ 2, tức là sử dụng các mô hình 3D thực sự. Thực chất của mục đích này là muốn giới thiệu kĩ thuật đẩy các mô hình 3D lên trang Web. Bố cục của khóa luận gồm có 3 chương chính: Chương 1: Tổng quan về Web Chương này sẽ giới thiệu bối cảnh chung của sự phát triển của Website và 3D. Đồng thời cũng giới thiệu qua một số công cụ để xây dựng các mô hình 3D hay sử dụng hiện nay. Chương 2: Kĩ thuật xây dựng mô hình 3D Chương này sẽ giới thiệu một số kĩ thuật xây dựng mô hình 3D và tối ưu các mô hình đó. Công đoạn xây dựng mô hình sẽ ảnh hưởng đến dung lượng và chất lượng của mô hình Chương 3: Áp dụng các mô hình 3D vào trong tạo lập Web Chương cuối cùng này sẽ đề cập đến các vấn đề nảy sinh khi sử dụng các hình ảnh 3D trong tạo lập Web và hướng giải quyết các vấn đề đó. Sau đó, sẽ đi sâu vào giới thiệu cách để đẩy mô hình lên trang Web. Em hi vọng đề tài này sẽ có giá trị thực tiễn và góp phần phát triển xu hướng xây dựng các Web3D ở Việt Nam.

doc62 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3759 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Tìm hiểu một số kĩ thuật xây dựng mô hình 3D và ứng dụng trong tạo lập Web, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ông hợp lệ Hình không hợp lệ là hình mà có các điểm không thuộc một cạnh nào và có các cạnh không thuộc một mặt nào. Một vài gói phần mềm không chấp nhận một hình không hợp lệ vì thế cần lưu ý để loại bỏ nó. 2-manifold là một khối hình mà khi ta trải nó trên mặt phẳng thì không có phần nào nằm chồng chéo lên nhau. Ngược lại với nó là non-manifold. Đó là những hình không thể nào trải các mặt của nó trên mặt phẳng được. Hình 2.5: Các kiểu non-manifold Hình chữ «T « : Đây là 2 mặt chia sẻ một cạnh chung. Đó là một khối hình đa kết nối. Hình thứ 2 là hai mặt cùng chia sẻ một điểm duy nhất nhưng không có cạnh chung. Hình thứ 3 là hai mặt nối tiếp nhau nhưng có vector trực giao ngược chiều nhau. Non-planar : Là các hình mà có các điểm trong đó không có 3 điểm nào nằm trên một mặt phẳng. 2.3.2 Khái niệm về một số chi tiết trong mô hình a. Các điểm (Points) Trong dựng hình, có nhiều thuật ngữ để nói về điểm. Mỗi một thuật ngữ lại được áp dụng trong các trường hợp khác nhau. - Control point (CP): Một điểm điều khiển hình dạng của một đối tượng. Ví dụ của CP là các điểm của NURBS (control vertices - CVs), các đỉnh của Polygon (polygonal vertices). Một đối tượng phải có các điểm điều khiển để biến đổi hình dạng. - Control vertex (CV): Trong dựng hình, một điểm mà điều khiển hình dạng của đường cong NURBS hay bề mặt thì gọi là control vertex. - Vertex: là một đỉnh. Nhiều Vertex thì người ta sử dụng từ vertices. Nó là: Một điểm trong không gian 3D. Trong dựng đa giác, nó là một góc giao của hai hoặc nhiều face của đa giác.. - Edit point (EP): Trong dựng hình, một điểm mà nằm trên đường cong mà là điểm nối của các đa thức biểu diễn đường cong thì được gọi là các Edit point . Thêm các EP đối với một đường cong không ảnh hưởng tới hình dạng của đường cong nhưng tạo ra thêm đoạn (segment) cho đường cong và thêm phần (span) cho bề mặt. EP còn được gọi là các knot. - Multi-knot và CV Multiplicity : Multi-knot là nhiều EP ở trong cùng một vị trí trong không gian. CV multiplicity là nhiều CV ở trong cùng một ví trí trong không gian. Multi-knot và CV muliplicity thường không được mong muốn. Vì lý do: thứ nhất là làm tăng dung lượng, thứ hai là không có tác dụng gì cho đường cong và thứ 3 là nhiều công cụ sẽ không làm việc chính xác khi có chúng. b. Các đường cong(Curves) Đường cong để biểu diễn cho một biểu thức toán học.Phương trình biểu diễn đường cong dễ tính toán và biểu diễn trên đồ thị nhất là có dạng: x = a+bt + ct2 + dt3+… y = g+ht + jt2 + kt3+… Dạng biểu diễn này tiện lợi và phù hợp với tính chất 3 chiều của mô hình. Các đường cong bậc càng cao thì càng phức tạp và càng đòi hỏi nhiều khối lượng tính toán. Vì thế để biểu diễn các đường này thì người ta đã nghĩ ra cách phân đoạn. Có nghĩa là đường cong phức tạp được phân ra thành từng đoạn. Mỗi đoạn lại là một đường cong nhưng có bậc nhỏ hơn. Điểm giao của các đoạn tạo ra đường cong đó người ta gọi là edit points, còn mỗi đoạn đó người ta gọi là segment hay là span. Tuy nhiên không phải lúc nào các đường cong bậc cao cũng phải giảm bớt bậc của nó đi. Những đường cong bậc tầm 5 đến 7 có lợi là cho đường cong có vẻ trơn tru hơn và có độ căng. Chúng thường được sử dụng trong thiết kế tự động (automotive design). Bậc của đường cong cũng xác định độ trơn của các điểm nối giữa các span: Đường bậc 1 (linear): các đường cong chỉ việc đặt ở các vị liên tiếp nhau. Đường bậc 2 (squadratic): các đường cong đặt tiếp xúc với nhau Đường bậc 3 (cubic): các độ cong liên tiếp với nhau. -Bậc(degree): Đây là khái niệm để chỉ một span thì có bao nhiêu CV. Đường bậc 1: là các EP đặt thẳng hàng Đường bậc 2: Có một phần cong giữa các EP. Các bề mặt thì có nhiều bậc theo chiều dài và chiều rộng. Có thể chiều rộng bậc 3 nhưng chiều dài lại bậc 4. -Parameter (tham số): Các tham số là các giá trị bằng số duy nhất của các điểm (giống như là toạ độ) nằm trên đường cong hay surface. Hình2.6: minh hoạ tham số của đường cong tại một điểm Tham số mà càng lớn thì điểm nằm càng cao trên đường cong Đối với đường cong, cần một tham số xác định dọc theo chiều dài đường cong, đó là tham số U. Đối với surface cần môt tham số nữa để xác định theo bề rộng của surface, đó là tham số V. -Normal: Nó là đường trực giao tại một điểm nằm trên bề mặt hay đường cong. Nó dùng để xác định xem một mặt đang xét là mặt trong (inside) hay mặt ngoài (outside) của bề mặt. Hình 2.7: Normal -Có thể chia đường cong thành 3 loại: khép kín, đóng, mở (periodic, closed, open). Khép kín: Có 2 phần đầu và cuối nằm gối lên nhau Đóng: Có 2 phần: đầu và cuối chung nhau tại một điểm Mở: Phần đầu và cuối không giao nhau. Đối với đường khép kín, khi dịch chuyển EP đầu thì EP cuối dịch theo. Một số đường cong cơ bản là theo kiểu này Đối với đường cong đóng, khi dịch chuyển EP thì tính đóng bị mất. Nên tạo ra đường cong khép kín hơn là đường cong đóng. -Các thành phần của một đường cong: CV: Số CV trên một đoạn sẽ bằng bậc của đường cong tạo đoạn đó cộng với 1. Ví dụ như một đường cong bậc 3 thì cần đến 4 CV trên nó. EP: CV và EP cho biết có bao nhiêu đoạn tạo ra đường cong đó. Hull: khi vẽ một số đường cong thì có đường nối giữa các CV để thể hiện vết của hình đường cong, đó là hull Hình 2.8: Các thành phần chính của một đường cong Biên tập một đường cong nên làm việc với các CV hơn là các EP vì các EP không làm thay đổi hình dạng của đường cong bằng các CV, dễ gây đổ vỡ hình khối và tăng dung lượng. c Các Surface Tạm dịch là bề mặt. Trong dựng hình, surface là một tập các đường cong liên kết với nhau. Trong tạo kết xuất, surface là một lớp bao phủ đối tượng để xác định xem đối tượng đó sẽ phản xạ ánh sáng như thế nào. Có thể bề mặt chỉ có một màu nào đó, hoặc có thể là một mẫu vật liệu, một vỏ xù xì, hoặc trơn nhẵn. Một số thành phần của surface: - Isoparm: viết tắt từ cụm từ isoparametric curve. Đó là một đường cong nằm trên surface hay ở một EP có giá trị U hoặc V là hằng số. - Đường cong trên bề mặt (curve-on-surface): Là một loại đường cong nằm trong một vùng tham số nào đó của đường cong. Curve-on-surface thường được sử dụng để cắt tỉa surface. Một đối tượng đồ hoạ là một tập các surface. Có hai kĩ thuật hiển thị của surface là dạng đổ bóng (shaded surface)và dạng khung (wireframe). - Shaded surface: Một kĩ thuật hiển thị cho phép một đối tượng hình học được trình bày ở dạng đổ bóng kín một bề mặt. - Wireframe: Một kĩ thuật hiển thị cho phép một đối tượng hình học được trình bày ở dạng là một tập các đường là khung của mô hình. 2.3.3 Khái niệm xây dựng từ phần mềm. a. Node Chương trình được trình được tạo từ các node. Để có được một khung cảnh, một hệ thống các node được sinh ra và tương tác với nhau. Các node này có các tập thuộc tính (attribute) tạo ra tính chất riêng của node. Tập thuộc tính của node này có thể làm đầu vào cho một node khác, tạo ra mối quan hệ giữa các node. Từ mối quan hệ này mà các đối tượng trong khung cảnh được xây dựng lên b. Các phương pháp đồ hoạ Đồ hoạ phụ thuộc – Dependency Graph: Tạm dịch là đồ hoạ phụ thuộc.Đồ hoạ phụ thuộc là một trong 2 cách thể hiện khung cảnh (cách còn lại là phân cấp khung cảnh -scene hierarchy ). [1] Dependency graph giống như một dãy các công việc xây dựng để làm thế nào có được khung cảnh bắt đầu từ một tập các công việc sơ đẳng chẳng hạn như: “ tạo một hình cầu A, di chuyển những CV, tạo đường cong B làm project curve ( đường cong định hướng ) trên A để tạo ra một curve-on-surface (đường cong nằm trên surface), cắt tỉa hình cầu A sử dụng đường cong trên surface C ” và cứ như thế. DG lấy tên của nó từ sự liên kết giữa các node. Node sau lấy output của node trước để làm input. Các node liên kết với nhau thông qua sự truyền giá trị của tập thuộc tính của từng node. Đồ thị mở có định hướng – Directed Acyclic Graph: Tạm dịch là đồ thị mở có định hướng. Trình bày theo DAG cho phép tăng sự trực quan khi làm việc phân cấp các thành phần của khung cảnh (scene hierachy) qua sự phân cấp các node (node cha – node con). Để tạo ra DAG, có thể tạo ra hai node quan trọng để làm việc với vị trí của các thành phần trong khung cảnh và hình dạng của sự vật là: Transform nodes – bảo đảm các thông tin dịch chuyển (vị trí, quay, căn chỉnh..). Ví dụ: Nếu dựng một bàn tay, dùng một transform node để quay bàn tay và ngón tay, hơn là quay từng phần một. Shape nodes – Chỉ liên quan tới hình dạng và không cung cấp thông tin biến đổi hay thông tin gốc. c. Các khung nhìn-view Cho phép hình dung khung cảnh, thể hiện sự vật trong thế giới 3D. Trong đó có hai khung nhìn chính là Perspective và Orthographic. Perspective là khung nhìn phối cảnh, nó thể hiện cảnh vật như là ta đang nhìn trực tiếp. Orthographic là khung nhìn trực giao với cảnh vật, nó tập trung thể hiện cảnh vật trên hai trục toạ độ nào đó. Hình 2.9: Các kiểu khung nhìn d.Hệ toạ độ Hệ toạ độ sử dụng là Oxyz. Các trục Ox, Oy, Oz lần lượt thường được gán theo màu RGB (Red, Green, Blue) để phân biệt các trục này. Hệ toạ độ thường được gắn vào bộ công cụ dịch chuyển của phần mềm để làm việc với các thuộc tính của transform-node. +Cần điều khiển của công cụ Move (Dịch chuyển) +Cần điều khiển của công cụ Rotate (Xoay) +Cần điều khiển của công cụ Scale (Tỉ lệ ) 2.4. Kĩ thuật xây dựng 2.4.1 Vẽ đường cong a. Sử dụng CV để tạo đường cong Có thể đặt các CV để tạo ra đường cong. Các CV không phải là các điểm nằm trên đường cong nhưng có vai trò chỉ ra hình dạng của đường cong . Lưu ý: số bậc của đường cong bằng số CV trừ 1. Ví dụ như một đường cong bậc 5 thì cần có 6 CV để tạo ra nó.Số. Bậc của đường cong càng cao thì độ trơn của đường cong càng tốt nhưng độ phức tạp càng tăng b. Sử dụng EP để tạo đường cong EP là điểm nằm trên đường cong. Tuy vẽ trực tiếp từ điểm nằm trên đường cong nhưng từ đó vẫn phải tính toán để tìm ra CV và hull. Khi biên tập đường cong, các tính toán vẫn dựa vào phần khung này. Mặt khác làm việc với CV tốt hơn và dễ dàng hơn rất nhiều so với làm việc trên EP. c. Vẽ cung tròn Có hai cách để vẽ một cung tròn: - Input (A,B) -> Output ( O, r) với A, B là hai điểm đầu cuối, r là bán kính - Input (A,M,P)-> Output(O,r): Xác định input là 3 điểm đầu, cuối và đỉnh của cung tròn, từ đó tính toán tâm, bán kính. Các đường cong được vẽ có thể lên tới 180 độ. Tuy nhiên không thể tạo ra được một đường tròn khi sử dụng công cụ tạo đường cong. Bởi vì hai điểm đầu cuối của đường tròn là cùng một vị trí. Trong khi đó, vẽ cung tròn không cho bất kì hai điểm nào có cùng toạ độ một cách chính xác. Để tạo ra đường tròn, các phần mềm đều có các tool hoặc action riêng. Hình 2.10: Hai cách vẽ cung tròn d. Tạo đường cong từ các đường các đường cong khác - Fit-Bspline: 1 node được tạo ra với input là một đường cong bậc 3 và output là đường cong bậc 1. Cách này hay sử dụng khi sử dụng lại các đường cong, surface hoặc là các dữ liệu được số hoá từ các sản phẩm khác mà có các đường cong bậc 1. Các thuộc tính cần phải chú ý: Sai số khi chuyển đổi. Thường sai số là 0.1 cm Đường cong input: là đường cong kiểu NURBS. Đường cong ouput: là đường cong kiểu NURBS. - Sao chép đường cong: Có thể tạo ra một đường cong từ một đường cong khác bằng cách sao chép (Duplicate). Có hai cách để sao chép: Một là bản sao và bản chính ở cùng một ví trí và hai là bản sao cách bản chính một khoảng nào đó. Cách thứ hai được gọi là Offset. Sao chép đường cong hay sử dụng để tạo các bề mặt có tính cân xứng, có các chi tiết lặp đi lặp lại. Ví dụ: tạo 3 đường cong song song với nhau cách nhau 1 khoảng. Sau đó sử dụng phép Loft để tạo một surface (hình 2.11) Hình 2.11: Offset sử dụng trong phép Loft 2.4.2 Tạo surface Các surface là thành phần quan trọng để tạo ra hình dạng của mô hình. Việc tạo ra các bề mặt đều đi từ nguyên tắc chung là từ các đường cong liên kết với nhau. Điều cần chú ý ở đây là bề mặt sau khi được tạo ra, nó thuộc loại gì : Polygon, NURBS hay là Subdivision.. 1. Tạo surface từ đường cong a. Tạo mặt phẳng từ một đường cong -Planar: Tạo ra một mặt phẳng từ một đường cong đóng hoặc là một đường cong khép kín hay một tập các đường cong khép kín. Hình 2.12: Planar - Revolve: Hành động này phát huy hiệu quả đối với các surface đòi hỏi có tính đối xứng qua một trục nào đó ví dụ như khi tạo một cái cốc. Hình 2.13a: Revolve theo trục x Hình2.13b: Revolve theo trục y và trục z - Bevel: Để mở rộng thành một bề mặt từ một đường cong ban đầu sao cho bề mặt đó có một cạnh xiên. Hay áp dụng trong tạo các surface có gờ mép như là chữ cái, ghế bọc đệm v..v Hình2.14: Tạo một chữ M bằng Bevel Có thể Bevel các đường cong là cạnh của một surface, isoparm hay là các đường cong 3D thông thường. b.Tạo bề mặt từ ít nhất hai đường định hướng - Loft: Loft là kĩ thuật hay được sử dụng vì khả năng của loft khá linh hoạt. Loft cũng làm việc với nhiều đường cong. Các đường cong này được gọi là profile curve hay là cross-section được hiểu là các đường xương sống để tạo ra bề mặt. Thông thường sử dụng cách này để làm việc với các đường cong song song với nhau cùng phương và chiều. Hình 2.15: Tạo bề mặt nhờ Loft -Extrude: Extrude như ý nghĩa của từ đó, tức là tạo surface bằng cách từ một đường cong cơ sở profile curve và một đường cong định hướng project curve tưởng tượng có một thao tác như kéo dãn profile curve theo hướng của project curve cho đến khi bằng với độ dài của project curve. Phép Extrude thường sử dụng để tạo ra các sự vật có dạng đường ống. Hình 2.16: Extrude một đường tròn theo đường cong 2. Sao chép surface - Cũng tương tự như đường cong, các bề mặt cũng có thể được sao chép với hai cách sao chép là Duplicate và Offset. Sử dụng phép hai phép này khi muốn tạo ra các surface giống y hệt surface ban đầu trong các phép dựng mô hình có nhiều chi tiết giống nhau hoặc lặp đi lặp lại. Ví dụ: Dựng các chân cột của một ngôi đền. - Sao chép bề mặt còn thể là một phép ánh xạ (mirror). Với phép ánh xạ. ta chỉ cần dựng một nửa đối tượng rồi ánh xạ bề mặt đó qua trục đối xứng của đối tượng để tạo ra một đối tượng hoàn chỉnh. Sử dụng cách này khi dựng các đối tượng có tính chất đối xứng qua trục đối xứng của đối tượng đó. (Hình 20 dưới đây) Hình2.17: Mirror trên nửa quả cầu 3. Sử dụng phép toán Boolean vào trong dựng hình Nhiều khi trong dựng mô hình, việc ghép nhiều mô hình lại với nhau rất hay xảy ra. Vì vậy ý tưởng sử dụng toán tử Boolean vào trong dựng hình đã được đặt ra. Ví dụ: Một hình lập phương cùng với một hình nón có thể sử dụng phép loại trừ ( difference ) để tạo ra một hình vuông với một cái hố hình phễu ở trong. Phép Union: hai đối tượng sẽ được nối liền với nhau như phép hợp Phép Sucstract: đối tượng thứ nhất sẽ bị bỏ đi một phần đúng bằng đối tượng thứ hai như phép trừ. Phép Intersect: đối tượng sẽ chỉ giữa lại phần mà xuất hiện trong cả hai đối tượg như phép giao. Hình2.18: Sử dụng toán tử Boolean vào trong dựng hình 4. Các phương thức làm trơn a. Làm trơn trên Polygon Đối với một bề mặt NURBS, vấn đề làm trơn sẽ được thực hiện tốt hơn nhưng với Polygon, cũng có một vài phương thức làm trơn để mô hình được thể hiện một cách tốt hơn. Một vài kiểu làm trơn trên Polygon : Smooth:chỉnh sửa các hình bằng cách làm trơn các điểm và các cạnh nối các điểm đó Smooth Proxy: cũng giống như Smooth nhưng vẫn giữ nguyên hình dạng của Polygon gốc và làm trơn bằng cách thêm vào các Polygon. Phương thức này sử dụng để dựng và hoạt hóa dễ dàng. Average Vertices. Tính trung bình các giá trị của các điểm để tạo ra một bề mặt được làm trơn mà không làm thay đổi hình dạng hình (smoother surface) Hình2.19: Các kiểu làm trơn cho Polygon b. Làm trơn trên NURBS NURBS tạo ra các bề mặt có độ trơn nhẵn cao hơn so với Polygon. Tuy nhiên, để hiệu quả hình ảnh được tốt hơn, vẫn cần phải hỗ trợ một số phương thức làm trơn. Thứ nhất, đối với đường cong, chính tại các EP là nơi mà độ trơn bị giảm. Có rất nhiều lý do để giải thích cho vấn đề này. Thứ nhất, do khi dựng đường cong NURBS, người ta đã phân nhỏ đường cong thành các đoạn -segment , các đoạn là các đường cong có bậc nhỏ hơn đường cong tạo thành. Do đó, tại các điểm nối, tính trơn liền giữa bậc các đường cong, độ cong của các đường cong, tính liên tiếp của các đường cong, các tham số truyền v.v.. đã ảnh hưởng tới độ liên tục của đường cong đó. Vì thế phải cần làm trơn đường cong – Smooth Curve. Hành động này sẽ tính toán lại để các đoạn của đường cong thống nhất về hướng, về độ cong v.v... Bề mặt NURBS cũng cần được làm trơn. Bề mặt NURBS được tạo thành từ các đường cong và các mảng ráp. Trong đó, các đường cong được chia thành các đoạn, và các mảng ráp được chia thành các phần (segment và span). Làm trơn trên bề mặt chính là làm việc với các span này. Số lượng span, số lượng đường cong trên một span sẽ quyết định đến chất lượng của bề mặt. Độ trơn sẽ càng tăng khi mật độ span, mật độ đường cong lớn. Nhưng dung lượng dữ liệu, độ phức tạp của bề mặt vì thế mà cũng tăng lên. Vì thế cần phải cân nhắc kĩ khi tiến hành làm trơn. 5. Biên tập Sau khi có được các bề mặt, phải tiến hành chỉnh sửa các bề mặt, liên kết, tách cắt, làm trơn v.v... Tất cả các hành động đó được gọi là biên tập bề mặt. Một số chú ý khi biên tập để đảm bảo chất lượng và dung lượng hình: Giảm số điểm điều khiển: các điểm mà sự có mặt của nó không ảnh hưởng tới hình dạng của mô hình, Multiknot và CV multiplicity cần phải loại bỏ vì nó làm tăng dung lượng mô hình không cần thiết. Xoá các face không nhìn thấy. Sử dụng sự hỗ trợ của phần mềm để làm giảm dung lượng. Ví dụ: Một số kĩ thuật làm giảm dung lượng của phần mềm Maya Giảm số segment, số span, số isoparm, số division nhỏ nhất có thể. Optimize: sẽ xoá đi các phần rỗng, không dùng đến, các hình bị sai để giảm dung lượng và giảm độ phức tạp của khung cảnh. Polygon > Reduce: làm giảm số lượng các Polygon, các UV và các vertex color. Edit Curves > Rebuild Curve: giảm độ phức tạp của đường cong Edit Surfaces > Rebuild Surface: giảm độ phức tạp của surface Hình dạng của mô hình quyết định rất nhiều bởi quá trình này. 2.4.3 Các kĩ thuật tạo kết xuất 1. Đổ bóng – Shading a. Giới thiệu về đổ bóng và texture các surface Đổ bóng – Shading Trước hết cần tìm hiểu một số khái niệm sau: Surface shading: là sự kết hợp giữa chất liệu của đôi tượng với texture áp lên đối tượng Surface texturing: một texture là một ảnh tạo ra hoạ tiết cho surface. Phép kết nối một texture với vật liệu của đối tượng gọi là phép map. Shading network: Đây là tập các node liên kết với nhau theo phương pháp DG, trong đó node trước được tạo ra, truyền giá trị, cho ouput là input của node sau. Ví dụ: các node texture phải lấy tập giá trị về màu sắc của node material nếu muốn sử dụng phép color map. Khi đổ bóng phải chú ý đến độ phản chiếu ánh sáng specular highlight. Có những đối tượng sẽ phản ứng với ánh sáng rất mạnh nhưng có những đối tượng lại không. Ví dụ một con cá voi thì sẽ phải bóng sáng hơn một chiếc là khô. Vì thế tuỳ vào từng đối tượng để chọn vật liệu sáng cho phù hợp. Như vậy độ sáng của đối tượng không phụ thuộc vào vị trí đặt điểm sáng mà phụ thuộc vào góc nhìn (camera) và độ bóng nhẵn của bề mặt. Hình2.20: Vật liệu sáng hay sử dụng Với các vật liệu sáng khác nhau lại sử dụng cho những trường hợp khác nhau. Như Blinn hay dùng cho các bề mặt sáng bóng trong hoạt hoạ trong khi đó Phong hay PhongE lại có thể gây ra hiện tượng nhấp nháy khi hoạt hoạ. Highlight: là một kiểu phản chiếu ánh sáng mà làm cho đối tượng trông vửa phẳng nhẵn lại vừa chói sáng. Hình dưới mô tả hiện tượng chói sáng, màu chói sáng và chói sáng có phản chiếu. Hình2.21 : Các hiện tượng highlight Các vật liệu - material Có thể một bề mặt được chiếu sáng trông như ở thế giới thực nhưng có rất nhiều sự khác biệt khi các surface và ánh sáng tương tác trên một phần mềm đồ hoạ. Để tạo ra một vật liệu phù hợp, các node sau tương tác với nhau: - Metarial node là một node quyết định surface của đối tượng sẽ biểu hiện như thế nào khi dựng hình xong. Các node này sẽ định nghĩa làm thế nào để surface tương tác với ánh sáng. Metarial node phải thể hiện ánh sáng thông qua các thông tin sau, các thông tin này cũng là các node riêng. - Surface metarial node:Thể hiện các kiểu của surface mà trên đó sẽ áp các texture. Các thuộc tính như là ánh sáng, độ mờ, độ phản chiếu, vẻ bóng láng v..v Ví dụ, nếu một texture yêu cầu một bề mặt sáng, như crome thì sử dụng Phong material hơn là Lambert. - Displacement material node:Để sử dụng một ảnh xác định quá trình chạm trổ trên các đối tượng trong khung cảnh. - Volumetric material node: Để mô tả các hạt khói như: hạt sương, hạt khói hay hạt hơi nước.. Các metarial node khác nhau về giá trị của tập thuôc tính có thể được liên kết với nhau để áp dụng nhiều vật liệu trên một đối tượng. Vật liệu như vậy được gọi là vật liệu phân tầng layered shader. Tuy nhiên quá trình xử lý với phân tầng vật liệu sẽ mất nhiêu thời gian hơn vì vậy thay vào phân tầng vật liệu thì nên phân tầng các texture hơn mà hiêu quả đạt được thì vẫn như thế. Texture này được gọi là layered texture. Các texture Texture là các ảnh để tạo ra hoạ tiết của bề mặt đổ bóng. Tất cả các hành động định nghĩa một bề mặt sẽ trông như thế nào sau khi render có thể được coi là tập các phương thức của node texture. Trong Shading networks thì texture node hay metarial node đều là đầu vào của Shading Group node. Thông thường các texture là các ảnh bitmap được import vào phần mềm đồ hoạ để chiếu (map) tới các thuộc tính của vật liệu. Texture map cho thuộc tính nào của vật liệu như màu sắc, độ trong suốt hay độ sáng sẽ gây ra các hiệu ứng tương ứng ảnh hưởng tới bề ngoài của đối tượng. Các texture có 2 dạng là 2D texture và 3D texture : 2D texture bao lấy đối tượng giống như là gói quà goặc là gắn vào mặt phẳng giống như wallpaper (Hình 25). 3D texture chiếu xuyên qua đối tượng giống như các vân trên đá hoa hay là trên gỗ. Với 3D texture, các đối tượng trông như được khắc lên chất liệu (Hình 26). Các texture môi trường-Environment texture hay được sử dụng để làm background của đối tượng hoặc là map phản xạ. Hình2.22: Texture 2D Hình2.23: Texture 3D Một số chú ý để sử texture hiệu quả : - Nói chung, hay sử dụng file texture thay vì material vì nó đơn giản hơn và chất lượng hình ảnh tốt hơn, tốn ít dung lượng hơn. - Các File texture nên bé nhất có thể để giảm thời gian render. Apple Mac OS X còn không hỗ trợ cho các texture lớn hơn 1K. - Với các bề mặt như tường, gỗ, đá hoa.... trên các đối tượng có các cạnh thẳng hàng nhau thì sử dụng các ảnh làm nhiều lần. Ảnh này sẽ được phân tách thành các phần nhỏ hơn để map. Các ảnh này tải sẽ nhanh hơn, dễ dùng hơn trong quá trình render. - Các ảnh bitmap nên để dạng hình vuông. - Các texture hay sử dụng là các file *.PSD. PSD hay sử dụng bởi các lợi ích của nó trong layer sets như sau : Có thể thêm, xoá hay sửa chữa bất kì một tầng nào trong khi file đó vẫn duy trì kết nối với phần mềm đồ hoạ Có thể dễ dàng tạo layered texture Map các texture Để sử dụng một texture, kết nối texture đó tới các thuộc tính của vật liệu của đối tượng. Đó gọi là hành vi map. Các thuộc tính mà texture kết nối tới sẽ xác định xem texture sẽ được sử dụng như thế nào và vì thế sẽ ảnh hưởng tới kết quả cuối cùng. Ví dụ khi map một texture hình bàn cờ với hai màu trắng đen thì phải kết nối texture với thuộc tính màu sắc và sau đó xẽ xác định xem phần nào là ô trắng phần nào là ô đen. Map sử dụng gọi là color map Hình2.24: Color map * Các phép map hay sử dụng: - color map: Kết nối texture với thuộc tính Color, mô tả màu đối tượng - transparency map: Kết nối texture với thuộc tính Transparency, mô tả đối tượng sẽ trong suốt ở chỗ nào, mờ đục ở chỗ nào. - specularity map: Kết nối texture với thuộc tính Specularity, mô tả ánh sáng chiếu trên đối tượng sẽ như thế nào. - reflection map: Kết nối texture với thuộc tính Reflection, mô tả một vật phản xạ với xung quanh như thế nào. - bump map và displacement map: Tạo ra các bề mặt lồi lõm trên bề mặt mà không cần phải dựng. Hiện tượng này gọi là Surface Relief Hình2.25: Surface Relief * Các phương pháp map - Map thường normal map: phép map áp texture vào surface theo toạ độ UV tuỳ thuộc vào các tham số UV của surface. - Map định hướng projection map: phép chiếu texture thông qua một không gian 3D giống như một máy chiếu. Khi đó texture 2D sẽ trông như một texture 3D vì nó thề hiện được cả độ dài, rộng và sâu. Hình2.26: Normal map và Projection map Nền - Background - Thông thường thì nền của bức ảnh được đính kèm vảo ảnh nhờ phần mềm. Nhưng nếu đươc, vẫn có thể chèn nền do người dùng định nghĩa. Việc này nhằm: Tránh phải dựng các đối tượng nền và khung cảnh nhưng lại muốn thể hiện khung nhìn như là trong 2D Giống như là một sự tham chiếu ngẫu nhiên trong dựng hình và hoạt hóa - Nền cơ bản và nền do texture: Hình2.27: Tạo nền bằng màu cơ bản hoặc bằng file texture Nền cơ bản hay còn gọi là nền màu sẽ tạo nền với một màu nào đó ví dụ như đen, trắng hay xanh dương. Nền texture là nền tạo ra từ texture 2D, 3D hay là Environment Image file background : Hình2.28: Tạo nền bằng file ảnh Một cách khác để tạo nền là sử dụng ảnh hay một tập ảnh và map thành một mặt phẳng ảnh nền như là một tấm phông của khung cảnh. Cách này hay dùng trong các trường hợp như: Như một tham chiếu khi dựng cảnh Như một background thay vì phải dựng toàn bộ Bắt lấy bóng và phản xạ Tạo ra các môi trường với các texture môi trường. Image plane là một mặt phẳng được sinh tự động do mặt phẳng chiếu của camera và vuông góc với camera. Tưởng tượng ở đằng sau khung cảnh có một mặt phẳng, mặt phẳng này được xác định sao cho camera có dịch chuyển, giao điểm vì thế cũng dịch chuyển nhưng mặt phẳng vẫn bao quát toàn bộ khung cảnh. Các file image nền tĩnh (Static image file background) là nền một ảnh và không thay đổi trong quá trình hoạt hóa Các file image nền động (Dynamic image file background) là nền gồm nhiều ảnh hoặc là một file film. Các mô phỏng nền 3D:Một nền ảnh là một ảnh 2D đặt ở đằng sau đối tượng trong khung cảnh. Tuy nhiên có thể mô phỏng ảnh nền 3D. Mô phỏng bằng cách tạo ra các surface “đóng thế” của đối tượng trên ảnh nền. Các đối tượng trong khung cảnh khi đó có thể: Chuyển động ra sau đối tượng trong ảnh nền Tạo bóng trên các đối tượng của ảnh nền Nhận các bóng từ các đối tượng của ảnh nền Được các đối tượng ở ảnh nền phản chiếu chính xác . Hình2.29: Các mô phỏng nền 3D 2. Ánh sáng – Lighting Trong thế giới thực, khi mà một nguồn sáng chiếu tới một surface thì phần nào hướng tới nguồn sáng thì sẽ phát sáng, các phần còn lại sẽ là tối hoặc là nửa tối. Nếu một đối tượng nằm giữa một đối tượng và một vùng chiếu sáng thì đối tượng thứ hai sẽ tạo bóng trên đối tượng thứ nhất. (Hình 2.30 bên dưới) Sự hấp thụ, sự phản xạ, sự khúc xạ ánh sáng là các vấn đề cần đề cập đến trong quá trình chiếu sáng. Màu sắc của đối tượng trong thế giới thực thực ra là sự tương tác của đối tượng đối với ánh sáng. Tất cả các đối tượng đều có khả năng hấp thụ hay phản xạ ánh sáng. Các đối tượng hấp thụ ánh sáng sẽ bị tối hoặc là mờ mờ. Ví dụ như gỗ.Các đối tượng phản xạ ánh sáng nếu bề mặt trơn nhẵn. Ví dụ như gương hoặc kính.Các đối tượng mặt nhám phản xạ ánh sáng theo nhiều góc khác nhau. Ví dụ như Trái đất. Các đối tượng khúc xạ ánh sáng cho ánh sáng truyền qua. Ví dụ như nước hay là kim cương. Ví dụ: Một vài kiểu ánh sáng Hình2.30: Một vài kiểu ánh sáng 3. Kết xuất- Rendering a. Các loại kết xuất - Có ba loại kết xuất: kết xuất cứng, mềm và vector (hardware, software, vector rendering). - Software rendering: đây là kiểu kết xuất cho chất lượng của hình ảnh cao nhất, có thể lấy ra các kết quả phức tạp nhât. Các tính toán được thực hiện ở trên CPU. Đặc biệt là nó không đòi hỏi sức mạnh của card đồ hoạ. Vì thế kết xuất bằng phương thức này rất linh hoạt. Chính xác thì chất lượng do phần mềm render quyết định. Một vài phần mềm render như: vrml, mentalray, Maya software renderer v...v - Hardware rendering: đây là kiểu kết xuất phụ thuộc vào card video và driver cài đặt cho máy tính. Kết xuất bằng phần cứng thì cho tốc độ làm việc nhanh hơn kết xuất bằng phần mềm nhưng nó lại cho hình ảnh kém hơn. Ngoài ra, kết xuất bằng kiểu này có thể không thực hiện được các hiệu ứng phức tạp như : đổ bóng cấp cao, các phản chiếu mà phải dùng phần mềm mới có thể dùng được. - Vector rendering: đây là cách dựng hình trong trường hợp muốn tạo phong cách riêng cho sản phẩm ( ví dụ như cartoon, tonal art, wireframe...) với các định dạng ảnh bitmap và vector2D Trên đây là một số kĩ thuật dựng hình cơ bản. Tuỳ thuộc vào phần mềm dựng hình và tuỳ thuộc vào hoàn cảnh cụ thể các phương pháp sẽ được áp dụng b. Một số chú ý để kết xuất hiệu quả: Để hiệu quả phải có sự cân bằng giữa độ phức tạp của hình ảnh được yêu cầu và tốc độ dựng hình để xác định có bao nhiều frame thì đủ cho một khoảng thời gian nhất định. Thời gian render nói chung là lâu vì nó đòi hòi một lượng các phép tính khổng lồ của máy tính. Hình càng lắm chi tiết, càng phức tạp thì thời gian dựng hình càng lâu. Nhất là trong mục đích thương mại, yếu tố kinh tế được đặt lên trên hàng đầu nên chất lượng của hỉnh ảnh cũng chỉ nên tốt ở mức vừa phải để làm sao càng đỡ tốn thời gian dựng hình càng tốt. Vì thế trong các phần mềm Games, các hình ảnh thường là chất lượng trung bình. Tóm lại, một quá trình dựng hình khái quát nhất bao gồm các bước sau: b1: Dựng mô hình - modelling b2: Tạo bóng - shading b3: Tạo kết xuất - rendering Chương 3: Sử dụng mô hình 3D vào trong tạo lập Web 3.1. Các vấn đề đặt ra khi sử dụng các mô hình 3D trong tạo lập Web Sau khi có được mô hình, vấn đề tiếp theo là làm thế nào để đẩy được các mô hình lên trang Web. Các vấn đề đặt ra khi sử dụng mô hình 3D trong tạo lập Web: Chất lượng và dung lượng của hình ảnh. Làm thế nào để đẩy những ảnh 3D lên trang Web? Chất lượng ảnh có ảnh hưởng tới diện mạo của Website vì thế chất lượng của các ảnh phải chấp nhận được. Còn dung lượng của hình ảnh quyết định tới thời gian tải của mô hình trên trang Web và dung lượng của bộ nhớ. Hai yêu cầu này đều đòi hỏi phải giải quyết tốt nhưng thường xảy ra một mâu thuẫn đó là nếu chất lượng ảnh càng cao thì khối lượng tính toán càng lớn và dung lượng ảnh càng tăng. Vậy phải giải quyết mâu thuẫn trên như thế nào? Với vấn đề thứ hai, để các mô hình đẩy được lên trang Web thì phải xem trình duyệt có hỗ trợ cho loại định dạng của file sau khi xuất ra hay không. 3.2. Giải pháp Với vấn đề thứ nhất, để hình ảnh có chất lượng, nó phụ thuộc vào kĩ thuật và kinh nghiệm của người dựng; sức mạnh của phần mềm dựng hình được sử dụng; phương tiện tạo kết xuất. Để giảm dung lượng ảnh phải giảm được số điểm điều khiển, giảm hay nén các face, xác định kích cỡ các chi tiết cho phù hợp. Để giảm các điểm điều khiển hay các face có thể thực hiện các cách sau: Áp dụng kinh nghiệm của người dựng hình vào trong dựng hình bắt đầu từ lựa chọn loại mô hình (NURBS, Polygon, Subdiv...) đến việc tối ưu lại mô hình trong quá trình biên tập. Ở chương 2, bên cạnh việc giới thiệu các kĩ thuật dựng hình, với sự hiểu biết của em, em đã giới thiệu các kĩ thuật dựng hình đó được sử dụng vào những trường hợp nào, lưu ý khi sử dụng và cách để giảm số điểm điều khiển, số face khi biên tập mô hình. Sử dụng texture thay vì dùng toàn material vừa cho bề mặt đẹp hơn, dễ làm việc hơn, vừa giảm thời gian dựng hình, giảm dung lượng.Ví dụ:dùng Bump map và Displacement map thay vì phải dựng các sự vật có bề mặt lồi lõm sẽ cho hiệu quả bề mặt lồi lõm như thật mà tốn ít dữ liệu hơn. Xuất file thành các định dạng khác nhau cho các kích cỡ khác nhau. Ví dụ: file dạng nhị phân cho kích cỡ file nhỏ hơng dạng text. Việc chọn loại hình tạo kết xuất cũng ảnh hưởng tới công việc. Bởi vì như đã nói, kết xuất ảnh hưởng tới chi phí dựng hình, chất lượng hình. Hơn nữa, không phải định dạng file nào sau khi kết xuất cũng sử dụng được và không phải trình duyệt nào cũng chấp nhận các định dạng của file sau khi kết xuất. Giải quyết vấn đề này như sau: Chọn loại tạo kết xuất là software renderer. Các software renderer hay sử dụng là : Vray, Mental ray và vrml. Chọn trình duyệt: IE Chọn loại phần mềm kết xuất: Cho đến thời điểm hiện nay, VRML là loại phần mềm hỗ trợ tốt nhất cho trình duyệt IE và Netscape. Nếu chọn các loại phần mềm khác như Mentalray, Vray, bắt buộc phải viết chương trình Plug-in vào IE. 3.3. Làm việc với VRML đẩy mô hình lên trang Web. [3]VRML là từ viết tắt của Virtual Reality Modeling Language.VRML là ngôn ngữ dựng hình có từ rất lâu đời và với sự phát triển của đồ hoạ 3D trên Internet thì VRML vẫn là ứng cử viên tốt nhất tại thời điểm này. VRML plug-in sẵn với các trình duyệt Netscape và IE. Để tải được các mô hình, trên máy khách phải có một chương trình để đọc các file vrml. Ví dụ: cortvrml. Với các mô hình đã có, ta có thể sử dụng để: Xuất về ảnh 2D: để làm các avatar hoặc là các nút link... Ảnh 3D nhưng không thể di chuyển mô hình: ví dụ như làm logo Trình bày mô hình có thể xoay hình, dịch chuyển, kéo thả từng phần hoặc toàn bộ hình hoặc là phóng to, thu nhỏ hình (zoom) Làm film Các phần mềm dựng hình đều có thể cho các mô hình xuất về dạng 2D với các định dạng file thường gặp như: bmp, png, gif, jpg... Tuy nhiên phải chú ý dung lượng của file ảnh cuối cùng vì ảnh 2D có được rất có thể bị nhoè, hoặc kích cỡ lớn làm chất lượng ảnh giảm đi. Với 3 cách cuối phải sử dụng file VRML. Một lợi thế của VRML là các phần mềm đồ hoạ đều cho export về VRML. Song hạn chế của VRML chính là chất lượng của hình ảnh so với các loại phần mềm dựng hình khác là kém hơn. Cũng vì lý do chất lượng mà trước đây ý tưởng Web3D được nêu ra nhưng chưa được phát triển mạnh mẽ. Tuy nhiên, với các phiên bản mới nhất của VRML vd:VRML 2.0 thì chất lượng cũng đã được cải thiện rất tốt. Vì thế, sử dụng VRML vẫn là cách tốt nhất hiện nay. 3.3.1 Tiến trình công việc Dựng hình bằng phần mềm dựng hình Tạo kết xuất VRML Làm việc trên ngôn ngữ VRML Đẩy mô hình lên trang Web Việc lựa chọn phần mềm dựng hình là tuỳ thuộc vào người dựng. Nhưng hai phần mềm được đánh giá là tiêu biểu nhất hiện nay là Maya và 3DStudioMax. Nên sử dụng một trong hai phần mềm này để dựng hình. Sau khi có được mô hình, công việc tiếp theo là xuất mô hình – export. Các phiên bản mới nhất của các phần mềm dựng hình đều hỗ trợ phiên bản mới nhất VRML2.0, cho nên chọn kiểu file export là vrml2. VRML hỗ trợ nhiều kiểu file: *.wrl, *.wgz, *.wrz trong đó wrl là định dạng chuẩn còn hai định dạng sau là các file nén. Để tiện cho sử dụng và sử dụng lại file thì nên chọn kiểu file là wrl. Ví dụ về một file VRML đơn giản: #VRML V2.0 utf8 -> chỉ cho IE biết đang làm việc với phiên bản nào và hỗ trợ uft8 cho xâu Thân CT Group { children [ DEF ts TouchSensor { } Sound { source DEF ac AudioClip { loop FALSE url "some.mid" } } Shape { appearance Appearance { material Material {} } geometry Cylinder {} } ] } Chương trình tạo một hình trụ ở tâm tại điểm (0,0,0). Một điểm mạnh của VRML so với các phần mềm tạo kết xuất khác chính là thời gian export của nó rất nhanh. Nếu cùng một mô hình, tạo kết xuất bằng Mentalray có thể mất đến 10 phút thì tạo kết xuất bằng VRML chỉ mất chưa đầy 1 phút. Với ứng dụng trong đề tài này, phần dựng hình chỉ dừng lại ở dựng mô hình, đổ bóng và tạo kết xuất. Nên các hiệu ứng như hoạt hoá, texture v...v sẽ thực hiện trên VRML. 3.3.2 Sử dụng ngôn ngữ VRML Một mô hình sau khi được dựng xong và export sang file wrl có dạng : #VRML V2.0 utf8 -> header WorldInfo -> giới thiệu nguồn xuất { title "bike2" info "VRML2.0 created with Version 1.3, from Alias Maya 7.0" } NavigationInfo -> Node hoạt hoá { type [ "NONE" ] headlight TRUE speed 1.00000 } Switch -> Định nghĩa tập giá trị các thuộc tính của mô hình, vật liệu { whichChoice -1 choice [ Shape {}... Shapde{} ... ] } Group{ -> Nhóm các hình khối .... children[ DEF Viewpoint { .....} -> Định ghĩa một góc nhìn như một điểm đặt camera DEF shape_name1 Transform{} -> Gắn các hình khối với vật liệu vào một toạ độ DEF shape_name2 Transform{} .... DEF TOUCH TouchSensor {} -> Sensor cảm nhận hành động của chuột DEF TimeSource TimeSensor -> Sensor đếm thời gian { loop TRUE cycleInterval 3 } ] .... } ROUTE TOUCH.touchTime TO TimeSource.set_startTime -> Khi Click chuột thì bộ đếm thời gian hoạt động Với file wrl như thế này, mô hình được tạo ra hoàn toàn là mô hình tĩnh. Với mô hình tĩnh, khi đẩy lên trang Web, không thể dùng chuột để tương tác với mô hình. Để có thể dùng chuột tương tác với mô hình, phần Plug-in của VRML vào IE cũng có hỗ trợ. Chi tiết về cách đẩy mô hình lên trang Web sẽ được trình bày kĩ hơn ở phần sau. Trên đây là ví dụ một file mô hình tĩnh được dựng từ phần mềm Maya 7.0 và xuất sang VRML 2.0. Ngoài việc xuất đơn thuần như thế này, em còn tạo thêm các node để hoạt hoá các mô hình này. Để hoạt hoá, có nhiều cách khác nhau và cần tạo thêm các node của VRML chuyên để hỗ trợ cho hoạt hoá. 3.3.3 Các node cần sử dụng cho hoạt hoá Việc sử dụng sự trợ giúp sẵn có, chỉ có thể dừng lại ở mức cho người xem được tương tác với mô hình mà không thể hoạt hoá được mô hình. Để có thể hoạt hoá được mô hình, bắt buộc người lập trình viết lại code của file VRML. Trong đó, phải thêm vào một số node hỗ trợ cho hoạt hoá. Dưới đây, em sẽ giới thiệu một cách khái quát nhất các node hay sử dụng để phục vụ cho hoạt hoá NavigationInfo:Là một node gốc hỗ trợ để user có thể xem xét khung cảnh với sự tiếp cận gần với thực tế hơn. Cú pháp: NavigationInfo { eventIn SFBool set_bind exposedField MFFloat avatarSize [0.25, 1.6, 0.75] exposedField SFBool headlight TRUE exposedField SFFloat speed 1.0 exposedField MFString type "WALK" exposedField SFFloat visibilityLimit 0.0 eventOut SFBool isBound } Trong đó, đáng chú ý là trường type. Có các loại: WALK: user có thể xem xét quanh khung cảnh và chịu tác động của trọng lực. FLY: user có thể xem xét quanh khung cảnh và không chịu tác động của trọng lực EXAMINE: user đứng im nhưng có thể xoay hình theo các góc nhìn khác nhau. Kiểu này hay sử dụng trong các mô hình ôtô, xe đạp v..v NONE: hoàn toàn đứng im. Hay dùng trong phim, quảng cáo và sử dụng cho logo. Có thể khai báo trường type theo 1 trong 4 kiểu trên hoặc là khai báo như sau: type [ "EXAMINE","ANY" ] . Với khai báo kiểu này, NavigationInfo cho phép người dùng làm nhiều thao tác tương đương với cả WALK, FLY, EXAMINE trong đó EXAMINE là ngầm định. Timesensor: node này đơn giản là một chiếc đồng hồ hẹn giờ. TimeSensor { exposedField SFTime cycleInterval 1 -> chu kì exposedField SFBool enabled TRUE exposedField SFBool loop FALSE/ TRUE -> chạy 1 lần/ chạy liên tục exposedField SFTime startTime 0 exposedField SFTime stopTime 0 eventOut SFTime cycleTime eventOut SFFloat fraction_changed eventOut SFBool isActive eventOut SFTime time } Node này không hiển thị trên màn hình. TimeSensor là một node quan trọng trong hoạt hoá. Nó thường được dùng để sinh các sự kiện theo chu kì, các sự kiện on-off v..v TouchSensor: Là node điều khiển việc dùng chuột để tương tác với các hình trong khung cảnh. TouchSensor { exposedField SFBool enabled TRUE eventOut SFVec3f hitNormal_changed eventOut SFVec3f hitPoint_changed eventOut SFVec2f hitTexCoord_changed eventOut SFBool isActive eventOut SFBool isOver eventOut SFTime touchTime } Ví dụ: #VRML V2.0 utf8 Group { children [ ... DEF Clicker TouchSensor {} ..... DEF TimeSource TimeSensor {} ..... ] } ROUTE Clicker.touchTime TO TimeSource.startTime ->Click chuột thì đồng hồ sẽ đếm Khi chuột được rê trên , sự kiện isOver sẽ thiết lập giá trị TRUE và thiết lập giá trị FALSE khi không rê trên đó. Nếu giá trị isOver là TRUE, khi click chuột vào hình thì giá trị IsActive sẽ được thiết lập là TRUE và nếu nhả chuột ra thì giá trị IsActive là FALSE. Thường thì giá trị touchTime sẽ được gửi đến TimeSensor để bộ đếm thời gian hoat động. OrientationInterpolator: Các Interpolator là các node rất quan trọng trong hoạt hoá. Các node này dùng để thay đổi giá trị của một tập thuộc tính nào đó của đối tượng theo thời gian. Có sáu loại Interpolator: ColorInterpolator, CoordinateInterpolator, NormalInterpolator, OrientationInterpolator, PositionInterpolator, ScalarInterpolator. Các Interpolator làm việc với các thuộc tính khác nhau nhưng chúng đều giống nhau về cách hoạt động. Vì thế, em sẽ chỉ giới thiệu một node quan trọng đại diện mà em đã sử dụng trong sản phẩm. Đó là OrientationInterpolator. Cú pháp: OrientationInterpolator{ eventIn SFFloat set_fraction eventOut SFRotation value_changed exposedField MFFloat key [ ] exposedField MFRotation keyValue [ ] } Sử dụng: Để hoạt hoá các đối tượng quay tuỳ theo giá trị của keyValue. Đây là một Interpolator hay sử dụng nhất để hoạt hoá mô hình. Ví dụ: Quay mô hình theo trục Oy DEF Animation OrientationInterpolator { key [ 0 , 0.25 , 0.5 , 1 ] keyValue [ 0 1 0 0 , 0 1 0 2.1, 0 1 0 4.2, 0 1 0 0 ] } Billboard: Đây là một node làm việc với vị trí của các hình khối trong khung cảnh. Nó tự động quay khung cảnh quanh người xem. Tưởng tượng giống như có một cái bàn tròn, các mô hình được đặt trên cái bàn đó, ta đứng im ở giữa chiếc bàn còn Billboard sẽ làm nhiệm vụ xoay chiếc bàn để toàn bộ khung cảnh sẽ lần lượt hiện ra. Cú pháp: Billboard { eventIn MFNode addChildren eventIn MFNode removeChildren exposedField SFVec3f axisOfRotation 0 1 0 exposedField MFNode children [] -> add các hình khối vào Billboard field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1 } Billboard được sử dụng để chạy các chữ hoặc kết hợp với mô hình trục quay Oxyz để khi quay trục quay thì các mô hình khác trong khung cảnh cũng quay theo. Collision: Node này làm việc với các va chạm trong khung cảnh hoặc là như một sensor va chạm trong hoạt hoá. Collision { eventIn MFNode addChildren eventIn MFNode removeChildren exposedField MFNode children [] exposedField SFBool collide TRUE/FALSE -> kích hoạt/không kích hoạt kiểm tra va chạm field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1 field SFNode proxy NULL eventOut SFTime collideTime } Trong hoạt hoá, node này kiểm tra sự “va chạm” giữa user và các node con của Collision. Nếu giá trị collide là TRUE thì kiểm tra va chạm sẽ được thực hiện và đối tượng sẽ hiện lên trên khung nhìn. Còn nếu giá trị của collide là FALSE thì user có thể đi xuyên qua. Một trường quan trọng khác là collideTime, trường này được sử dụng để kích hoạt một sự kiện khi mà user “va chạm”với một hình khối nào đó trong khung cảnh. Script: Là node cho phép người dùng có thể tự định nghĩa các trường riêng, các sự kiện vào/ra riêng. Cú pháp : Script { exposedField MFString url [] field SFBool directOutput FALSE field SFBool mustEvaluate FALSE // Có thể có thêm các trường như: eventIn Type eventInName field Type fieldName default value eventOut Type eventOutName } Nói chung, node Script đều có ba trường hay sử dụng nhất là: Script { eventIn SFBool input field SFBool boolValue TRUE eventOut SFBool output url "....." } Có 3 cách để định nghĩa một url của Script: url tham chiếu đến một file *.class của Java url tham chiếu đến một file *.js của Javascript url trực tiếp thực hiện các câu lệnh Javascript: url "javascript: function input(value, time) { if (value==boolValue) output = value; } " Với các chương trình nhỏ thì nên sử dụng url với các câu lệnh hoặc một file JavaScript vì nó đơn giản, nhưng nó lại thiếu sức mạnh và độ linh hoạt như Java. Sử dụng với Java nhiều hơn khi cần viết các kịch bản lớn, khối lượng tính toán lớn hoặc phải tương tác nhiều với phần cứng. Hơn nữa, Java sẽ được biên dịch ra bytecode nên người dùng sẽ không thể nhìn thấy được kịch bản sẽ diễn ra như thế nào. Do đó tính bảo mật sẽ cao hơn. Với chương trình mà đề tài này xây dựng, các Script sẽ sử dụng JavaScript. Kịch bản được sử dụng để làm việc với hệ trục toạ độ và thanh kéo được tạo ra để khi sử dụng chuột quay hệ toạ độ, kéo sang trái hoặc sang phải thanh kéo thì hình cũng sẽ được xoay, được zoom tương ứng. Trên đây là một vài node quan trọng sử dụng để hoạt hoá. Công đoạn tiếp theo của xây dựng và hoạt hoá mô hình là đẩy các mô hình lên trang Web 3.3.4 Đẩy mô hình lên trang Web Cách đơn giản nhất và dễ thực hiện nhất là coi mô hình sẽ là một đối tượng. Ví dụ như đoạn code sau: <object id="A1" border="1" width="100%" height="100%" type="application/x-oleobject" classid="CLSID:1"> - > khai báo một đối tượng -> ẩn thanh công cụ của vrml hỗ trợ của VRML -> ẩn đi logo của vrml -> input file Như đã nói ở trên, một mô hình tĩnh được đẩy lên trên trang Web, có thể dùng chuột để quay mô hình là do sự hỗ trợ của VRML cho IE. Nếu không muốn dùng chuột có thể tương tác với mô hình có thể làm như sau: Khai báo phần NavigatioInfo với trường type là NONE Bỏ thẻ Cách này hay sử dụng khi dùng mô hình 3D làm logo Để có thể tương tác với mô hình, có thể sử dụng hai cách: Cách 1: Sử dụng chuột để tương tác Khai báo NavigationInfo với trường type là FLY/WALK/EXAMINE Tạo Object, sử dụng thẻ Cách 2: Hoạt hoá hoàn toàn bằng các node trong file VRML. Cách này người lập trình phải tự viết code trên file VRML. Sau đó, tạo object và đẩy mô hình lên bình thường Lưu ý: chuột được sử dụng trong mô hình nên là chuột có đủ ba phím : phím trái, phím phải và phím ở giữa. Sử dụng phím trái để xoay mô hình, phím giữa để phóng to hoặc thu nhỏ mô hình. Chương trình xây dựng được để minh hoạ cho đề tài sử dụng cả hai cách trên để hoạt hoá mô hình. 3.3.5 Thực nghiệm Để phục vụ cho đề tài, em đã xây dựng một website quảng cáo xe đạp. Hình 3.1: minh hoạ giao diện của mô hình Các công cụ được sử dụng cho đề tài: Phần mềm dựng hình: Maya Ver 7.0 Bộ cài để phục vụ cho máy Client tải file VRML: cortvrml 2.0 Trình duyệt IE Công việc tiến hành như sau: Dựng hình bằng Maya Xuất ra file định dạng các ảnh 2D : Gif, jpg. Hoặc: Xuất file về dạng VRML Khi xuất file về VMRL, có các dạng mô hình sau: Tạo object là một mô hình tĩnh Hình 3.2 : mô hình tĩnh không thể tương tác Tạo object là mô hình tĩnh có thể tương tác bằng chuột Hình 3.3: minh hoạ mô hình tĩnh quay theo hai hướng khác nhau Tạo object là mô hình động do hoạt hoá Có hai dạng mô hình chuyển động, một là click chuột vào thì mô hình mới chuyển động và hai là mô hình chuyển động liên tục. Hình 3.4 : Mô hình động Tạo object là mô hình gắn với trục quay và thanh zoom Hình 3.5: Mô hình xe đạp có thể dùng trục quay để quay và thanh kéo để zoom Tạo dòng text hoạt hoá  Hình 3.6: Dòng text được dựng bằng Maya và hoạt hoá bằng VRML Mô tả website Website em xây dựng được mô phỏng một cách đơn giản một Website bán hàng. Trang chủ của Website trình bày một số hình ảnh của xe đạp. Nếu người dùng muốn xem xét kĩ hơn một chiếc xe đạp nào đó thì click chuột vào ảnh của chiếc xe đó. Trang Web sẽ hiện ra các thông tin chi tiết của chiếc xe như: Tên nhà sản xuất, nơi sản xuất, giá thành, bảo hành v...v cùng với mô hình của chiếc xe đó. Mỗi một mô hình sẽ minh hoạ một cách tạo Object như đã trình bày ở trên. Dưới đây là sơ đồ tiến trình minh hoạ tiến trình công việc mà em đã thực hiện. Cũng có thể coi sơ đồ này như là một qui trình kỹ thuật để tạo ra Web3D để tham khảo. Dựng mô hình - modelling Hoạt hóa - Animation Tạo kết xuất – rendering Tối ưu hình - Rebuild Maya ver 7.0 VRML ver2.0 Đổ bóng-Shading Chiếu sáng-Animation Software VRML Kết xuất-Export Tạo Object trên trang Web WEBSITE INTERNET Hình 3.7- Sơ đồ tiến trình công việc Kết luận Web3D là một xu hướng phát triển tất yếu của Web. Trên thế giới, đã có rất nhiều các quốc gia quan tâm đến Web3D. Tuy nhiên ở Việt Nam, Web3D chưa có một trang Web3D nào. Giá trị thực tiễn của đề tài này là lớn. Thứ nhất, nó phù hợp với xu hướng phát triển của đồ hoạ 3D. Đồ hoạ 3D đang lan tràn trên rất nhiều lĩnh vực và mang lại một nguồn lợi không nhỏ cho các nhà kinh doanh. Thứ hai, nếu Web3D có mặt ở Việt Nam, nó sẽ góp phần để phát triển khuynh hướng sử dụng các mô hình 3D thực sự vào trong trang Web của Việt Nam. Web3D không phải là vấn đề quá khó đến độ không thể thực hiện được. Vì thực tế đã xuất hiện nhiều trang Web3D trên thế giới, trong đó có nhiều hãng lớn như Toyota, IBM, Samsung đã sử dụng các mô hình 3D thực sự vào trong Website của họ. Em cũng đã cài đặt thành công một Website quảng cáo xe đạp. Vì thế, em có thể khẳng định đề tài của em có tính khả thi, có giá trị thực tiễn. Trong thời gian qua, với đề tài “Tìm hiểu một số kĩ thuật dựng hình 3D và áp dụng vào trong tạo lập Web”, quá trình tìm hiểu đã đi đến một số các thành quả sau: Tìm hiểu các kĩ thuật dựng hình, đổ bóng, ánh sáng cho mô hình và cách sử dụng các kĩ thuật đó vào từng trường hợp để có hiệu quả về chất lượng và dung lượng. Bởi vì đây là điều kiện cần để tải được các mô hình 3D lên trang Web Đẩy mô hình 3D lên Website, có thể dùng chuột để quay, zoom hoặc quay tự động. Đây là điều kiện đủ để một Web3D được hình thành. Tuy nhiên, đề tài sẽ không dừng ở đó mà còn muốn nghiên cứu kĩ càng hơn nữa đề phát triển đề tài này. Đầu tiên, đề tài sẽ tìm hiểu sâu hơn để người xem có thể tiếp cận kĩ càng hơn với các hình ảnh được xem. Ví dụ như: tách ghép các bộ phận của mô hình, zoom từng bộ phận được chọn trong mô hình, làm phim v.v.. Thêm nữa, các Website sử dụng nhiều mô hình động chắc chắn sẽ cho hiệu quả rất tốt. Vì thế, các mô hình đưa vào trong trang Web cần phải được hoạt hoá chuyên nghiệp hơn, có sự phối hợp giữa mô hình tĩnh và mô hình động. Tuy nhiên, vấn đề đầu tiên là phải giảm được dung lượng của ảnh. Vì thế việc nén các face cũng là một hướng phát triển tiếp theo của đề tài này. Tài liệu tham khảo Tài liệu đính kèm của phần mềm Maya Version 7.0, 3DStudioMax 6, sketchup H. Sanchez, A.Moreno, D.Oyarzun, A.García-Alonso.Evaluation of NURBS surfaces: an overview based on runtime efficiency . Floppy’Web3D Guide

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

  • docTìm hiểu một số kĩ thuật xây dựng mô hình 3D và ứng dụng trong tạo lập Web.doc
Luận văn liên quan