TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Phạm Thế Anh PHÁT HIỆN VÀ XỬ LÝ VA CHẠM TRONG CÁC HỆ THỐNG THỰC TẠI ẢO VÀ ỨNG DỤNG VÀO BÀI TOÁN “AN TOÀN GIAO THÔNG” Ngành: Công nghệ thông tin... Mặc dù công
Trang 1Phạm Thế Anh
PHÁT HIỆN VÀ XỬ LÝ VA CHẠM TRONG CÁC HỆ THỐNG THỰC TẠI ẢO VÀ
ỨNG DỤNG VÀO BÀI TOÁN “AN TOÀN GIAO THÔNG”
LUẬN VĂN THẠC SỸ
Hà nội, 2006
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Phạm Thế Anh
PHÁT HIỆN VÀ XỬ LÝ VA CHẠM TRONG CÁC HỆ THỐNG THỰC TẠI
ẢO VÀ ỨNG DỤNG VÀO BÀI TOÁN “AN TOÀN GIAO THÔNG”
Ngành: Công nghệ thông tin
Trang 3MỤC LỤC
Lời cam đoan
Danh mục các bảng biểu
Danh mục các hình vẽ
1.1 Định nghĩa Thực tại ảo (VR - Virtual Reality) ……… 5
1.2 Ba đặc tính chính của VR ……… 6
1.3 Các thành phần một hệ thống VR ……….… 9
1.4 Ứng dụng của Thực tại ảo ……… 11
1.5 Các công cụ phát triển ứng dụng Thực tại ảo ……… ………… 12
1.5.1 Các phần mềm xây dựng mô hình ……… … 12
1.5.2 Các công cụ lập trình ……… 14
Chương 2 Các phương pháp phát hiện va chạm 16 2.1 Kĩ thuật phát hiện va chạm dựa vào hộp bao AABB ……… 17
2.1.1 Định nghĩa hộp bao AABB ……… 17
2.1.2 Phát hiện va chạm giữa hai AABB ……… 17
2.2 Kỹ thuật hộp bao theo hướng (Oriented Bounding Boxes) ……… 18
2.2.1 Định nghĩa hộp bao theo hướng (OBB) ……… 18
2.2.2 Kiểm tra nhanh va chạm giữa hai hộp bao OBBs ……… 19
2.2.3 Tìm điểm va chạm ……… 24
2.2.4 Phát hiện va chạm khi các đối tượng di chuyển ……… 29
2.2.4.1 Phương pháp Euler ……… 30
Trang 42.2.4.2 Phương pháp Runge Kutte 4 (RK4) 30
2.3 Phát hiện va chạm giữa hộp bao OBB và tam giác
2.3.1 Kiểm tra nhanh có va chạm giữa OBB và tam giác
31 31 2.3.2 Tìm điểm va chạm giữa hộp bao OBB và tam giác 33
Chương 3 Xử lý các hiệu ứng sau va chạm 41 3.1 Tổng quan về động lực học vật rắn 41
3.1.1 Mô ment quán tính ( Moment of Inertia) ……… 41
3.1.2 Mô ment quay (Torque) 42
3.1.3 Mối liên hệ giữa mô ment quán tính và mô ment quay ……… 43
3.1.4 Vectơ trạng thái của đối tượng ……… 43
3.1.5 Tính toán xung và lực ảnh hưởng ……… 45
3.1.5.1 Sử dụng định luật bảo toàn động lượng và năng lượng ……… 46
3.1.5.2 Tính toán lực ảnh hưởng thông qua tính toán xung ……… 47
3.2 Xử lý các hiệu ứng về méo mó, biến dạng sau va chạm ……… 48
3.2.1 Ý tưởng thuật toán 48
3.2.2 Giới thiệu về hàm Open Uniform B-Splines ……… 49
3.2.2.1 Vector nút của đường cong Open, Uniform B-Splines ……… 49
3.2.2.2 Định nghĩa đường cong Open, Uniform B-Splines 1D …….… 49
3.2.2.3 Định nghĩa đường cong Open, Uniform B-Splines 2D ……… 50
3.2.2.4 Định nghĩa đường cong Open Uniform B-Splines 3D ……… 52
Chương 4 Ứng dụng vào bài toán "Tuyên truyền an toàn giao thông” 53 4.1 Giới thiệu bài toán “Tuyên truyền an toàn giao thông” ……… 53
4.2 Xây dựng hệ thống mô phỏng các tình huống giao thông ……… 54
4.3 Các kết quả đạt được ……… 55
Trang 5MỞ ĐẦU
Cùng với sự phát triển của khoa học, con người ngày càng có nhu cầu tiếp cận với công nghệ để nâng cao đời sống, tiến gần với cuộc sống hiện đại Công nghệ thông tin ra đời nhằm mục đích đáp ứng dần những nhu cầu đó Và thực tế, ngành khoa học này đã có những thành tích đáng kể đáp ứng được phần nào nhu cầu của cuộc sống hiện đại, chẳng hạn như đưa tự động hóa vào quản lý và sản xuất
để giảm bớt sức lao động của con người; cung cấp phương tiện trao đổi và tìm kiếm thông tin – Internet giúp con người cập nhật, trao đổi thông tin một cách dễ dàng, chính xác; những công nghệ phục vụ cho các lĩnh vực điện ảnh giải trí, giải quyết các bài toán quản lý hay cung cấp các phần mềm có tính ứng dụng cao
Trong những năm gần đây công nghệ thông tin đã đạt được những bước phát triển nhảy vọt cả về phần cứng lẫn phần mềm Những ứng dụng của nó vào cuộc sống ngày càng phong phú, đa dạng và thiết thực hơn Từ các lĩnh vực cơ bản như khoa học cơ bản đến các lĩnh vực kinh tế, kỹ thuật cho đến các lĩnh vực như giải trí,
du lịch không lĩnh vực nào không có sự ứng dụng thiết thực và hiệu quả của công nghệ thông tin Sự phát triển không ngừng của sức mạnh máy tính đã làm cho một
số lĩnh vực khó phát triển trước kia nay đã có khả năng phát triển và đã đạt được những thành tựu đáng kể,chúng ta có thể kể đến các lĩnh vực như: Các hệ chuyên gia, các hệ xử lý thời gian thực vv… Một lĩnh vực khác cần phải kể đến đó là các công nghệ mô phỏng
Mặc dù công nghệ mô phỏng đang còn là một lĩnh vực mới ở Việt Nam nhưng hiện tại trong nước cũng đã có rất nhiều đơn vị đầu tư, nghiên cứu về lĩnh vực này, đi tiên phong phải kể đến phòng thí nghiệm Thực tại ảo - Viện CNTT, trung tâm Công nghệ mô phỏng - Học viện Kĩ thuật Quân sự, các trung tâm làm về thực tại ảo, quảng cáo thuộc Đại học Công nghệ - Đại học Quốc Gia Hà Nội, Trung tâm mô phỏng - Đại học Bách khoa Hà Nội… Trên thế giới, những ứng dụng của công nghệ mô phỏng vào các lĩnh vực của đời sống đã và đang trở nên ngày càng phong phú, đa dạng, nó dường như đã trở thành một phần không thể thiếu được của cuộc sống Vì vậy nghiên cứu và phát triển công nghệ mô phỏng (còn gọi là công nghệ thực tại ảo) đã và sẽ trở thành một hướng nghiên cứu mang lại nhiều hứa hẹn
Trang 6Vấn đề về va chạm thường là những vấn đề rất khó nghiên cứu trong thực tế, chẳng hạn như các công ty sản xuất xe máy, xe ô tô trước khi tung các sản phẩm ra thị trường đều phải tiến hành các cuộc thử nghiệm về va chạm để kiểm tra tính bền
và tính an toàn của các sản phẩm làm ra Những vấn đề này đã được nghiên cứu thử nghiệm trong thực tế nhưng còn rất nhiều hạn chế vì nhiều lý do, còn rất nhiều trường hợp va chạm mà chúng ta cần nghiên cứu nhưng chưa thể thực hiện được Một vấn đề khác đó chính là chi phí cung cấp cho việc thử nghiệm trên thực tế là quá lớn Chính vì vậy giải pháp sử dụng máy tính để mô phỏng các vụ va chạm là một giải pháp thay thế rất thích hợp, đây là một vấn đề hết sức cần thiết cho cuộc sống của con người Vấn đề phát hiện va chạm còn được ứng dụng rất nhiều trong các lĩnh vực khác như: y học, các bộ mô phỏng vật lý hay trong một lĩnh vực có nhu cầu rất lớn đó là giải trí v.v Phát hiện va chạm được ứng dụng rất nhiều trong các môi trường thực tại ảo
Phát hiện va chạm đã khó, xử lý hậu va chạm còn khó hơn Chúng ta không chỉ đơn thuần là phát hiện ra va chạm, quan trọng hơn chúng ta cần phải xử lý hay
mô phỏng hành vi của các đối tượng sau va chạm như thế nào cho giống với thế giới thực, chẳng hạn hai xe máy đâm nhau thì hậu quả sẽ như thế nào? Chúng bị méo mó, biến dạng, bị thay đổi trạng thái (vận tốc và hướng) ra sao? Hoặc hậu quả xảy ra khi ô tô đâm vào xe máy thì như thế nào? Đối tượng khi di chuyển trên địa hình không bằng phẳng phải khác khi di chuyển trên địa hình bằng phẳng Vì những khó khăn trên, phát hiện va chạm và xử lý hậu va chạm là hai vấn đề quan trọng trong các hệ thống thực tại ảo
Trong luận văn này, tôi tìm hiểu và nghiên cứu các vấn đề về phát hiện và xử
lý hậu va chạm trong các hệ thống thực tại ảo Trong phát hiện va chạm, tôi tập trung nghiên cứu hai kĩ thuật chính đó là kĩ thuật sử dụng hình hộp bao theo trục
(Axis-Aligned Bounding Boxes - AABBs) và kĩ thuật hình hộp bao theo hướng (Oriented Bounding Boxes - OBBs) Khi xử lý hậu va chạm, tôi nghiên cứu các cơ
sở vật lý về động lực học vật rắn [16] (Open Dynamic Engine - ODE), kĩ thuật
bóp méo tự do sử dụng các hàm bao BSplines Volume Cuối cùng, tôi đã kết hợp
hai vấn đề trên để ứng dụng vào hệ thống “Giúp bạn đi an toàn khi tham gia giao
thông” - một hệ thống thực tại ảo mô phỏng các tình huống giao thông “nóng nhất”
nhằm tuyên truyền, trợ giúp người dân biết cách đi như thế nào để an toàn nhất khi tham gia giao thông
Trang 7Chương 1
Tổng quan về Thực tại ảo
1 Định nghĩa Thực tại ảo (VR - Virtual Reality)
Các nhà khoa học đã nghiên cứu Thực tại ảo từ nhiều năm nay và đã thừa nhận Thực tại ảo là một công nghệ có tiềm năng ứng dụng vô cùng lớn Nhiều bài báo, chương trình giới thiệu ti vi, hội thảo, đã mô tả Thực tại ảo theo nhiều cách khác nhau Vậy Thực tại ảo là gì? Trước hết chúng ta hãy giải thích nó qua khía cạnh chức năng [4] Thực tại ảo 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 Thực tại ảo, đó là tính tương tác thời gian thực (real-time interactivity) 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 của họ và bị thu hút bởi sự mô phỏng này Điều này chúng ta có thể nhận thấy ngay khi quan sát trẻ nhỏ chơi video game Theo báo Bild (Đức), có hai trẻ nhỏ ở Anh bị thu hút và mải mê chơi Nintendo đến nỗi ngay cả khi nhà chúng đang bị cháy cũng không hề hay biết
Tương tác và khả năng thu hút của Thực tại ảo góp phần lớn vào cảm giác đắm chìm (immersion), 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 Thực tại ảo còn đẩy cảm giác nà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 (như hình nổi ở trang cuối báo Hoa học trò đã đăng trước kia), đ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 Thực tại ảo các cảm giác này ít được sử dụng đến
Trang 8Từ các phân tích trên, chúng ta có thể thấy định nghĩa sau đây của C Burdea
và P Coiffet về Thực tại ảo là tương đối chính xác: VR - Thực tại ảo là một hệ thống giao diện cấp cao giữa Người sử dụng và Máy tính Hệ thống này mô phỏng các sự vật và hiện tượng theo thời gian thực và tương tác với người sử dụng qua tổng hợp các kênh cảm giác Đó là ngũ giác gồm: thị giác, thính giác, xúc giác, khứu giác, vị giác [4]
Trong khi óc sáng tạo của Picasso là một điều bí ẩn đối với ông cũng như đối với mọi người khác, một thái độ có thể dễ dàng kiểm chứng là cái cá tính mãnh liệt của ông khi ông làm mọi việc - ngay cả trong khi ký tên mình Ông cúi gập mình
Tưởng tượng (Imagination)
Đắm chìm (Immersion)
Tương tác (Interactive)
Hình 1.1 Ba đặc điểm của một hệ thống Thực tại ảo
Trang 9xuống, dán mặt sát vào trang giấy và không còn tồn tại một điều gì khác đối với ông ngoài việc đang làm
Một thuộc tính then chốt khác của sự đắm chìm là nó có thể tác động như một thấu kính mạnh để khai thác kiến thức từ dữ kiện bằng cách biến đổi nó thành kinh nghiệm Năng lực này chính là lý do khiến cho rất nhiều ngành công nghiệp đang ráo riết khai phá cách sử dụng các môi trường ảo Howard Rheingold cho rằng
có thể tìm thấy những dấu vết xa xưa của việc sử dụng sự đắm chìm trong những hành động cử hành nghi lễ của người tiền sử Các thiếu niên được đưa vào bóng tối của những hang động đầy hình vẽ, ở đó các câu chuyện sẽ được kể lại, các hình ảnh
và các bài ca sẽ được lộ ra theo một trình tự chính xác và các thiếu niên ấy sẽ bị đắm chìm vào những nghi thức dành cho tuổi trưởng thành của chúng Chỉ bằng việc loại bỏ phần còn lại của thế giới và nhấn chìm chính mình vào cái không gian biệt lập ấy, sự học hỏi có thể diễn ra và làm biến đổi một đứa trẻ thành một người trưởng thành
Hình 1.2 Tính tương tác của một hệ thống Thực tại ảo
Trang 10Một khía cạnh khác của sự điều hướng là sự định vị điểm nhìn của người dùng Sự kiểm soát điểm nhìn chắc hẳn có nghĩa là việc theo dõi chính bạn từ một khoảng cách, việc quan sát cảnh tượng thông qua đôi mắt của một con người khác, hoặc di chuyển khắp trong thiết kế của một cao ốc mới như thể đang ngồi trong một chiếc ghế đẩy… Động lực học của môi trường là những quy tắc về cách thức mà nội dung của nó (người, vật, … và mọi thứ) tương tác với nhau trong một trật tự để trao đổi năng lượng hoặc thông tin Mỗi một đối tượng (object) và mối quan hệ của nó với mọi đối tượng khác (kể cả với người dùng) là một yếu tố thiết kế trong sự suy xét cẩn thận của nhà phát triển
Trong số những yếu tố đó có thể kể đến vị trí, màu sắc, hình dạng và kích thước của môi trường Kết quả là, Thực tại ảo là trải nghiệm của trạng thái sống trong một thế giới khác - một thế giới được cai quản bởi những luật lệ chọn lọc, và được ngụ cư bởi những đối tượng với bất kỳ thuộc tính nào mà nhà sáng tạo chọn lựa để ấn định cho chúng Chính tính chất linh động này trong việc sáng tạo là biểu trưng các môi trường ảo đã tạo nên tình trạng kích động về thực tại ảo Phim ảnh 3D
đã đến và đã đi Nhưng việc bước vào một thế giới phản ứng lại với bạn và là độc nhất đối với bạn, một thế giới có cuộc sống độc lập của riêng nó - đó chính là Thực tại ảo
Tính tưởng tượng
Như trên đã trình bày, hai đặc tính chính của Thực tại ảo là Tương tác và Đắm chìm, đây là hai "I" (Interactive, Immersion) mà nhiều người đã biết Tuy nhiên Thực tại ảo cần có một đặc tính thứ ba mà ít người để ý tới Thực tại ảo không chỉ là một hệ thống tương tác Người - Máy tính, mà các ứng dụng của nó còn liên quan tới việc giải quyết các vấn đề thật trong kỹ thuật, y học, quân sự, Các ứng dụng này do các nhà phát triển Thực tại ảo thiết kế, điều này phụ thuộc rất nhiều vào khả năng Tưởng tượng của con người, đó chính là đặc tính "I" (Imagination) thứ ba của Thực tại ảo Do đó có thể coi Thực tại ảo là tổng hợp của
ba yếu tố: Tương tác - Đắm chìm - Tưởng tượng
Trang 111.3 Các thành phần một hệ thống VR
Tổng quát, một hệ thống Thực tại ảo bao gồm 5 thành phần sau [4](hình 1.3)
Hình 1.3 Các thành phần của một hệ thống thực tại ảo
Phần cứng của một VR bao gồm:
Máy tính (PC hay Workstation với cấu hình đồ họa mạnh)
Các thiết bị đầu vào (Input devices): Bộ dò vị trí (position tracking) để xác định vị trí quan sát Bộ giao diện định vị (Navigation interfaces) để di chuyển
vị trí người sử dụng Bộ giao diện cử chỉ (Gesture interfaces) như găng tay dữ liệu (data glove) để người sử dụng có thể điều khiển đối tượng (hình 1.4)
Các thiết bị đầu ra (Output devices): gồm hiển thị đồ họa (như màn hình, HDM, ) để nhìn được đối tượng 3D nổi Thiết bị âm thanh (loa) để nghe được
âm thanh vòm (như Hi-Fi, Surround, ) Bộ phản hồi cảm giác (Haptic feedback như găng tay, ) để tạo xúc giác khi sờ, nắm đối tượng Bộ phản hồi xung lực (Force Feedback) để tạo lực tác động như khi đạp xe, đi đường xóc,
Trang 12Phần mềm của một hệ thống Thực tại ảo
Phần mềm luôn là linh hồn của Thực tại ảo cũng như đối với bất cứ một hệ thống máy tính hiện đại nào Về mặt nguyên tắc có thể dùng bất cứ ngôn ngữ lập trình hay phần mềm đồ họa nào để mô hình hóa (modelling) và mô phỏng (simulation) các đối tượng của VR Ví dụ như các ngôn ngữ (có thể tìm miễn phí) OpenGL, C++, Java3D, VRML, X3D, .hay các phần mềm thương mại như WorldToolKit, PeopleShop,
Phần mềm của bất kỳ Thực tại ảo nào cũng phải bảo đảm hai công dụng chính: Tạo hình vào Mô phỏng Các đối tượng của Thực tại ảo được mô hình hóa nhờ chính phần mềm này hay chuyển sang từ các mô hình 3D (thiết kế nhờ các phần mềm CAD khác như AutoCAD, 3D Studio, ) Sau đó phần mềm Thực tại ảo phải có khả năng mô phỏng động học, động lực học và mô phỏng ứng xử của đối tượng
Nói chung các hệ thống thực tại ảo phải xử lý mội khối lượng lớn thông tin (đa phần là các thông tin của các đối tượng 3D do đó tốn bộ nhớ và đòi hỏi thời gian
xử lý là thời gian thực), vì thế nó đòi hỏi một lượng tài nguyên bộ nhớ RAM lớn và
bộ xử lý cùng các thiết bị vào ra có tốc độ cao Vì vậy mặc dù bắt đầu nghiên cứu từ khá lâu, xong trong một số năm gần đây thực tại ảo mới có được sự phát triền và
Trang 131.4 Ứng dụng của Thực tại ảo
Công nghệ thực tại ảo có rất nhiều ứng dụng trong thực tế Ứng dụng truyền thống của thực tại ảo đó là Y học [8], trong các trường đại học Y thường gặp một khó khăn đó là tìm kiếm các mẫu vật cho sinh viên thực hành, đây là một vấn đề rất nan giải bởi các mẫu vật này thường rất đắt tiền, nhưng quan trọng hơn là sự khan hiếm của chúng Một giải pháp đầy hứa hẹn cho vấn đề này đó là xây dựng các mẫu vật ảo, tiến xa hơn nữa là các hệ thống giải phẩu ảo, mổ ảo, Việc xây dựng các hệ thống giải phẩu ảo có một ý nghĩa quan trọng trong Y học, giúp giải quyết được vấn
đề khan hiếm về mẫu vật, giúp sinh viên và giáo viên có thể thực hành, tương tác và thực hiện các ca giải phẩu ảo ngay trên máy tính mà có cảm giác như đang thực hành trên những mẫu vật thực (hình 1.5)
Hình 1.5 Một hệ thống giải phẩu ảo
Trong giải trí, công nghệ thực tại ảo trợ giúp chúng ta xây dựng được những trò chơi sống động, các kĩ xảo điện ảnh, các phim hoạt hình 3D gần gũi với con người tạo ra sức lôi cuốn mạnh mẽ Đối với các hoạ sĩ, nhà tạo mẫu, những chương trình đồ hoạ máy tính là một công cụ trợ giúp hết sức đắc lực, ví dụ như PaintShop,
Trang 14Adobe PhotoShop, 3D Studio Max, Maya, đã giúp họ thiết kế các hình ảnh sống động như ở trong thế giới thực Người hoạ sĩ được máy tính tạo cho cảm giác y như đang làm việc ngoài đời thực vì các công cụ khung vẽ, giá vẽ, bảng pha màu, các hiệu ứng ba chiều như ánh sáng, độ tương phản đều được cung cấp trên màn hình máy tính, điều này có thể làm họ cảm thấy thuận tiện và dễ thao tác
Trong xây dựng, việc dựng được các mô hình thực tại ảo cho phép chúng ta
có cái nhìn trực quan, chính xác để có thể đưa ra những quyết định, những sáng kiến thiết kế về các công trình xây dựng đúng đắn
Trong giáo dục, những thí nghiệm được mô tả sát thực bằng máy tính giúp cho người học hứng thú hơn, kiến thức được thể hiện rõ hơn, trực quan hơn, đầy đủ hơn Chẳng hạn, chúng ta có thể mô phỏng cấu trúc của các vật thể, tiến trình của các phản ứng hoá học, phản ứng hạt nhân mà trong thực tế chúng ta không thể quan sát được Đối với một số lĩnh vực đào tạo yêu cầu tính thực hành cao như đào tạo lái
xe ô tô, lái tàu hoả, tàu thuỷ, lái máy báy, công nghệ mô phỏng có thể giúp chúng
ta tiết kiệm rất nhiều tiền của và thời gian bằng cách xây dựng các hệ thống tập lái
ảo Ở Việt Nam hiện nay đã cho triển khai hệ thống tập lái xe ô tô ảo và hệ thống lái tàu thuỷ ảo
Trong quân sự, chúng ta có thể ứng dụng thực tại ảo để xây dựng các mô hình tập trận ảo, tập lái và điều khiển xe tăng, máy bay chiến đấu ảo, đi đầu trong lĩnh vực này phải kể đến trung tâm công nghệ mô phỏng thuộc học viện Kĩ thuật Quân sự
Cuối cùng là ứng dụng của Thực tại ảo trong việc tái tạo các công trình kiến trúc (cả cổ điển và hiện đại) Những công trình mang tính lịch sử của nước ta như Hoàng Thành Thăng Long, Đại Nội Huế, Văn Miếu Quốc Tử Giám, trong tương lai gần sẽ được số hoá đưa vào máy tính phục vụ mục đích lưu trữ, bảo tồn hoặc tham quan ảo, đồng thời thuận tiện hơn trong việc quảng bá, giới thiệu văn hoá Việt Nam với thế giới
1.5 Các công cụ phát triển ứng dụng Thực tại ảo
1.5.1 Các phần mềm xây dựng mô hình
Mô hình là một phần quan trọng trong các hệ thống thực tại ảo, mô hình mô
tả, biểu diễn một đối tượng trong thế giới thực bao gồm hình dạng bề mặt và hoạt
Trang 15động của đối tượng Ví dụ trong các phim hoạt hình 3D, mô hình là các nhân vật, môi trường cảnh quan, động vật, rừng núi, sông nước,
Có rất nhiều phần mềm tạo mô hình ba chiều như Maya, 3DS Max, LightWare,…song hai phần mềm phổ biến nhất là Maya và 3DS Max Ở Việt Nam, 3DS Max quen thuộc hơn Maya Nhưng xu thế trên thế giới các công ty chuyển sang Maya mạnh hơn Mô hình với Maya cho kích thước nhẹ hơn so với 3DS Max Hiện tại phiên bản mới nhất của Maya là 6.5 và 3DS Max là 8.0
Maya và 3DS Max cũng như các phần mềm tạo mô hình ba chiều khác giúp tạo mô hình 3 chiều để mô phỏng thế giới thực Nó có các đối tượng nguyên thuỷ như hình cầu, hình trụ, hình hộp, mặt phẳng, đường cong,…Từ các đối tượng nguyên thuỷ này ta sử dụng các thao tác như dịch chuyển, xoay, co giãn cùng với các kỹ thuật chỉnh sửa như cắt xén, mở rộng, thêm bớt … để tạo nên đối tượng mong muốn trong thế giới thực
Sau đó các đối tượng sẽ được bổ sung thêm xương (nếu có), tính chất bề mặt (như màu sắc, da, tóc, mắt …) và được tạo các chuyển động mô phỏng một cách sinh động các thể hiện của đối tượng trong thế giới thực
Khi làm việc với các phần mềm ta sẽ thao tác trên 4 khung nhìn khác nhau của đối tượng, 4 khung nhìn này sẽ cho ta nhìn được đối tượng đồng thời ở các góc
độ khác nhau, hình 1.6 minh họa điều này
Hình 1.6 Các khung nhìn khác nhau trong phần mềm Maya
Trang 16Ta có hệ trục tọa độ ba chiều XYZ, màu xanh lam ứng với trục Y, màu đỏ ứng với trục X và màu xanh đậm ứng với trục Z Góc trên, bên phải là khung làm việc cho phép ta thao tác trong không gian ba chiều, ba góc còn lại cho phép ta làm việc ở ba mặt cắt của mô hình Với các khung nhìn này ta có thể thao tác dễ dàng hơn, khi một thay đổi xuất hiện ở một khung nhìn sẽ cho hiệu ứng đối với các khung nhìn khác
Bên cạnh hệ trục tọa độ XYZ ta còn có hệ tọa độ UV, hệ tọa độ UV bao bọc
bề mặt theo 2 chiều trái sang phải và dưới lên trên Có thể hình dung ra hệ tọa độ này như là các đường kinh tuyến và vĩ tuyến của trái đất Hệ tọa độ này chủ yếu được sử dụng trong quá trình thêm tính chất bề mặt cho mô hình
1.5.2 Các công cụ lập trình
Các công cụ lập trình trong các ứng dụng Thực tại ảo thường là các thư viện
đồ hoạ 3D được xây dựng sẵn, miễn phí như DirectX, OpenGL, OpenSG, OpenSceneGraph Trước đây, chúng ta hay sử dụng các thư viện OpenGL và DirectX, nhưng do mức độ hỗ trợ người lập trình trong các thư viện đó chưa cao nên người ta đã mở rộng chúng thành OpenSG, OpenSceneGraph Hai thư viện lập trình OpenSG, OpenSceneGraph được xây dựng trên nền tảng OpenGL (hình 1.7)
và đưa vào khái niệm rất mới đó là “Đồ thị ngữ cảnh” – Scene Graphs Theo đó, mỗi đối tượng được biễu diễn như là một cây ngữ cảnh, mỗi nút có một nhân (core), nhân của mỗi nút có thể là một đối tượng geometry, đối tượng transform, đối tượng ánh sáng (light)
System (UNIX, Windows)
OpenGL
Low Level
OpenSGLarge Scene Support
OpenSGHigh Level Primitive
s
OpenSGHigh Level Shading
Hình 1.7 Kiến trúc mô hình thư viện đồ hoạ OpenSG
Trang 17Quá trình Render một đối tượng xuất phát từ nút gốc đi đến từng nút lá và thực hiện các hành động tương ứng trong quá trình duyệt cây Xét ví dụ một đối tượng xe ô tô có thể được biễu diễn bởi một đồ thị ngữ cảnh như hình 1.8
OpenSG hỗ trợ các hàm và các đối tượng đồ hoạ cơ sở như Light, Geometry, Transform, Material, Windows, Viewport, ngoài nó còn hỗ trợ cơ chế đa luồng, lập trình hiển thị stereo Để sử dụng được thư viện OpenSG, bạn cần dùng bộ biên dịch FrameNet, thông thường OpenSG hay dùng với ngôn ngữ lập trình Visual C.Net Để biết thêm về thư viện đồ hoạ OpenSG, bạn có thể tìm hiểu và download miễn phí OpenSG tại địa chỉ: www.opensg.org
o
Light
Root Light
Hình 1.8 Đồ thị ngữ cảnh của đối tượng Car
Trang 18Chương 2
Các phương pháp phát hiện va chạm
Phát hiện va chạm là một trong những vấn đề trọng tâm của mỗi hệ thống thực tại ảo Các đối tượng trong các hệ thống thực tại ảo có những chuyển động riêng của nó Trong khi chuyển động đối tượng có thể va chạm với đối tượng khác, hoặc có thể va chạm với môi trường, chướng ngại vật, Do vậy, mỗi hệ thống thực tại ảo đều phải có khả năng phát hiện khi nào thì có va chạm xảy ra và có những đối tượng nào tham gia va chạm để có những xử lý hậu va chạm thích hợp Trong luận văn này, tôi xem xét các đối tượng trong không gian ba chiều nên khi nói đến va chạm có nghĩa là va chạm trong không gian ba chiều Một cách đơn giản nhất để phát hiện va chạm giữa hai đối tượng đó là kiểm tra từng mặt của đối tượng này có cắt một mặt nào đó của đối tượng kia, cách này có ưu điểm là cho ta chính xác điểm
va chạm Tuy nhiên vì mỗi đối tượng 3D được tạo thành từ rất nhiều các mặt (thông thường là các tam giác) cho nên chi phí để kiểm tra giao nhau của từng cặp mặt như vậy là rất tốn kém về mặt thời gian, nhất là ta luôn phải đảm bảo tính thời gian thực trong các hệ thống thực tại ảo Do vậy, hầu hết các hệ thống thực tại ảo đều sử dụng phương pháp gần đúng để phát hiện va chạm, phương pháp gần đúng hay được sử dụng đó là phương pháp dùng các hình bao quanh đối tượng [13] Với mỗi đối tượng, ta tìm một hình bao “thích hợp” quanh nó, việc phát hiện va chạm bây giờ được đưa về bài toán phát hiện va chạm giữa các hình bao Việc sử dụng hình bao
gì cho đối tượng là tuỳ thuộc vào từng hệ thống, để giảm độ phức tạp khi tính toán thì người ta hay sử dụng các hình bao là các hình elipsoid, hình hộp, hình cầu
Đối với phương pháp phát hiện va chạm theo các hộp bao thì ta lại có hai kỹ thuật khác nhau đó là sử dụng hộp bao có các cạnh song song với các trục toạ độ (Axis-Aligned Bounding Boxes - AABBs) hoặc là hộp bao theo hướng của đối tượng (Oriented Bounding Boxes - OBBs) Việc phát hiện va chạm giữa các hộp bao AABBs được thực hiện nhanh chóng nhưng sai số lớn, trong khi đó phát hiện
va chạm giữa các hộp bao OBBs tuy phức tạp hơn nhưng cho sai số nhỏ hơn nhiều
Trang 192.1 Kĩ thuật phát hiện va chạm dựa vào hộp bao AABB
2.1.1 Định nghĩa hộp bao AABB
AABB là hộp bao có dạng hình hộp chữ nhật có các cạnh song song với các trục toạ độ tương ứng và bao lấy vật thể (hình 2.1)
Hình 2.1 Hộp bao AABB của đối tượng
Hộp bao AABB bao gồm một tâm C, ba hệ số a0, a1, a2 tương ứng là độ dài theo ba trục toạ độ của hình hộp
2.1.2 Phát hiện va chạm giữa hai AABB
Cho hai hộp bao AABB xác định bởi [C1, a0, a1, a2] và [C2, b0, b1, b2], trong
đó ai>0, bj>0, i,j = 0,1,2 Để kiểm tra va chạm, chúng ta xác định toạ độ cao nhất và thấp nhất của mỗi hộp bao Kí hiệu (xmin1, ymin1, zmin1), (xmax1, ymax1, zmax1) là toạ độ thấp nhất và cao nhất của hộp bao có tâm C1:
2
,2
2
,2
2
,2
0 0 1 max 0
0 1 min
0 0 1 max 0
0 1 min
0 0 1 max 0
0 1 min
c C z
c C z
b C y
b C y
a C x
a C x
Tương tự ta tính được (xmin2, ymin2, zmin2), (xmax2, ymax2, zmax2) là toạ độ thấp
chạm nếu xảy ra một trong các điều kiện sau:
zmin1 > zmax2 hoặc zmax1 < zmin2
ymin1 > ymax2 hoặc ymax1 < ymin2
Trang 20 xmin1 > xmax2 hoặc xmax1 < xmin2
Hộp bao này rất đơn giản, dễ tạo ra và kiểm tra, phát hiện va chạm cũng rất
dễ dàng Tuy nhiên hộp bao AABB cũng tạo ra nhiều khoảng trống giữa vật thể và hộp bao Khi vật thể không nằm song song với các trục toạ độ và có dạng dài thì khoảng trống này càng lớn Thực tế trong các hệ thống thực tại ảo, người ta chỉ sử dụng kĩ thuật hộp bao AABB để giới hạn vùng va chạm, sau đó để kiểm tra và tìm điểm va chạm chính xác hơn, người ta sẽ sử dụng kĩ thuật hộp bao theo hướng OBB
sẽ được trình bày trong phần tiếp theo
2.2 Kỹ thuật hộp bao theo hướng (Oriented Bounding Boxes) 2.2.1 Định nghĩa hộp bao theo hướng (OBB)
OBB là hộp bao AABB nhưng trục của nó có hướng bất kỳ OBB có ưu điểm hơn AABB đó là giảm không gian trống giữa vật thể và hộp bao Tuy nhiên việc tạo
ra và thao tác trên hộp bao loại này phức tạp hơn loại AABB nhiều, mặc dù vậy người ta vẫn thường sử dụng loại hộp bao này hơn vì nó cho độ chính xác cao hơn nhiều so với hộp bao AABB (Hình 2.2)
Hình 2.2 Hộp bao OBB của đối tượng
Một hình hộp OBB bao gồm một tâm C, ba vector A0,A1,A2
chỉ hướng của hình hộp và 3 hệ số độ dài tương ứng với kích thước của hình hộp là a0 >0, a1>0,
a2>0 Khi đó, 8 đỉnh của hình hộp sẽ được xác định như sau:
i
i a A s i s
Kỹ thuật phát hiện hộp bao theo hướng được chia làm hai mức [6] Mức một
là kiểm tra “nhanh” xem có va chạm nào xảy ra không? Nếu không có va chạm nào xảy ra thì hệ thống vẫn làm việc bình thường, ngược lại nếu ở mức một phát hiện có
ít nhất một va chạm xảy ra thì sẽ chuyển sang mức hai đó là tìm chính xác điểm va
Trang 21chạm Ở mức một, ta có thể kiểm tra nhanh xem có va chạm nào xảy ra không nhờ dựa vào định lý sau đây
Định lý 2.2.1 Hai khối đa diện lồi không giao nhau nếu có thể cô lập được chúng
bằng một mặt phẳng P thoả mãn một trong hai điều kiện sau:
thứ hai
Từ định lý trên, ta rút ra nhận xét sau cho phép kiểm tra nhanh sự giao nhau của hai hai khối đa diện lồi: Điều kiện cần và đủ để kiểm tra hai khối đa diện lồi có giao nhau hay không là kiểm tra giao nhau giữa các hình chiếu của chúng lên đường
thẳng vuông góc với mặt phẳng P ở trên, đường thẳng này được gọi là trục cô lập
Ta thấy rằng các hộp bao OBBs là những khối đa diện lồi, bởi vậy ta hoàn toàn có thể áp dụng định lý trên để kiểm tra va chạm giữa chúng
2.2.2 Kiểm tra nhanh va chạm giữa hai hộp bao OBBs
Cho hai hình bao OBBs xác định bởi các thông số [C0,A0,A1,A2,a0,a1,a2] và [C1,B0,B1,B2,b0,b1,b2] Ta thấy rằng các tình huống mà hai OBBs tiếp xúc với nhau (không cắt nhau) chỉ có thể là một trong 6 trường hợp sau đây: mặt - mặt, mặt - cạnh, mặt - đỉnh, cạnh - cạnh, cạnh - đỉnh, đỉnh - đỉnh Do vậy, tập ứng cử viên các trục cô lập chỉ tối đa là 15 trục sau:
3 trục chỉ hướng của hộp bao thứ nhất (Ai
)
3 trục chỉ hướng của hộp bao thứ hai (Bj
)
thuộc hộp bao thứ hai (Ai Bj
Mặt khác, ta biết rằng nếu một trục là trục cô lập thì khi tịnh tiến đến vị trí nào, nó vẫn là trục cô lập Bởi vậy, không mất tính tổng quát ta sẽ gọi trục cô lập có vector chỉ phương là V và đi qua tâm C0 của hộp bao thứ nhất, do vậy nó có phương trình như sau: d = C0
Trang 22Gọi P là một điểm bất kỳ, hình chiếu của P lên đường thẳng d với gốc C0 sẽ
là đoạn thẳng C0H xác định như sau (hình 2.3)
|
|
* ) (
) ,
V
V C P d
Như vậy, khi chiếu 8 đỉnh của hộp bao thứ nhất lên trục cô lập d với gốc C0
(hình 2.4), độ dài của mỗi đoạn thẳng được xác định như sau :
|
|
|
*)
*
*(
|),
*
*(
2
0 2
0 0
V
V A a s d
A a s C
i i i i
i i
*
*(
i
i i i
Hình 2.3 Hình chiếu của P lên đường thẳng d
Hình 2.4 Chiếu 8 đỉnh của hình hộp lên trục cô lập d
Trang 23|
|
*)
*
*(
|
|
|
*),
*
*(
2
0 2
0 1
V
V B b s V
D V d B b s C
i i i i
i i
Do vậy, khoảng cách nhỏ nhất chứa 8 đoạng thẳng (2.2) sẽ có tâm là C1 và bán kính
R1 được xác định như sau :
|
|
*)
*
*(
i
i i i
Trang 24Trong đó: R = C0C1*| V|
Hình 2.5 Kết quả chiếu 2 hình hộp lên trục cô lập d
Bây giờ ta sẽ giải cụ thể các phương trình trên Với mỗi vector Bi
ta có thể viết thành: Bi c0i A0 c1i A1 c2i A2
12 11 10
02 01 00
c c c
c c c
c c c
2 1
0
* B B B A
2 1 1 1 0 1
2 0 1 0 0 0
B A B A B A
B A B A B A
B A B A B A
= {Ai
Trang 25a1 b0|c10|+b1|c11|+b2|c12| |A1.D|2
A
a2 b0|c20|+b1|c21|+b2|c22| |A2.D|0
Trang 26Trong các hệ thống thực tại ảo, phần lớn chúng ta chỉ quan tâm đến thời điểm đầu tiên mà các đối tượng va chạm nhau, nghĩa là thời điểm mà các đối tượng
đó tiếp xúc nhau Điều này cũng đúng trong thế giới thực, khi mà các đối tượng va chạm nhau thì hậu quả va chạm sẽ xảy ra ngay khi chúng vừa “chạm” vào nhau Do vậy, chúng ta chỉ cần quan tâm đến thời điểm mà các đối tượng tiếp xúc nhau và điểm tiếp xúc đó (hình 2.6)
Trang 27Hình 2.6 Tìm điểm va cham khi hai đối tượng tiếp xúc nhau
Đối với hai hộp bao, nếu chúng va chạm với nhau ở dạng đỉnh - đỉnh, đỉnh -
cạnh, cạnh - cạnh, đỉnh - mặt thì điểm tiếp xúc là duy nhất Nhưng nếu chúng va
chạm với nhau ở dạng mặt - mặt, cạnh - mặt thì sẽ có vô số điểm tiếp xúc, khi đó
chúng ta chỉ cần đưa ra một điểm bất kỳ là được Ý tưởng để tìm thời điểm va chạm đầu tiên như sau Mỗi khi ta thực hiện công việc kiểm tra nhanh va chạm ở mức thứ
nhất, nếu tìm được một trục cô lập thì ta sẽ ghi lại nhãn thời gian cho trục cô lập đó
Nếu không tìm được một trục cô lập nào thì có nghĩa là hai hộp bao đã va chạm với nhau, khi đó nhãn thời gian được gán cho trục cô lập ở lần kiểm tra liền trước sẽ là thời điểm đầu tiên mà hai hộp bao va chạm nhau, gọi T là nhãn thời gian đó Khi
đó, ta có thế coi như R = R0+R1(thời điểm hai hình hộp tiếp xúc nhau)
Gọi P là điểm tiếp xúc của hai hộp bao thì suy ra tồn tại một vector x = {x0,
i
i A D y B
với |xi| ai, |yj| bj và i,j = 0,1,2 (2.6) Việc tìm điểm va chạm sẽ phụ thuộc vào trục cô lập V
ở thời điểm T là trục nào trong số 15 trục cô lập ứng cử viên Ta xét 3 trường hợp sau
Trang 28y Thay các giá trị của R0,
R1 trong bảng 1 ở trên ta được:
*
0
*
j ij j
i
y c Sign b
xi a
*)(
*
*
j bj c Sign y
a x
ij j
i i
đó, nhân hai vế của (2.6) với Bj
j D x c
B
) max(
|
|
|
|
) min(
2
0 2
0
j k
k kj j
j k
k kj j
*)(
*
*
j a c Sign x
b y
j ji j
i i
j A D y c
x
Trang 29Tương tự như trên, ta có:
)max(
|
|
|
|
)min(
2
0 2
0
j k
k jk j
j k
k jk j
],[)]
2
0
B c B c B
y
j
j j
Trang 302 20 1 10 0 00
02 02 1 01 0 00 0
y c y c y c D A x
00 0
2
00
0
2 02 1 01 2 20 1 10 0
00 0
*
*
*(
*
*1
1
*
*)
*
*
*(
*
*1
1
x c x c y c y c D A c D B c
y
y c y c x c x c D B c
D A c
Cuối cùng ta có bảng tổng hợp về toạ độ của tiếp điểm trong mọi trường hợp sau:
i
A
2,1,0)
( (
1 1
) ( ,
) ( ,
) ( ,
) (
2 02 1 01 2 20 1 10 00
0 2 00 0
2 01 2
1 02 1
2 10 2
1 20 1
y c y c x c x c D B c D A c x
b c Sign y
b c Sign y
a c Sign x
a c Sign x
( (
1 1
) ( ,
) ( ,
) ( ,
) (
2 02 0 00 2 21 1 11 1
01 0
2 01 0
2 00 2
0 02 0
2 11 2
1 21 1
y c y c x c x c D B c D A c x
b c Sign y
b c Sign y
a c Sign x
a c Sign x
( (
1 1
) ( ,
) ( ,
) ( ,
) (
2 01 0 00 2 22 1 12 2
02 0
2 02 0
1 00 1
0 01 0
2 12 2
1 22 1
y c y c x c x c D B c D A c x
b c Sign y
b c Sign y
a c Sign x
a c Sign x
( (
1 1
) ( ,
) ( ,
) ( ,
) (
2 12 1 11 2 20 0 00 0
10 1
2 10 1
2 11 2
1 12 1
2 00 2
0 20 0
y c y c x c x c D B c D A c x
b c Sign y
b c Sign y
a c Sign x
a c Sign x
( (
1 1
) ( ,
) ( ,
) ( ,
) (
2 12 0 10 2 21 0 01 1
11 1
2 11 1
2 10 2
1 10 1
2 01 2
0 21 0
y c y c x c x c D B c D A c x
b c Sign y
b c Sign y
a c Sign x
a c Sign x
Trang 31( (
1 1
) ( ,
) ( ,
) ( ,
) (
2 11 0 10 2 22 0 02 2
12 1
2 12 1
1 10 2
0 11 0
2 02 2
0 22 0
y c y c x c x c D B c D A c x
b c Sign y
b c Sign y
a c Sign x
a c Sign x
( (
1 1
) ( ,
) ( ,
) ( ,
) (
2 22 0 21 1 10 0 00 0
20 2
2 20 1
2 21 2
1 22 1
1 00 1
0 10 0
y c y c x c x c D B c D A c x
b c Sign y
b c Sign y
a c Sign x
a c Sign x
( (
1 1
) ( ,
) ( ,
) ( ,
) (
2 22 0 20 1 11 0 01 1
21 2
2 21 1
2 20 2
0 22 0
1 01 1
0 11 0
y c y c x c x c D B c D A c x
b c Sign y
b c Sign y
a c Sign x
a c Sign x
( (
1 1
) ( ,
) ( ,
) ( ,
) (
1 21 0 20 1 12 0 02 2
22 2
2 22 1
1 20 1
0 21 0
1 02 1
0 12 0
y c y c x c x c D B c D A c x
b c Sign y
b c Sign y
a c Sign x
a c Sign x
Bảng 2.2 Tính toán sẵn toạ độ của tiếp điểm trong mọi trường hợp
Như vậy, trong cả hai mức phát hiện va chạm của thuật toán thì ta đều lập sẵn được hai bảng chứa các thông tin của kết quả cần tính toán Do vậy, quá trình phát hiện va chạm được thực hiện nhanh chóng, đặc biệt là ở mức thứ nhất cho phép phát hiện nhanh xem có va chạm nào đang xảy ra hay không Thực nghiệm cho thấy, việc phân chia các mức phát hiện va chạm như trên cải thiện đáng kể hiệu quả
xử lý bởi vì trong một hệ thống thực tại ảo có rất nhiều đối tượng thì không phải lúc nào các đối tượng cũng va chạm nhau, thậm chí là số lần va chạm có thể rất thưa
2.2.4 Phát hiện va chạm khi các đối tượng di chuyển
Giả sử hai đối tượng (mà ta coi như là các hình hộp) C0 và C1 chuyển động với gia tốc khác nhau Ta xây dựng một lớp hình hộp chứa các thông tin cần thiết về đối tượng như: toạ độ tâm hình hộp, 3 vector chỉ hướng, độ dài của 3 chiều hình hộp, gia tốc chuyển động, vận tốc chuyển động, trọng lượng hình hộp,…Những thông số này còn được gọi là các thông số trạng thái của đối tượng Khi đó các đối tượng chuyển động với các thông số riêng của nó Giả sử ở thời điểm t0 ta đã có các vector trạng thái của đối tượng, sang thời điểm t1 > t0 vector trạng thái mới của đối tượng có thể được tính toán bằng các phương pháp lấy tích phân số gần đúng [5]
Có hai phương pháp tính tích phân số hay được dùng đó là phương pháp Euler và
Runge–Kutta Fourth 4 Phương pháp Euler đơn giản, sai số lớn và chỉ cho độ chính