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 ứ
Trang 1NGUYỄ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
Trang 2MỞ ĐẦ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
Trang 3Cũ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ả
Trang 4CHƯƠ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
Trang 5và 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ộ
Trang 6tă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 đó
Trang 7Nă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
Trang 8Chú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
Trang 9trê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:
Trang 10Đâ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 : http://www.ligww.epf1.ch
Trang 11Đâ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ỉ: http://www.ahs.uic.edu
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
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
Trang 12khu 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
Trang 13
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
Trang 14má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
Trang 15Hiệ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:
Trang 16Chuyể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-φ)
Trang 17Ta 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à:
Trang 18Bướ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 à:
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 ĐỀ
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
Trang 19mở 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
Trang 20nhượ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
Trang 21CHƯƠ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ế
Trang 22giớ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…
Trang 23Hay 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…
Trang 24-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:
-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
Trang 25mì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
+ 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
Trang 260: Bỏ đi đa số các màu thường xuyên được sử dụng nhất
n: Bỏ đi các màu thường xuyên được sử dụng thứ n
+ Rotated: Có hai lựa chọn YES/NO Nếu là yes thì phía trước của đa giác sẽ
luôn hướng về phía camera tạo cho ta cảm giác như đang nhìn một khối đa giác 3D chứ không phải nhìn một đa giác phẳng
+ Light Diminution: Cho phép xác định mức chịu ảnh hưởng của hiệu ứng khí
quyền lên đa giác Như ta đã biết, bất kỳ một hình gì trong không gian khi nhìn xa dần
nó sẽ dần hoà vào màu của khí quyển (ví dụ: màu sương mù v.v ).Light Diminution là một thành phần cho phép xác định mức độ hoà vào khí quyển của đa giác Nó có thể nhận các giá trị lớn hơn hoặc bằng không Với giá trị 0 nó sẽ không chịu ảnh hưởng của bất kỳ hiệu ứng khí quyển nào
+ Number of Pont: Trường này cho phép ta xác định số điểm của đa giác Sau
đó ta phải cho biết tọa độ của từng điểm trong không gian 3 chiều, mỗi điểm là một bộ
ba (x,y,z) Chú ý là các điểm này phải cùng nằm trên một mặt phẳng
+ Chú ý: Đối với Orientation (hướng) trong chế độ Viewer orientation chi liên
quan tới các đối tượng động Còn trong chế độ Editor tất cả các đa giác liên quan tới một nhóm, vì vậy orientation rất quan trọng Nếu bạn muốn sử dụng các hàm quay, dịch chuyển của engine cẩn thiết phải biết hướng của nó để hướng bề mặt của nó tới camera
Tiếp đến chúng ta cùng xem qua một ví dụ về định nghĩa hình đa giác trong file world, có sử dụng module
Trang 27+ Location: Vị trí của đối tượng trong không gian 3D gồm ba thành phần (x,y,z)
+ Scale: Kích thước của đối tượng so với module được định nghĩa, ví dụ: (l 1 1)
là tương đương với đối tượng được định nghĩa (2,2,2) là kích thước gấp đôi đối tượng
đã được định nghĩa
+ Matrix: Là một ma trận bốn chiều dùng cho các phép biến đổi
- Track: Track được định nghĩa đơn giản như sau:
+ Track: Cung cấp tên của track, ví dụ my-track
+ Cyclic: Nhận hai giá trị Yes/No với Yes: Track là một đường đóng còn No:
Trang 28Nó là một đường không khép kín Sau cyclic là một hợp các điểm tọa độ mô tả đường của track
+ Dynamic Obiect : Một đối tượng động được định nghĩa như sau:
+ Dynamic: Cho biết tên của đối tượng động
+ Module Name: Tên module đối tượng
+ Type: Định nghĩa kiểu đối tượng như car ấy plane v.v , mặc định là regular + Control: Định nghĩa đối tượng điều khiển đối tượng (người hay máy)
+ Track: Tên track mà đối tượng sẽ chuyển động theo trách đó
+ Chase: Tên đối tượng mà đối tượng phải theo khi nó di chuyển
Chase Type: Môt tả kiểu di chuyển của đối tượng theo track hoặc theo một đối tượng khác nó nhận các giá trị:
+ Chase_Track: Đối tượng di chuyển theo track
+ Chase_Track_Airplane: Tương tự như trên nhưng kiểu di chuyển được mô tả
Trang 29theo kiêu máy bay bay
+ Chase_lexible: Đối tượng di chuyển mềm mại theo đối tượng mà nó bám theo + Chase_ation: Đối tượng chỉ thay đổi vị trí khi nó di chuyển mà không thay đổi
hướng,sự di chuyển này là cứng nhắc không có sự mềm mại, uyển chuyển
+ Chase_Physics: Người sử dụng sẽ thiết lập một số thông số đế xác định kiểu
di chuyển của đối tượng
+ Chase_Precise: Đối tượng động di chuyển hệt như đối tượng mà nó di chuyển
theo
+ No_chase: Đối tượng không di chuyển theo bất kỳ đối tưmg nào
+ Chase Softnes: Là một số giữa 0 và l,.nó xác định cách mà đối tượng động sẽ
rẽ.Số càng lớn thì cách đối tượng rẽ càng cứng nhắc, với số 0 vòng rẽ sẽ trơn như trong thực tế
+ Chase Distance: Hướng giữa đối tượng động với đối tượng mà nó bám theo + Physics: Chỉ liên quan khi Chase Type là Chase_Physics, ngoài ra nó còn liên
quan tới kiểu Chase_Track hoặc Chase_Trac_Airplane về mặt tốc độ
+ Speed: Xác định vectơ tốc độ Hướng của vectơ là hướng của chuyển động, độ
dài của vectơ điều khiển tốc độ di chuyển
+ Force: Là điều khiển của gió, hướng của vectơ này quyết định hướng của gió
và độ lớn của vectơ quyết định tốc độ gió Nếu bạn muốn biểu hiện lực tương tự lực hấp dẫn vectơ có dạng là [0, 0, -10] (cùng chiều âm của trục z)
+ Maximum Speed: Tốc độ tối đa mà đối tượng có thể di chuyển
+ Friction: Một số nhỏ hơn hoặc bằng 1
0 : Không có chức năng 1 : Vô hạn chức năng,vì thế mà không thể di chuyển Với số âm: Hành động như là thúc ép khí nổ, có thể được sử dụng để tăng cường tốc
độ
-l: Gấp đôi tốc độ -2: Gấp 3 tốc độ, nó cũng có thề sử dụng các số như 0.3 hay - 0.3 v.v
+ Elasticity: Ứng xử khi đối tượng chạm vào một đối tượng khác
1 - Đối tượng không bị giảm tốc độ
0.5 - Tốc độ giảm một nửa
0 - Đối tượng dừng lại ở đó
+ Location: Vị trí của đối tượng
+ Scale: Kích cỡ của đối tượng so với module
Trang 30-Camera: Như đã định nghĩa ở phần trên camera là thành phần cho phép xác
định vị trí, góc nhìn vào thế giới Nó được định nghĩa tương tự như sau:
CAMERA : default _camera
+ Location: Vị trí của camera
+ Direction: Hướng của camera
+ View Field: Góc nhìn của camera Nó có thể nhận các giá trị từ 1 tới 179 độ
Với góc nhìn càng nhỏ thì sẽ càng nhìn được ít đối tượng và các đối tượng nhìn thấy sẽ càng lớn hà ngược lại
+Culling Depth: -1 : Không có hiệu ứng Các giá trị khác (trong khoảng [0,∞]cắt
thế giới Ví dụ, nếu Culling Depth là 1000 camera không thể nhìn thấy bất cứ thứ gì xa
hơn 1 000 đơn vị Điều này làm cho công việc render nhanh hơn do phải vẽ ít, nhưng
một cách tốt hơn hiệu ứng này là sử dụng hiệu ứng khí quyển (atmospheric effect) như hiệu ứng sương mù Khi có sương mù thì engine không phải vẽ các đối tượng ở xa
+ Eye Distance: Xác định khoảng cách mà camera bắt đầu nhìn (những đối
tượng ở gần camera hơn khoảng cách này sẽ không được nhìn thấy) Khoảng cách này
Trang 31càng lớn càng nhìn đối tượng chính xác hơn nhưng lại không nhìn được những vật gần, do đó việc lựa chọn khoảng cách này tuỳ thuộc vào rừng kiêng hợp Khoảng cách thông thường là 1,4,10,20
+ Track:Là tên track mà camera sẽ di chuyển theo
+ Các thành phần: Chase, Chase Type, Chase Softness, Chase Distance Physics,
Speeđ, Force, Maximum Speed, Friction, Elasticity được sử dụng và có ý nghĩa như đối với đối tượng
-Animation: (Ảnh động) Mỗi một ảnh động được mô tả như sau:
+ Animation: Cho biết tên của ảnh động
+ Number of Frames: Cho biết số hình ảnh của ảnh động
+Times: Thời gian dừng của mỗi hình (tính bằng 1/100 của giây) Thời gian này
là bắt buộc phải có cho mỗi ảnh
+Năm trường BACK, BACK_SIDED, SIDE,FRONT_SIDED và FRONT là đại
diện cho 5 góc nhìn khác nhau của ảnh động Mỗi trường là một tập hợp các ảnh thường khi hoạt động các ảnh này sẽ liên tục thay thế nhau tạo ra một hình ảnh động liên tục Mỗi ảnh còn xác định thêm một trường Transparency, trường này xác định màu trong suốt của ảnh Nó có thể nhận các giá trị:
-1 : Không có màu trong suốt
0: Màu nhiều nhất trong ảnh sẽ trở thành màu trong suốt
1 : Màu nhiều thứ hai trở thành trong suốt v.v
-Background: Là nền của không gian, có thể định nghĩa như sau:
Trang 32+ Bitmap Name: Tên ảnh sử dụng làm nền
+ Distance: Chiều cao của nền trời, nếu nó càng lớn thì sự thay đổi của nền khi
chiều cao của camera thay đổi càng thể hiện rõ hơn Nền di chuyển lên trên khi camera
di chuyển lên trên, nó tạo cho ta cảm giác như nền trời trong thực tế
+ Bottom: Chiều cao tại nơi mà nền trời bắt đầu
+ Bottom ensity: Xác định độ mờ, độ tương phản của ảnh nền
+ Ensity Step:Thành phần này được thêm vào để bổ trợ cho bitmap ensity, nó
xác định các số lượng các điểm màu được vẽ khi nền chịu ảnh hưởng của các hiệu ứng khí quyển
-Atmosphere: Là các hiệu ứng khí quyển, nó được định nghĩa như sau:
ATMOSFHERE: 128 128 128
FOG: 1.500000
LIGHT : 0.000000
Trong đó:
+ Atmosphere: Màu của hiệu ứng (được xác định theo (RGB))
+ Fog: Trường này nhận bất kỳ giá trị nào nằm giữa 0 và 2 Số này xác định
lượng sương mù trong thế giới Nếu khoảng cách của thế giới là nhỏ thì số này nên gần với 0 nếu khoảng cách này là lớn thì số này nên gần với 2
+ Light:Nhận bất kỳ giá trị nào trong khoảng 0 tới 400 Số này xác định độ sáng
chói của thế giới
Chú ý: Với Background và Atmosphere chỉ định nghĩa một lần là dùng cho cả
thế giới nó được định nghĩa trước module main và không cần gọi ra ở bất cứ đâu
Ngoài các cấu trúc cho phép mô tả đối tượng như đã trình bầy trên thì định dạng.wld của Morfit còn cho phép một số cấu trúc phức tạp khác và nó cũng cho phép viết chèn thêm các script vào để điều khiển đối tượng trong môi trường web
2.2.3 Xây dựng chương trình với riêu Một.wld
Các bạn thân mến, trên đây mới chỉ là mô hình về thế giới thực mà chúng ta cần
Trang 33chuyển hoá lên máy tính (chưa phải là thực tại đầy đủ cần chuyển hoá) Để xây dựng thực tại ảo thực sự trên máy tính theo mô hình này, chúng ta cần xây dựng chương trình đề kết hợp mô hình đã xây dựng với những thiết bị cần thiết cung cấp các khả năng qua lại giữa thế giới ảo đó và con người
Sau đây là mã nguồn chương trình nạp file thư viện về mô hình thế giới đã được xây dựng trên định dạng morfit.wldvào chương trình
int Loadworld : -3D.STATE_engine_load_wold("hello.morfit",
"Path_File_World","Path-Bitmaps",
-3D.USER_DEFINED_BEHAVIOR);
Đây là đoạn chương trình làm việc với thư viện của Morfit, hiện nay Morfit cung cấp thư viện này cho rất nhiều các loại ngôn ngữ lập trình khác nhau như C++, Delphi, C# VB, bạn có thể tham khảo theo địa chỉ :http:///www.morfit.com
Trong đoạn mã trên chúng ta có thể rễ ràng nhận ra rằng có một file hello.morfit được nạp vào chương trình, trong đầu vào của hàm nạp chúng ta cần chỉ ra vị trí đặt file morfit.wld và nơi đặt những hình ảnh liên quan đến file morfit.wld đó Cuối cùng
là mode_world, đó là các chế độ mà thế giới sẽ được lòng và chương trình Bạn có thể kiềm tra việc nạp thế giới vào chương trình có thành công hay không trước khi bạn sử dụng thế giới đó
Công việc tiếp theo là bạn cần cung cấp một góc nhìn vào thế giới mà chúng ta
đã đã nạp vào chương trình Đó là các camera, mọi file morfit.wld đều có một camera mặc định và chúng ta có thể lấy nó để sử dụng
unit camera = _3D.STATE_camera_get_default_camera();
Và công việc cần làm bây giờ là chúng ta render thế giới đó
Trang 34_3D.STATE engine_close(); đây là lệnh xoá bộ nhớ đã được sử dụng bởi chương trình của chúng ta
Ví dụ: Chương trình này minh hoạ cách khởi tạo một thế giới
com << "Failed to load world, aborting\n!;
com <<look at error.log to see why\n";
retun;
}
printf("Cực tiểu hoá cửa sổ ");
Morfit_engine_set_default_renderin_window_title("Thế giới đầu tiên ESC> Thoát khỏi chương trình");
DWORD camera=morfit_camera_get_default_camera();
whileGetAsyncKeyState(VK ESC E)==o))
{ // Vòng lặp cho đến khi phím Escape được nhấn
Kết quả: Một thế giới được khởi tạo gồm có bầu trời, không gian, khí quyển
(không khí) và mặt đất, độ cao so với mặt biển
Trang 35CHƯƠNG III ĐIỀU KHIỂN THẾ GIỚI BẰNG MORFIT 3.1 CÁC VẤN ĐỂ CƠ SỞ
Mục này sẽ giới thiệu về các nội dung cơ sở để giúp bạn hiểu về các chương trình đơn giản trong cuốn sách này và bạn có thể tự viết được những chương trình cho riêng mình Đặc biệt là các hệ trục tọa độ 2D Coordinates và 3D Coordinates và sự khác nhau giữa chúng Cuối cùng giới thiệu tổng quan về Morfit API
3.1.1 Hệ tọa độ (Coordinate System)
Hệ trục tọa độ mà chúng ta quan tâm là hệ trục tọa độ 3D Song để đơn giản, chúng ta sẽ tìm hiểu các vấn đề trên hệ trục tọa độ 2D
Hệ trục tọa độ 2D (2D Coordinates):
Một hệ trục tọa độ hai chiều trên máy tính được Morfit định nghĩa gồm hai trục
x, y; trong đó trục x có phương thẳng đứng so với màn hình và trục y có phương nằm ngang trên màn hình Hướng dương của trục x là hướng từ dưới lên trên màn hình và
nó được đại diện bằng vectơ chỉ hướng [l,0] Chú ý: vectơ này cũng có thể được viết dưới dạng [2,0] hay [3,0], [l7,0] v.v Hướng dương của trục y là hướng từ trái sang phải và nó cũng được đại diện bằng vectơ chỉ hướng [0,l],[0,2] Hướng âm của trục x
là hướng từ trên xuống dưới màn hình và nó được đại diện bằng vectơ chỉ hướng [-l,0] Hướng âm của trục y là hướng từ phải sang trái và nó cũng được đại diện bằng vectơ chỉ hướng [0,-1 ]
Mô hình mô phỏng Morfit cung cấp cho chúng ta 3 không gian tọa độ Đó là:
- Không gian tọa độ thế giới Đây là không gian tọa độ bất biến, nó không chịu ảnh hưởng của bất kỳ tác động nào của đối tượng hay camera Mọi đối tượng trong thế giới đều được đặt trong không gian tọa độ của thế giới Chúng ta có thể cho các đối tượng chuyển động bằng cách thay đổi vị trí (tọa độ của nó) trong không gian tọa độ thế giới
Trang 36-Không gian tọa độ đối tượng Đây là không gian tọa độ gắn liền với đối tượng,
nó sẽ dịch chuyển nếu đối tượng dịch chuyển và quay nếu đối tượng quay.Việc đưa ra không gian tọa độ đối tượng sẽ đem lại rất nhiều tiện dụng cho người xây dựng hệ thống
Ví dụ: Ta cần xây dựng một cảnh hoạt động trên một ôtô hay một máy bay Nếu
chỉ dùng một hệ trục tọa độ, chúng ta sẽ phải tính toán các hoạt động của mọi người trên máy bay so với máy bay và tính toán hoạt động của mọi người trên máy bay so với trục tọa độ thế giới,sau đó mới có thể tính được hoạt động của mọi người so với tọa độ thế giới Đây là một chuỗi công việc hết sức phức tạp Nhưng bằng việc đưa vào hệ tọa độ đối tượng thì chúng ta chỉ cần tính toán các hoạt động của mọi người so với trục tọa độ của máy bay và hệ thống của Morfit sẽ tự động chuyên đồi giữa các hệ tọa độ này Hình vẽ dưới đây là mô ta cho một hệ trục tọa độ 2D:
Giả sử có một cái ôtô như trên hình vẽ Nếu mô dịch chuyên dọc theo các trục tọa độ thi không có gì để nói,nhưng nếu nó dịch chuyển không theo trục tọa độ và giá
sử hướng dịch chuyên của nó là [ 1, 1 ] trên hệ tọa độ thê giới Nếu ta gắn vào mô một trục loa độ thì vectơ dịch chuyển của nó là [ 1,0] hoặc [0, 1 ], nếu vectơ x của trục tọa
độ ôtô là trong hệ tọa độ thế giới là [ 1,- 1 ] hoặc [ 1, 1 ]
Ví dụ 3 1 1 :
Trang 37-Ngoài ra, Morfit còn cung cấp cho chúng ta một không gian tọa độ nữa là không gian tọa độ camera, tính chất của nó tương tự như với không gian tọa độ đối tượng, có nghĩa là hệ tọa độ luôn gắn với camera khi nó dịch chuyển hoặc khi nó quay
Hệ trục tọa độ 3D: Trong không gian 3D chúng ta cũng áp dụng các quy tắc
hoàn toàn tương tự như trong không gian 2D Morfit sử dụng hệ trục tọa độ bàn tay phải, có nghĩa là hướng dương của vectơ x là hướng từ trong màn hình ra ngoài phía
bạn và hướng âm là hướng ngược lại Nó có thể mô tả bởi các vectơ [ 1,0,0] hoặc
[2,0,0] và [-l,O,O] hoặc [-2,0,0] Hướng dương của trục y là hướng từ trái sang phải màn hình và hướng âm là hướng ngược lại Hướng dương của trục z là hướng từ dưới lên trên của màn hình và hướng âm là hướng ngược lại.Hệ tọa độ này được mô tả trong hình vẽ sau:
Hay có thể mô tả theo hình khác như sau:
Trang 38Như đã nói ở phần trên, mỗi đối tượng hoặc mỗi camera trong Morfit được gắn một trục tọa độ và nó luôn dịch chuyển và quay theo đối tượng Như vậy, với hệ trục tọa độ 3D đối tượng chỉ dịch chuyển trên trục tọa độ của nó theo các hướng [ 1, 0, 0] hoặc [- 1, 0, 0 ] hoặc [0, 1,0] hoặc [0, 1,0] hoặc [0,- 1,0] hoặc [0, 0, 1 ] hoặc [0,0,- 1] Việc xây dựng thêm không gian đối tượng sẽ nảy sinh một vấn đề là làm thế nào
đề xác định một điểm có tọa độ x,y trong không gian thế giới có tọa độ là bao nhiêu trong không gian đối tượng và ngược lại Có nghĩa là làm thế nào để xác định một điểm có tọa độ x,y trong không gian đối tượng sẽ có tọa độ là bao nhiêu trong không gian thế giới Chúng ta sẽ xem xét qua hình vẽ dưới đây:
Giả sử có một đối tượng mà không gian tọa độ của nó như trên hình vẽ, có nghĩa
là vị trí của không gian đối tượng trong không gian thế giới là [X0,Y0], vectơ chiều
Trang 39của nó là OO.Ta có thể biểu diễn vị trí tương đối giữa hai hệ tọa độ bằng vectơ OO Bây giờ giả sử có một điềm A, ta có thể biểu diễn tọa độ của A trong không gian thế giới bằng vectơ OA, không gian đối tượng bằng vectơ OA Ta thấy rằng
OA=OO'+O' Avà : O' A=OA-OO'.Như vậy có thể tính được tọa độ của A trong không gian thế giới nếu biết được tọa độ của nó trong không gian đối tượng và biết được vị trí, hướng của không gian đối tượng thông qua vectơ cộng Đồng thời, cũng sẽ xác định được tọa độ của nó trong không gian đối tượng nếu biết tọa độ của nó trong không gian thế giới thông qua vectơ trừ
3.1.2 Liên kết (HANDLES)
Để thao tác với bất kỳ một đối tượng nào của Morfit,công việc trước tiên là chúng ta phải xác định liên kết của đối tượng đó Mọi camera và mọi đối tượng, sự vật trong thế giới đều được xác định bằng một liên kết, như liên kết của camera, của hình
ảnh, của đối tượng v.v
Một liên kết thực chất là một biến có kiểu nguyên không dấu được chứa trong một từ (WORD) Điều này cũng có nghĩa là không có sự phân biệt giữa liên kết của camera với liên kết của đối tượng hay liên kết của một ảnh với liên kết của đối tượng
v.v Và nếu bạn không xác định được liên kết của đối tượng khi sử dụng các hàm thao
tác với đối tượng hay bạn lấy liên kết của một đối tượng này cho đối tượng khác thì chương trình dịch sẽ báo lỗi ngoại lệ Một điều sẽ xảy ra, nếu bạn bỏ qua một liên kết hoặc một liên kết đối với đối tượng bị hỏng thì chương trình sẽ thông báo lỗi và hàm đối với sự kiện này có thế hoặc không được thực hiện nhưng cho kết quả sai
Morfit cung cấp cho chúng ta một số hàm cho phép lấy ra các liên kết từ thế giới như:
Morfit_camera_get_fist_camera(),
Morfit_object_get_first_object() v.v
Nó cũng cung cấp cho chúng ta các hàm kiểm tra biến liên kết, ví dụ như Morfit
camera_is_camera(), Morfit_object_is_obiect() v.v Chi tiết các hàm cho từng đối tượng sẽ được trình bầy kỹ hơn ở những phần sau
3.1.3 Tổng quan về các hàm của Morfit
Mô hình Morfit cung cấp cho chúng ta một tập hợp các hàm API khá hoàn chỉnh
để chúng ta có thể thao tác, xử lý với mọi hành động tương tự như các hành động trong thế giới thực Các hàm API bao gồm: API đối tượng (Object API) API camera, API
của nhóm, API hình ảnh, API ảnh động, API engine, API khác.v.v
Tất cả các hàm của Morfit được sắp xếp thứ tự thành nhóm gồm có từ Morfit và theo sau là tên của hàm
Ví dụ 3.1.2:
Trang 40Morflt_camera_get_location(), Morfit_engine_load_world(),
và Morfit_object_set_direction()
Morfit cũng cung cấp các hàm và các biến khác nhau theo những yêu cầu
Chúng ta có thể phân loại chúng thành các nhóm hàm API như sau:
-Các API đối tượng (Obiect API): Dùng để điều khiển mọi hoạt động, tính chất
của đối tượng trong thế giới Các đối tượng đã tồn tại như nhà cửa, xe cộ, cây cối v.v , bạn có thể tạo mới bất kỳ loại dối tượng nào bằng cách sử dụng một số công cụ soạn thảo
như world Builder Bạn cũng có thể tạo mới đối tượng, huỷ đối tượng, dịch chuyển và quay đối tượng hoặc thay đổi hình dạng của đối tượng hay load ảnh động lên đối tượng v.v Ngoài ra, Morfit còn cung cấp các API cho phép phát hiện sự va chạm giữa các đối tượng
-Các API camera: Các API này cung cấp cho chúng ta các chức năng, hàm để
điều khiển mọi thuộc tính của camera như vị trí, góc quay, không gian hay các các
hàm thao tác với track v.v
- Các API của nhóm (Group API): Chúng cho phép kết nối một số các đa giác
cơ bản thành một nhóm và thao tác với nhóm đó như thao tác với một đối tượng đơn ví
dụ ta có thể thay đổi vị trí của nhóm, hay quay cả nhóm v.v
Các Group API bao gồm các hình cũng tương tự như các API đối tượng Tuy nhiên, giữa chúng có sự khác nhau cơ bản: đối với Group API được sử dụng phổ biến trong chế độ Editor Mode, còn Object API được sử dụng phổ biến trong chế độ Viewer API
Chú ý: Hai chế độ Editor Mode và Viewer Mode sẽ được xem xét kỹ hơn trong
phần sau
Các API hình ảnh (Bitmap API): Cung cấp các phương thức thao tác với các hình
ảnh như lấy ảnh từ bộ phận nhớ loạn ảnh lên các object v.v
Hình ảnh thường được sử dụng để tô mầu và ghi chú các văn bản cho các đối tượng ảnh
Chú ý : Đối với API hình ảnh chúng ta sẽ xem kỹ hơn trong phần sau
- Các API ảnh động (Animation API): Là các phương thức cho phép tạo ra
ảnh động từ các ảnh rời rạc và cho phép lòng nó lên các đa giác Ngoài ra, nó còn có
thể sử dụng để tạo ra các hiệu ứng, ví dụ như tuyết, bóng của người đang chạy v.v
- Các API đa giác (Polygon API): Cho phép ta tạo ra và thao tác với các đa
giác như thay đổi số đỉnh, thay đổi nét tối đa giác, loạn hình ảnh lên đa giác v.v
- Các API engine : Là những phương thức cho phép tác động đến toàn bộ thế