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.
9 trang |
Chia sẻ: linhmy2pp | Ngày: 22/03/2022 | Lượt xem: 213 | Lượt tải: 0
Bạn đang xem 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ải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Đỗ 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
Các file đính kèm theo tài liệu này:
- tinh_toan_va_cham_su_dung_ky_thuat_hop_bao_theo_huong_va_ung.pdf