Xem mẫu

Vũ Đức Thái và Đtg

Tạp chí KHOA HỌC & CÔNG NGHỆ

189(13): 9 - 14

KỸ THUẬT LOD TỰ ĐỘNG ÁP DỤNG TỐI ƯU HÓA MÔ HÌNH 3D
TRONG TRƯNG BÀY BẢO TÀNG ẢO
Vũ Đức Thái*, Mã Văn Thu, Lê Sơn Thái, Đỗ Thị Chi
Trường Đại học Công nghệ thông tin và Truyền thông – ĐH Thái Nguyên

TÓM TẮT
Thực tại ảo và thực tại ảo tăng cường đang là công nghệ được áp dụng nhiều trong các bài toán về
mô phỏng thế giới thực. Một trong những ứng dụng là mô hình hóa trình diễn các hiện vật từ thực
tiễn thậm chí khôi phục từ tư liệu khảo cứu để đưa vào trưng bày trong bảo tàng ảo. Vấn đề chính
khi ứng dụng xây dựng bảo tàng ảo là các mô hình 3D cần được thể hiện tỉ mỉ, chi tiết đảm bảo
giống với vật khi quan sát trong không gian thế giới thực. Ta biết, mỗi hình ảnh 3D cần rất nhiều
hình 2D với các hướng nhìn, góc và vị trí quan sát. Điều này có nghĩa là khi có nhiều hiện vật cần
mô phỏng thì sẽ cần dung lượng lớn để lưu trữ và máy tính cần thực hiện nhiều các phép tính toán
trong quá trình biểu diễn hình ảnh với mỗi hiện vật ảo. Để giải quyết vấn đề này, chúng tôi đã
nghiên cứu sử dụng kỹ thuật LOD tự động để cài đặt ứng dụng trong phần mềm trưng bày ảo tại
Bảo tảng Văn hóa các dân tộc Việt Nam tại thành phố Thái Nguyên. LOD là kỹ thuật hỗ trợ xác
định độ chi tiết về hình ảnh của đối tượng ba chiều phụ thuộc vào khoảng cách từ vị trí của vật tới
vị trí người quan sát. Qua đó giảm bớt khối lượng cần tính toán của máy tính trong một đơn vị thời
gian, giúp tăng số lượng và chất lượng hiện vật được trưng bày. Trong nội dung bài báo, chúng tôi
trình bày một kỹ thuật tối ưu lưới cho mô hình 3D. Kỹ thuật này được áp dụng trong thời gian thực
từ đó tạo ra kỹ thuật LOD tự động áp dụng cho bài toán trong trưng bày bảo tàng ảo.
Từ khóa: tối ưu hóa lưới, tối ưu hóa tam giác, tối ưu bề mặt lưới mô hình, lod tự động

MỞ ĐẦU*
Mô hình 3D hiện đang ngày càng phổ biến và
sử dụng rộng rãi trong các ứng dụng mô
phỏng, thực tại ảo. Ta thấy, với các khoảng
cách khác nhau trong khi quan sát chúng ta sẽ
thấy các độ chi tiết khác nhau của mô hình.
Điều này có nghĩa các mô hình ở gần sẽ rất
chi tiết trong khi các mô hình càng ở xa sẽ
càng mờ. Để tối ưu tính toán chúng ta thường
phải có sẵn các mô hình 3D với các mức độ
chi tiết khác nhau. Khi biểu diễn vật ở mỗi
khoảng cách nhất định chương trình sẽ gọi và
sử dụng mô hình với độ chi tiết tương ứng, kỹ
thuật này trong thực tại ảo gọi là LOD (Level
Of Detail) [4]. Kỹ thuật này đã được F.
Biljecki , H. Ledoux và J. Stoter trình bày để
biểu diễn các mô hình 3D các tòa nhà năm
2016 [3], Như vậy, mỗi mô hình 3D phải thiết
kế lại nhiều lần với độ chi tiết khác nhau.
Điều này dẫn tới thời gian và chi phí tạo ra
mô hình ra tăng và đồng nghĩa với tổng chi
phí cho một hệ thống trưng bày ảo là lớn. Để
giảm chi phí khi xây dựng mô hình cần áp
*

dụng các chiến lược tự động tối ưu mô hình
dựa trên khoảng cách quan sát ngay khi
chương trình đang chạy. Quá trình tối ưu này
gọi là LOD tự động. Trong đó, độ chi tiết của
mô hình được tự động tính toán dựa trên
khoảng cách của nó tới vị trí quan sát.
Có ba phương pháp chính để tạo ra mô hình
3D: Một là sử dụng các phần mềm thiết kế 3D
tạo ra thư viện mô hình (do các nhà thiết tạo
ra). Hai là sử dụng các lệnh trong ngôn ngữ
lập trình để vẽ ra các mô hình. Ba là sử dụng
các thiết bị máy quét 3D tạo mô hình từ vật
thể thực. Phương pháp dùng lệnh rất vất vả
tốn kém và hầu như không còn được sử dụng
nữa. Phương pháp sử dụng các thiết bị phần
cứng là máy quét để tạo mô hình 3D mang
nhiều ưu điểm như thời gian tạo ra một mô
hình ngắn, độ chính xác cao, tính ổn định, chi
phí rẻ v.v.. Tuy nhiên, mô hình tạo ra từ máy
quét có một nhược điểm chính là số lượng
lưới lớn. Do đó, trên thực tế đa phần các
chương trình mô phỏng thực tại ảo thường sử
dụng các mô hình sinh ra từ phần mềm thiết
kế 3D.

Tel: 0985 158998, Email: vdthai@ictu.edu.vn

9

Vũ Đức Thái và Đtg

Tạp chí KHOA HỌC & CÔNG NGHỆ

Khi xây dựng ứng dụng, chúng ta cần giải
pháp tiết kiệm các chi phí khi xây dựng mô
hình. Ý tưởng của giải pháp chúng ta chỉ thiết
kế mô hình 3D của đối tượng một lần duy
nhất còn các cấp độ giảm lưới sẽ tự động tạo
ra mô hình mới tương ứng.
Đầu tiên, ta phải xây dựng các mô hình hiện
vật 3D ở mức độ chi tiết nhất. Sau đó dựa vào
khoảng cách từ mắt người tham quan ảo đến
vị trí của hiện vật 3D sẽ tiến hành rút gọn bề
mặt lưới của mô hình đó. Quy luật là khoảng
cách càng xa thì lưới của mô hình đó càng
giảm. Chúng tôi chia độ chi tiết của mô hình
thành bốn mức từ LOD1 tới LOD4. Trong đó,
lưới mức độ một (LOD1) ở trong khoảng cách
gần nhất với mức mô tả chi tiết nhất, và lưới
cấp độ bốn (LOD4) ở khoảng cách xa nhất.
Quá trình chuyển từ LOD1 sang thấp hơn là
quá trình rút gọn lưới của các mô hình trong
cảnh của bảo tàng mà chúng tôi mong muốn
[2]. Số lưới của mô hình cấp độ LOD2 bằng
khoảng 50% số lưới của mô hình cấp độ
LOD1, tương tự ta quy định số lưới LOD3
bằng khoảng 25% số lưới LOD1, và số lưới
LOD4 bằng khoảng 12,5% số lưới LOD1.
Với việc giảm lưới này thì các mô hình sẽ bị
biến dạng và đôi khi sẽ không còn là chính
mô hình đó mà biến thành một mô hình khác
và điều này không chấp nhận được. Do đó,
chúng ta cần một thuật toán rút gọn lưới hợp
lý sao cho khi chúng ta giảm lưới ở các cấp
độ khác nhau thì việc mô hình bị biến dạng là
thấp nhất. Trong các phần tiếp theo của bài
báo chúng tôi trình bày kỹ thuật tối ưu lưới và
kết quả sau quá trình cài đặt ứng dụng trong
bài toàn trưng bày ảo.

Hình 1. So sánh hình ảnh rút gọn bề mặt lưới

PHƯƠNG PHÁP TỐI ƯU LƯỚI MÔ HÌNH
10

189(13): 9 - 14

Tối ưu lưới mô hình 3D là rút gọn số lượng
đa giác của lưới trên mô hình, giải pháp đưa
ra là xóa bỏ một đỉnh và phục hồi bề mặt mô
hình. Ba toán tử chính để loại bỏ điểm là:
vertex removal (xóa điểm), edge collapse
(gộp hai điểm trên cạnh thành một điểm), half
edge collapse (gộp hai điểm thành một điểm,
trong đó một điểm sẽ được giữ nguyên vị trí
như ban đầu).Thứ tự xóa điểm dựa trên một
số hàm ưu tiên [4][6], quy trình cho việc tối
ưu hóa bề mặt lưới tam giác như sau:
Repeat
{
Chọn đối tượng 3D;
Xóa đỉnh, giảm lưới đối tượng;
Kết xuất đối tượng 3D;
}
Until (mục tiêu tối giản được đáp ứng);
Quy trình loại bỏ đỉnh và phục hồi bề mặt áp
dụng theo thứ tự ưu tiên để loại bỏ điểm ra
khỏi mô hình, sau khi đã xóa điểm xong thì
cần thêm bước phục hồi bề mặt của đối
tượng. Việc xử lý loại bỏ đỉnh dừng khi số
lượng lưới thấp nhất có thể mà bề mặt mô
hình vẫn đảm bảo về hình dáng [4].

Hình 2. Loại bỏ và phục hồi bề mặt

Một phép đo được sử dụng tính các lỗi dự
kiến xảy ra khi áp dụng các toán tử. Phép đo
lỗi gần đúng này được sử dụng để ưu tiên loại
bỏ đỉnh, đánh giá chất lượng của các kết quả.
Đại lượng Error metrics [4] là giá trị thể hiện
sự khác nhau về hình dáng giữa hai mô hình
trước và sau khi rút gọn lưới đa giác. Error
metrics giữa hai mô hình là nhỏ, có nghĩa là
hai mô hình gần giống nhau. Các độ đo khi
tính toán việc giảm lưới gồm: edge length (độ
dài các cạnh kết nối từ điểm đang xét đến các

Vũ Đức Thái và Đtg

Tạp chí KHOA HỌC & CÔNG NGHỆ

189(13): 9 - 14

điểm láng giềng), distance to plane (khoảng
cách từ điểm tới mặt phẳng chứa láng giềng
của nó), curvature (bề mặt cong của các mặt
phẳng chứa điểm), volume (thể tích).

Áp dụng công thức (1), chúng tôi đã thử
nghiệm cho một số mô hình và thấy rõ về mặt
tối ưu lưới. Tuy nhiên, lưới tối ưu còn rất
nhiều lỗi khi chúng ta thực hiện rút gọn lưới
như lưới xóa không đều, một số mặt khi tối
ưu bị biến dạng [2]. Để khắc phục các lỗi
trên, chúng tôi đưa ra một số giả thiết về
trường hợp ngoại lai của các điểm cần tối ưu
trên bề mặt mô hình 3D khi áp dụng theo
phương pháp này và đề xuất thuật toán để giải
quyết bài toán tương ứng các trường hợp.

Hình 3. Rút gọn lưới theo tổng góc curvature

Trường hợp thứ nhất, trong hình 4 nếu điểm
v1 chúng ta có thể xóa mà không ảnh hưởng
đến bề mặt đối tượng.

Khi đó xấp xỉ độ cong bề mặt K tại đỉnh
v0được tính theo công thức (1) [5]:
K=

(1)

Với
: là các góc tại đỉnh v0 sinh ra từ các
cạnh kề nhau cùng kết nối đến đỉnh v0.
Theo công thức trên, với K càng nhỏ thì đỉnh
v0 càng dễ xóa bỏ. Bởi vì với một điểm bất kỳ
nằm trên một mặt phẳng thì tổng các góc
xung quanh nó là 2 = 3600, khi đó K =0.Thì
việc xóa điểm v0 sẽ không hề ảnh hưởng đến
hình dạng của mô hình. Một ngưỡng α được
cho trước để thỏa mãn điều kiện loại bỏ điểm
v0, thuật toán chi tiết:
Khởi tạo:
∀v ∈ V: v.errormetric: = CalcErrorMetric (v);
Sort_Vertexlist ();
Repeat
{
Lấy v0;

Hình 4. Góc tại đỉnh v1 so với v và v2

Những điểm v2 nằm trên đường thẳng, mà
đường thẳng này là giao của hai mặt phẳng
vuông góc với nhau. Ta nhận thấy tổng các
góc xung quanh điểm v2 là 360o và điểm v là
giao của ba mặt phẳng có tổng các góc xung
quanh lớn hơn 360o, nhưng nếu chúng ta xóa
đỉnh v2 và đỉnh v thì mô hình thu được sau khi
tối ưu sẽ bị méo mó. Khi đó công thức (1)
được thay thế bằng công thức (2) [2]:

if (v0.errrormetric
nguon tai.lieu . vn