LỜI CAM ĐOAN
Tôi xin cam đoan toàn bộ nội dung bản luận văn này là do tôi tự sưu tầm, tra cứu và sắp xếp cho phù hợp với nội dung yêu cầu của đề tài.
Nội dung luận văn chưa từng được công bồ hay xuất bản đưới bat kỳ hình thức nao và cũng không được sao chép từ bat kỳ một công trình nghiên cứu nào.
Tất cả mã nguồn của chương trình đều do tôi tự thiết kế và xây dựng, trong đó có sử dụng một số thư viện chuẩn và các thuật toán được các tác giả xuất bản công
khai và miễn phí trên mạng Internet.
Nêu sai tôi xin hoàn toàn chịu trách nhiệm.
Hà Nội, ngày 05 thang 12 năm 2015
Người cam đoan
Bùi Quang Sum
Trang 2LOI CAM ON
Dé hoàn thành được luận van này tôi đã nhận được rất nhiều sự động viên,
giúp đỡ của nhiều cá nhân và tập thể.
Trước hết, tôi xin bày tỏ lòng biết ơn sâu sắc đến PGS TS Đỗ Năng Toàn — Phó Viện trưởng Viện Công nghệ thông tin, Đại học Quốc Gia Hà Nội đã tận tình hướng dẫn và giúp đỡ tôi trong quá trình làm luận văn tốt nghiệp.
Xin cùng bày tỏ lòng biết ơn chân thành tới các quý thầy, cô trong khoa Công nghệ thông tin — Học viện Công nghệ Bưu chính Viễn thông đã truyền đạt cho tôi những kiến thức bồ trợ, vô cùng có ích trong hai năm học vừa qua.
Cũng xin gửi lời cám ơn chân thành tới Ban Giám hiệu, Khoa Quốc tế và Đào tạo sau đại học — Học viện Công nghệ Bưu chính Viễn thông đã tạo điều kiện giúp
đỡ về thời gian, vật chất và tinh thần đề tôi hoàn thành được khóa học của mình.
Cuối cùng, tôi xin gửi lời cam ơn đến gia đình, bạn bè, những người đã luôn
bên tôi, động viên, khuyến khích và chia sẻ với tôi những kinh nghiệm học tập, nghiên cứu trong suốt khóa học.
Hà Nội, ngày 05 tháng 12 năm 2015Học viên
Bùi Quang Sum
Trang 31.1 Khái quát về thực tại ảO -¿- +52 e+EE+EEEEEE2EE2127171211211 2121.211 EEtyee 2
1.1.1 Thế nào là thực tại ẢO -c:25c5c+t2ExteEEttEEEtSEkerkrrtrxrsrkrerrrrrrrrerkree 2
1.1.2 Các đặc tính của thực tại ảO -c c1 kg kkkkkrrrzz 2
1.1.3 Các thành phan Chính trong thuc tai ẢO che, 3 1.1.4 Phân loại các hệ thống TAUC CAL GO SN 4 115 Ứng dụng CUG thựC ÍQÌ ẢO So TH HH key 4 1.1.6 Công cụ phát triển ứng dụng thực tại GO -©-¿©c<+cccccccccrresrerred 5
1.2 Va cham trong thực tại ảO cv HH Hy 5
1.2.1 Khái MiG VA CÌQHHN G0311 811111190311 v kg 1v ng 1 ke 5
1.2.2 Tâm quan trọng cua va chạm và xử lý va chạm trong thực tại ảo 6 CHƯƠNG II: MOT SO VAN DE TRONG XỬ LY VA CHẠM - 7
2.2.2 Xử lý các hiệu ứng méo mó, biến dạng sau khi va chạm - 28 CHƯƠNG III: UNG DUNG MO PHONG VA CHAM GIAO THÔNG 30
3.1 Bài toán đặt ra - - c1 n1 ngư 30
3.2 Phân tích lựa chọn công cụ phát r0 30
Z8 na Ô 30
3.2.2 3D Studio Max (3DS M@X) SG G5 2101111111115 11kg ven vn 31
3.2.3 Unity 38D voeccsscsssssssssssssvssssessssesessssssessssssseessssssvesssssuevessssseessesssesssssuusessseees 31
Trang 5DANH MỤC CÁC KÝ HIỆU, TỪ VIẾT TẮT
3D 3 Dimensions 3 chiéu
AABB Axis-Aligned Bounding Boxes | Hộp bao có các cạnh song song với
trục tọa độ
CAD Computer Aided Design Thiết kế nhờ máy tính CAM Computer Aided Manufacturing | Sản xuất nhờ máy tính
HMD | Head Mounted Display Thiết bị hién thị đội đầu
HW Hardware Phần cứng
I Imagination, Interactive, Tưởng tượng, tương tác, đắm chìm
OBB Oriented Bounding Boxes Hộp bao theo hướng của đối tượng
OpenGL | Open Graphics Library Một tiêu chuẩn kỹ thuật đồ họa
PC Persional Computer Máy tinh cá nhân
SW Software Phan mém
VR Virtual Reality Thuc tai ao
VRML | Virtual Reality Modeling Thực tế ảo mô hình hóa ngôn ngữ
Language
Trang 6MỞ ĐẦU
Hiện nay, công nghệ thông tin có sự phát trién vượt bậc với tốc độ như vũ bão,
sự phát triển nhanh chóng ấy đã đem lại những thành tựu đáng kê cho nhiều lĩnh vực
trong cuộc sống.
Và công nghệ mô phỏng là một trong những thành tựu đó, nó mang lại một
phạm vi ứng dụng rộng lớn hơn và một tương lai rộng mở cho nhiều lĩnh vực Thực tại ảo thực chất là mô phỏng thế giới thực của con người vào máy tính, mà trong đó con người có thể tương tác và cảm nhận như trong thế giới thực.
Van đề va chạm thường là những van dé rất khó dé nghiên cứu trong thực tế như va chạm xe máy, ô tô hoặc có thể là tàu hỏa, tàu thủy, máy bay Những vấn đề
này tuy đã được nghiên cứu thử nghiệm trong thực tế nhưng còn rất nhiều hạn chế vì một số lí do, và còn rất nhiều trường hợp va chạm chúng ta muốn nghiên cứu mà chưa
thể thực hiện được vì chỉ phí quá lớn.
Từ những nhu cầu thiết thực trong cuộc sống và những thành quả đầy hứa hẹn mà thực tại ảo mang lại nên tôi đã chọn đề tài của luận văn là: “Xử lý va chạm trong
thực tại ảo và ứng dụng”.
Dé tài “Xử lý va chạm trong thực tại ảo và ứng dung” sẽ tìm hiểu và trình bay tông quan về va chạm, về các van đề phát hiện va cham trong thực tế và mô phỏng
chúng vào trong máy tính bao gồm: các khái niệm cơ bản liên quan đến va chạm và ứng dụng của nó, các phương pháp phát hiện va chạm giữa các đối tượng Đồng thời
mô phỏng tình huống va chạm giao thông trong thực tế.
Cấu trúc của luận văn gồm: phần mở đầu, phần kết luận và 3 chương với nội
dung cụ thê như sau:
Chương 1: Tổng quan về thực tại ảo và va chạm trong thực tại ảo
Chương 2: Một số vấn đề trong xử lý va chạm
Chương 3: Ứng dụng mô phóng va chạm giao thông
Trang 7CHƯƠNG I: TONG QUAN VE THỰC TẠI AO VA VA
CHAM TRONG THUC TAI AO
1.1 Khái quát về thực tại ảo
1.1.1 Thế nào là thực tại ảo
Thực tại ảo được định nghĩa theo nhiều cách khác nhau, xét trên phương diện
chức năng thì có thể định nghĩa như sau: Thực tại ảo là một môi trường ba chiều được
phát sinh, tổng hợp và điều khiển thông qua máy vi tính nhằm mục đích mô phỏng
lại thế giới thực hoặc một thế giới theo trong tưởng tượng của con người Nó cho phép người dùng thông qua các thiết bị ngoại vi và bộ chuyên đổi tương tác với những sự vật, hành động của thế giới ảo mà như tương tác với các sự kiện, hành động của
thế giới thực.
Qua những phân tích trên, chúng ta có thé thấy định nghĩa 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 giờ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 bao gồm: thị giác, thính giác, xúc giác, khứu giác
và vị giác [3][7].
1.1.2 Các đặc tính của thực tai ao
Một hệ thống thực tại ảo phải có ba đặc tính sau: khả năng đắm chìm
(Immersion), tính tương tac (Interactive) va tính tưởng tượng (Imagination).
Hình 1.1 Ba đặc tính của một hệ thống thực tại ảo a Cảm giác đắm chìm (hnmersion)
Cảm giác đắm chìm: là một hiệu ứng tạo khả năng tập trung sự chú ý cao nhất một cách có chọn lọc vào chính những thông tin từ người sử dụng hệ thống thực tế
Trang 8ảo Người sử dụng cảm thay mình là một phan của thé giới ảo, hòa mình lẫn vào thé
giới đó.
b Tính tương tác (Interactice)
Tinh tương tác: có hai khía cạnh của tính tương tác trong một thế giới ảo: sự du hành bên trong thế giới và động lực học của môi trường Sự du hành là khả năng của người dùng dé di chuyền khắp nơi một cách độc lập, cứ như là đang ở bên trong một môi trường thật Động lực học của môi trường là những quy tắc về cách thức mà
người, vật và mọi thứ tương tác với nhau trong một trật tự dé trao đổi năng lượng
hoặc thông tin.
c Tinh tưởng tượng (Imagination)
Các ứng dụng trong lĩnh vực đời sống do các nhà phát triển thực tai ả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 tưởng tượng (Imagination) của thực tại ảo Vì vậy, có thể coi thực tại ảo
là tông hợp cua ba yêu tô: dam chìm, tương tác, và tưởng tượng.
1.1.3 Cac thành phan chính trong thực tại ảo
HỆ THỐNG MÁY TÍNH ỨNG DỤNG
VR ENGINE APPLICATION
PHAN CUNG HỆ THONG THỰC TAI AO PHAN MEM
HARDWARE VRSYSTEM SOFWARE
Ỳ *MỘ HÌNH NÀY
THIẾT BỊ NHẬP XUẤT ểÀA Soeur CƠ SỞ DỮ LIỆU
vo & DATABASE
Hình 1.2 Các thành phan trong hệ thống thực tại ảo
Một hệ thông thực tại ảo tổng quát bao gồm 5 thành phần [3]: phan mém (SW), phan cứng (HW), mang liên kết, người dùng và các ứng dung.
a Phần cứng
Phần cứng của một hệ thống VR bao gồm:
o Máy tính (PC hay Workstation với cau hình đồ họa mạnh) o Các thiết bị đầu vào (Input devices).
o Các thiết bị đầu ra (Output devices).
Trang 9b Phan mém
Phan mềm luôn là linh hồn của thực tai ảo cũng như đối với bất cứ một hệ thống máy tính hiện đại nào Phần mềm của bat kỳ hệ thống thực tại ảo nào cũng phải
bảo đảm các công dụng chính: tạo hình, mô phỏng và lưu trữ lại trong cơ sở dữ liệu
1.14 Phân loại các hệ thống thực tại ảo
Hệ thống thực tại ảo được phân ra 3 loại chính: hệ thống VR không nhập vai (Non — Immersive), hệ thống VR bán nhập vai (Semi — Immersive) và hệ thống VR nhập vai (Immersive) Một số cách phân loại khác dựa vào mức độ phức tạp hoặc phương thức hoạt động của hệ thống.
1.1.5 Ung dụng của thực tại ảo
a Quân sự
Mô phỏng đã được sử dụng dé dự báo, phân tích và lập kế hoạch cho các cuộc xung đột tiềm năng với độ chính xác mà công nghệ thế hệ trước không thé dat được.
b Y hoc
Việc xây dung các hệ thống giải phẫu giúp giải quyết được van dé khan hiếm
về mau vật cũng như giúp được sinh viên và giảng viên có thé thực hành, tương tác
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.
c Giáo duc
Một số trường đào tạo lái xe của Việt Nam hiện nay cũng đang sử dụng phần mềm mô phỏng tập lái xe ô tô 3D, cung cấp khả năng tương tác của người sử dụng
với môi trường mô phỏng, tạo cho người học lái có được cảm giác như lái xe thật, từ
đó tránh được các rủi ro khi điều khiển phương tiện.
d Thiết kế xây dựng
Khả năng cho phép khách hành tự do tham quan, khảo sát căn nhà của họ trong
tương lai theo nhiều góc độ và vi trí thực sự đem lại hiệu quả trực quan mang tinh
cách mạng trong lĩnh vực mang nhiều đặc điểm nghệ thuật này.
Trang 10e Giải trí
Với sự phát triển của kỹ thuật mô phỏng người ta đã có thé xây dựng các bộ phim hoạt hình 3D, tạo dựng các kỹ xão điện ảnh, các cảnh quay sống động, chân
thật mà giảm bớt được rất nhiều thời gian và chi phí.
1.16 Công cụ phát triển ứng dụng thực tại ảo
a Các phan mềm xây dựng mô hình
Phần quan trọng nhất trong các hệ thống thực tại ảo chính là mô hình, 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
động của đối tượng Hiện nay, có rất nhiều phần mềm tạo mô hình ba chiều như
Maya, 3Ds max, LightWare, b Các công cụ lập trình
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 đồ họa
3D được xây dựng sẵn, miễn phí như DirectX, OpenGL, OpenSG, OpenSceneGraph.
1.2 Va chạm trong thực tại ảo1.2.1 Khái niệm va cham
Va chạm là một hiện tượng thường gặp trong đời sống hàng ngày va trong
khoa học kỹ thuật Nói đến va chạm, đơn giản có nghĩa là khi một vật va vào một vật khác Vậy, va chạm là một sự kiện riêng lẻ trong đó một lực tương đối mạnh tác động
vào từng vật, trong hai hoặc nhiều vật va chạm và trong một thời gian tương đối ngắn.
Ngoài ra, có thê nêu sự rõ ràng giữa các thời gian trước, trong và sau khi va chạm.
a Bién 1 của hệ kề
Trước Đang Sau
Hình 1.3 Sơ đồ động trình bày một hệ có va chạm đang xảy ra
Trang 111.2.2 Tam quan trọng của va cham và xử lý va chạm trong thực tại ảo
Như đã nói ở trên, va chạm là điều không thê tránh khỏi trong cuộc sống hàng ngày Đó có thé là những va chạm nhỏ như: những qua bi a, búa — dinh, cho tới
những va chạm mang tính chất nghiêm trọng như tai nạn giao thông.
Việc nghiên cứu các kỹ thuật va chạm và xử lý hậu va chạm trong các hệ thong thực tại ảo là rat cần thiết nhằm ứng dung dé mô phỏng các tình huống giao thông phục vụ cho mục đích tuyên truyền, trợ giúp người tham gia giao thông ý thức hơn khi tham gia điều khién phương tiện.
Trang 12CHƯƠNG II: MỘT SO VAN ĐÈ TRONG XỬ LÝ VA CHAM 2.1 Phát hiện va chạm
Phát hiện va chạm là một trong những van dé trọng tam của mỗi hệ thông thực
tại ảo 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à xảy ra với những đối tượng nào để có những xử lý sau va chạm phù hợp.
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 dé 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 [14] Đối với phương pháp phát hiện va chạm dựa vào hộp bao ta có hai kỹ thuật phô biến: sử dụng hộp bao có các cạnh song song với trục tọa
độ (Axis-Aligned Bounding Boxes — AABB) và sử dụng hộp bao theo hướng của đối
tượng (Oriented Bounding Boxes — OBB) Việc sử dụng hộp bao AABB được thực
hiện nhanh chóng nhưng cho sai số lớn còn sử dụng hộp bao OBB tuy phức tạp hơn
nhưng cho sai sô nhỏ hơn nhiêu.
2.1.1 Tính toán va chạm
2.1.1.1 Phương pháp dùng bao cầu (Bounding Sphere)
a Tim giao diém gitta mot tia va mat phang
Đề phát hiện va chạm chúng ta sử dụng một thuật toán đơn giản tạm gọi là lần
theo tia (ray tracing) Một tia được xác định bởi một điểm hay còn gọi là gốc và một
vector xác định hướng mà tia đó sẽ đi theo.
Phương trình của một tia có dạng:
PointOnRay = RayStart + t * Raydirection (2.1)
Trong do:
- tlaso thực, t €[0;«)
- PointOnRay: mot điểm thuộc tia
- RayStart: điểm gốc của tia
- Raydirection: hướng của tia
Theo phương trình (2.1) ở trên thì khi t= 0 thì PointOnRay chính là điểm gốc Với các giá trị khác của t thì PointOnRay chạy khắp tia PointOnRay, RayStart,
Trang 13Raydirection là các đại lượng vector trong không gian R3 nhận các giá trị (x,y,z) Tiếp
theo chúng ta sẽ sử dụng tia dé biểu diễn và tính toán sự va chạm của khối cầu với
mặt phang và các khối cầu.
Phương trình mặt phăng biểu diễn thông qua vector có dạng :
XndotX=d (2.2)
Trong đó:
- Xn, X là các vector và d nhận giá trị thực
- Xn là pháp tuyén của mặt phẳng
- X là một điểm thuộc mặt phẳng đang xét
- _ đ là khoảng cách từ gốc của hệ toa độ Oxyz tới mặt phẳng
Theo phương trình (2.2), dé biểu diễn một mặt phăng trong không gian 3D hay Rề ta chỉ cần một điểm nằm trên mặt phẳng đó và một vector pháp tuyến tại điểm đó (Vector pháp tuyến là vector vuông góc với mặt phăng) Dé có thể xác định được
vector pháp tuyến của mặt phang ta chỉ cần xác định được hai vector không song song trong mặt phẳng đó Tích có hướng của hai vector này sẽ tạo thành vector pháp tuyến.
Tổng kết ta có được hai phương trình:
PointOnRay = RayStart + t * Raydirection
Xn dot X=d
Nếu tia giao với đường thăng tai điểm nao đó thì điểm đó thì điểm đó thỏa
mãn cả hai phương trình (2.1) và (2.2) Vậy từ (2.1), (2.2):
Xn dot PointOnRay = d
(Xn dot RayStart) + t * (Xn dot Raydirection) = d
Giải phương trình với an t ta có :
_ d— Xndot RayStart
Xn dot Raydirection
Thay d vào ta được :
_ Xndot PointOnPLANE — Xn dot RayStartXn dot Raydirection
t
Trang 14Cuối cùng:
Xn dot (PointOnPLANE — RayStart)Xn dot Raydirection
Ta nhận thay rang t chính là khoảng cách từ điểm gốc (gốc của tia) cho đến
giao điểm của tia với mặt phăng Do vậy thông qua phương trình vector ta nhận được
t, từ đó có thé tìm thấy giao điểm của tia với mặt phăng b Tim giao điểm giữa hai khối cau
Hình 2.] Hướng di chuyển của hai quả câu
Theo Hình 2.1, hướng chuyên động của hai quả bóng trên (ball; và ball›) thì chắc chắn là hai quả bóng đó sẽ va chạm với nhau Nhưng thực tế thì chưa chắc như vậy là bởi vì ở đây chúng ta quên mat yếu tô thời gian Gọi C là giao điểm của rị với
ra (ở đây chưa nói C là điểm giao của ball; với balla) Nếu xét đến yếu tố thời gian thì
tại thời điểm t¡ quả bóng ball; chuyển động qua điểm C, tại thời điểm ta qua bóng balla chuyển động qua điểm C Ta hoàn toàn có thé cho rằng tị khác tz và như vậy thì ball; không va chạm với ball2 Đó chính là van đề chính ta cần giải quyết.
Các thông số cần thiết dé tính toán giao điểm của hai khối cầu đó là: điểm dau, điểm cuối, thời gian, vận tốc (bao gồm hướng và tốc độ) của khối cầu Đề tính được điểm giao thì thời gian (Time Step) lại được chia thành các khoảng nhỏ hơn và chúng ta sẽ thực hiện việc di chuyên khối cầu trong mỗi khoảng thời gian đó bang cách sử
dụng đại lượng vận tốc và kiểm tra sự giao nhau trong mỗi khoảng thời gian đó Khi có bất cứ giao điểm nào được tìm thấy (cũng có nghĩa là khối cầu này sẽ “xuyên” một phần của nó vào khối cầu khác), chúng ta sẽ lấy vị trí của khối cầu ngay trước
khi khôi câu đó xuyên vào khôi câu khác làm vi trí giao diém.
Trang 15phan 2 qua bóng sẽ "xuyên "
vào nhau tai mọt thời điểm
—~TM nào đó
Hình 2.2 Thời diém hai quả câu sẽ “xuyên ” nhau
Chúng ta hoàn toàn không muốn hai khối cầu xuyên vào nhau như Hình 2.2 Do vậy chúng ta phải lấy vị trí của khối cầu ngay trước khi chúng xuyên vào nhau làm vị trí giao điểm Khoảng chia thời gian (Time Step) càng nhỏ thì độ chính xác
càng cao Vấn đề tiếp theo chúng ta cần phải giải quyết đó là sẽ xảy ra va chạm trong khoảng giữa mỗi khoảng thời gian (Time Step) mà ta xét Time Step chính là mỗi
khoảng thời gian ta thực hiện di chuyên khối cầu từ vị trí hiện tại dọc theo hướng của vector vận tốc.
- Dst = khoảng cách giữa điểm bắt dau và điểm kết thúc
- Dsc = khoảng cách từ điển bắt đầu và điểm xảy ra va chạm
[Điểm va cham] = [Vị trí bắt đầu] + [Vận tốc] * T‹
2.1.1.2 Kỹ thuật phát hiện va chạm dựa vào hộp bao AABB (Axis-AlignedBounding Boxes)
a Đị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 (trục) song song với
các trục tọa độ tương ứng và bao quanh lấy vật thê.
Trang 16Hình 2.3 Hộp bao AABB của đối tượng
Một hộp bao AABB bao gồm một tâm C và 3 hệ số ao, ai, a2 tương ứng là độ
dài theo ba trục tọa độ của hình hộp.
b Phát hiện va chạm giữa hai hộp bao AABB
Cho hai hộp bao AABB được xác định bởi [Ci, ao, a1, a2] và [C2, bọ, bị, ba] với
giả sử ai > 0, bị > 0, i,j = 0,1,2 Đề kiểm tra va chạm, ta cần xác định tọa độ cao nhất
và thấp nhất của mỗi hộp bao Ký hiệu (Xmint, Ymint, Zmint) VỀ (Xmaxi, Ymaxi, Zmaxi) lần
lượt là tọa độ thấp nhất và cao nhất của hộp bao thứ nhất (tâm là C¡).
Tương tự ta tính được (Xmin2, Ymin2, Zmin2) Va (Xmax2, Ymax2, Zmax2) lần lượt là tọa độ thấp nhất và cao nhất của hộp bao có tâm Ca Hai hộp bao AABB có tâm C¡ và Co được gọi là va chạm với nhau nếu thỏa mãn một trong bốn điều kiện sau:
VY (Xminl, Ymint, Zmint) € [(Xmin2, Ymin2, Zmin2), (Xmax2, Vmax2; Zmax2)]Y (Xmaxi, Ymaxl, Zmaxt) € [(Xmin2, Ymin2, Zmin2), (Xmax2, Ymax2, Zmax2)]
Y (Xmin2, Ymin2, Zmin2) € [(Xmin2, Ymin2, Zmin2), (Xmax2; Ymax2, Zmax2)]v (Xmax2, Ymax2, Zmax2) = [(Xmin2, Ymin2, Zmin2), (Xmax2, Ymax2, Zmax2) |
Trang 172.1.1.3 Kỹ thuật hộp bao theo hướng OBB (Oriented Bounding Boxes)
a Định nghĩa hộp bao OBB
OBB thực chất là hộp bao AABB nhưng trục có hướng bắt kỳ Hộp bao OBB đã khắc phục được nhược điểm của hộp bao AABB đó là giảm không gian trống giữa
Một hình hộp OBB bao gồm một tâm C, ba vector A,,A,,A,chi hướng của
hình hộp và 3 hệ số ao > 0, ai > 0, a2 > 0 tương ứng với kích thước của hình hộp.
Khi đó, § đỉnh của hình hộp sẽ được xác định như sau:
2 >
C+> s,a, * Ai Is;|=1.¡= 0.1.2
Kỹ thuật phát hiện hộp bao theo hướng được chia làm hai mức [9][ 17] Ở mức một, là kiểm tra nhanh xem có va chạm nào xảy ra hay không Nếu không thì hệ thống vẫn làm việc bình thường, ngược lại nếu hệ thống phát hiện ra 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 vị trí va chạm.
b Kiểm tra nhanh va chạm giữa hai hộp bao OBBs
Cho hai hình bao OBB xác định bởi các thông số sau: OBB đầu tiên có tâm
Cụ, các trục A,,A,,A, và các khoảng ao, ai, a2 OBB thứ hai có tâm C,, các trụcB,,B,,B, và các khoảng bo, bị, bạ Ta thấy rang hai OBB tiếp xúc nhau (không cắt
nhau) chỉ có thể là một trong 6 trường hợp sau: 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 các trục cô lập tối đa là 15 trục
Trang 18sau: 3 trục chỉ hướng của hộp bao thứ nhất (A, ), 3 trục chi hướng cua hộp bao thứ
hai (B ;) và 9 trục tạo bởi tích có hướng của một trục thuộc hộp bao thứ nhất và một
trục thuộc hộp bao thứ hai (A, ® B,).
Gọi trục cô lập có vector chỉ phương V và đi qua tâm Co của hộp bao thứ nhất,
nó có phương trình như sau: d= C, + t*V Trong đó t là tham số, V là một trong các
thành phần A,,B, hoặc A, ®B, với i,j = 0,1,2 Gọi P là một điểm bat kỳ, hình chiếu của P lên đường thăng d theo gốc C, là đoạn thắng CoH xác định như sau (Hình
Hình 2.5 Hình chiếu của điểm P lên đường thắng d
Nhu 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 Co thì sẽ thu được 4 cặp đoạn thang có độ dai băng nhau năm về hai phía so với Cọ (Hình 2.6), độ dài của mỗi đoạn thắng được xác định như sau:
Trang 19Như vậy, khoảng cách nhỏ nhất chứa 8 đoạn thăng (2.3) sẽ có tâm là Co và
bán kính ro được xác định như sau:
Tuong tu, ta xac dinh hinh chiếu 8 đỉnh của hộp bao thứ 2 lên trục cô lập d với
gôc C¡ như sau:
8 đoạn thang này được nhóm thành 4 cặp đối xứng nhau qua C¡ Do vậy,
khoảng cách nhỏ nhất chứa 8 đoạn thắng (2.4) sẽ có tâm là C¡ và bán kính R¡ được
Hai khoảng cách trên sẽ không giao nhau nếu:
CọCi >ro+ri oO IV| * CoCi > |V| # mo + |V| # rị & R>Ro+Ri (2.5)
Trong đó: R = CoCi * ll
Trang 20Hình 2.7 Kết quả chiếu hai hình hộp lên trục cô lập d
Ta có bảng các giá tri cho R, Ro, Ri như sau:
A, ®B, al 6;;| +a2|C¡; bọ Cại| + bilcos C)-A,.D —c,,.A,.D
A, @B, 0 |Cy| + 82|Coo bife,,| + bz|c,, Cy9-Ay-D — Cy-Ay-D
A, ® B, ag|c,,| + a2|co,| bo|c,z| + b2|c, C51-Ay-D — cạ,.Ä,.D
A, @B, ao cạ;| + A2lCo; bolc| + bile; C2; Ay Dc, A, D
A, ®B, 40|C19| 31|Coo bilc;;| + be cại| Co9-Aj-D — cịo.Âu.D
A, ® B, 40|C¡¡| + alco, bolc;;| + ba C9| Cọi Ay D- CA, D
A, ®B, a0|c¡z| + 8I|£o; bole;,| + bilc›s| cạ;.Ai.D— €,-Ap-D
Bảng 2.1 Bảng các giá trị R, Ro, va Ri được tinh toán trước