Tính toán va chạm sử dụng kỹ thuật hộp bao theo hướng và ứng dụng trong tuyên truyền giao thông

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 mỗi hệ thống đồ hoạ có

những chuyển động riêng của nó, trong khi

chuyển độ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,.

Đối với phƣơng pháp phát hiện va chạm theo

các hộp bao thì ta 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 Boxe -

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 lại cho sai số nhỏ hơn nhiều.

pdf 9 trang kimcuc 13220
Bạn đang xem tài liệu "Tính toán va chạm sử dụng kỹ thuật hộp bao theo hướng và ứng dụng trong tuyên truyền giao thông", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Tính toán va chạm sử dụng kỹ thuật hộp bao theo hướng và ứng dụng trong tuyên truyền giao thông

Tính toán va chạm sử dụng kỹ thuật hộp bao theo hướng và ứng dụng trong tuyên truyền giao thông
Đỗ Năng Toàn và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 120(06): 161 – 169 
161 
TÍNH TOÁN VA CHẠM SỬ DỤNG KỸ THUẬT HỘP BAO THEO HƢỚNG VÀ 
ỨNG DỤNG TRONG TUYÊN TRUYỀN GIAO THÔNG 
Đỗ Năng Toàn1, Nông Minh Ngọc2* 
 1Viện Công nghệ thông tin, 2Đại học Thái Nguyên 
TÓM TẮT 
Va chạm là vấn đề không thể thiếu trong bất kỳ một hệ thống thực tại ảo nào (VR). Do đó, nghiên 
cứu các phƣơng pháp phát hiện va chạm là một mục tiêu hàng đầu mà các hệ thống thực tại ảo 
quan tâm. Bài báo này trình bày một kỹ thuật phát hiện va chạm dựa trên việc tính toán các hộp 
bao theo hƣớng (Oriented Bounding Boxes) và có cải tiến để phát hiện va chạm. 
Kỹ thuật nghiên cứu đã đƣợc áp dụng vào hệ thống “Giúp bạn đi an toàn” - một hệ thống thực tại 
ảo mô phỏng giao thông. Hệ thống có thể trợ giúp con ngƣời biết cách đi nhƣ thế nào để an toàn 
khi tham gia giao thông. 
Từ khóa: Phát hiện va chạm, OBBs, AABB, Thực tại ảo. 
GIỚI THIỆU* 
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 mỗi hệ thống đồ hoạ có 
những chuyển động riêng của nó, trong khi 
chuyển độ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,... 
Đối với phƣơng pháp phát hiện va chạm theo 
các hộp bao thì ta 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 Boxe - 
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 lại cho sai số nhỏ hơn nhiều. 
Bài báo này sẽ trình bày kỹ thuật phát hiện va 
chạm dựa vào các hộp bao OBBs và đƣa ra 
một cải tiến để giảm thời gian xử lý các hộp 
bao. Cuối cùng, chúng tôi đã áp dụng kỹ thuật 
trên vào hệ thống “Giúp bạn đi an toàn khi 
tham 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 nhằm tuyên 
truyền, trợ giúp ngƣời dùng biết cách đi nhƣ thế 
nào để an toàn nhất khi tham gia giao thông. 
*
 Tel: 0968 595888 
KỸ THUẬT HỘP BAO THEO HƢỚNG 
(ORIENTED BOUNDING BOXES) 
Định nghĩa hộp bao theo hƣớng (Oriented 
Bounding Boxes-OBBs) 
Trong phần này, tất cả các vectors đƣợc hiểu 
là trong không gian R
3
. 
Một hình hộp OBB bao gồm một tâm C, ba 
vector 210 ,, AAA
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: 
2
0
.2,1,0,1||*
i
iiii isAasC
 (1) 
Kỹ thuật phát hiện hộp bao theo hƣớng đƣợc 
chia làm hai mức. 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, 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 chạm của các 
hộp bao. 
Định lý: Việc kiểm tra 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: 
- P song song với một mặt nào đó của một 
trong hai khối đa diện. 
- Hoặc là P chứa một cạnh thuộc đa diện thứ 
nhất và một đỉnh thuộc đa diện thứ hai. 
Đỗ Năng Toàn và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 120(06): 161 – 169 
162 
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. 
Phƣơng pháp kiểm tra 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 ( iA
) 
- 3 trục chỉ hƣớng của hộp bao thứ hai ( jB
) 
- 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 ( ji BA
). 
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 = 0C
 + t*V
Trong đó: t là tham số. V
 là iA
 hoặc jB
hoặc ji BA
 với i, j = 0,1,2. 
Gọ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 : 
||
*)(
),( 0
V
VCP
dPhc 
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 thì sẽ thu 
đƣợc 4 cặp đoạn thẳng có độ dài bằng nhau 
nằm về hai phía so với C0 (hình 2), độ dài của 
mỗi đoạn thẳng đƣợc xác định nhƣ sau : 
|
||
*)**(
|),**(
2
0
2
0
0
V
VAas
dAasChc i
iii
i
iii
 (2) 
Hình 2. Chiếu 8 đỉnh của hình hộp lên trục cô lập d 
Nhƣ vậy, khoảng cách nhỏ nhất chứa 8 đoạng 
thẳng (2) sẽ có tâm có tâm là C0 và bán kính 
r0 đƣợc xác định nhƣ sau : 
r0 = max { |
||
*)**(
|
2
0
V
VAas
i
iii
} 
Với mọi |si| = 1. (3) 
Đặt R0 = r0* ||V
, ta có: 
 R0 = max{| a0* VA
*0 + a1* VA
*1 + 
a2* VA
*2 | 
| a0* VA
*0 + a1* VA
*1 - a2* VA
*2 | 
d 
C0 
P 
H 
Hình 1. Hình chiếu của P lên đường thẳng d 
Đỗ Năng Toàn và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 120(06): 161 – 169 
163 
| a0* VA
*0 - a1* VA
*1 + a2* VA
*2 | 
| a0* VA
*0 - a1* VA
*1 - a2* VA
*2 | 
|-a0* VA
*0 + a1* VA
*1 + a2* VA
*2 | 
|-a0* VA
*0 + a1* VA
*1 - a2* VA
*2 | 
|-a0* VA
*0 - a1* VA
*1 + a2* VA
*2 | 
|-a0* VA
*0 - a1* VA
*1 - a2* VA
*2 |} 
= a0*| VA
*0 | + a1*| VA
*1 | + a2*| VA
*2 | 
Tƣơng tự, ta xác định hình chiếu 8 đỉnh của 
hộp bao thứ hai lên d với gốc C0 nhƣ sau. 
|
||
*)**(
|
||
*
),**(
2
0
2
0
1
V
VBbs
V
DV
dBbsChc i
iii
i
iii

 (4) 
Với 01 CCD
Chú ý rằng, 8 đoạn thẳng này đƣợc nhóm 
thành 4 cặp đối xứng nhau qua C1. Do vậy, 
khoảng cách nhỏ nhất chứa 8 đoạng thẳng (4) 
sẽ có tâm là C1 và bán kính R1 đƣợc xác định 
nhƣ sau : 
r1 = max { |
||
*)**(
|
2
0
V
VBbs
i
iii
} Với mọi 
|si| = 1. 
Đặt R1 = r1* ||V
, tƣơng tự nhƣ trên ta suy ra : 
R1 = b0*| VB
*0 | + b1*| VB
*1 | + 
b2*| VB
*2 |. 
Hai khoảng cách trên sẽ không giao nhau nếu: 
C0C1 > r0+r1 ||V
*C0C1 > ||V
*r0 + 
||V
*r1 R > R0 + R1 (5) 
Trong đó: R = C0C1* ||V
. 
Giải cụ thể các phƣơng trình trên. Với mỗi 
vector iB
 ta có thể viết 
thành: 221100 AcAcAcB iiii
 với i = 
0,1,2. 
Đặt : A = (A0, A1, A2) và B= (B0, B1, B2) 
222120
121110
020100
ccc
ccc
ccc
C (6) 
 B = C*A AT*B = C C = 
210
2
1
0
* BBB
A
A
A
=
221202
211101
201000
BABABA
BABABA
BABABA
 (7) 
Từ (6) và (7) suy ra: jiij BAc
* , hay cij 
chính là tích vô hƣớng của hai vector Ai, Bj. 
Mặt khác, từ B = C*A A = CT*B 
221100 BcBcBcA iiii
Nhƣ trong tập các trục cô lập ứng cử viên V
= { iA
, jB
, ji BA
}với i, j = 0,1,2. Để tính 
toán các hệ số R0, R1, R ở trên thì ta sẽ làm 
minh họa cho hai trƣờng hợp V
 = iA
 và V
= ji BA
, các trƣờng hợp còn lại đƣợc tính 
toán tƣơng tự. 
- Xét trƣờng hợp V
 = 0A
: 
+ R0 = a0*| VA
*0 | + a1*| VA
*1 | + 
a2*| VA
*2 | = a0. 
 + R1 = b0*| VB
*0 | + b1*| VB
*1 | + 
b2*| VB
*2 | = b0*|c00| + b1*|c01| + b2*|c02|. 
+ R = 0A
* D

- Xét trƣờng hợp V
 = 00 BA
 : 
+ R0 = a0*| 000 * BAA
| + 
a1*| 001 * BAA
| + a2*| 002 * BAA
| 
Mặt khác : V
 = 00 BA
 = 
)( 2201100000 AcAcAcA
 = 
120210 AcAc
 R0 = a1*|c20| + a2*|c10| 
+ R = V
* D

 = DAcAc
*)( 120210 
C0 
C1 
R1 
R0 
d 
Hình 3. Kết quả chiếu 2 hình hộp lên trục cô lập d 
Đỗ Năng Toàn và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 120(06): 161 – 169 
164 
+ R1 = b0*| VB
*0 | + b1*| VB
*1 | + 
b2*| VB
*2 |. 
Ta có viết lại V
dƣới dạng: 
V
 = 00 BA
 = 
0202101000 )( BBcBcBc
 = -
102201 BcBc
 VB
*0 = )(* 1022010 BcBcB
= 0 
VB
*1 = 
)(* 1022011 BcBcB
= c02 
VB
*2 = )(* 1022012 BcBcB
= -c01 
 R1 = b1*|c02|+ b2*|c01| 
Tiếp tục, ta xây dựng đƣợc bảng các giá trị 
cho R, R0, R1 nhƣ thể hiện tại bảng 1. 
Tính toán điểm va chạm giữa hai OBBs 
Khi có va chạm giữa các OBBs xảy ra, ta sẽ 
thực hiện việc tìm chính xác điểm va chạm. 
Đố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 như sau: 
Mỗi khi ta thực hiện công việc kiểm 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). 
Bảng 1. Các giá trị R, R0, R1 
Đỗ Năng Toàn và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 120(06): 161 – 169 
165 
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, x1, x2} và y = 
{y0, y1, y2} sao cho: 
2
0
2
0
**
j
jj
i
ii ByDAx
 với |xi| ai, |yj| 
 bj và i,j = 0,1,2. (8) 
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. 
V
 là vector iA
:Nhân hai vế của (8) với iA
ta thu đƣợc: 
xi = 
2
0
**
j
jiji BAyDA
= 
Sign( DAi
* )*(R0+R1) + 
2
0
*
j
ijj cy 
Đặt = Sign( DAi
* ) xi = *(R0+R1) + 
2
0
*
j
ijj cy . Thay giá trị các R0, R1 tại bảng 1: 
xi = *(ai + 
2
0
||*
j
jij
cb ) + 
2
0
*
j
ijj cy Nhân 
cả hai vế với ta đƣợc. 
 (ai- *xi) +
2
0
||*
j
jij
cb + 
2
0
*
j
ijj cy = 0 
(ai- *xi) 
+ )*)(**(||
2
0
jij
j
jij ycSignbc = 0 (9) 
Ta thấy: (ai- *xi) 0 và 
)*)(*( jijj ycSignb 0 
0*)(*
0*
jijj
i
ycSignb
xia
Nếu cij 0 
.2,1,0*)(*
*
jbjcSigny
ax
ijj
ii
Nếu cij = 0 (ứng với trƣờng hợp cạnh va chạm 
mặt, mặt va chạm mặt). Khi đó, nhân hai vế 
của (8) với jB
 ta đƣợc: 
yj = -
2
0
**
k
kjkj cxDB
Mặt khác, vì |yj| bj nên ta có: 
Do vậy, ta chỉ cần chọn một giá trị yj thuộc 
đoạn trên. 
V
 là vector iB
:Tƣơng tự nhƣ trƣờng hợp 
trên, ta tính đƣợc. 
Nếu cji 0 
.2,1,0*)(*
*
jacSignx
by
jjij
ii
Nếu cji = 0, nhân hai vế của (6) với iA

ta có: 
Tƣơng tự nhƣ trên, ta có: 
Khi đó, chọn xj thuộc đoạn sau làm điểm tiếp 
xúc: 
V
 là vector ji BA
 
: Để dễ trình bày, 
chúng ta sẽ làm minh hoạ cho một trƣờng 
hợpV
 = 00 BA
 
 = 120210 AcAc
 = 
102201 BcBc
, các trƣờng hợp khác sẽ 
đƣợc tính tƣơng tự. 
Nhân hai vế (8) với 00 BA
 
 ta đƣợc: 
x2*c10 - x1*c20 = DBA
*)( 00 + 
)(** 102201
2
0
BcBcBy
j
jj
 x2*c10 - x1*c20 = DBA
*)( 00 + y1*c02 - 
y2*c01 (10) 
Chú ý rằng, theo hàng 7 trong bảng 1 thì: 
||*||*||*||*
|*)(|||
012021102201
1000
cbcbcaca
RRDBAR
Đỗ Năng Toàn và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 120(06): 161 – 169 
166 
} ||*||*||*||
*{*)*)((
01202110220
100
cbcbcac
aDBASignR
Đặt )*)(( 00 DBASign
, ta có (10) 
tƣơng đƣơng với : 
x2*c10 - x1*c20 = 
*(
||*||*||*||* 012021102201 cbcbcaca ) 
+ y1*c02 - y2*c01 
 |c20|*(a1+ *Sign(c20)*x1)+|c10|*(a2-
*Sign(c10)*x2) 
+ |c01|*(b2- *Sign(c01)*y2)+ 
|c02|*(b1+ *Sign(c02)*y1) = 0 (11) 
Nhận thấy: 
Từ (11) suy ra: 
Để tìm x0 và y0, nhân 2 vế của (6) với 0A
 và 
0B
: 
00220110000
020210100000
****
****
yDBxcxcxc
ycycycDAx
Giải hệ phƣơng trình trên, cùng với các hệ số 
y1, y2, x1, x2 ở trên 
2201102021
010000
2
00
0
2021012201
100000
2
00
0
**)**
*(**
1
1
**)**
*(**
1
1
xcxcycy
cDAcDB
c
y
ycycxcx
cDBcDA
c
x
Đối với các trƣờng hợp V
 ={ 10 BA
 
, 
20 BA
 
, 01 BA
 
, 
11 BA
 
, 
21 BA
 
, 
02 BA
 
, 
12 BA
 
, 
22 BA
 
} cũng tính 
toán tƣơng tự nhƣ trên để tìm điểm tiếp xú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 (bảng 2). 
Nhƣ vậy, quá trình phát hiện va chạm đƣợc 
thực hiện nhanh chóng, ở mức thứ nhất cho 
phép phát hiện nhanh các va chạm. Việc phân 
chia các mức phát hiện va chạm nhƣ trên là 
rất hợp lý, dựa trên nhận xét là trong một hệ 
thống đồ hoạ 3D 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. 
Kỹ thuật phát hiện va chạm với các 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. 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 xác tốt khi t = t1 - t0 
lớn, ngƣợc lại khi t bé thì phƣơng pháp 
Runge–Kutta Fourth 4 lại cho độ chính xác 
cao hơn. Sau đây chúng tôi sẽ trình bày 
phƣơng pháp lấy tích phân số Runge–Kutta 
Fourth 4, là phƣơng pháp mà đã đƣợc sử 
dụng trong ứng dụng của chúng tôi. 
x1 = - *Sign(c20)*a1 
x2 = *Sign(c10)*a2 
y1 = - *Sign(c02)*b1 
y2 = *Sign(c01)*b2 
a1+ *Sign(c20)*x1 0 
a2- *Sign(c10)*x2 0 
b2- *Sign(c01)*y2 0 
b1+ *Sign(c02)*y1 0 
a1+ *Sign(c20)*x1 = 0 
a2- *Sign(c10)*x2 = 0 
b2- *Sign(c01)*y2 = 0 
b1+ *Sign(c02)*y1 = 0 
Đỗ Năng Toàn và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 120(06): 161 – 169 
167 
Bảng 2. Toạ độ của tiếp điểm trong các trường hợp 
Gọi Sn là vector trạng thái của đối tƣợng ở 
thời điểm tn, để tính vector trạng thái Sn+1 ở 
thời điểm tiếp theo tn+1 bằng phƣơng pháp 
Runge–Kutta Fourth 4 nhƣ sau: 
Đặt h = tn+1 - tn. 
Gọi F(Sn, tn) là đạo hàm của Sn ở thời điểm tn 
Tính A1 = F(Sn, tn) 
Tính A2 = F(Sn + h*A1/2, tn + h/2) 
Tính A3 = F(Sn + h*A2/2, tn + h/2) 
Tính A4 = F(Sn + h*A3, tn+ h/2) 
Khi đó: 
)*2*2(*
6
43211 AAAA
h
SS nn 
Nhƣ vậy, sau khi tính toán đƣợc vector trạng 
thái mới cho đối tƣợng, chúng ta sẽ cập nhật 
đƣợc vị trí và hƣớng ở thời điểm mới. Sau đó 
sẽ làm lại thủ tục phát hiện va chạm cho các 
đối tƣợng ở thời điểm mới này với các hộp 
bao mới cập nhật. 
ỨNG DỤNG VÀO BÀI TOÁN AN TOÀN 
GIAO THÔNG. 
An toàn giao thông là vấn cấp thiết của mỗi 
quốc gia, đặc biệt trong điều kiện Việt Nam 
với hệ thống giao thông còn chƣa hoàn thiện, 
ý thức của ngƣời dân khi tham gia giao thông 
còn yếu kém và bản thân vẫn chƣa có các hệ 
thống giám sát và cảnh báo giao thông hiệu 
quả. Thực tại ảo là một lĩnh vực nghiên cứu 
mới trong công nghệ thông tin và đã tỏ ra 
hiệu quả trên nhiều lĩnh vực. Trong đó, lĩnh 
vực liên quan đến an toàn giao thông là một 
ví dụ. 
Viện CNTT đã và đang nghiên cứu về thực tại 
ảo và các ứng dụng của nó. Việc ứng dụng 
công nghệ thực tại ảo vào an toàn giao thông 
Đỗ Năng Toàn và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 120(06): 161 – 169 
168 
là một trong những hƣớng nghiên cứu trọng 
điểm. Một trong những phƣơng pháp hữu 
hiệu để làm giảm thiểu tai nạn giao thông đó 
là tuyên truyền, phổ biến và cảnh báo hậu quả 
của tai nạn giao thông đến cho mỗi ngƣời để 
nâng cao ý thức chấp hành luật lệ giao thông. 
Do đó, việc nghiên cứu các kỹ thuật va chạm 
trong các hệ thống thực tại ảo nhằm ứng dụng 
vào mô phỏng các tình huống giao thông 
thƣờng nhật để tuyên truyền, trợ giúp ngƣời 
tham gia giao thông biết cách đi nhƣ thế nào 
để an toàn nhất. 
Tại Việt Nam, việc tuyên truyền về an toàn 
giao thông đã đƣợc quan tâm thông qua các 
chƣơng trình truyền hình: “Tôi yêu Việt 
Nam”, “Dạy và học luật giao thông” Tuy 
nhiên, những chƣơng trình này có nhƣợc 
điểm cố hữu đó là chúng đƣợc xây dựng bởi 
những diễn viên thật cho nên nhiều khi ngƣời 
xem thấy nó “không thật” bởi các lý do an 
toàn khi đóng phim. Do vậy, hiệu quả tuyên 
truyền không cao. 
Sử dụng công nghệ thực tại ảo kết hợp với 
các kết quả nghiên cứu va chạm ở trên, chúng 
tôi xây dựng hệ thống “Giúp bạn đi an toàn 
khi tham gia giao thông” để mô phỏng các 
tính huống giao thông thƣờng xảy ra trong 
thực tế. Mỗi tính huống sẽ dạy cho bạn biết 
cách đi nhƣ thế nào để an toàn nhất khi bạn 
gặp tình huống tƣơng tự 
Hiện tại, chúng tôi đã xây dựng đƣợc một tình 
huống đó là “Đỗ đúng phần đường quy định”, 
một tình huống mà theo các báo cáo về tai 
nạn giao thông là thƣờng xảy ra nhất. 
Một số cảnh của tình huống này đƣợc demo 
bên dƣới. 
Hình 4. Các phương tiện giao thông Hình 5. Chiếc xe máy đỗ sai làn đường 
Hình 6. Một chiếc xe tô không kịp phanh đã đâm 
vào xe máy đỗ sai đường đó 
Hình 7. Mở rộng mô phỏng với phương tiện ôtô 
tham gia giao thông 
Đỗ Năng Toàn và Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ 120(06): 161 – 169 
169 
KẾT LUẬN 
Va chạm là vấn đề không thể thiếu trong bất 
kỳ một hệ thống thực tại ảo nào. Do vậy, đã 
có rất nhiều kết quả nghiên cứu về vấn đề này 
và hầu nhƣ các nghiên cứu đó đều tập trung 
vào các phƣơng pháp phát hiện gần đúng va 
chạm dựa vào các hình bao. Bài báo này trình 
bày một kỹ thuật phát hiện va chạm dựa trên 
việc tính toán các hộp bao theo hƣớng 
(Oriented Bounding Boxes -OBBs). Việc áp 
dụng kỹ thuật phát hiện va chạm dựa vào các 
hộp bao OBBs vào hệ thống “Giúp bạn đi an 
toàn khi tham gia giao thông” cho thấy kỹ 
thuật này đảm bảo các yêu cầu về tốc độ (tính 
thời gian thực) và đặc biệt là độ chính xác. 
TÀI LIỆU THAM KHẢO 
1. David Eberly, “Dynamic Collision Detection 
using Oriented Bounding Boxes”, Geometric 
Tools, Inc, 1999. 
2. Devid Eberly, “Dynamic Collision Detection 
using Oriented Bounding Boxes”, 
 ,1999 
3. Eugene Laptev, “Collision Detection - Fastcar”, 
Oxford Dynamics”, www.oxforddynamics.co.uk, 
2002. 
4. Diego Ruspini, Oussama Khatib, “A Framework 
for Multi-Contact Multi-Body Dynamic Simulation 
and Haptic Display”, Proceedings of the 2000 
IEEE/RSj International Conference on Intelligent 
Robots and Systems, 2000. 
5. Nick Bobic,”Advanced Collision Detection 
Techniques”,  2000. 
6. Russell Smith, “Open Dynamics Engine”, 
 2006. 
7. WANG Xiao-rong, WANG Meng, Li Chun-gui, 
“Research on Collision Detection Algorithm Based 
on AABB”, 2009 Fifth International Conference on 
Natural Computation, pp 422-424, 2009. 
8. Hu Songhua, Yu Lizhen, “Optimization of 
Collision Detection Algorithm based on OBB”, 
International Conference on Measuring 
Technology and Mechatronics Automation, 
pp853-855, 2010.
SUMMARY 
THE COLLISION CALCULATION BASED ON OBBS TECHNIQUE APPLIED 
FOR A VIRTUAL REALITY SYSTEM SIMULATED TRAFFIC 
Do Nang Toan, Nong Minh Ngoc
*
Institute of Information Technology, Thai Nguyen University 
Collision is an indispensable issue in any virtual reality (VR) system. Therefore, the research on 
collision detection is a top target that the virtual reality system to pays attention. This paper 
presents a collision detection technique based on the calculation of the oriented bounding box 
(OBB) and the improvement of it for collision detection. 
Its result has been applied to our system is "Helping you in safety traffic" - a virtual reality system 
simulated traffic. It can be helps human been know how to safely in traffic.. 
Keywords: Collision Detection, OBBs, AABB, VR 
Ngày nhận bài:08/5/2014; Ngày phản biện:20/5/2014; Ngày duyệt đăng: 09/6/2014 
Phản biện khoa học: TS. Vũ Vinh Quang – Trường Đại học Công nghệ Thông tin & Truyền thông - ĐHTN
*
 Tel: 0968 595888 

File đính kèm:

  • pdftinh_toan_va_cham_su_dung_ky_thuat_hop_bao_theo_huong_va_ung.pdf