Như vậy: “Thực tại ảo là công nghệ sử dụng các kỹ thuật mô hình hoá không gian ba chiều với sự hỗ trợ của các thiết bị đa phương tiện hiện đại để xây dựng một thế giới mô phỏng bằng máy
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∞∞𑃰∞∞∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
KAMOUBONH VONGPHACHANH
NGHIÊN CỨU MỘT SỐ KỸ THUẬT HIỆN THỊ MÔ HÌNH 3D
VÀ ỨNG DỤNG HIỆN THỊ MÔ HÌNH 3D DI TÍCH PATUXAY
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Thái Nguyên, năm 2018
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∞∞𑃰∞∞∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
KAMOUBONH VONGPHACHANH
NGHIÊN CỨU MỘT SỐ KỸ THUẬT HIỆN THỊ MÔ HÌNH 3D
VÀ ỨNG DỤNG HIỆN THỊ MÔ HÌNH 3D DI TÍCH PATUXAY
Chuyên ngành: Khoa học máy tính
Mã số: 84 80 01 01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Hướng dẫn khoa học: TS VŨ ĐỨC THÁI
Thái Nguyên, năm 2018
Trang 3LỜI CAM ĐOAN
Em xin cam đoan luận văn tốt nghiệp với tên đề tài “Một số KỸ thuật
hiện thị mô hình 3D và ứng dụng hiện thị mô hình 3D di tích PATUXAY” là
do em triển khai thực hiện dưới sự hướng dẫn của cán bộ hướng dẫn khoa học Các nội dung tham khảo có trích dẫn đầy đủ, các sản phẩm phần mềm do em tự thiết kế cài đặt
Nếu có gì sai em xin chịu mọi hình thức kỉ luật theo quy chế đào tạo
Trang 4LỜI CẢM ƠN
Trong quá trình học tập và rèn luyện tại khoa Công nghệ thông tin - Đại học Thái Nguyên, đến nay em đã kết thúc khóa học 2 năm và hoàn thành luân văn tốt nghiệp
Để hoàn thành chương trình cao học và viết luận văn, em đã nhận được sự hướng dẫn, giúp đỡ góp ý nhiệt tình của quý thầy cô trường Đại học Công nghệ Thông tin và Truyền thông – Đại học Thái Nguyên Để có được kết quả này em xin chân thành cảm ơn Ban chủ nhiệm khoa Công nghệ thông tin cùng các thầy, cô giáo trong khoa đã giảng dạy, quan tâm và tạo điều kiện thuận lợi để chúng em học tập
và rèn luyện trong suốt thời gian theo học tại trường
Thái Nguyên, ngày 20 tháng 06 năm 2018
KAMOUBONH VONGPHACHANH
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
MỤC LỤC iii
DANH MỤC HÌNH ẢNH v
CHƯƠNG 1 TỔNG QUAN VỀ MÔ PHỎNG VÀ BÀI TOÁN HIỂN THỊ MÔ HÌNH 3D 1
1.1 Tổng quan về Thực tại ảo 1
1.1.1 Thực tại ảo là gì 1
1.1.2 Lịch sử phát triển của Thực tại ảo 2
1.1.3 Ứng dụng của Thực tại ảo 3
1.2 Khái quát về mô hình 3D 3
1.3 Số hóa hiển thị mô hình 3D 4
1.3.1 Hệ trục tọa độ động 6
1.3.2 Hệ trục tạo độ tĩinh 8
1.3.3 Đóng gói trạng thái 9
1.3.4 Các phép biển đổi đồ thị 13
1.4 Di tích PATUXAY 15
CHƯƠNG 2MỘT SỐ KỸ THUẬT HIỂN THỊ MÔ HÌNH 3D 18
2.1 Kỹ thuật hiển thị mô hình Impostor 18
2.1.1 Tạo một Impostor 20
2.1.2 Dựng Impostor 21
2.2 Kỹ thuật hiển thị mô hình Occlusion – Culling 22
2.3 Kỹ thuật hiển thị mô hình Bump Mapping 27
2.3.1 Bump mapping 27
2.3.2 Kỹ thuật sử dụng môi trường ánh xạ bump mapping 35
Trang 6CHƯƠNG 3ỨNG DỤNG HIỆN THỊ MÔ HÌNH CHO PATUXAY 37
3.1 Tổng quan về di tích PATUXAY 37
3.2 Phát triển ứng dụng mô phỏng công trình PATUXAY bằng công nghệ thực tại ảo……… 39
3.3 Cài đặt mô phỏng 46
3.3.1 Dựng hình 3D (Modelling 3D) 47
3.3.2 Thiết kế môi trường 49
3.4 Một số giao diện chương trình 50
KẾT LUẬN 54
TÀI LIỆU THAM KHẢO 55
Trang 7DANH MỤC HÌNH ẢNH
Hình 1.1: Một hệ thống VR tại Viện Fraunhofer (CHLB Đức) 2
Hình 1.2: Giao diện phần mềm 3DS max 5
Hình 1.3: Hệ trục tọa độ Trục _Axis 6
Hình 1.4: Hệ tọa độ World 8
Hình 1.5: Hệ tọa độ Screen 8
Hình 1.6: Hệ tọa độ World 9
Hình 1.7: Đóng gói trạng thái 10
Hình 1.8: MAX cung cấp ba loại điều chỉnh điểm chốt 13
Hình 1.9: Use Selection Center( tâm của tập chọn) 14
Hình 1.10: Use Transform Coordinate Center (tâm của hệ tọa độ phép biến đổi) 14
Hình 1.11: PATUXAY 16
Hình 1.12: Kiến trúc của PATUXAY 17
Hình 2.1: Rendering the imposter 18
Hình 2.2: Từ đối tượng 3D đến kỹ thuật ảnh giả mạo 19
Hình 2.3: Hai hộp giới hạn Impostor 20
Hình 2.4: khung giới hạn cho Texture 21
Hình 2.5: Dựng hình đặc, khung dây, và sự phức tạp độ sâu 22
Hình 2.6: Trước khi Occlusion Culling 23
Hình 2.7: Shadow volumes 23
Hình 2.8: Một ảnh hoa văn phức tạp 26
Hình 2.9: Bề mặt các viên gạch trong văn miếu 28
Hình 2.10: Cây đổ bóng 29
Hình 2.11: Không gian tiếp tuyến 31
Hình 2.12: Sự phản xạ của tia sáng trên bề mặt 32
Hình 2.13: Ảnh hoa văn 34
Hình 3.1: Khải hoàn môn Patuxay dấu tích một thời kì lịch sử 37
Hình 3.2: Patuxay dấu tích một thời kì lịch sử 38
Hình 3.3: Ảnh khu sơn Patuxay 39
Trang 8Hình 3.4: Mô hình quản lý dữ liệu của hệ thống Error! Bookmark not defined.
Hình 3.5: Flow diagram Quá trình số hóa vào tái tạo cảnh 3D trong mô phỏngError! Bookmark not defined Hình 3.6: Flow diagram xây dựng mô hình và xác định vị trí kiến trúcError! Bookmark not defined.
Hình 3.7: Flow diagram định vị vị trí kiến trúc trên di tíchError! Bookmark not defined.
Hình 3.8: Flow diagram tạo vật liệu và ảnh phủ cho mọi mức chi tiết cảnh 3DError! Bookmark not defined Hình 3.9: Workflow xây dựng dữ liệu mô phỏng mức thấpError! Bookmark not defined.
Hình 3.10: Workflow quá trình sinh ảnh của cảnh mô phỏng tác động vào ngườiError! Bookmark not defined Hình 3.11: Sơ đồ mô tả quan hệ giữa các hệ thống của sản phẩm thực tại ảoError! Bookmark not defined.
Hình 3.12: Mô tả phân cấp Tháp Luang 47
Hình 3.13: Modelling tạo ra mô hình 3D mô phỏng một trụ hình tháp nhỏtrên tầng cao 48
Hình 3.14: Mô hình 3D sau khi áp vật liệu 49
Hình 3.15: Dựng hình 3D vào Unity 50
Hình 3.16: Trên tầng cao của PATUXAY 51
Hình 3.17: Các cột và xung quanh 52
Hình 3.18: Mô hình 3D PATUXAY nhìn từ trên xuống 53
Trang 9CHƯƠNG 1 TỔNG QUAN VỀ MÔ PHỎNG VÀ BÀI TOÁN HIỂN THỊ MÔ HÌNH 3D
Theo cách truyền thống, việc tương tác với máy tính được thực hiện thông qua các thiết bị như bàn phím, chuột hay Joystick/Trackball/ Keyboard/Styplus để cung cấp thông tin đầu vào và sử dụng khối hiển thị trực quan để nhận thông tin đầu ra từ
hệ thống Với sự ra đời của các hệ thống thực tại ảo, các phương thức giao tiếp mới được phát triển cho phép người sử dụng tương tác một cách tích cực với máy tính Công nghệ VR hiện đang rất phát triển trên thế giới Hiện nay, ở nước Công hòa Dân chủ Nhân dân Lào, công nghệ VR đang dần được chú ý bởi những thế mạnh của nó chẳng hạn như cho phép tạo và hiển thị được dữ liệu lớn Điều này rất quan trọng cho những ứng dụng như là tạo thiết kế đô thị, ứng phó với các tình huống khẩn cấp, du lịch, giải trí, quản lý giao thông, xây dựng những dự án quy mô lớn, và giáo dục Trong những lĩnh vực này, thì việc trực quan hóa tương tác của mô hình là
sự tối quan trọng cho sự phân tích chiều sâu của tập hợp dữ liệu Mục đích của hệ thống là mô phỏng các hiệu ứng quan sát và cảm nhận khi thị sát trên một khu vực nhất định Hệ thống này là sự kết hợp các kỹ thuật mô phỏng sử dụng đồ hoạ 3D
với các thiết bị phần cứng
1.1 Tổng quan về Thực tại ảo
1.1.1 Thực tại ảo là gì
Thực tại ảo (Virtual reality_VR) là một hệ thống mô phỏng trong đó đồ họa máy tính được sử dụng để tạo ra một thế giới "như thật" Hơn nữa, thế giới "nhân tạo" này không tĩnh tại, mà lại phản ứng, thay đổi theo ý muốn (tín hiệu vào) của người sử dụng (nhờ hành động, lời nói, ) Điều này xác định một đặc tính chính của
VR, đó là tương tác thời gian thực Thời gian thực ở đây có nghĩa là máy tính có khả năng nhận biết được tín hiệu vào của người sử dụng và thay đổi ngay lập tức thế giới ảo Người sử dụng nhìn thấy sự vật thay đổi trên màn hình ngay theo ý muốn và bị thu hút bởi sự mô phỏng này Tương tác và khả năng thu hút của VR góp phần lớn vào cảm giác đắm chìm, cảm giác trở thành một phần của hành động trên màn hình mà người sử dụng đang trải nghiệm Nhưng VR còn đẩy cảm giác
Trang 10này "thật" hơn nữa nhờ tác động lên tất cả các kênh cảm giác của con người Trong thực tế, người dùng không những nhìn thấy đối tượng đồ họa 3D nổi, điều khiển (xoay, di chuyển, ) được đối tượng trên màn hình (như trong game), mà còn sờ và cảm thấy chúng như có thật Ngoài khả năng nhìn (thị giác), nghe (thính giác), sờ (xúc giác), các nhà nghiên cứu cũng đã nghiên cứu để tạo các cảm giác khác như ngửi (khứu giác), nếm (vị giác) Tuy nhiên hiện nay trong VR các cảm giác này cũng ít được sử dụng đến Như vậy: “Thực tại ảo là công nghệ sử dụng các kỹ thuật
mô hình hoá không gian ba chiều với sự hỗ trợ của các thiết bị đa phương tiện hiện đại để xây dựng một thế giới mô phỏng bằng máy tính”
Hình 1.1: Một hệ thống VR tại Viện Fraunhofer (CHLB Đức)
1.1.2 Lịch sử phát triển của Thực tại ảo
Thực tại ảo là một thuật ngữ mới xuất hiện khoảng đầu thập kỷ 90, nhưng ở Mỹ
và châu Âu VR đã và đang trở thành một công nghệ mũi nhọn nhờ khả năng ứng dụng rộng rãi trong mọi lĩnh vực (nghiên cứu và công nghiệp, giáo dục và đào tạo cũng như thương mại, giải trí,…) tiềm năng kinh tế cũng như tính lưỡng dụng (trong dân dụng, quân sự) của nó VR không phải là một phát minh mới, mà ngay từ năm 1962 Morton Heilig (Mỹ) đã phát minh ra thiết bị mô phỏng SENSORAMA Tuy nhiên cũng như nhiều ngành công nghệ khác, VR chỉ thực sự được phát triển
Trang 11ứng dụng rộng rãi trong những năm gần đây nhờ vào sự phát triển của tin học (phần mềm) và máy tính (phần cứng) Thuật ngữ “virtual reality – thực tại ảo được đưa ra bởi Jaron Lanier (người sáng lập công ty VPL Research, tại Redwood – California, một trong những công ty đầu tiên cung cấp các sản phẩm cho môi trường ảo)
Sự hình dung liên quan đến các tác động đầu ra mà máy tính tạo ra về thị giác, thính giác hay các giác quan khác khi người sử dụng tương tác với thế giới bên trong máy tính Thế giới này có thể là các mô hình được thiết kế với sự trợ giúp của máy tính, là sự mô phỏng hay là cách nhìn nhận một cơ sở dữ liệu Hệ thống có thể
có tính động, các mô phỏng vật lý hay các hoạt cảnh
1.1.3 Ứng dụng của Thực tại ảo
Tại các nước phát triển, chúng ta có thể nhận thấy VR được ứng dụng trong mọi lĩnh vực: Khoa học kỹ thuật, kiến trúc, quân sự, giải trí, du lịch, và đáp ứng mọi nhu cầu: Nghiên cứu- Giáo dục- Thương mại-dịch vụ
Y học, du lịch là lĩnh vực ứng dụng truyền thống của VR Bên cạnh đó VR cũng được ứng dụng trong giáo dục, nghệ thuật, giải trí, du lịch ảo (Virtual Tour), bất động sản Trong lĩnh vực quân sự, VR cũng được ứng dụng rất nhiều ở các nước phát triển Bên cạnh các ứng dụng truyền thống ở trên, cũng có một số ứng dụng mới nổi lên trong thời gian gần đây của VR như: VR ứng dụng trong sản xuất, VR ứng dụng trong ngành rôbốt, VR ứng dụng trong hiển thị thông tin (thăm dò dầu
mỏ, hiển thị thông tin khối, ứng dụng cho ngành du lịch, ứng dụng cho thị trường bất động sản ) VR có tiềm năng ứng dụng vô cùng lớn Có thể nói tóm lại một điều: Mọi lĩnh vực "có thật " trong cuộc sống đều có thể ứng dụng "thực tế ảo" để nghiên cứu và phát triển hoàn thiện hơn
1.2 Khái quát về mô hình 3D
Bài toán mô phỏng:
Có hai dạng bài toán tối ưu mô hình 3D thường được nhắc đến trong lĩnh vực
mô phỏng 3D với đầu vào và đầu ra cùng là mô hình 3D nhưng mang những đặc điểm khác nhau giữa mô hình trước tối ưu và sau tối ưu Thứ nhất, là tối ưu về mặt hình ảnh Ở đó, với đầu vào là một mô hình 3D đã được thiết kế hoặc thu từ máy
Trang 12quét người xử lý cần nâng cao chất lượng hình ảnh của mô hình Khi đó chúng ta cần chú ý tới việc tối ưu chất lượng hình ảnh hoặc lưới của mô hình, điều này dẫn tới các bài toán xử lý về ánh sáng, góc cạnh để khi render thu được hình ảnh chân thực nhất có thể Trên thực tế quá trình tối ưu này dẫn tới một trường phái thiết kế siêu thực Ở đó những nhà thiết kế có thể thay thế nhân vật thực bằng nhân vật thiết
kế ảo Thứ hai, là tối số lượng lưới (mặt và đỉnh trong mô hình) với bài toán này đầu vào là một mô hình 3D (thường là mô hình thu được từ máy quét) và đầu ra là
mô hình đó với số lượng lưới giảm đi nhưng vẫn đảm bảo hình dạng và hình ảnh của đối tượng không thay đổi nhiều giữa trước và sau tối ưu Trong nội dung luận văn tập trung vào giải quyết bài toán thứ hai Tức là nghiên cứu các kỹ thuật làm giảm lưới mô hình 3D nhưng vẫn đảm bảo giữ được hình dạng và hình ảnh của đối tượng sau khi render
1.3 Số hóa hiển thị mô hình 3D
Đồ họa máy tính 3D thường được nói đến là mô hình (model) 3D Ngoài các đồ họa được kết xuất, model được chứa trong các tập tin dữ liệu đồ họa Tuy nhiên, có
sự khác biệt Model 3D là đại diện toán học của bất kỳ đối tượng ba chiều Một mô hình không phải là một kỹ thuật đồ họa cho đến khi nó được hiển thị Một mô hình
có thể được hiển thị trực quan như là một hình ảnh hai chiều thông qua một quá trình gọi là kết xuất 3D, hoặc được sử dụng trong mô phỏng máy tính phi đồ họa và tính toán
3DS max
3DS Max là một ứng dụng mạnh, tích hợp các mô hình 3 chiều, hoạt cảnh, và tạo cảnh 3D (rendering) Môi trường dễ học của nó cho phép các nghệ sĩ nhanh chóng tạo dựng một cách nhanh chóng các sản phẩm 3DS Max thường được sử dụng để tạo phim và các đoạn video nghệ thuật, phát triển game, thiết kế sản phẩm
đa phương tiện multimedia… 3DS Max là đang dẫn đầu các phần mềm trong lĩnh vực thiết kế trực quan, phát triển game, thiết kế các hiệu ứng ảo và đào tạo
Khóa học hướng dẫn các bạn từ làm chủ giao diện, thao tác điều khiển sau đó tiến tới làm việc với qui trình chuẩn của một sản phẩm 3D tĩnh là : Modelling (dựng
Trang 13hình) – Mapping&Shading (Gán vật liệu) – Lighting (thiết lập ánh sáng) – Rendering (kết xuất ảnh)
Hình 1.2: Giao diện phần mềm 3DS max
Thư viện xử lý đồ họa OpenGL
OpenGL là mộ t tiêu chuẩ n kỹ thuậ t đ ồ họ a nhằ m mụ c đ ích tạ o
ra mộ t giao diệ n lậ p trình ứ ng dụ ng đ ồ họ a 3D đ ư ợ c phát triể n
đ ầ u tiên bở i Silicon Graphic, Inc OpenGL đ ã trở thà nh mộ t chuẩ n công nghiệ p và các đ ặ c tính kỹ thuậ t củ a OpenGL do Uỷ ban kỹ thuậ t ARB OpenGL cho phép phát triể n các ứ ng dụ ng đ ồ họ a sử dụ ng nhiề u ngôn ngữ lậ p trình khác nhau như C/C++, Java, Delphi, v.v…, tuy nhiên OpenGL cũ ng có thể đ ư ợ c dùng trong ứ ng dụ ng đ ồ họ a 2D Giao diệ n lậ p trình nà y chứ a khoả ng 250 hà m đ ể vẽ các cả nh phứ c tạ p
từ nhữ ng hà m đ ơ n giả n và đ ư ợ c ứ ng dụ ng rộ ng rãi trong các trò chơ i đ iệ n tử Ngoà i ra còn đ ư ợ c dùng trong các ứ ng dụ ng CAD, thự c
tạ i ả o, mô phỏ ng khoa họ c, mô phỏ ng thông tin, phát triể n trò chơ i OpenGL sử dụ ng hệ tọ a đ ộ theo quy tắ c bà n tay phả i
Trang 14Trục _Axis
Trục là một đường thẳng tưởng tượng trong không gian máy tính nhằm xác
định một hướng Ba trục chuẩn trong MAX gọi là trục X, Y, và Z (xem hình) Trong MAX bạn có thể xem như trục X là chiều rộng, trục Y là chiều dài, và trục Z
là chiều cao Giao điểm của ba trục này trong MAX là gốc tọa độ (0, 0, 0) Nếu bạn
vẽ một điểm cách xa môt đơn vị dọc theo phía bên phải của trục X, điểm đó sẽ là 1, 0,0 (một đơn vị có thể là đơn vị bất kỳ nào bạn muốn – như là một foot, một inch, một milimet, hoặc một centimet) Nếu bạn dịch chuyển điểm đó thêm một đơn vị nữa về cùng một hướng, tọa độ của nó sẽ là 2, 0, 0 và v v… Nếu bạn đi về phía trái của gốc tọa độ, điểm đầu tiên sẽ là –1, 0, 0, điểm tiếp theo sẽ là (–2, 0, 0) v v… Tương tự như vậy cho các trục khác, khi bạn di chuyển lên phía trên của trục Y, toạ
độ mang giá trị dương, ngược lại là giá trị âm…
Hình 1.3: Hệ trục tọa độ Trục _Axis
Trục là một đường thẳng tưởng tượng trong không gian 3D nhằm xác định một hướng Ba trục chuẩn dùng trong MAX được gọi là X, Y, và Z
Trang 15Khi bạn xoay một đối tượng, ba yếu tố ảnh hưởng đến kết quả là:
- Hệ tọa độ hiện hành (World, View, Local hay Screen )
- Vị trí của điểm làm tâm xoay (còn gọi là điểm chốt_Pivot Point)
- Trục nào được chọn để xoay đối tượng quanh nó
Điều này cũng đúng khi sử dụng các lệnh thu phóng không đồng nhất, và lệnh nén…
Các phép biến đổi (Tranform) dựa vào các trục (Axis) và vùng nhìn (Viewport) Đây là một vấn đề cơ bản rất quan trọng trong MAX, hầu hết các phép biến đổi như di chuyển (move), xoay (rotate), và thu phóng (scale) đều sử dụng hệ tọa độ vùng nhìn (View Coordinate) như hệ tọa độ mặc định của chúng Với hệ tọa độ view này các trục được thể hiện tại các vùng nhìn phẳng (Top, Front, Left…) theo cách như sau: trục X_ngang, trục Y_dọc, và trục Z thì vuông góc với hai trục XY, đây chính là hệ trục tọa độ
Screen trong MAX
Tại vùng nhìn phối cảnh (Perspective), hệ tọa độ lại thể hiện trục X chiều ngang, trục Y chiều sâu (chiều dài), và trục Z là dọc (chiều cao, đây là hệ toạ độ thế giới World trong MAX
Tại các vùng nhìn phẳng bạn có thể di chuyển đối tượng theo hai trục X, hoặc
Y, nhưng trục Z thì không (điều này hay gây bối rối cho các bạn mới làm quen với MAX, vì không hiểu sao với công cụ di chuyển, mà lại không xê dịch được đối tượng! một giải thích đơn giản ở đây, là với hệ tọa độ view thì đối tượng tại các vùng nhìn phẳng không thể di chuyển theo trục Z được, bởi vì bạn không thể lôi đối tượng ra khỏi màn hình vi tính! Trục Z vuông góc với hai trục X, Y và hướng ra trước mặt bạn!… trong khi tại vùng phối cảnh perfective thì không gặp trở ngại gì với cả ba trục…)
Hệ tọa độ World: sử dụng trục
đứng trong các vùng luôn là trục Z,
ngang là X, và chiều sâu là trục Y
Trang 16Hệ tọa độ View: là sự kết hợp giữa hệ tọa độ World và Screen Tại các vùng
nhìn trực giao (top, bottom, front, back, left, right) các trục được sử dụng như tại
hệ tọa độ Screen Tại các vùng nhìn phối cảnh 3D (Perfective, User, Camera) thì các trục lại được sử dụng như tại hệ tọa độ World
Hệ tọa độ Local (cục bộ): hệ tọa độ này sử dụng các tọa độ cục bộ của đối
tượng được chọn, thực sự hữu dụng khi phương hướng của một đối tượng không còn giống với hệ tọa độ World nữa
Hệ tọa độ Pick: là hệ tọa độ linh hoạt nhất trong 3dsMax, nó cho phép sử dụng
hệ tọa độ của bất cứ đối tượng nào bạn chọn trong khung cảnh
Hệ tọa độ Parent: làm việc y như hệ tọa độ Pick, nhưng các đối tượng trong
cảnh phải được liên kết với nhau Các đối tượng con sẽ sử dụng hệ trục tọa độ của đối tượng cha Nếu một đối tượng không có cha, các toạ độ thế giới World,
sẽ được sử dụng, bởi theo mặc định, một đối tượng không được kết nối sẽ là con của thế giới
1.3.2 Hệ trục tạo độ tĩinh
Trong 3d Max và VIZ có nhiều các hệ trục tọa độ.Hệ trục tọa độ rất quan trong quá trình thiết kế và di chuyển đối tượng.Mỗi hệ trục có một chức năng khách nhau trong các lệnh di chuyển,xoay và thu phóng đối tượng
Trang 17Các mặt phẳng làm việc là các mặt phẳngXY,XZ,YZ của các hệ trục tọa độ đó.Mặt phẳng này chưa điểm gốc của đối tượng và hình phác tạo nên đối tượng đó CÁC HỆ TRỤC TỌA ĐỘ các hệ trục tọa độ trong 3dsMax và VIZ gồm:Viêw,Screen,World,Local,Gimbal,Working,và Pick
Hệ tọa độ World: hệ tọa độ chung cho tất cả các đối tượng trong khung cảnh
Hệ trục này không đổi, luôn có trục đứng là trục Z, ngang là X,và chiều sau là trục Y trong tất cả vùng nhình
Hình 1.6: Hệ tọa độ World
1.3.3 Đóng gói trạng thái
Nếu là người mới làm quen với Max thì có lẽ bạn sẽ cảm thấy rối mắt vì kiểu bố trí của Max khác hẳn với các chương trình khác mà bạn đã từng gặp Nếu trước khi đến với Max mà bạn đã biết qua về Photoshop và quen với các công cụ của nó thì bạn sẽ thất vọng vì kiểu trình bày các công cụ của Max, nó "quá phức tạp" đơn giản
là vì 3D>2D mà Nhưng bạn yên tâm khi đã quen rồi thì bạn sẽ thấy nó rất tiện lợi Bạn có nhớ khi lần đầu tiên làm quen với Photoshop bạn đã dùng công cụ gì không? Và đã tạo ra được cái gì trong lần đầu tiên ấy? Còn mình thì lần đầu tiên mình đã "mò ra" công cụ cái chổi lông để vẽ ra được những đường cong ngoằn
Trang 18ngèo, còn lần đầu với Max thì không tạo ra được thứ gì cả trong lần đầu gặp mặt cả, chính vì vậy mà mình quyết tâm học Max cho bằng được!
Hình 1.7: Đóng gói trạng thái Sau đây là phần giao diện chỉnh của 3d Studio Max version 7.0-8.0
1 Menu bar (menu hệ thống)
2 Window/Crossing selection toggle
3 Snap tools (các công cụ bắt dính)
4 Command panels (bảng lệnh)
5 Object categories
6 Rollout (bảng cuộn)
7 Active viewport (khung nhìn hiện hành)
8 Viewport navigation controls (các điều khiển đối với khung nhìn)
9 Animation playback controls
10 Animation keying controls
11 Absolute/Relative coordinate toggle and coordinate display
12 Prompt line and status bar
13 MAXScript mini-listener
14 Track bar
Trang 1915 Time slider (thanh trượt thời gian)
16 Main toolbar (thanh công cụ chính)
- Menubar
Chứa các menu: File, Edit, Tools, Group , Views, Create, Modifiers, Character, Reactor, Amination, GraphEdittors, Rendering, Customize, MAXScript, Help Một số lệnh thông dụng như File, Edit, Views, Tools thì chúng ta quá quen thuộc rồi Còn những menu khác thì có lẽ hơi lạ đối với các bạn lần đầu làm quen với MAX Mình sẽ giới thiệu sơ qua về chức năng của một số menu:
+ Group: đây là menu bao gồm các lệnh để nhóm đối tượng
+ Create: bao gồm các lệnh để tạo ra các hình 2D, 3D và một số dạng hình học khác + Modifiers: chứa các lệnh hiệu chỉnh
+ Reactor: chứa các lệnh để tạo ra hay áp dụng tính chất của vật như: mềm, cứng, thể rắn, lỏng, khí
+ Character: chứa các lệnh để tạo ra sự chuyển động của hệ thống: vd: các cử động của tay, chân, bước đi
+ Animation: chứa các lệnh liên quan đến trạng thái động
+ Rendering: chứa các lệnh liên quan đến hậu cảnh, ảnh nền, các hiệu ứng (sương mù, khói )
+ Customize: các tùy chọn thiết lập cho Max
+ MaxScript: hoạt động theo kiểu tệp tin batch của HĐH MS-DOS
- Tab panel
Bảng tập hợp các thanh công cụ khác nhau:
a) Main toolbar: Thanh công cụ chính của Max, chứa một số lệnh thông dụng qua các icon
b) Command panel
* Geometry:
Chứa các lệnh tạo các đối tượng 3D: khối hộp (Box), khối cầu (Shepre), khối chóp (Cone)
Trang 20- Khi bạn chọn nút Geometry sẽ có một danh sách xổ xuống bên dưới nút đó, liệt kê nhiều loại khối hình học khác mà bạn có thể tạo ra như: khối hộp, khối cầu, khối chóp, khối ống, khối trụ, ấm trà
Khi click lệnh bất kỳ thì sẽ xuất hiện thanh cuộn ở dưới hộp Parameters cho phép bạn nhập các giá trị như chiều cao (Height), chiều rộng (Width), chiều dài (Length) và nhiều thông số khác nữa
Vì các thông số cho một đối tượng đôi khi cần nhiều thanh cuộn, các thanh cuộn trong một vài trường hợp có thể trở nên dài hơn sức chứa của màn hình, do vậy bạn có thể dùng mouse để cuốn thanh cuộn lên hoặc xuống bằng cách click và drag theo chiều đứng vào bất kỳ chỗ nào trống của bảng cuộn
* Shape: chứa các lệnh để tạo các đối tượng 2D: đường thẳng (Line), hình tròn (Circle), hình chữ nhật (Rectangle)
* Light & Cameras: chứa các lệnh tạo ánh sáng và camera
* Helpers: chứa các lệnh về các đối tượng trợ giúp, như tạo lưới riêng, tạo các Gizmo để diễn tả lửa cháy
* Space Warp: chứa các lệnh dùng để tạo một số hiệu ứng đặc biệt như: bom
+ WireFrame: hiển thị đối tượng dưới dạng khung nhìn đơn
+ Smooth: hiển thị đối tượng dưới dạng mịn
+ Facets Highlight: hiển thị đối tượng dưới dạng phẳng và bóng
+ Edged Faces: hiển thị đối tượng dưới dạng khung nhìn Edge
Trang 21+ Bounding Box: hiển thị đối tượng dưới dạng khung nhìn hộp
1.3.4 Các phép biển đổi đồ thị
Biểu tượng Gizmo biến đổi luôn nằm tại tâm biến đổi của đối tượng Tâm biến đổi này được gọi là điểm chốt (Pivot Point) Tất cả các đối tượng đều được làm biến đổi trong mối tương quan với điểm chốt này Điểm chốt đặc biệt quan trọng khi bạn thực hiện lệnh xoay Các điều chỉnh cho điểm chốt nằm tại Main Toolbar, bên cạnh
a) Công cụ MAX cung cấp ba loại điều chỉnh điểm chốt:
- Use Pivot Point Center (tâm của điểm chốt)
Mỗi đối tượng trong Max có một hệ tọa độ cục bộ của riêng nó Gốc của hệ tọa
độ cục bộ này, được gọi là điểm chốt, tùy theo đối tượng có tâm ở giữa hoặc tâm ở đáy Đây là vị trí mặc định Khi bạn chọn một hệ tọa độ khác, chúng luôn có gốc tọa
độ tại điểm chốt, nhưng phương hướng thì khác nhau
Ví dụ: Chọn cùng lúc hai đối tượng, mỗi đối tượng có một tâm riêng, khi xoay, chúng sẽ xoay theo tâm xoay của riêng mình
Hình 1.8: MAX cung cấp ba loại điều chỉnh điểm chốt
- Use Selection Center (tâm của tập chọn) :
Khi bạn chọn nhiều đối tượng, loại tùy chọn của tâm điểm chốt sẽ không còn dễ
Trang 22sử dụng nữa Tùy chọn này xác định điểm chốt nằm ngay tại tâm hình học của các đối tượng đang được chọn, và khi xoay, tất cả các đối tượng sẽ sử dụng tâm chung giữa các đối tượng
Hình 1.9: Use Selection Center( tâm của tập chọn)
- Use Transform Coordinate Center (tâm của hệ tọa độ phép biến đổi)
Khi bạn chọn một hệ tọa độ tham chiếu, nó có thể có một tâm điểm riêng Ví
dụ, tùy chọn hệ tọa độ World có tâm điểm tại 0, 0, 0
Hình 1.10: Use Transform Coordinate Center (tâm của hệ tọa độ phép biến đổi)
b) Thay đổi vị trí điểm chốt (tâm xoay)
Để thay đổi hẳn vị trí điểm chốt của một đối tượng, chọn đối tượng đó, rồi click bảng lệnh Hiarechy (phả hệ), nơi bạn có thể tìm thấy các điều chỉnh cho
Trang 23điểm chốt
- Affect Pivot Only
Chỉ làm biến đổi điểm chốt của đối tượng mà thôi, bạn không thể di chuyển, xoay, scale khối hình học khi nút lệnh này được bật
(di chuyển, xoay, scale) cho điểm chốt
- Affect Object Only
Ngược lại với lệnh Affect Pivot Only Ở đây điểm chốt vẫn giữ nguyên vị trí, bạn làm biến đổi trên đối tượng tùy ý
1.4 Di tích PATUXAY
Khải hoàn môn được xây dựng vào năm 1957 và hoàn thành vào năm 1968 để tưởng nhớ các anh hùng liệt sĩ đã hy sinh trong cuộc kháng chiến chống quân xâm
lược Pháp tại Lào Vì vậy, nó còn có tên là Đài Chiến sĩ vô danh (Anou Savary)
Khải hoàn môn Patuxai cao 55m, có 4 mặt, mỗi mặt có bề ngang 24m, gồm bảy tầng tháp và hai tầng phụ Kiến trúc của Patuxai được xây dựng mô phỏng theo kiến
Trang 24trúc của Khải hoàn môn Paris Tuy nhiên, khi nhìn tổng thể Khải hoàn môn Patuxai,
nó vẫn mang một nét kiến trúc đặc trưng của văn hóa Lào với những phù điêu, họa tiết trang trí và điêu khắc như hình tượng trang trí Kinari - nửa người phụ nữ và nửa chim, các phù điêu miêu tả trường ca Rama và các tòa tháp đặc trưng kiến trúc Lào Ngoài ra, các cửa sổ bên cầu thang của tòa tháp được thiết kế khéo léo dưới dạng những bức tượng Phật
Cấu trúc mô hình PATUXAY gồm:
- Sân tường bằng cây hoa
- Diện tình: cao 55m, có 4 mặt, mỗi mặt có bề ngang 24m, gồm bảy tầng tháp
và hai tầng phụ
- 32 cột
- Đường đi vào rộng: 2m, có 1 đường đi vào
Hình 1.11: PATUXAY
Trang 25Hình 1.12: Kiến trúc của PATUXAY
Trang 26CHƯƠNG 2 MỘT SỐ KỸ THUẬT HIỂN THỊ MÔ HÌNH 3D
Vì số dữ liệu hình học rất lớn cùng dữ liệu mô phỏng chất liệu kiến trúc,do vậy bắt buộc tiếp cận các kỹ thuật tăng tốc đồ họa 3D với các máy tính hiệu năng cao
Do đó không tránh khỏi phải sử dụng kỹ thuật tăng tốc đồ họa cao cấp như kỹ thuật chọn lọc, phân mức chi tiết, thay thế ảnh Thuật toán chọn lọc là 1 kỹ thuật rất phổ biến cho việc thị sát cảnh trong PATUXAY Đó là hiệu ứng đặc biệt trong địa hình
có diện tích lớn và được bịt bằng các kiến trúc xây dựng kép kín Đây không phải là
kỹ thuật được đưa vào ứng dụng Thay vào đó quyết định sử dụng hình ảnh đặt cơ
sở cho cách tiếp cận để tái hiện không gian PATUXAY Kỹ thuật đó có tên gọi là
kỹ thuật thay thế ảnh 3D bằng ảnh 2D, cả hai loại dữ liệu, hình học và vật liệu tẩm phủ lên bề mặt kiến trúc được thay thế bởi các ảnh kỹ thuật cao để giảm bớt thời gian tái tạo cảnh trên máy tính
2.1 Kỹ thuật hiển thị mô hình Impostor
Kỹ thuật Impostor dựa trên ảnh khi hiển thị Giống như kỹ thuật billboard, kỹ thuật này thay thế đối tượng phức tạp bởi ảnh đặt trên hình chữ nhật trong suốt
Hình 2.1: Rendering the imposter
Trang 27Chẳng hạn như việc sử dụng billboard là mô phỏng cây Với điều kiện là người xem đứng trên mặt đất, ảnh chụp cây tương đối tốt thay thế hình dáng thực tế cho tất cả các điểm nhìn Trong khi, người xem di chuyển xung quanh cảnh, bốn phía được quay để hình ảnh luôn giáp mặt phía trước Bởi vì những hình ảnh billboard được tạo ra theo cách suy diễn và tĩnh học, bởi vậy kỹ thuật này chỉ được sử dụng cho những đối tượng mà trông tương tự dưới phép quay Trái ngược với cái đó, những hình ảnh của kỹ thuật Impostor được phát sinh bởi việc trả lại cho những đối tượng tự sinh cho điểm nhìn hiện tại Nếu những điểm liên tiếp nằm gần nhau, thì Impostor của những đối tượng di chuyển chậm định vị xa hơn từ người xem không làm thay đổi sự chú ý với mỗi khung cảnh Từ điều này dẫn đến kỹ thuật này có thể
sử dụng lại hình ảnh đó cho vài khung hình sẽ tăng tốc xử lý trả lại cảnh Trong OSG, kỹ thuật Impostor được thực hiện như nút LOD riêng biệt Phụ thuộc vào một ngưỡng khoảng cách cách người dung định nghĩa, đối tượng cũng được trả lại theo truyền thống hoặc như hình ảnh thay thế Sự tính toán lại hình ảnh thay thế được thực hiện tự động trong OSG Quản lý vật liệu cũng được làm tự động, như vậy người dùng đó về cơ bản chỉ phải thêm nút giả mạo ở trên những đối tượng thích hợp trong đồ thị cảnh
Hình 2.2: Từ đối tượng 3D đến kỹ thuật ảnh giả mạo
tiết này rất tĩnh và trải dài qua một vùng rộng lớn để chỉ một phần nhỏ những đối tượng thật sự ở gần người xem Nó có thể được giả thiết rằng trong ngữ cảnh này phần lớn đối tượng tòa nhà được định vị đủ xa từ người nhìn đến Đây là nguyên nhân cần cập nhật cảnh rất thuận lợi cho việc sử dụng kỹ thuật Impostor
Impostor texture
3D Object
Trang 28Việc sử dụng kỹ thuật giả mạo chiếm dụng tài nguyên quý giá trên phần cứng
đồ họa Để giới hạn dung lượng bộ nhớ, kỹ thuật này không thay thế từng đối tượng tòa nhà đơn lẻ, mà là vài tòa nhà được định vị cùng nhau Sử dụng cách tiếp cận đơn giản sắp xếp dữ liệu tòa nhà trong đồ thị cảnh
- Vùng dữ liệu được chia vào trong một lưới 2D, tòa nhà được định vị trong cùng những ô đó được nhóm lại cùng nhau
- Bổ sung phân cấp mức chi tiết bằng cách giảm bớt chất lượng ảnh thông qua
bộ lọc đối với các vị trí ở xa và tăng chất lượng ảnh phủ đối với các vị trí ở gần nơi quan sát
Kỹ thuật Impostor được thực hiện bởi các bước chi tiết sau:
2.1.1 Tạo một Impostor
Khi ứng dụng bắt đầu tiến hành, cần tạo một đối tượng texture đối với mỗi đối tượng muốn giả mạo Khi nào thời gian nói đến để vẽ Impostor, xác định khung giới hạn không gian màn hình của đối tượng 3D Điều này có thể được thực hiện bằng cách chiếu giới hạn khối đối tượng về phía màn hình và lấy khung giới hạn của phép chiếu Giải pháp tốt nhất là để sử dụng một hình cầu giới hạn, như chỉ cần chiếu hai điểm, nhưng cũng có thể sử dụng hai hộp giới hạn
Hình 2.3: Hai hộp giới hạn Impostor
Trang 29Hình 2.4: khung giới hạn cho Texture
Khi nào xác định được khung giới hạn, vẽ đối tượng 3D, sử dụng vị trị camera hiện tại Sau đó có thể sử dụng glCopyTexSubImage2D() để sao chép nội dung khung giới hạn cho texture của ảnh giả mạo
Độ phân giải của ảnh tẩm phủ nên phục thuộc vào kích thước của đối tượng 3D
chỉnh độ phân giải texture theo hướng tốt nhất phù hợp với đối tượng Chỉ cần chắc chắn rằng kích thước texture giữ nguyên lũy thừa cơ số 2, và để cho rõ có thể phóng to hoặc thu nhỏ texture khi cần thiết Thay đổi kích thước texture có thể được thực hiện bằng cách gọi glCopyTexImage2D() thay thế cho hàm glTexSubImage2D()
2.1.2 Dựng Impostor
Bây giờ có ảnh tẩm phủ sẵn sàng cho việc sử dụng, phối cảnh ảnh tẩm phủ chỉ
là vấn đề định vị một cổng nhìn – hình sprit căn lề nơi mà đối tượng 3D được sử dụng Điều duy nhất cần làm là đảm bảo Impostor thỉnh thoảng được cập nhật Tình huống đầu tiên mà nên tạo lại ảnh tẩm phủ là nếu khung giới hạn không gian màn hình thay đổi kích thước Điều này có nghĩa rằng khoảng cách của camera tới đối tượng đang thay đổi, bởi vậy độ phân giải của ảnh Impostor cũng có thể cần thay
Trang 30đổi Bằng cách trả lời những thay đổi khoảng cách, có thể duy trì một tỉ lệ gần như không đổi giữa các texel trong ảnh thay thế – lý tưởng thì tỉ lệ này sẽ là 1:1
Tình huống thứ hai mà ảnh thay thế cần phải được cập nhật là khi góc giữa đối tượng và vector xem camera thay đổi nhiều hơn một vài độ Điều này là hiển nhiên: Nếu xem đối tượng từ một góc khác, kỹ thuật Impostor cần thay đổi để tương ứng với cổng nhìn mới Có một cái bẫy: Nếu camera đến rất gần ảnh giả mạo, người sử dụng có thể nói rằng đối tượng 3D là một hình chia cắt thực sự Có thể tránh điều này bằng cách phối cảnh đối tượng 3D thực tế thay thế cho ảnh giả mạo khi kích thước màn hình của đối tượng vượt quá một ngưỡng ngất định Điều này không chỉ ngăn ngừa người sử dụng từ việc tìm ra đang có gian lận, đến cũng giữ các kích thước ảnh tẩm phủ giả mạo trong giới hạn cho phép
2.2 Kỹ thuật hiển thị mô hình Occlusion – Culling
Việc mô hình hóa và mô phỏng các đối tượng trong tòa tháp Luang là rất khó,
do độ phức tạp, chi tiết chân thực của tòa tháp Bên cạnh đó, chúng ta khó có thể chụp ảnh được hết các vị trí của tòa tháp, đồng thời cũng khó có thể vẽ được hết những mà ta không thể nhìn thấy được Để có thể hỗ trợ đắc lực và tạo ra những đối tượng, góc cạnh phù hợp và chân thực với tòa tháp, chúng ta có thể sử dụng kỹ
thuật hiển thị mô hình Occlusion Culling (OC) [trích dẫn tài liệu tham khảo]
Với kỹ thuật hiển thị mô hình OC có thể hiển thị các đặc trưng chi tiết có một
độ phức tạp chiều sâu cao Độ phức tạp chiều sâu đề cập đến số lần một pixel trên màn hình trong khi dựng cảnh Hình 2.5 dưới thể hiện 3 góc nhìn của cùng một cảnh Khung giây làm nó rõ ràng mà có nhiều phóng đại Ảnh bên phải là sự phức tạp chiều sâu của ảnh: sáng hơn một pixel, nhiều lần nó được phóng đại
Hình 2.5: Dựng hình đặc, khung dây, và sự phức tạp độ sâu
Trang 31Để giảm sự phức tạp chiều sâu, có thể thực hiện Occlusion Culling Khi đối tượng A hoàn toàn đằng sau đối tượng B, A được gọi là được bít kín bởi B, và không cần được vẽ Thực chất, việc sử dụng OC là quá trình chọn lọc (Culling), tức
là loại bỏ mọi thứ từ một khung cảnh mà không đóng góp đến hình vẽ cuối cùng, bao gồm các thứ mà đằng sau nguời quan sát, màn ảnh riêng, hoặc trong những hệ thống tiên tiến hơn, ẩn đằng sau những đối tượng khác (đã bị che khuất) Khái quát hóa chọn lọc bằng việc loại bỏ những công việc không cần thiết bằng cách so sánh các ranh giới không gian của đối tượng với khung nhìn hình chóp cụt biểu diễn không gian 3 chiều xác định
Trong phần tiếp sau, sẽ trình bày shadow volumes như một cách có thể thực hiện được để thực hiện OC
a Đánh bóng các khối Shadow volumes
Lấy một cái nhìn giả định này Các đường màu đen cho thấy miền quan sát:
Hình 2.6: Trước khi Occlusion Culling
Tư tưởng đằng sau kỹ thuật khối bóng là điều này:
Hình 2.7: Shadow volumes
Trang 32Đối với mỗi lỗ hổng tiềm năng, tạo một bóng đổ Ảnh mà điểm nhìn là một nguồn sáng thực tế Khối bóng đối với một đối tượng sau đó là miền không gian mà nằm trong bóng tối của đối tượng đó Giải pháp, tất nhiên, là bất kỳ đối tượng mà nằm trong khối bóng của đối tượng khác là không nhìn thấy được, và có thể được chọn lọc từ đó Trong hình, các khối bóng chỉ được báo trong cùng màu như đối tượng mà các khối bóng thuộc quyền sở hữu Một cách hiển nhiên, đường màu xanh
là lỗ hổng quan trọng nhất (lỗ hổng là một đối tượng mà một phần hoặc hoàn toàn cản trở lượng ánh sáng đến mắt)
b Tìm các occluder tốt
Mục tiêu của kỹ thuật shadow volume là để giảm sự phức tạp chiều sâu, nhưng nếu đã tạo ra một shadow volume đối với mỗi đối tượng trong cảnh, tổng phí lớn hơn sự tiết kiệm Cần chọn một số đối tượng được giới hạn từ cảnh mà sẽ làm các occluder tốt nhất
Giả định rằng cảnh bao gồm polygon soup – tức là không có sự phân cấp hoặc phân chia nhỏ bất cứ gì Điều này có nghĩa rằng sẽ cần tìm các đa giác lớn để sử dụng như các occluder Sử dụng các đa giác có thuận lợi là nó làm mọi thứ đơn giản hơn nhiều: Tạo một shadow volume thì tương đối khó khăn đối với các đối tượng rắn, nhưng đối với các đa giác đó là một vấn đề nhỏ
Tất nhiên, không phải đa giác làm một occluder tốt Sẽ muốn khởi động bằng cách chọn một đa giác lớn nhất trong cảnh Nếu chỉ làm việc cùng với các hình tam giác, có thể hiệu quả hơn đối với nhóm một vài tam giác trong một đa giác lớn và sử dụng như một occluder Có thể vẫn sử dụng các tam giác cho rendering, bởi vậy sẽ không là một vấn đề Điều duy nhất cần ghi nhớ là occluder phải là lồi
Khi đã chọn một nhóm đầy đủ của các đa giác lớn, sẽ muốn kiểm tra nếu các đa giác quả thực là các occluder tốt Có thể làm điều này bằng cách tạo một tập ngẫu nhiên các điểm nhìn cung quanh đa giác, và kiểm tra bao nhiêu các đa giác khác nó bít kín từ các điểm nhìn Tất nhiên, chỉ nên lựa chọn các điểm nhìn mà thực sự với tới được bởi người
sử dụng của ứng dụng, bởi vậy kiểm tra nếu các điểm tạo thực sự bên ngoài cảnh Giữ các occluder mà phát sinh các kết quả tốt nhất và loại bỏ những occluder khác