Tải bản đầy đủ (.pdf) (183 trang)

GIÁO TRÌNH Kỹ thuật lập trình mô phỏng thế giới thực (Nguyễn Văn Huân Cb)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.33 MB, 183 trang )

Kỹ thuật lập trình mô phỏng thế giới thực

NGUYỄN VĂN HUÂN (Chủ biên)
VŨ ĐỮC THÁI - NGUYỄN VĂN TỚI
NGUYỄN THỊ THANH NHÀN - TRẦN THỊ HỒNG NHÂM

KỸ THUẬT LẬP TRÌNH MÔ
PHỎNG THẾ GIỚI THỰC

Thái Nguyên - 2006


Kỹ thuật lập trình mô phỏng thế giới thực

MỞ ĐẦU
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, 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ác lĩnh vực như: các hệ chuyên gia. các hệ xử lý thời gian thực và
một lĩnh vực khác cũng cần phải nói là Thực tại ảo (Virtual reality).
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 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 tương tác với các sự vật, hiện tượng của thế giới ảo giống như tương tác với các sự
vật, hiện tượng của thế giới thực.
Hiện nay, chúng ta chỉ thấy tin học trong các chương trình quản lý. kế toán, hay
các trang web mà ít thấy tin học có sự phát triển theo chiều sâu, phục vụ các ngành


công nghiệp sản xuất như:tự động hoá điều khiển, khai thác, thăm dò, hàng không,
quân sự...Đặc biệt là trong giáo dục người ta chỉ chú trọng vào việc phát triển các tư
duy tin học thuần tuý, mà không thể đưa ra một mô hình để áp dụng tin học trong nhà
trường. nhằm phát triển tư duy con người một cách toàn diện và có khả năng sáng tạo.
Thực tại ảo đang là một trong những vấn đề thời sự nóng bỏng trên thế giới,
song đối với nước ta lại là một lĩnh vực khá mới mẻ mà chúng ta mới chỉ được nghe
qua hay biết đến qua những ứng dụng của nó trong thực tế của các lĩnh vực như: y
học, hàng không, xây dựng, kiến trúc.
Thực lại ảo, một thế giới thực song lại là ảo, vì một phần của thế giới thực sẽ
được tái tạo trên máy vi tính, trong môi trường không gian ba chiều gắn với các thiết
bị đầu vào, cho phép con người tương tác với môi trường ảo đó. Những tương tác đó
sẽ được chương trình sử lý để đem lại cho con người sự cảm nhận về thay đổi của môi
trường như trong thực tế. Tất cả những điều này diễn ra trong môi trường không gian
ba chiều.
Những ứng dụng, hiệu quả ứng dụng của thực tại ảo là vô cùng lớn. Hãy tưởng
tương một ví dụ đơn giản:chúng ta có thể lái một chiếc máy bay mà không cần có bất
cứ một chiếc máy bay nào. hay thực hiện một ca mổ mà không cần phải sử dụng đến
các đối tượng thực thì hiệu quả mang lại trong nghiên cứu, học tập, sản xuất sẽ như
thế nào…
1


Kỹ thuật lập trình mô phỏng thế giới thực

Cũng như các lĩnh vực khác trong Công nghệ thông tin, Thực tại ảo cũng cần có
một công cụ đó phục vụ cho mục đích của mình.
Các ứng dụng của thực tại ảo thường được xây dựng dựa trên các mô hình thực
tại ảo. Hiện nay trên thế giới có rất nhiều mô hình thực tại ảo khác nhau trong đó
Morfit là một mô hình tương đối gọn nhẹ. nhưng đầy đủ và hiệu quả.
Cuốn giáo trình này sẽ trình bày một cách chi tiết về lý thuyết cũng như các bài

tập ứng dụng và thực hành. giúp cho người học dễ tiếp thu những kiến thức mới.
Nội dung cuốn giáo trình gồm có 3 chương:
Chương 1:Trình bày tổng quan về thực tại ảo
Chương 2:Giới thiệu chung về mô hình xử lý.Mofit
Chương 3: Điều khiển thế giới bằng Morfit
Trong quá trình biên soạn. tác giả đã nhận được các ý kiến rất quý báu. sự giúp
đỡ nhiệt tình của các giáo sư cùng bạn bè đồng nghiệp trong và ngoài khoa.
Tác giả xin cảm ơn PGS - TS Ngô Quốc Tạo, TS Đỗ Năng Toàn, PGS - TS Hàn
Việt Thuận,Ths Phạm biệt Bình đã dành nhiều thời gian đọc kỹ bản thảo và cho nhiều
ý kiến quý báu.
Tác giả cũng bày tỏ lòng biết ơn đối với Ban chủ nhiệm Khoa Công nghệ Thông
tin - Đại học Thái Nguyên, Hội đồng Khoa học - Đào tạo đã tạo mọi điều kiện đê tài
liệu này được ra mắt bạn đọc.

Hà Nội. tháng 10 năm 2006
Các tác giả

2


Kỹ thuật lập trình mô phỏng thế giới thực

CHƯƠNG I
TỔNG QUAN VỀ THỰC TẠI ẢO
1.1 THỰC TẠI ẢO VÀ LỊCH SỬ PHÁT TRIỂN
1.1.1 Khái niệm về thực tại ảo
Có nhiều khái niệm khác nhau về thực tại ảo, song một cách chung nhất chúng ta
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 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 giống như
tương tác với các sự kiện, hành động cua thế giới thực.
Ví dụ : Người sử dụng có thể dịch chuyển một vật trong thế giới ảo, hoặc có thể
cảm nhận được một vật khi chạm vào nó…Trong đó thiết bị ngoại vi sẽ làm nhiệm vụ
chuyên những hoạt động của người sử dụng vào bộ chuyển đổi, sau đó bộ chuyển đổi
sẽ chuyển những tín hiệu này thành các tương tác vào môi trường ảo, đồng thời môi
trường cũng chuyển những tác dụng của nó đến bộ chuyển đổi và bộ chuyển đổi
chuyển đến các thiết bị ngoại vi, sau đó các thiết bị ngoại vi sẽ tác động đến người sử
dụng. Vì vậy, người sử dụng sẽ có khả năng tương tác với môi trường ảo như là tương
tác trong chính môi trường thực.
Ngoài thuật ngữ thực tại ảo (virtual reality) người ta cũng hay đề cập tới thuật
ngữ thế giới ảo (virtual world). Thực chất đây là hai khái niệm tương đồng để chỉ một
không gian ảo mà trong không gian này những người sử dựng có thể tương tác với các
đối tượng của không gian ảo, hoặc những người sử dụng có thể tương tác với nhau
trong không gian đó.
Nói chung, các hệ thống thực tại ảo phải xử lý một 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ó yêu cầu một lượng 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 được nghiên cứu từ khá lâu,
nhưng trong một số năm gần đây thực tại ảo mới có được sự phát triển và ứng dụng
mở rộng đáng kề.
Các thiết bị ngoại vi sử dụng trong lĩnh vực thực tại ảo ngày càng hiện đại và đa
dạng. Một trong những thiết bị phải kể đến là hệ thống HMD (Head-Mounted
Display). Đây là một trong những hệ thống được phát triển đầu tiên để phục vụ trong
lĩnh vực này. Ngày nay, nó vẫn là một hệ thống không thể thiếu được trong lĩnh vực
thực tại ảo. Hệ thống này gồm có hai màn hình gắn trực tiếp vào hai mắt, cho phép bạn
nhìn, cảm nhận thế giới ảo như là không gian trong thế giới thực và một thiết bị rất
nhạy nhằm xác định vị trí góc quay của HMD. Từ đó, hệ thống sẽ tính toán góc nhìn
3



Kỹ thuật lập trình mô phỏng thế giới thực

và vị trí của bạn trong thế giới ảo. Hệ thống HMD được mô tả bởi hình vẽ sau:

Ngoài hệ thống HMD, thiết bị ngoại vi sử dụng trong lĩnh vực thực tại ảo còn có
BOOM và CAVE. BOOM (Binocular Omni-orientation Monitor) và CAVE (Ca ve
Automatic Virtual Environment) là hai hệ thống tương tự như HMD, song chúng có
một vài điểm khác, ví dụ như BOOM không dùng mũ gắn trên đầu mà dùng một cái
cần gắn màn hình vào một đầu có tay cầm ở màn hình. Khi bạn nhìn vào màn hình
dịch chuyến nó, lập tức thiết bị nháy cũng dịch chuyển và theo góc nhìn, vị trí nhìn của
bạn cũng thay đổi ! Hệ thống BOOM được mô tả bởi hình vẽ dưới đây:

Ngày nay, các thiết bị trên đã và đang được phát triển hoàn thiện hơn, đồng thời
trong mỗi ngành ứng dụng người ta đã phát triển các hệ thống thiết bị đặc trưng cho
các ứng dụng đó. Công nghệ mới ngày càng đưa ra nhiều thiết bị hiện đại hơn cho
phép con người tiến gần tới thực tại ảo hơn.Ví dụ như: găng tay dữ liệu (data gloves),
áo dữ liệu v.v…và các thiết bị đầu vào ba chiều như máy quét 3 chiều, máy quay 3
chiều v.v..
Thực tại ảo là một môi trường 3D trên máy vi tính, nó sử dụng một lượng lớn
các thông tin đồ hoạ và các thông tin này luôn luôn biến đổi. Do đó, nó không thể
dùng các phương pháp thông thường đê truy cập bộ nhớ đồ họa (vì tốc độ chậm), mà
phải dùng phương pháp truy cập trực tiếp bộ nhớ và sử dụng bộ tăng tốc đồ hoạ. Vì
vậy, người ta cần một phần mềm cho phép truy cập trực tiếp bộ nhớ và điều khiển bộ
4


Kỹ thuật lập trình mô phỏng thế giới thực


tăng tốc đồ hoạ. Hiện nay một số chuẩn phần mềm được sử dụng nhiều như: Directx,
OpenGL, MiniGL v.v.. Hiện nay thực tại ảo đã được sử. dụng rộng rãi, các ứng dụng
trên mạng của nó ngày càng nhiều nên tổ chức W3C đưa ra một mô hình chuẩn trên
mạng cho thực tại ảo. Đó là mô hình VRML (Virtual Reality Modeling Language).
1.1.2. Lịch sử phát triển của thực tại ảo
Thực tại ảo mặc dù mới được quan tâm nhiều trong một vài năm gần đây, song
nó lại có lịch sử hình thành từ khá lâu. Cách đây khoảng 40 năm, một nhà làm phim có
tên là Morton Heilig (Mỹ) đã đưa ra một ý tưởng là tại sao con người không tận dụng
nốt 72% góc nhìn của khán giả? Anh ta nói " tôi bị kích động, bởi vì không hiểu tại
sao con người chỉ thấy được 28% góc nhìn của khán giả cùng với một ảnh 2D? Tại sao
chúng ta không làm điều này với cùng một ảnh 3D để có thể được 1 00% góc nhìn của
khán giả, kết hợp với âm thanh?". Do không được hỗ trợ về tài chính, Heilig không thể
hoàn thành ước mơ của mình, song anh cũng đã tạo ra được một thiết bị được gọi là
"Scnsorama Simulator". Thiết bị này, tương tự như máy cho trơi ngày nay Sensorama
được kết hợp với chiếu film âm thanh, chuyển động,gió thậm chí cả mùi khiến cho
người ta cảm thấy như trong thế giới thực hơn là chỉ đơn giản là xem. Thiết bị này
được công bố vào khoảng đầu những năm 1960 (Hình l.3).
Thiết bị này sử dụng hình ảnh 3D, thu được từ 3 camera 35mm kết hợp thành
một camera chính gồm một hệ thống âm thanh kết hợp với những cảnh quay 3 chiều
thực sự. Người nhìn có thể ngồi trên xe máy, cảm thấy gió khi chuyển động (gió được
tạo bởi một chiếc quạt). thậm chí họ có thể cảm thấy cả những đoạn đường có ổ gà.
Mặc dù đây còn là một bộ máy đơn giản. thô sơ, song nó đã mở ra nhiều ý tưởng
nghiên cứu mới chưa từng có trên thế giới.
Năm 1966, Ivan Sutherland - một sinh viên tốt nghiệp trường Utah, tiếp tục
nghiên cứu vấn đề mà Heilig đã bỏ dở. Sutherland cho rằng những cảnh quay tương tự
không đáp ứng được yêu cầu thực tế. Anh ta bắt đầu một ý tưởng của bộ tăng tốc đồ
hoạ, một phần quan trọng trong mô phỏng thực tại hiện đại và đã chế tạo được hệ
thống HMD có thể kết nối tới máy tính. Quân đội đã nhanh chóng nhận thấy tiềm năng
của ý tưởng này trong ngành hàng không và ứng dụng vào việc bay mô phỏng. Trong
những năm 70, người ta đã chế tạo được những chiếc mũ có thể thể hiện những hình

ảnh của một chuyến bay. Đồng thời NASA cũng bắt đầu sử đụng công nghệ này cho
các chuyến bay ngoài vũ trụ và cuộc đổ bộ lên mặt trăng sau đó.

5


Kỹ thuật lập trình mô phỏng thế giới thực

Năm 1970, Sutherland tiếp tục phát triển hoàn thiện phần cứng của HMD tại
trường đại học Utah.Thiết bị này nhẹ hơn, thay màn hình trắng đen bằng màn hình
màu... Cũng trong khoảng thời gian này, Myron Kreuger đã phát triển một thiết bị có
tên là VIDEOPLACE. VIDEOPLACE là kết quả của dự án thực tại ảo. Trong
VIDEOPLACE. Myron Kreuger đã sử dụng một màn hình lớn đối diện với người
dùng. Trên màn hình, bóng của người sử dụng được hiển thị. Người sử dụng có thể
dùng ngón tay in lên bầu trời.Hệ thống này cũng có khả năng hiển thị nhiều người sử
dụng trên cùng một màn hình.
Đặc biệt, thực tại ảo được phát triển mạnh mẽ và đã có nhiều thành quả đáng kể
và ứng dụng nhiều trong các ngành, các lĩnh vực khác từ những năm 1990.
1.2. CÁC ỨNG DỤNG CỦA THỰC TẠI ẢO
Những lĩnh vực đang được nghiên cứu ứng đụng thực tại ảo một cách mạnh mẽ
hiện nay là: y học,giáo dục, tin học, thương mại, giao thông, hàng không, xây dựng,
khoa học quân sự,quốc phòng, thiết kế nội thất và trang trí nhà cửa. giải trí, quân sự,
điện ảnh.. Tại sao các lĩnh vực trên lại ứng dụng thực tại ảo và ý nghĩa của việc ứng
dụng nó vào các lĩnh vực đó ra sao, thành quả thực tế đem lại như thế nào, những vấn
đề đó chúng ta sẽ cùng xem xét dưới đây.
Khoa học quân sự, quốc phòng: Đây là lĩnh vực đặt nền móng cho sự nghiên
cứu của thực tại ảo. Hiện nay, những ứng dụng của thực tại ảo trong lĩnh vực này là rất
phong phú, ví dụ như huấn luyện quân lính, thử nghiệm các loại vũ khí, các phương
tiện chiến tranh, bản đồ hoá từng khu vực (hệ thống định vị toàn cầu) v.v..
Các vấn đề môi trường, điều kiện kinh tế, kỹ thuật an toàn về tính mạng con

người là những vấn đề khó khăn hàng đầu trong quân sự của các quốc gia.
6


Kỹ thuật lập trình mô phỏng thế giới thực

Chúng ta đều biết rằng không phải lúc nào cũng có chiến tranh, song khi chiến
tranh xảy ra không phải là lúc chúng ta chuẩn bị lực lượng. Vậy thì lấy đâu ra môi
trường thực tế để rèn luyện. chuẩn bị lực lượng? Trên thực tế, chúng ta có thể tạo ra
được môi trường tập luyện thực sự.
Nhưng vấn đề đặt ra là làm sao tạo ra được môi trường tập luyện như trên thực
tế mà lại không quá tốn kém hay nguy hiểm đến tính năng con người. Người ta đã giải
quyết những vấn đế trên một cách thực sự hiệu quả khi ứng dụng thực tại ảo. Điều này
có thế thấy rõ như ở một số nước có nền quốc phòng mạnh như Mỹ, Nga, Trung Quốc,
người ta đã xây dựng các hệ thống mô phỏng phục vụ cho việc tập luyện của bộ binh,
hay những hệ thống mô phỏng hệ thống an ninh, mô phỏng trận địa.. phục vụ cho việc
nghiên cứu, tập luyện nhằm tìm ra các phương pháp phòng thủ và chiến đấu một cách
hiệu quả.
Khi ứng dụng thực tại ảo vào trong quân sự thì việc sử dụng môi trường đã được
tạo ra theo cách chia sẻ thông tin, hiệu quả kinh tế có nó mang lại thực sự là to lớn,
người ta sẽ giảm được một lượng lớn kinh phí phục vụ cho việc tập luyện, hay thực
hiện được những điều mà trên thực tế khó có thể thực hiện được, hay những vấn đề
trên thực tế phải áp dụng những quy tắc an toàn nghiêm ngặt song vẫn có mối nguy
hiểm lớn đến tính mạng và tải sản của con người ví dụ: trận địa chiến đấu, các mô hình
phòng thủ quốc gia..
Giáo dục và đào tạo: Để có một kết quả học tập cao nhất, chúng ta phải sử
dụng nhiều phương pháp học tập khác nhau, trong đó có phương pháp trực quan. Thực
tế cho thấy, học bằng hình ảnh trực quan thì nhanh hơn bằng các phương pháp khác.
Vì vậy, thực tại ảo đã, đang và sẽ trở thành một công cụ hữu hiệu trong giáo dục, đặc
biệt là với trẻ em. Ngoài ra, nó cũng là một phương tiện giáo dục rất mạnh đối với một

số ngành nghề đòi hỏi phải thực hành. Ví dụ như: huấn luyện phi công, lái xe...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 các phương tiện cho
phép học viên thực hành trên cơ sở thực tại ảo.
Giáo dục luôn là mối quan tâm hàng đầu của mỗi quốc gia. Việc nghiên cứu để
đưa ra phương pháp giáo dục hiệu quả đã khó, song vấn đề khó khăn hơn là làm sao
kích thích được niềm say mê học tập, nghiên cứu của người học và tác động đến tính
tự giác, khả năng tư duy và tưởng tượng của mỗi người học sinh, cung cấp môi trường
học tập, nghiên cứu tốt nhất, nhằm phát huy hết những khả năng của con người.
Cứ theo cách giáo dục truyền thống, nhiều khi chúng ta không thể cung cấp
được môi trường nghiên cứu học tập lý tưởng, không khơi dậy được niềm say mê,
hứng thú học tập và khả năng sáng tạo của người học. Do đó, không thể phát huy được
hết khả năng tưởng tượng và tư duy của con người. Vì vậy, hiệu quả giáo dục không
cao.
Chúng ta đã thấy hiệu quả to lớn của việc áp dụng tin học vào trong giáo dục
7


Kỹ thuật lập trình mô phỏng thế giới thực

trên thế giới cũng như ở Việt Nam. Song, phần lớn các ứng dụng tin học vào giáo dục
mà chúng ta biết mới chỉ là những giáo trình tin học nhằm rèn tư duy tin học cho con
người, chứ những ứng dụng nhằm rèn luyện các khả năng khác của con người còn
chưa thực sự phố biến.
Thực tế đã chứng minh, những chương trình nhằm rèn luyện tư duy nói chung,
rèn luyện khả năng tưởng tượng, cung cấp mô hình thực nghiệm và kích thích trí tò mò
là chưa nhiều hay có thể nói là chưa có hiệu quả. Các chương trình này hầu như chưa
có khả năng phát huy được hết sự cảm nhận của con người trong nhận thức, chưa gây
được ấn tượng sâu sắc của vấn đề cho đối tượng cần truyền đạt, không gây được trí tò
mò, hay niềm đam mê của người học.
Hiện nay, xu hướng mới trong việc ứng dụng tin học trong giáo dục rất được

quan tâm là xây dựng các mô hình thực tại trên máy vi tính nhằm cung cấp các môi
trường học tập và nghiên cứu cho người sử dụng. Những mô hình được xây dựng ở
đây chuyển tải được thực tế của chúng ta vào môi trường mô phỏng, cung cấp khả
năng tương tác của con người với môi trường mô phỏng, có khả năng gây kích thích
cao với người tham gia, cho phép chia sẻ tài nguyên về môi trường qua môi trường
mạng v.v.. Đó chính là mô hình thực tại ảo.
Y học : Đây cũng là lĩnh vực hứa hẹn nhiều triển vọng của thực tại ảo. Hiện nay
trên thế giới, việc ứng dụng thực tại ảo vào y học khá phong phú. Đặc biệt ở Mỹ trong
phẫu thuật bác sĩ đã có thể tiến hành các cuộc phẫu thuật trong môi trường ảo, không
cần có bệnh nhân mà vẫn như đang phẫu thuật một bệ nhân thật. Các bác sĩ cũng có
thể tiến hành các cuộc phẫu thuật từ xa thông qua các thiết bị của thực tại ảo. Thực tại
ảo cũng có các ứng dụng trong lĩnh vực tâm thần. Người ta đã chứng minh, thực tại ảo
có khả năng chữa được các chứng bệnh sợ, ví dụ: sợ bóng tối, sợ nhện, sợ đông người
v.v…Phương pháp sử dụng là: đưa người bệnh vào môi trường thực tại ảo trong đó có
nỗi sợ của họ, đồng thời sẽ có các lời kích thích, hướng dẫn họ, giúp họ dần làm quen
với nỗi sợ của bản thân và từ đó vượt qua được những nỗi sợ hãi trong cuộc sống v.v..
Phương pháp này hiệu quả hơn nhiều so với các phương pháp truyền thống..
Xã hội ngày càng phát triển, vấn đề sức khoẻ con người ngày càng được quan
tâm hơn. Càng ngày, người ta càng cố gắng để tìm ra các phương pháp chữa trị bệnh
cho con người ngày một tốt hơn.
Dưới đây là một số hình ảnh về việc nghiên cứu và ứng dụng tin học trong y học:

8


Kỹ thuật lập trình mô phỏng thế giới thực

Đây là dự án nghiên cứu của châu âu vào tháng 11 năm 1993. Dự án này cho
phép xây dựng lại mô hình cánh tay của con người trong không gian 3D từ những dữ
liệu hình anh trong y học và mô phỏng tất cả những thay đổi có thể có của các bộ phận

như sự co dãn cơ v.v..
Trong dự án này, thực tại ảo làm nhiệm vụ mô phỏng lại cánh tay của con người
và cung cấp các dịch vụ thể hiện sự thay đổi của cánh tay con người khi có sự tương
tác của người sử dụng.
Chúng ta có thể tìm hiểu thêm về dự án này tại trang Web có địa chi :


9


Kỹ thuật lập trình mô phỏng thế giới thực

Đây là dự án nghiên cứu nhằm đưa thực tại ảo vào việc chữa trị bệnh cho con
người.
Bằng cách xây dựng một chương trình cho phép các bác sĩ trên khắp thế giới có
thể cùng tham gia quan sát, thảo luận để đưa ra phương pháp chữa trị hiệu quả nhất.
Trong dự án này, thực tại ảo làm nhiệm vụ kết hợp hình ảnh trong không gian
3D với môi trường truyền thông. Cung cấp môi trường làm việc qua mạng cho những
người cùng hợp tác làm việc trong môi trường mô phỏng nhằm cùng nhau thực hiện
việc điều trị hay nghiên cứu. Các bạn có thể tìm hiểu thêm về vấn đề này theo trang
web có địa chỉ: .
Trong y học, con người còn gặp rất nhiều những vấn đề mà nếu không có thực
tại ảo thì không dễ tìm ra phương pháp giải quyết. Ví dụ như việc cung cấp môi trường
thực hành cho nghiên cứu và học tập, vì môi trường và những mẫu để thực tập và
nghiên cứu trong y học là một trong những vấn đề bức xúc và gặp rất nhiều khó khăn
hiện nay.
Đôi khi vì khả năng của con người, ví dụ như: tầm quan sát của mắt không thế
nhìn thấy được những mạch máu, cấu trúc của một tế bào, hay cấu trúc lược đồ đen
của chúng ta; hoặc nhiều khi không thể thực hiện được việc phẫu thuật, do người bệnh
không có đủ sức khoẻ để thực hiện ca phẫu thuật lớn.

Những vấn đề trên được giải quyết một cách hiệu quả khi có ứng dụng thực tại
ảo.
Chỉ bằng cách xây dựng các mô hình thực tại ảo cần thiết cho các đối tượng là
chúng ta đã có ngay môi trường quan sát, nghiên cứu thực tập tốt, thậm chí có thể nói
là tốt hơn thực tế Khi có ứng dụng thực tại ảo, những ca phẫu thuật trở nên chính xác
hơn, bệnh nhân mau lành bệnh hơn vì vết mổ nhỏ hơn so với vết phẫu thuật theo cách
phẫu thuật truyền thống. Hơn nữa, khi bệnh nhân được chữa trị bởi đồng thời nhiều
bác sĩ giỏi trên khắp thế giới. thì chắc chắn kết quả mang lại sẽ tốt hơn hơn rất nhiều.
Hiện nay có rất nhiều dự án tập trung vào ác xây dựng các mô hình, mô phỏng
các bộ phận của con người, đồng thời mô phỏng những sự thay đổi cơ bản khi có sự
tương tác, thay đổi, hay sự biến đổi của các bộ phận khi con người hoạt động. Việc
xây dựng các mô hình cho phép thực hiện các ca phẫu thuật giả, chuẩn đoán
bệnh.v.v…
Thiết kế xây dựng: Với sự trợ giúp của thực tại ảo, những thiết kế giờ đây
không chỉ đơn thuần là những thiết kế nữa mà nó đã tiến gần tới sản phẩm thực.
Không những con người có thể xem được hình ảnh trực quan của thiết bị cần thiết kế
mà thậm chí người ta còn có khả năng sử dụng các thiết bị đó. Ví dụ như:Với một cái
ôtô, người sử dụng không những xem được mọi ngóc ngách của nó mà còn có thể thử
lái nó trong môi trường ảo. Với một bản thiết kế xây dựng, không những khách hàng
có thể nhìn thấy các hình ảnh của nó mà còn có thể đi lại xem chi tiết từng phòng, từng
10


Kỹ thuật lập trình mô phỏng thế giới thực

khu vực của kiến trúc đó với mọi góc nhìn có thể.
Trong thiết kế xây dựng hiện nay đã có những chương trình đồ hoạ mạnh nhất
như: AUTOCAD, AUTODEST, 3DMAX, SHAPRE,..Những chương trình này đã
giúp các nhà thiết kế xây dựng giảm được rất nhiều chi phí về thời gian và công sức.
Song, hầu hết các chương trình này vẫn chỉ dừng lại ở mức các bản vẽ chứ chưa thực

sự tạo ra cho người ta cảm giác, hay một cái nhìn về những công trình mà họ thiết kế
ra trên thực tế sẽ như thế nào.
Thực tại ảo tạo cho người ta cảm giác chìm đắm trong một không gian như trên
thực tế.Bằng các hình ảnh được xây dựng trên máy vi tính sẽ giúp con người có thể có
một cái nhìn chi tiết về công trình đã được thiết kế.
Sau đây là một vài hình ảnh về ứng dụng của thực tại ảo trong xây dựng, thiết kế
và trang trí:

Khoa học cơ bản: Nói chung, hầu hết các ngành khoa học đều có thể ứng dụng
thực tại ảo, đặc biệt là các ngành như vật lý, hoá học, khảo cổ, sinh học, vũ trụ. Trong
vật lý, người ta có thể mô phỏng lại chính xác các hiện tượng của vật lý một cách trực
quan. Trong khảo cổ học, thực tại ảo giúp người ta dựng lại các kiến trúc đã bị chôn
vùi, mô phỏng lại các thời kỳ của tự nhiên. Ví dụ như: mô phỏng lại hoạt động của các
loài sinh vật đã bị tuyệt chủng như các bộ phim khoa học về khủng long, về biển v.v...

11


Kỹ thuật lập trình mô phỏng thế giới thực

Thương mại, du lịch: Trong thương mại, đặc biệt là trong ngành quảng cáo,
thực tại ảo đang có một vị trí quan trọng. Nó giúp khách hàng tiếp cận gần hơn với
hàng hoá để có thể đánh giá chất lượng mà không cần có hàng trực tiếp v.v.. Trong du
lịch, với hỗ trợ thực tại ảo khách hàng có thể đến và xem xét cảnh quan của nơi mà họ
sẽ đến để chắc chắn có một chuyến du lịch thú vị.
Trong giải trí: Lý do đầu tiên mà thực tại ảo ra đời là phục vụ cho giải trí.
Thông qua việc mô phỏng các mô hình 3D nhằm cung cấp các dịch vụ phục vụ tương
tác của người trong môi trường ảo. Các hình ảnh tuyệt vời kết hợp với âm thanh nổi,
các thiết bị vào ra làm cho con người ta ở trong môi trường ảo mà như ở trong môi
trường thực. Điều hấp dẫn hơn là trong môi trường đó con người có thể thực hiện

những điều mà trên thực tế họ không thể thực hiện được. Với khả năng kết hợp các
thiết bị vào ra, các hiệu ứng đồ hoạ chỉ có thế thấy được trên máy tính, thực tại ảo
nhanh chóng trở thành một ứng dụng không thể thiếu trong các trò chơi. Những trò
game giải trí 3D có thể làm say đắm con người.
Game thực tại ảo hiện nay đã trở thành một ngành công nghiệp thu được nhiều
lợi nhuận. Ở nước ta hiện nay thì game thực tại ảo chưa được biết tới nhiều song Ở
một số nước phát triển thì đây là một ngành giải trí thu lợi nhuận khổng lồ, ví dụ các
nước Nhật,Mỹ,Anh v.v..
Trong điện ảnh: Điện ảnh là một lĩnh vực đang phát triển rất mạnh. Chắc hẳn ai
trong chúng ta cũng đã từng xem phim và cũng đã từng thưởng thức những cảnh ngoại
mục trong film do các diễn viên trong phim thể hiện. Và chúng ta có thể nghĩ rằng
những điều đó chỉ có thể có trong phim chứ không có trên thực tế. Đúng vậy, những
phim được coi là hay nhất, được ưa chuộng nhất hiện nay là những phim có những
cảnh ngoại mục, hoành tráng.Một vài năm gần đây, những phim đó đã ứng dụng thực
tại ảo và những phương pháp xử lý đồ hoạ mạnh nhằm tạo ra những hiệu ứng, những
cảnh mà trên thực tế không thể thực hiện được.
Trong điện ảnh ngày nay, con người có thể dựng được những thước phim tưởng
chừng như không thể dựng được với các kỹ xảo điện ảnh thông thường, ví dụ
trong một số cảnh của phim "Vua bọ cạp" v.v.. Các phim thực tại ảo ba chiều cũng
được sản xuất và trình chiếu tại các rạp chiếu phim ba chiều. Khi xem các phim này
bạn sẽ có cảm giác như đang sống trong chính bộ phim chứ không phải bạn đang xem
phim.
Trong hàng không vũ trụ: Nguồn vốn đầu tư, thời gian là những vấn đề sống
còn của tất cả các công ty tham gia hoạt động sản xuất kinh doanh. Nhất là những
ngành đòi hỏi phải có nguồn vốn lớn mà thời gian thu hồi vốn lâu và sức cạnh tranh
cao như hàng không vũ trụ. Chúng ta không thể đầu tư một chiếc tầu vũ trụ để phóng
thử nghiệm vào không gian, chúng ta không thể giao một chiếc máy bay cho một phi
công lần đầu tiên bước lên máy bay mà chưa qua huấn luyện, vì chi phí cho mỗi chiếc
12



Kỹ thuật lập trình mô phỏng thế giới thực

máy bay không phải là nhỏ.
Trên thực tế, người ta làm thế nào để giải quyết vấn đề đó? Khi chưa có các ứng
dụng tin học thì người ta buộc tất cả những học viên phải trau dồi lý thuyết thật nhuần
nhuyễn trước khi bước lên máy bay, nhằm giảm thiểu những thiệt hại, song cách giải
quyết này đòi hỏi quá nhiều thời gian và kinh phí đào tạo.
Trong những năm gần đây, khi tin học phát triển thì các ứng dụng của nó vào
lĩnh vực hàng không vũ trụ càng trở lên mạnh mẽ, nhất là trong vấn đề trợ giúp đào tạo
phi công. Người ta đã xây dựng rất nhiều chương trình mô phỏng cho phi công tập
luyện kết hợp với các thiết bị phần cứng để tạo ra một môi trường làm cho con người
tưởng như ở trên một chiếc máy bay thật và mọi thứ diễn ra như ngoài thực tế. Một
chương trình máy tính tạo ra không gian 3D kết hợp với thiết bị phần cứng cho phép
người phi công thực hiện những chuyến bay đến các sân bay đã được xây dựng sẵn với
các tình huống nhằm nâng cao kỹ năng xử lý tình huống như trong thực tế. Và có này,
người ta sẽ giảm thiểu được thời gian, chi phí đào tạo và nâng cao tính an toàn của mỗi
chuyến bay.
Xu hướng ứng dụng của thực tại ảo trong tương lai:
Chúng ta đã thấy được một phần nào những kết quả to lớn của việc ứng dụng
thực tại ảo và chúng ta cũng có thể thấy được một phần nào việc ứng dụng thực tại ảo
trong tương lai. Thực tại ảo sẽ tiếp tục được ứng dụng mạnh mẽ hơn nữa trong một số
lĩnh vực và mở đường cho các ứng dụng tin học vào các lĩnh vực khác. Thực tại ảo sẽ
thâm nhập vào rất nhiều các lĩnh vực cũng như sự có mặt của tin học trong cuộc sống.
Ý nghĩa của việc ứng dụng thực tại ảo:
Những kết quả và ý nghĩa to lớn của việc ứng dụng thực tại ảo trong giai đoạn
hiện nay và trong tương lai đều đã được nhắc tới. Nhưng có một câu hỏi đặt ra là đằng
sau những điều tuyệt vời mà thực tại ảo mạng lại, còn có cái gì làm chúng ta phải quan
tâm? Vấn đề của thực tại ảo là gì? Để trả lời những câu hỏi đó, chúng ta sẽ cùng tìm
hiểu chi tiết trong những phần dưới đây.

Tất cả các ứng dụng thực tại ảo đều liên quan đến việc xây dựng các mô hình mô
phỏng thế giới trên máy vi tính và cung cấp khả năng quan sát và tương tác của các mô
hình với người sử dụng thông qua các thiết bị đầu vào và đầu ra. Như vậy. có thể nói
vấn đề chính của thực tại ảo là phải xây dựng mô hình mô phỏng thế giới thực trên
máy tính theo không gian 3D, cung cấp các dịch vụ tương tác giữa môi trường mô
phỏng với người sử dụng thông qua thiết bị vào ra.
Trong cuốn sách này,tác giả sẽ tập trung vào việc tìm hiểu, nghiên cứu các mô
hình xây dựng các mô hình thực tại ảo trên máy vi tính trong không gian 3D, những
ứng dụng của các mô hình này hiện nay và trong tương lai và xu hướng của các mô
hình xây dựng thực tại ảo.
13


Kỹ thuật lập trình mô phỏng thế giới thực

Hiện nay, việc giải quyết vấn đề xây dựng thực tại ảo trên máy vi tính có thể đề
cập theo các hướng cơ bản sau đây:
Xây dựng mô hình thực tại ảo như một dạng dữ liệu riêng hay file thư viện.
Xây dựng thực mô hình thực tại ảo gắn liền với các tương tác cần thiết cho
người sử dụng: theo cách kẻo thả các mô hình có sẵn.
Xây dựng mô hình thực tại ảo theo cách mô tả dưới dạng các văn bản về các đối
tượng 3D. cung cấp các thư viện, hay sử dụng các thư viện, các chuẩn đồ hoạ, các
chuẩn về mạng có sẵn để viết bộ phân tích và trình duyệt hiển thị các mô tả này như
trình duyệt trang HTML.
1.3. CÁC VẤN ĐỀ GẶP PHẢI TRONG VIỆC PHÁT TRIỂN THỰC TẠI ẢO
1.3.1. Các vấn đề về phần cứng
Hiện nay sau hơn bốn mươi năm phát triển, các thiết bị phục vụ cho thực tại ảo
đã phong phú cả về chất lượng và số lượng. Song nói chung, các thiết bị phục vụ cho
lĩnh vực này còn đắt và khó mua, đồng thời chúng vẫn chưa đạt được tới mức cho
phép người sử dụng ở trong môi trường ảo mà hoàn toàn có cảm giác như họ đang ở

trong môi trường thực. Một vấn đề nữa là mặc dù ngày nay máy tính đã phát triển, tốc
độ tính toán đã gấp hàng nghìn lần so với khi thực tại ảo bắt đầu được nghiên cứu
nhưng thực tại ảo vẫn chưa thể đáp ứng được các công việc mô tả một số lớn các đối
tượng phức tạp. Chúng ta hy vọng, trong tương lai gần các vấn đề về phần cứng sẽ
được giải quyết. Và như vậy, khả năng ứng dụng của thực tại ảo mới có khả năng phổ
dụng với mọi quốc gia và với mọi người.
1.3.2. Các vấn đề về phần mềm và việc thiết kế phần mềm
Hiện nay trên thế giới phần mềm thực tại ảo đã phong phú, song đa phần các
phần mềm này chỉ giải quyết các vấn để chung hoặc riêng cho chính các nhà thiết kế.
đồng thời 1 giá thành các phần mềm này là rất đắt, do đó chúng ta nên chọn giải pháp
xây dựng phần mềm riêng của chính mình.
Công việc làm phần mềm thực tại ảo thực sự là một công việc khó khăn bởi vì
mọi xử lý trong thực tại ảo đều là xử lý của các đối tượng 3D trên môi trường ba chiều
với thời gian thực.
Để thấy rõ sự phức tạp này chúng ta lấy ví dụ đơn giản là thực hiện quay một
điểm bất kỳ trong không gian ba chiều.
Giả sử ta có ba điểm P 1, P2, P3 với các tọa độ điểm tương ứng trong không
gian.
Trục P1P2 được coi như trục quay của điểm P3. Để quay P3 quanh PIP2 một góc
α ta phải tiến hành qua các bước sau:

14


Kỹ thuật lập trình mô phỏng thế giới thực

Chuyển P1 về gốc tọa độ.
Quay quanh trục y sao cho P1P2 nằm trên một mặt phẳng (y,z).
Quay quanh trục x sao cho P1P2 trùng với trục z.
Quay quanh trục z một góc α

Sau đó tiến hành ngược lại các bước này để đưa các điểm P1,P2 về vị trí ban đầu.
Chú ý là tại mỗi bước biến đổi ta đều phải áp dụng các phép biến đổi cho tất cả
ba điểm.
Ta sẽ có các biến đổi sau:
Bước l: Chuyển P1 về gốc tọa độ
Ma trận dịch chuyển có dạng:

Áp dụng ma trận này cho các điểm Pl.P2,P3 ta có:
P1=[0 0 0 1], P2:[x2-xl y2-yl z2-zl 1], P3:[x3-xl y3-yl z3-zl]. Kết quả được thể
hiện trên hình vẽ 1.7
Bước 2.: Quay quanh trục y sao cho P1,P2 trùng với mặt phẳng (y,z).
Trong Hình1.7 ta giả sử góc giữa Pl,P2 với trục x là góc φ, như vậy ta cần quay
quanh trục y một góc là -(90-φ).

15


Kỹ thuật lập trình mô phỏng thế giới thực

Ta có ma trận biến đổi là:

với góc φ được tính như sau:

Áp dụng ma trận [Ty] cho các điểm P2 ta được các điềm P2 (0,y2-yl,L)
Bước 3.: Quay quanh trục x sao cho P1 P2 trục z

Ta có ma trận biến đổi của phép quay là:

16



Kỹ thuật lập trình mô phỏng thế giới thực

Bước 4. quay quanh trục z một góc α
Ta có ma trân biến đổi là

Như vậy, ma trận tổng hợp của phép biển dội à:
T:[T(-x,-y,-z)][Ty][T(x)][T(z)]
Sau đó, ta chuyển các điểm về vị trí ban đầu. Như vậy, ma trận tổng họ sẽ là:
T=[T(-x,-y,-z)][Ty][T(x)][T(z)] [T(-x)][T(-y)][T(x,y,z)].
Trong ví dụ đơn giản trên ta thấy rằng các phép biến đổi phải thực hiện không
phảii là đơn giản. Như vậy, ta hình dung được sự phức tạp cửa các biến đồi phức tạp
khác như các hiệu ứng ánh sáng, bóng, tương tác giữa các đối tượng, tương tác người
dùng với các đối tượng v.v... Và việc kết hợp nhiều đối tượng trong một không gian
nếu không có cơ chế tốt thì chương trình sẽ rất chậm, chưa nói đến nó phải hoạt động
với thời gian thực. Vì vậy, việc xây dựng các phần mềm 3D từ cơ sở là rất phức tạp và
tốn nhiều công sức, thời gian.
1.4. CÁC GIẢI PHÁP SỬ DỤNG ĐỂ GIẢI QUYẾT VẤN ĐỀ
1.4.1. Vấn đề và giải pháp
Trong cuốn sách này, chúng ta không xét đến các giải pháp phần cứng mà chỉ xét
đến các giải pháp để phát triển phần mềm mô phỏng thực tại ảo mà thôi.
Có hai giải pháp để tiến hành xây dựng và phát triển phần mềm thực tại ảo sau
đây:
Giải Pháp thứ nhất: Tự tiến hành nghiên cứu trên yêu cầu của riêng mình, từ
đó xây dựng riêng cho mình một mô hình phát triển phần mềm thực tại ảo.
Phương pháp này có ưu điểm là chương trình viết ra sẽ gọn nhỏ và nếu có một
cơ chế tốt thì nó cũng sẽ hoạt động nhanh hơn song lại có một số hạn chế là việc xây
dựng từ đầu không đơn giản như đã trình bầy trên. Vì ta phát triển từ đầu nên việc
nâng cấp các thành phần tăng tốc sẽ khó. Mặt khác, đó là một mô hình tự tạo nên tính
17



Kỹ thuật lập trình mô phỏng thế giới thực

mở của phần mềm không cao. Cũng do phát triển từ đầu nên chúng ta cũng không có
nhiều thời gian quan tâm tới việc mở rộng hỗ trợ cho các thiết bị v.v..
Giải Pháp thứ hai: Tìm hiểu các mô hình xây dựng phần mềm thực tại ảo đã
tồn tại, từ đó lựa chọn cho mình một mô hình thích hợp để xây dựng và phát triển phần
mềm. Nói chung, đa phần các mô hình phát triển này đều có một số công cụ mạnh hỗ
trợ những phép biến đổi trong không gian 3D. Vì vậy, khi xây dựng phần mềm bằng
các công cụ này
chúng ta sẽ không cần quan tâm tới các chi tiết biến đổi trong không gian 3D, mà
chỉ cần quan tâm tới mức trên, do đó có điều kiện để phát triển hoàn thiện phần mềm
và chi phí thấp hơn. Đồng thời các phép biến đổi cơ bản do một chuyên gia khác phát
triển, vì vậy họ sẽ có điều kiện lựa chọn giải pháp tốt nhất để cài đặt.
Hầu hết các mô hình xây dựng thực tại ảo thường bao gồm hai phần tương đối
độc lập Đó là:
Mô hình thế giới: Bao gồm các cách thức cho phép bạn định nghĩa các đối
tượng của thế giới như các khối cơ bản (hình cầu, hình hộp khung nhìn, đa diện v.v..)
đồng thời cho phép bạn định nghĩa một số hoạt động cơ bản của thế giới (thường là
các hoạt động mang tính quy luật). Thông thường. đây chỉ là mô hình cho phép bạn
định nghĩa các đối tượng và các hành động 3D mà thôi.
Mô hình cho phép điều khiển hoạt động của thế giới: Mô hình này sẽ cung
cấp cho bạn những phương pháp để lấy các đối tượng của thế giới đã có hoặc sinh ra
các đối tượng mới trong thế giới và nó cung cấp các phương thức để bạn điều khiển
hoạt động cũng như thay đổi hiện trạng của thế giới. Mô hình này thường được xây
dựng sẵn dưới dạng các engine (*.dll) hoặc một bộ các thư viện.Bạn có thể dùng các
ngôn ngữ lập trình để gọi ra các hàm mà các engine (các thư viện) này cung cấp.
Một số loại mô hình khác lại cho phép tổng hợp cả mô hình thế giới và mô hình
điều khiển thế giới trong một công cụ phát.triển. Cũng có một số mô hình lại hỗ trợ cả

việc xây dựng mô hình thế giới riêng bằng một công cụ khác. đồng thời cho phép
người xây dựng tự xây dựng thế giới từ chính mô hình đó.
1.4.2. Một số mô hình xây dửng thực tại ảo:
Ngày nay, các mô hình mô phỏng trên thế giới là khá phong phú, đa dạng.
Chúng phát triển theo hai trường phái chính. Đó là:
Thứ nhất: Hướng tới việc xây dựng các mô hình mô phỏng mà không cần lập
trình.
Chúng ta chỉ cần thực hiện các thao tác kẻo thả và mô tả bằng ngôn ngữ gần tự
nhiên.
Ưu điểm của các mộ hình dạng này là có thể xây dựng được các mô hình thực
tại một cách nhanh chóng và chất lượng hình ảnh cao. Song các mô hình này có một
18


Kỹ thuật lập trình mô phỏng thế giới thực

nhược điểm lớn là. nó sẽ chậm và khó tương tác. Một nhược điểm khác nữa là các
phần mềm dạng này khá đắt. Một đại diện khá tiêu biểu cho hướng này là Ques3D.
Thứ hai: Hướng phát triển thứ hai hiện nay là xây.dựng các chương trình mô
phỏng dựa trên một nền tảng đã được xây dựng sẵn. Hướng này có hai hướng nhỏ đó
là sử dụng các engine và sử dụng các bộ thư viện:
Các engine 3D cho phép mô phỏng hiện nay có rất nhiều và có thể tìm thấy trên
trang List engine. Ta có thể kể tới một số engine tiêu biểu như: Morfit, Open GL. 3D
MaX, Quit time v.v.. Sử dụng engine bạn sẽ được cung cấp các hàm API dựng sẵn để
xây dựng các mô phỏng.
Các bộ thư viện dùng cho việc xây dựng thực tại ảo ngày nay cũng đã có khá
nhiều trên các ngôn ngữ lập trình khác nhau như VC++ hay C# hoặc Java. Một bộ thư
viện đồ sộ được nhiều người trong cộng đồng mã nguồn mở xây dựng cho thực tại ảo
phải kể đến đó là OSG. Bạn có thế tìm thấy bộ thư viện này trên trang OSG.
Ưu điềm của phương thức phát triển thứ hai này là nó cho phép xây dựng các

chương trình mô phỏng hiệu quả trong một thời gian ngắn. Tốc độ của các chương
trình dạng này cũng khá nhanh, tính mở rộng và tương thích cao, giá thành các engine
hay các bộ thư viện khá rẻ hoặc miễn phí. Song bạn phải là một lập trình viên mới hy
vọng xây dựng được các chương trình mô phỏng theo hướng này.

19


Kỹ thuật lập trình mô phỏng thế giới thực

CHƯƠNG II
GIỚI THIỆU CHUNG VỀ MÔ HÌNH XỬ LÝ MORFIT

2.1. GIỚI THIỆU CHUNG
Morfit là một mô hình cho phép ta xây dựng các phần mềm mô phỏng các đối
tượng ba chiều bao gồm cả hình dạng lẫn hành động, cũng như các tương tác giữa các
đối tượng với nhau và tương tác của người sử dụng với các đối tượng. Có thể chia mô
hình này thành hai phần tương đối độc lập với nhau:
- Định dạng Morfit cung cấp một chuẩn cho phép ta dựa vào đó để xây dựng thế
giới và một số hành động cơ bản mang tính quy luật của thế giới.
Định dạng của Morfit là.wld (mô hình về thế giới thực). Mục đích xây dựng mô
tả thế giới thực trên một file văn bản với một cấu trúc rõ ràng, phục vụ cho việc viết
chương trình ứng dụng.
- Điều khiển: Phần engine (.dll) của Morfit cung cấp các phương thức cho phép
ta hiển thị và điều khiển mọi hoạt động của thế giới trên một ngôn ngữ lập trình cụ thể
nào đó, ví dụ VB,C++ hoặc C# v.v...
Morfit đảm bảo thực hiện được một lượng lớn các thao tác bao gồm một lượng
lớn các trạng thái hình ảnh được xử lý trong mỗi giây, hình ảnh và các hiệu ứng hình
ảnh có chất lượng cao. Bạn có thể cố định tốc độ hoạt động của thế giới với mọi máy
và khi sử dụng hoặc không sử dụng bộ tăng tốc đồ hoạ 3D. Mô hình thực tại ảo Morfit

dựa trên cơ sở các thuật toán và kỹ xảo tinh vi, phức tạp, bao gồm cả quyền sở hữu
công nghệ PIRR(Photo realistic eractive Real-Time Rendering).Kết quả mang lại
nhiều cải thiện về cả tốc độ cũng như chất lượng hình ảnh hơn hẳn các engine cơ sở
khác.Engine thực tại ảo Morfit là một giải pháp xây dựng và phát triển các phần mềm
mô phỏng 3D cực kỳ đơn giản, hiệu quả và nhanh chóng.
Sử dụng Morfit bạn có thể xử lý các hình ảnh 3D tới cấp độ bít. Nó không bắt
buộc phải sử dụng tất cả các hàm, các chức năng mà Morfit cung cấp, bạn có thể sử
dụng các hàm API cơ sở, hoặc các mã cửa DirectX3D vào trong chương trình của bạn.
Do đó, nó là một môi trường xây dựng khá thoải mái và tiện dụng.
Sử dụng Morfit bạn có thể xây dựng bất cứ phần mềm 3D cho bất kỳ lĩnh vực
nào.
Morfit engine có đầy đủ công cụ phát triển, dễ học, có khả năng linh động cao và
nhiều ưu điểm khác.
Xây dựng một bộ thư viện xử lý đồ hoạ 2D và 3D cực mạnh, kết hợp với
multimedia, Morfit đưa ra một mô hình cho phép xây dựng thực tại ảo khá là hiệu quả,
mềm dẻo và đang là xu hướng hiện nay. Đó là: Xây dựng mô hình thế giới thực về thế
20


Kỹ thuật lập trình mô phỏng thế giới thực

giới thực của chúng ta như một thư viện cho phép kết hợp với chương trình để từ đó
xây dựng nên thực tại ảo.
Hiện nay, có rất nhiều dự án khác nhau phát triển theo xu hướng này, ví dụ như:
OpenSG...Xu hướng phát triển này là do thực tế. Do đó để giảm bớt những điều dư
thừa, tăng năng suất và hiệu quả công việc xây dựng thực tại ảo và cung cấp những
khả năng chuyên biệt cho ngôn ngữ thực tại ảo.
Quả thực đúng như vậy,nếu chúng ta biết rằng có những thứ trong thế giới thực
sẽ không thay đổi trong khoảng thời gian mà ta quan tâm tới một thứ khác tồn tại cạnh
nó,hay có những thứ chúng ta chẳng cần quan tâm tới hoặc có những thứ hoạt động

theo một chu kỳ nhất định xong cũng không đáng quan tâm lắm. Chúng ta có thể xây
dựng chúng một cách qua loa và tập trung vào cái mà chúng ta quan tâm (tâm điểm
của thực tại ảo). Và một file thư viện mô tả một thế giới như vậy là có thể nói là hiệu
quả nhất. Ngôn ngữ lập trình với khả năng linh động, tính logic và tính toán cao là lý
tưởng để chúng ta kết hợp mô hình về thế giới thực mà chúng ta đã xây dựng với các
thiết bị và các tiến trình xử lý để xây dựng nên thực tại ảo. Đó sẽ là hướng đi cho
những nhà phát triển các hệ thống ứng dụng thực tại ảo.
2.2. PHUƠNG PHÁP ĐỊNH NGHĨA THẾ GIỚI CỦA MORFIT
2.2.1. Giới thiệu chung
Để phục vụ cho việc định nghĩa thế giới, các nhà thiết kế Morfit đã xây dựng ra
một mô hình cho phép mô tả bất kỳ sự vật nào của thế giới, đồng thời cũng cho phép
mô tả một số hành vi của thế giới.
Định dạng của Morfit là.wld (mô hình về thế giới thực). Mục đích xây dựng mô
tả thế giới thực trên một file văn bản với một cấu trúc rõ ràng, phục vụ cho việc viết
chương trình ứng dụng.
Với định dạng file.wld của Morfit cho phép chúng ta mô tả thế giới thực với các
thành phần:
1.Các đối tượng làm trung tâm của thê giới
2.Các camera cung cấp các góc nhìn để quan sát thế giới.
3.Sự tương tác giữa các đối tượng khác nhau.
4. Các camera kèm theo một đối tượng bất kỳ
Chúng ta có thể bổ sung các thuộc tính khác của đối tượng có trong thế giới, các
thao tác khác cần thực hiện thông qua chương trình.
Những thành phần cơ bản cho phép chúng ta xây dựng một file mô tả thế giới
thực theo định dạng của Morfit bao gồm:
-Module: Được hiểu như là một mô hình, nó xác định một khung dạng sự vật
nào đó, ví dụ kiến trúc của một toà nhà hay một cái cây.v.v…
21



Kỹ thuật lập trình mô phỏng thế giới thực

Hay nói cách khác, module dùng để định nghĩa một hình dáng nào đó, cho phép
kết hợp các hình cơ bản, hay các hình đã được định nghĩa lại với nhau để tạo ra một
hình dạng nào đó theo ý của chúng ta.
-Polygon: Là các hình đa giác, đây là một đối tượng cơ bản. hầu hết các đối
tượng đều được xây dựng nên từ các đa giác. Hay nói cách khác, nó là những khối
hình đa giác cơ bản đã được tạo dựng sẵn, gồm cả các hình 3D và hình 2D.
-Object: Một object là một cài đặt của một mô hình (module) đã được định
nghĩa trước. Ví dụ nếu bạn có một module có tên là tiếc, bạn có thể có hàng trăm
object (đối tượng) có cùng hình dạng của tiếc ở các vị trí khác nhau. Bạn cũng có thể
thay đổi thuộc tính của từng đối tượng như quay nó, thay đổi vị trí của nó v.v.., nhưng
hình dạng cơ bản của module (mô hình) đó vẫn không thay đổi.
-Track: Một trách xác định một đường trong thế giới. nó cho phép các đối
tượng động (dynamic object) hoặc các camera có thể chuyển động theo đường đó.
Hay nói cách khác, nó được dùng để định nghĩa một đường dẫn, hay một lối đi,
hoặc một cái gì đó thể hiện theo một quy luật nhất định trong thế giới thực mà một đối
tượng động hay một camera có thể hoạt động theo lối đó.
-Dynamic Obiect: Là các đối tượng động mà bạn muốn nó chuyển động theo
track hoặc bạn muốn điều khiển nó hoạt động (bằng engine).
Dynamic Object tạo cho bạn một đối tượng động nếu bạn muốn cho chúng có
thể di chuyển được. Một đối tượng động có thể di chuyển ra chỗ khác nhờ việc đặt nó
lên một track trong thế giới, hoặc thực hiện nó bởi chương trình. Các đối tượng tĩnh
không thể đi chuyển được. Với đối tượng động, ta có thể thực hiện mọi yêu cầu. Còn
chúng ta chẳng có thể làm gì được với đối tượng tĩnh.
- Camera: Là một đối tượng, nó đại diện cho góc nhìn của bạn vào trong thế
giới.
Camera cung cấp một góc nhìn nào đó vào thế giới, chúng ta có thể sử dụng rất
nhiều camera khác nhau trong chương trình tuỳ thuộc vào mục đích sử dụng của mình.
Việc sử dụng nhiều camera ở nhiều vị trí khác nhau cho phép chúng ta có thể quan sát

thế giới ở các vị trí khác nhau.
-Animation: Thực chất là một tập hợp các hình ảnh có thứ tự được khởi động
một cách liên tục, nó thường dùng để mô tả các sự vật như đống lửa, màn hình tivi
v.v... Hay nói cách khác, nó là một chuỗi có thứ tự của những hình ảnh thay thế nhau,
tạo ra các hiệu ứng về sự vận động.
- Background: Là một ảnh trải lên khắp nền trời của thế giới được xây dựng.
-Atmosphere: Cho phép thiết lập các hiệu ứng của khí quyển, ví dụ: ánh sáng,
sương mù,tuyết.v.v…
22


Kỹ thuật lập trình mô phỏng thế giới thực

-Hệ trục tọa độ trong Morfit: sẽ thật là thiếu khi mà chúng ta nghiên cứu về đồ
họa 3D mà lại không nhắc gì về hệ trục tọa độ.
Cực dương của trục x =Tiến vào trong màn hình
Cực âm của trục x = Tiến ra ngoài màn hình
Cực dương của trục y = Tiến sang bên phải của thế giới
Cực âm của trục y =Tiến sang bên trái của thế giới
Cực dương của trục z = Tiến lên phía trên của thế giới
Cực âm của trục z = Tiến xuống phía dưới của thế giới
Morfit cung cấp khá đầy đủ những thứ cần thiết cho phép chúng ta có thể xây
dựng nên thế giới ảo trên máy vi tính. Song, đó mới chỉ là những vật liệu cơ sở để cho
phép chúng ta có thể xây dựng lên một ngôi nhà. Chúng ta sẽ tìm hiểu xem là từ những
vật liệu trên thì Morfit đã đưa ra cấu trúc của ngôi nhà mà chúng ta cần xây dựng như
thế nào trong phần dưới đây.
Để tìm hiểu về cấu trúc một file world của Morfit, chúng ta cùng đi tìm một ví
dụ về một file world cụ thể và cùng nhau phân tích từng thành phần của file world đó.
2.2.2. Phương pháp sử dụng các đối tượng để xây dựng thế giới
Một flle world của Morfit được bắt đầu bằng: BEGIN-DESIGN và kết thúc bằng

END_DESIGN.
Để bắt đầu và kết thúc cho mọi mô tả thế giới ta sử dụng:
BEGIN_DESIGN:.............
END_DESIGN:
Mọi mô tả về các đối tượng trong thế giới được viết giữa hai đoạn trên.
Đây là quy định bắt buộc của định file world.
Chúng ta cùng xem qua ví dụ sau đây:
Ví dụ 2. 1 : Module.wld
BEGIN-DESIGN:..
BEGIN MODULE:
………….
END MODULE:
END DESIGN:
-Module: Mỗi module cũng được bắt đầu bằng BEGIN_MODULE: tên module
và kết thúc bằng END_MODULE: tên module.Mọi mô tả thế giới phải có một module
có tên là mình, đây là điểm bắt đầu cho mỗi mô tả thế giới. Ta có thể hiểu module
23


Kỹ thuật lập trình mô phỏng thế giới thực

mình như phương thức mình trong ngôn ngữ C. Có nghĩa là trong module này sẽ tổ
chức các đối tượng thành thế giới, còn các đối tượng lại được định nghĩa qua các
module khác.
Tiếp đến chúng ta cùng xem qua một ví dụ: Module.wld
BEGIN_DESIGN:
BEGIN_MODULE: main
END_MODULE: main
END_DESIGN:
-Polygon: Một đa giác được định nghĩa bao gồm các thành phần như sau:

POLYGON : cube
ORIENTATION: Top
COLOR: 25500
BITMAP: NO BITMAP
TRANSPARENT: 0
ROTATED : NO
UGHT DIMINƯTION: 40
NUM OF FOINTS: 4
- 100 50 50 0 0 100
. -100 50 50 0 0 100
-100-50-50 0 0 100
-100 -50 50 0 0 100
Trong đó:
+ Polygon: Cho biết tên của đa giác.
+ Orientation: Xác định hướng của đối tượng. Nó có thể nhận các giá trị (top,
bottom,front,side hoặc không xác định).
+ Color: Cho phép định nghĩa màu của đa giác theo hệ màu (RGB).
+ Bitmap: Tên của ảnh loạn lên đa giác nếu có hoặc nếu không thì nó nhận giá trị
(NO_BITMAP)(ảnh loạn lên có thể là ảnh động).
+ Transparent: Cho phép ta loại bỏ bớt một số màu của ảnh loạn lên đa giác.
Nó có thể nhận các giá trị lớn hơn hoặc bằng - 1.
Nếu là -1 : Chấp nhận toàn bộ màu của ảnh.
24


×