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

MÔ PHỎNG HÀNH ĐỘNG NHÂN VẬT TRONG XÂY DỰNG MÔ HÌNH 3D

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.86 MB, 77 trang )

MỤC LỤC
MỤC LỤC ......................................................................................................... 1
LỜI GIỚI THIỆU............................................................................................... 2
CHƯƠNG I ........................................................................................................ 3
TỔNG QUAN VỀ THỰC TẠI ẢO VÀ 3D ANIMATION TRONG THỰC
TẠI ẢO ............................................................................................................. 3
1.1. Tổng quan về thực tại ảo.............................................................................. 3
1.1.1. Sơ lược lịch sử phát triển .......................................................................... 3
1.1.2. Các lĩnh vực ứng dụng của Thực tại ảo..................................................... 4
1.2 Hành động của nhân vật (3D Animation) trong thực tại ảo. .......................... 9
1.2.1. Animation trong thực tại ảo là gì? ......................................................... 10
1.2.2. Hiệu ứng Animation trong thực tại ảo .................................................... 10
1.2.3. Cơ sở mô phỏng 3D Animation ............................................................... 11
1.2.4. Các vấn đề gặp phải trong quá trình nghiên cứu .................................... 13
1.2.5. Hướng giải quyết .................................................................................... 14
CHƯƠNG II..................................................................................................... 15
KỸ THUẬT MÔ PHỎNG................................................................................ 15
2.1. Đặt vấn đề ................................................................................................. 15
2.2. Kỹ thuật mô phỏng .................................................................................... 15
2.2.1 Khởi tạo nhân vật và trang phục. ............................................................ 15
2.2.2 Điều khiển mô phỏng các trạng thái hành động của nhân vật.................. 23
2.2.3 Các vấn đề liên quan tới camera và các phím điều khiển. ........................ 39
CHƯƠNG III ................................................................................................... 49
CHƯƠNG TRÌNH MÔ PHỎNG...................................................................... 49
3.1. Bài toán ..................................................................................................... 49
3.2. Mục đích và yêu cầu bài toán..................................................................... 49
3.3. Phương pháp giải quyết bài toán ................................................................ 49
3.4 Một số kết quả bài toán............................................................................... 50
KẾT LUẬN...................................................................................................... 55
HƯỚNG PHÁT TRIỂN ĐỀ TÀI...................................................................... 56
PHỤ LỤC......................................................................................................... 57


TÀI LIỆU THAM KHẢO ................................................................................ 77

1


LỜI GIỚI THIỆ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) và những ứng dụng của nó trong công nghệ.
Trong thực tại ảo thì Particle lại là một thành phần vô cùng quan trọng. Chính vì
vậy mà đợt làm đồ án tốt nghiệp này, dưới sự hướng dẫn và giúp đỡ của Th.S
Nguyễn Văn Huân bộ môn Các hệ thống thông tin – Khoa công nghệ thông tin Đại hoc Thái Nguyên. Em được hướng dẫn tìm hiểu đề tài : “Mô phỏng hành
động nhân vật trong xây dựng mô hình 3D”
Báo cáo gồm 4 phần chính:
 Tổng quan về thực tại ảo và hành động của nhân vật trong thực tại ảo.
 Kỹ thuật mô phỏng.
 Xây dựng chương trình.
 Kết luận và hướng phát triển.

2


CHƯƠNG I

TỔNG QUAN VỀ THỰC TẠI ẢO VÀ 3D ANIMATION
TRONG THỰC TẠI ẢO
1.1. Tổng quan về thực tại ảo
Theo cách truyền thống, việc tương tác với máy tính được thực hiện thông
qua các thiết bị như bàn phím, chuột hay Joystick/Trackball/Keyboard/Styplus để
cung cấp thông tin đầu vào và sử dụng khối hiển thị trực quan (Video Display
Unit-VDU) để nhận thông tin đầu ra từ hệ thống. Với sự ra đời của các hệ thống
Thực tại ảo (Virtual Reality-VR), các phương thức giao tiếp mới được phát triển
cho phép người sử dụng tương tác một cách tích cực với máy tính.
Thực tại ảo là công nghệ sử dụng các kỹ thuật mô hình hoá không gian ba
chiều với sự hỗ trợ của các thiết bị đa phương tiện hiện đại để xây dựng một thế
giới mô phỏng bằng máy tính – môi trường ảo (Virtual Environment). Trong thế
giới ảo này, người sử dụng không còn được xem như người quan sát bên ngoài,
mà đã thực sự trở thành một phần của hệ thống. Một cách lý tưởng, người sử
dụng có thể tự do chuyển động trong không gian ba chiều, tương tác với các vật
thể ảo, quan sát và khảo cứu thế giới ảo ở những góc độ khác nhau về mặt không
gian. Ngược lại, môi trường ảo lại có những phản ứng tương ứng với mỗi hành
động của người sử dụng, tác động vào các giác quan như thị giác, thính giác, xúc
giác của người sử dụng trong thời gian thực và tuân theo những quy tắc vật lý tự
nhiên, làm anh ta có cảm giác như đang tồn tại trong một thế giới thực.
Mục tiêu của phần tổng quan này là đưa ra một số nét tổng quát về công
nghệ Thực tại ảo, trong đó bao gồm: một số nét chính trong lịch sử hình thành,
các lĩnh vực ứng dụng, phân loại hệ thống, các phương pháp & công cụ phần
mềm phổ biến tạo ra mô hình VR.
1.1.1. Sơ lược lịch sử phát triển
Mặc dù Thực tại ảo được mô tả như một công nghệ mới mang tính cách
mạng, nhưng ý tưởng về việc nhúng người sử dụng vào một môi trường nhân tạo
đã ra đời từ rất sớm. Thực tại ảo có thể được xem như một sự tiếp nối của những

3



ý tưởng đã lâu như hệ thống mô phỏng bay (Flight Simulation), rạp chiếu phim
màn ảnh rộng (như Cinerama hay IMAX), rạp chiếu phim nổi v.v… Sử dụng các
hệ thống như vậy, người quan sát có cảm giác hình ảnh đang sống động ngay
trước mắt mình.
Sự ra đời của các máy điện toán mini và bài báo khoa học của Ivan
Sutherland có tên “Màn hình tối tân” (Ultimate Display) vào năm 1965 được
xem là hai bước đột phá lớn vào thập kỷ 60 cho công nghệ Thực tại ảo. Trong bài
báo của mình, Sutherland đã tiên đoán sự phát triển của Thiết bị Hiển thị đội đầu
(Head Mounted Display-HMD) đầu tiên, mà sau đó chính ông đã tạo ra một thiết
bị như vậy, có tên là “Thanh kiếm của Damocles” (The Sword of Damocles).
Sutherland cũng nhận ra tiềm năng của máy điện toán trong việc tạo lập hình ảnh
cho hệ thống mô phỏng bay, trong khi những hình ảnh này trước đó được xây
dựng bằng Video Camera.
Những ý tưởng này được hai nhà khoa học Mỹ ở NASA là Fisher và
McGreevy kết hợp lại trong một dự án có tên là “Trạm làm việc ảo” (Visual
Workstation) vào năm 1984. Cũng từ đó NASA phát triển thiết bị Hiển thị đội
đầu có tính thương mại đầu tiên, được gọi là màn hình môi trường trực quan
(Visual Environment Display - VIVED), thiết kế dựa trên mẫu hình mặt nạ lặn
với các màn hình quang học mà hình ảnh được cung cấp bởi hai thiết bị truyền
hình cầm tay Sony Watchman. Sự phát triển của thiết bị này đã thành công ngoài
dự đoán, bởi NASA đã sản xuất được một thiết bị HMD có giá chấp nhận được
trên thị trường, và như vậy ngành công nghiệp Thực tại ảo đã ra đời.
1.1.2. Các lĩnh vực ứng dụng của Thực tại ảo
Mặc dù khái niệm về Thực tại ảo đã xuất hiện từ khá lâu, nhưng do nhiều
lý do về mặt công nghệ (cơ sở phần cứng phát triển, nghiên cứu, chi phí), phải
mất nhiều thời gian và nỗ lực để Thực tại ảo có được những thành tựu như ngày
nay. Hiện tại đây vẫn là lĩnh vực công nghệ nhiều tiềm năng xét về khía cạnh ứng
dụng. Một số lĩnh vực ứng dụng chính có khuynh hướng phát triển mạnh mẽ nhất

trong thời gian gần đây.
4


a. Kiến trúc và thiết kế thiết bị công nghệ
Một trong những lĩnh vực ứng dụng tiêu biểu nhất của Thực tại ảo là
thiết kế kiến trúc. Khả năng mô hình hoá thế giới thực của công nghệ Thực
tại ảo dường như đáp ứng một cách tự nhiên mục tiêu của ngành thiết kế kiến
trúc: đưa ra mô hình trực quan nhất có thể về hình ảnh công trình mong
muốn trong tương lai.

Hình 1 - Ứng dụng Thực tại ảo trong thiết kế kiến trúc
Việc xây dựng các mô hình không gian kiến trúc bằng hình ảnh lập thể với
đầy đủ mô tả trực quan về các hình khối kiến trúc của một căn nhà, cách bố trí
nội thất bên trong, thậm chí hoa văn cửa sổ hay màu sơn của tường, cùng với khả
năng cho phép khách hàng tự do tham quan, khảo sát căn nhà của họ trong tương
lai theo nhiều góc độ và vị trí, từ phòng này sang phòng khác thực sự đem lại
hiệu quả trực quan mang tính cách mạng trong lĩnh vực mang nhiều đặc điểm
nghệ thuật này.
b. Giải trí
Thị trường giải trí cũng là một ứng dụng tiêu biểu khác của các môi
trường Thực tại ảo. Trên thực tế, đây là lĩnh vực ứng dụng lớn nhất xét theo khía
cạnh lợi ích về tài chính. Rất nhiều công ty đang sản xuất ra các trò chơi có sử
dụng các nguyên lý Thực tại ảo. Số lượng người bị cuốn hút theo các trò chơi
như vậy, đặc biệt là giới trẻ, tăng theo cấp số nhân đánh dấu tiềm năng thương
mại to lớn của công nghệ Thực tại ảo trong lĩnh vực này.
5


Hơn thế, ngành công nghiệp trò chơi điện tử có những ảnh hưởng to lớn

tới lĩnh vực Thực tại ảo. Nó tạo ra động lực cần thiết để thúc đẩu sự phát triển
của rất nhiều phần cứng Thực tại ảo, chẳng hạn như card tăng tốc đồ hoạ
(Graphic Accelerator Cards). Nếu như chúng ta trở lại khoảng hơn 10 năm về
trước, thật khó có thể tìm thấy một card tăng tốc đồ hoạ có đủ năng lực tính toán
cần thiết cho phép tạo ra các ứng dụng Thực tại ảo thời gian thực. Tại thời điểm
đó, những chiếc card như vậy trị giá hàng ngàn đôla và chỉ đủ khả năng sinh
100.000 đa giác/giây ở mức độ phân giải trung bình. Những thiết bị phần cứng
khác như Găng tay dữ liệu (DataGloves) và Thiết bị hiển thị đội đầu (Head
Mounted Displays-HMD) cũng chịu ảnh hưởng phần nào của công nghiệp giải
trí. Tóm lại, các ứng dụng Thực tại ảo trong giải trí đã và đang đóng một vai trò
vừa là mục tiều vừa là động lực cho công nghiệp Thực tại ảo.

Hình 2 - Ứng dụng Thực tại ảo trong lĩnh vực giải trí
c. Giáo dục và Đào tạo
Phát triển trên nền công nghệ và kỹ thuật cao, Thực tại ảo tích hợp những
đặc tính làm cho bản thân nó có những tiềm năng vượt trội so với các công nghệ
đa phương tiện truyền thống khác: cho người sử dụng cảm nhận sự hiện diện của
mình trong môi trường do máy tính tạo ra bằng khả năng tương tác, tự trị
(Autonomy) của người dùng trong môi trường ảo, cũng như bằng những phản hồi
tức thời, trực quan từ phía môi trường ảo tới các giác quan của người sử dụng.
Hơn thế nữa, công nghệ Thực tại ảo cho phép mô phỏng những môi trường nguy
hiểm hay tốn kém như buồng lái máy bay, phòng thí nghiệm hoá chất.v.v…

6


Hình 3 – Mô hình huấn luyện bay sử dụng công nghệ Thực tại ảo
Tất cả những đặc tính này khiến công nghệ Thực tại ảo trở nên rất phù
hợp cho các ứng dụng có tính chất giáo dục hay đào tạo. Trong đó, những mô
hình trình diễn lập thế đóng vai trò quan trọng. Các vật thể trong thế giới ảo được

biểu diễn chính xác hơn nhiều so với các đối tượng phẳng (hình ảnh hai chiều) do
được bổ sung thêm chiều sâu. Kết quả là các trình diễn minh hoạ hay những thí
nghiệm cũng được mô phỏng chính xác hơn do có thể quan sát từ nhiều góc độ
khác nhau về mặt không gian, điều mà thế giới phẳng hai chiều không làm được.
Tính chất trực quan của bài giảng được nâng cao một bước làm tăng sự
hứng thú trong học tập cũng như khả năng ghi nhớ các khái niệm quan trọng
trong bài giảng. Xét về mặt này, khả năng tương tác với môi trường ảo là một
khía cạnh đáng lưu ý. Nếu thiếu đi khả năng tương tác (hai chiều) giữa môi
trường ảo và người tham dự, Thực tại ảo không gì khác hơn là một giao diện lập
thể ấn tượng nhưng không có sự sống. Trong các phòng thí nghiệm hay huấn
luyện ảo, thực hiện các thao tác trên các đối tượng trong môi trường ảo, nhận
được những phản hồi kịp thời và có nghĩa từ các vật thể và môi trường là một
trong những yếu tố tiên quyết khiến cho học viên có cảm nhận đang được trải
nghiệm trong những tình huống thực. Từ đó, học viên nắm bắt được nhanh chóng
và có ý thức hơn với những tính huống được học. Và cũng không phải là viễn
tưởng khi ta có thể nói rằng một ngày nào đó bài học của học sinh sẽ là những kỹ
năng sống được đào tạo trong môi trường ảo.
7


d. Y học
Y học là một trong những lĩnh vực ứng dụng tiềm năng trong công nghệ
Thực tại ảo. Cho đến nay, lĩnh vực nổi bật trong y học áp dụng thành công công
nghệ Thực tại ảo là giả lập giải phẫu (Surgical Simulation).

Hình 4 - Phẫu thuật ảo – Phương pháp
đào tạo phẫu thuật mới dùng công nghệ
Thực tại ảo

Trên cơ sở các kỹ thuật đồ hoạ máy tính và Thực tại ảo, hệ thống đào tạo

y học này bao gồm hai bộ phận cơ bản: Khối tương tác ba chiều là mô hình sinh
thể ảo cho phép người sử dụng thực hiện các thao tác giải phẫu thông qua các
dụng cụ giải phẫu ảo; Khối giao diện người dùng hai chiều cung cấp những thông
tin phản hồi trực quan từ mô hình trong quá trình giải phẫu cũng như những
thông tin hướng dẫn trong phiên đào tạo.
Phương pháp đào tạo có tính tương tác cao này mang nhiều ưu điểm so
với các phương pháp truyền thống như thực hành trên mô hình plastic hay trên
bệnh nhân thực. Thứ nhất, khác với phương pháp dùng mô hình plastic, sinh thể
giải phẫu ảo có khả năng cung cấp những thông tin phản hồi sinh học một cách
tự nhiên như một sinh thể sống thực, chẳng hạn như sự thay đổi về nhịp tim,
huyết áp… Điều này tạo cho học viên có cảm giác đang trải qua một ca mổ trong
một tình huống thực. Thứ hai, khác với thực hành trên bệnh nhân thật, những sai
lầm của học viên trong quá trình thực tập không phải trả giá bằng những thương
tổn thực trên cơ thể người bệnh. Điều này cũng làm giảm áp lực lên học viên khi
8


thực hiện phẫu thuật ảo. Từ đó, giúp họ tự tin và chủ động hơn trong học tập.
Phương pháp này còn cho phép các bác sĩ không ngừng nâng cao trình độ tay
nghề, kỹ năng phối hợp làm việc bằng cách liên tục đặt ra những giả định tình
huống bệnh, cập nhật những dữ liệu bệnh lý mới để thực hiện những phương
pháp mới, kỹ thuật mới trong điều trị. Bác sĩ cũng có thể tự lập kế hoạch mổ thử
trên bệnh nhân ảo trước khi mổ trên bệnh nhân thật do đó làm tăng mức độ an
toàn và hiệu quả điều trị, giảm thiểu sai lầm rủi ro đáng tiếc xảy ra.
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.
1.2 Hành động của nhân vật (3D Animation) trong thực tại ảo.
Trong VR thì các hiệu ứng 3D đóng một vai trò rất quan trọng trong việc
xây dựng các mô hình thế giới thực, trong đó các hiệu ứng hành động của các đối
tượng đóng một vai trò không thể thiếu. Không thể thiếu bởi vì một đối tượng sẽ

9


không tạo lên sự tương tác của nó với các đối tượng khác trong không gian thế
giới nếu như nó không di chuyển hay thay đổi “trạng thái” (chính là các hiệu
ứng) tại vị trí của nó. Như vậy sẽ tạo ra cảm giác nhàm chán cho người xem,
cũng như làm cho không gian thế giới ảo không được linh động, không có “sức
sống”, mà nó sẽ làm người xem nhầm tưởng như đang coi một bức ảnh với
những cảnh vật tĩnh. Vì vậy mà có thể nói không một đối tượng, sự vật nào trong
thế giới là không liên quan đến sự hành động. Ở đây có thể ví dụ như : Một cây
chịu sức thổi của gió sẽ nghiêng ngả theo chiều gió, một người chạy bộ trên
đường với những đoạn đường khúc khủy, lên dốc hay xuống dốc thì lúc đó cũng

sẽ thấy rõ được sự thay đổi về vận tốc…..Nhận thấy tầm quan trọng không thể
thiếu đó mà chúng ta càng phải nghiên cứu và tìm hiểu mô phỏng các hiệu ứng
hành động của các đối tượng trong môi trường thực tại ảo. Hiện nay có rất nhiều
hiệu ứng khác nhau về đối tượng mà ở đây tác giả chọn việc mô phỏng hành
động của nhân vật (3D Animation) trong môi trường không gian ảo để phân tích
và mô phỏng.
1.2.1. Animation trong thực tại ảo là gì?
- 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.
- 3D Animation: Là sự kết hợp các hiệu ứng của các Animaition để tạo
ra các hành động của đối tượng trở nên mềm mại, uyển chuyển trong quá trình
chuyển động cũng như có sự thay đổi về trạng thái trong môi trường không
gian 3D.
1.2.2. Hiệu ứng Animation trong thực tại ảo .
Hiệu ứng Animation ở đây chúng ta hiểu nó là việc sử dụng rất nhiều các
cử chỉ, hành động có thể là giống hoặc khác nhau, chúng ta có thể thiết lập, thay
đổi trang phục, tính chất, kích thước, vận tốc…cho các animation (đối tượng) và
cho chúng chuyển động tự nhiên hoặc tuân theo một quy luật nào đó để tạo thành
các hiệu ứng 3D trong môi trường thực tại ảo. Các hiệu ứng animation được tạo

10


ra nhằm miêu tả các động tác vận động hay cử chỉ của đối tượng mà ở đây đồ án
đề cập cụ thể lên một nhân vật. Ví dụ: Một người chạy bộ trên một con đường có
những đoạn dốc, khi người chạy lên dốc thì tốc độ sẽ chậm lại, còn khi chạy
xuống dốc tốc độ sẽ giảm, hoặc thể hiện bằng nhịp thở nhanh hay chậm khi nhân
vật di chuyển….

1.2.3. Cơ sở mô phỏng 3D Animation
Cơ sở kỹ thuật của mô phỏng hiệu ứng 3D Animation chính là dựa vào
các tính chất vật lý và sự tương tác của các đối tượng trong không gian thế giới.
Dưới đây tác giả xin trình bày một số tính chất vật lý cơ bản của hiệu ứng 3D
Animaiton đối với một nhân vật cụ thể. Ở đây sẽ lấy mô hình một nhân vật đang
chạy trên một đoạn đường và thực hiện các động tác khác nhau. Một số tính chất
vật lý cơ bản sau:
a. Chịu áp đặt của trọng lực
Đây là một tính chất hết sức quan trọng, nhờ có tính chất này mà nhân vật
sẽ nên hiện thực hơn. Tính chất này làm cho nhân vật luôn có xu hướng chuyển
động tiếp cận nền nếu chúng ta thiết lập trị số này mang giá trị dương còn ngược
lại nếu ta thiết lập giá trị này mang giá trị âm. Chính vì thế mà chúng ta có thể
thiết lập giá trị này sao cho phù hợp với ý đồ của chúng ta để có thể tạo nên sự
tiếp xúc của chân nhân vật với nền trong mỗi bước di chuyển hoặc tiếp xúc giữa
thân nhân vật với nền khi nhân vật bị ngã xuống.
b. Chịu tác dụng của lực hấp dẫn giữa các đối tượng.
Đây cũng là một tính chất vật lý rất phổ biến không chỉ với các 3D
Animation, mà còn rất phổ biến với tất cả các đối tượng trong không gian thế
giới. Tính chất này sẽ làm cho các đối tượng luôn nằm trong không gian giới hạn
của thế giới và đó chính là tương tác của môi trường đối với các đối tượng. Nhờ
có tính chất này mà các đối tượng sẽ chuyển đông trong thế giới được tinh tế và
thực hơn tùy thuộc vào giá trị mà chúng ta thiết lập cho tính chất này.
c. Chịu tác dụng của lực ma sát và lực đàn hồi
Đây là hai tính chất rất cũng rất quan trọng trong việc xử lý va chạm giữa
các đối tượng hay ở đây là nhân vật của Animation với nhau hoặc của các đối

11


tượng khác trong thế giới. Hai lực này quyết định xem sau khi các đối tượng va

chạm vào nhau hoặc va chạm vào các đối tượng khác thì chúng chuyển động như
thế nào và tốc độ sau va chạm thay đổi ra sao? Hai tính chất này góp phần làm
tăng thêm tính thực cho các đối tượng trong quá trình chuyển động mà rõ hơn ở
đây là nó sẽ quyết định khi nào nhân vật di chuyển hay đứng yên tại chỗ tùy
thuộc vào tham số của hai lực đó lớn hay nhỏ mà ta có thể thiết lập khi nhân vật
di chuyển trên những nền đường khác nhau. Hai tính chất này sẽ được làm rõ hơn
trong quá trình xây dựng chương trình.
d. Thời gian thực hiện một hành động
Thời gian thực hiện một trạng thái chính là khoảng thời gian từ khi đối
tượng bắt đầu thay đổi từ một trạng thái cho đến khi thực hiện hoàn thành một
hành động của trạng thái đó. Khoảng thời gian này rất quan trọng nó thể hiện tất
cả những biến đổi của nhân vật như: trang phục, tốc độ, kích thước, hướng
chuyển động…Tùy thuộc vào từng hiệu ứng cụ thể mà chúng ta co thể thiêt lập
khoảng thời gian này là dài hay ngắn.
e. Vận tốc của nhân vật
Vận tốc của nhân vật quyết định tốc độ chuyển động của nhân vật trong
không gian. Vận tốc đó góp phần làm cho người quan sát có thể thấy được sự
thay đổi vị trí của nhân vật trong không gian thế giới, mặc khác nó sẽ cho thấy
tác dụng rõ ràng của các lực đàn hồi và ma sát của môi trường đối với nhân vật.
Vận tốc này nhanh hay chậm là phụ thuộc vào từng trạng thái hành động hoặc
từng môi trường mà nhân vật sẽ di chuyển qua.
Ví dụ: Như khi nhân vật di chuyển trên nền đường cát thì tốc độ sẽ phải
chậm hơn so với khi di chuyển trên nền đường nhựa vì ma sát của nền đường cát
sẽ lớn hơn nhiều so với nền đường nhựa.
g. Hướng chuyển động của nhân vật
Hướng chuyển động của nhân vật chính là hướng chuyển động mà nhân
vật có thể thực hiện các trạng thái hành động khác nhau của mình; tiến lên trước,
lùi về phía sau hay sang trái, sang phải. Hướng chuyển động của nhân vật ngoài
việc thể hiện sự chuyển động tự nhiên thì có thể điều chỉnh theo ý muốn của


12


người xây dựng chương trình mô phỏng, ngoài ra nó còn thể hiện các góc nhìn
của nhân vật đối với không gian thế giới.
h. Kích thước của nhân vật
Kích thước của nhân vật đóng vai trò quan trọng trong quá trình mô phỏng
hành động nhân vật, nó cho thấy sự thay đổi về trạng thái hành động ở các góc
nhìn khác nhau, chính điều đó sẽ dẫn theo sự thay đổi tự động các thuộc tính của
nhân vật mỗi khi kích thước thay đổi.
Ví dụ khi nhân vật nhỏ lại thì nó sẽ chuyển động chậm hơn so với kích
thước khi lớn, vì vậy mà các bước chân của nhân vật sẽ chuyển động nhanh hơn
để đạt được vận tốc ban đầu khi ta nhìn ở kích thước lớn.
k. Trang phục của nhân vật
Trang phục của nhân vật chính là lớp bề ngoài và là điểm nhấn để tạo lên
phong cách của nhân vật. Sự thay đổi trang phục ở từng thời điểm khác nhau sẽ
cho thấy mỗi trạng thái riêng tại thời điểm và vị trí nhân vật đang xét. Chính vì
vậy mà làm cho các hành động của nhân vật được mềm mại và uyển chuyển hơn,
thật hơn, tinh tế hơn trong con mắt người quan sát quá trình di chuyển giữa các vị
trí, trạng thái khác nhau của nhân vật trong không gian thế giới ảo.
Ví dụ: Khi bình thường nhân vật khi chưa bị tấn công sẽ mặc một trang
phục màu trắng, còn khi bị thương sẽ có thêm những vết máu ở chỗ bị tấn công.
l. Không gian, cảnh vật môi trường tương tác với nhân vật.
Không gian, cảnh vật môi trường sẽ có tác dụng rất lớn giúp cho người
xem thấy được rõ các hiệu ứng và trạng thái của nhân vật trong các trình tự di
chuyển cũng như hành động của nhân vật. Không gian, cảnh vật được phối hợp
các màu sắc đường nét, vị trí sao cho làm nổi bật hẳn nhân vật mô phỏng trong
môi trường tương tác giữa nhân vật với thế giới.
1.2.4. Các vấn đề gặp phải trong quá trình nghiên cứu
Thực tại ảo là một lĩnh vực khá mới mẻ đối với việt nam chúng ta nói

chung và bản thân tác giả của đồ án này nói riêng. Chính vì vậy mà trong quá
trình tìm hiểu, nghiên cứu và cài đặt tác giả đã gặp phải rất nhiều khó khăn, đặc
biệt là nguồn tài liệu tham khảo.

13


3D Animation là một khái niệm tương đối rộng vì vậy mà nó đòi hỏi một
khối lượng kiến thức rất lớn đối với những người muốn tìm hiểu và nghiên cứu
Animation.
3D Animation mô phỏng hành động của bất kì đối tượng nào trong không
gian thế giới ảo, vì thế chúng ta muốn tạo ra một hiệu ứng để mô phỏng một tính
chất, một trạng thái hành động cụ thể của đối tượng nào thì trước tiên ta phải xây
dựng lên hình tượng nhân vật đó. Mà việc tạo ra một 3D animation động tương
ứng với một trạng thái hành động là một vấn đề hết sức khó khăn và phức tạp,
tiêu tồn nhiều thời gian và công sức của người lập trình..
1.2.5. Hướng giải quyết
Tìm hiểu dựa trên nhưng tài liệu có liên quan tới thực tại ảo và 3D
Animation. Tài liệu cụ thể sẽ được tác giả chỉ dẫn cụ thể ở phần sau.
Tìm hiểu trạng thái hành động di chuyển nói chung và của các trạng thái
hành động nói riêng của nhân vật trong một hoàn cảnh cụ thể.
Có thể sử dụng các ảnh của nhân vật với các tư thế rồi ghép chúng lại để
xây dựng lên hình tượng nhân vật. Sau đó lập trình điều khiển để tạo ra các trình
tự hành động của nhân vật đối với mỗi trạng thái cụ thể. Đây là một giải pháp có
thể nói là cũng rất hiệu quả và tiết kiệm thời gian.

14


CHƯƠNG II

KỸ THUẬT MÔ PHỎNG
2.1. Đặt vấn đề
Để tạo ra nhân vật với trang phục của nhân vật và với các trạng thái hành
động của nhân vật trong môi trường 3D thì chúng ta phải kêt hợp rất nhiều thủ
tục khác nhau trong quá trình xây dựng chương trình mô phỏng. Ở đây mỗi thủ
tục sẽ thực hiện một chức năng riêng biệt khác nhau, để đảm bảo khi kết hợp với
nhau sẽ được một chương trình mà trong đó các hành động, mô hình của nhân
vật phải đồng bộ, các phần bộ phận cũng như các hành động phải mềm mại, hiện
thực,….Chính vì vậy mà trong đồ án này, tác giả đã nghiên cứu một số kỹ thuật
mô phỏng hành động của nhân vật 3D trong môi trường thực tại ảo.
2.2. Kỹ thuật mô phỏng
Như đã biết một nhân vật khi hành động thì nó sẽ thực hiện rất nhiều các
động tác khác nhau trên cơ thể, vì vậy mà việc xây dựng nó đòi hỏi rất nhiều kỹ
thuật của người mô phỏng. Trong đồ án này tác giả xin trình bày một phương
pháp mô phỏng các hiệu ứng hành động của nhân vật dựa trên các kỹ thuật xử lý
và mô phỏng ảnh động. Để có thể mô phỏng được các hiệu ứng hành động của
nhân vật, chúng ta đi tìm hiểu và nghiên cứu các thuật toán quan trọng sau:


Khởi tạo nhân vật và trang phục .



Điểu khiển mô phỏng các trạng thái hành động của nhân vật.



Các vấn đề liên quan tới camera và các phím điều khiển.

2.2.1 Khởi tạo nhân vật và trang phục.

a.Khởi tạo nhân vật
Để khởi tạo nhân vật chúng ta cần thực hiện theo bước cơ bản sau:
* Xác định vị trí, chiều cao, độ cao, vùng nền
Mọi đối tượng trong thế giới đều được xây dựng và tạo lên bắt đầu bằng
các polygon (đa giác). Sự kết hợp của các khối polygon sẽ làm cơ sở để xây dựng
một nhân vật. Trong đồ án này do chỉ đi sâu về việc điều khiển về trạng thái hành
động do đó mà việc xây dựng nhân vật sẽ dựa vào các hình mẫu đã được xây

15


dựng từ các ảnh hay nói đúng hơn là tập hợp ảnh chứ không xây dựng ở mức cơ
sở từ các polygon nhưng sẽ dựa vào các điểm polygon trên nhân vật để xác định
vị trí cũng như các lực tương tác với nhân vật.
Trước tiên ta sẽ dùng hàm sau để khởi tạo cho nhân vật
player::player()
{
}
player::~player()
{
}
Sau khi đã có hàm khởi tạo ta sẽ dùng hàm đó để tiếp tục load các ảnh đã
có sẵn bằng hàm sau :
player::init(char *file_name, char *bitmap_path)

(1)

{
m_player_object = Morfit_object_create_from_file(file_name);
}

Trong đó:
+ m_player_object là một biến được tạo ra cho một đối tượng nhân vật, và
được hai báo theo chương trình của morfit có dạng sau: DWORD _player_object;
+ char *file_name: tên file chứa hình ảnh nhân vật có định dạng bitmap
hoặc jpg.
+ char *bitmap_path: đường dẫn tới file ảnh đó.
Như vậy ta sẽ load được hình ảnh và thấy được nhân vật trong không gian
thế giới. Ngoài ra trong hàm (1) này ta có thể khai báo các biến để xác định một
vài trạng thái ban đầu cho nhân vật như:
m_speed = 0;

// tốc độ khi nhân vật đứng nguyên không di chuyển

m_friction = 0.8; // hệ số ma sát
m_max_speed = 50; // tốc độ tối đa khi di chuyển (khi chạy)
m_min_speed = 2; // tốc độ tối thiểu (khi đi bộ hoặc lên dốc)
m_skin_id = 0; //trang phục trong trạng thái bình thường.

16


Như đã nói việc xác định vị trí của nhân vật trong không gian thế giới là
vô cùng quan trong và nó được xác định chủ yếu vào các hàm sau:
+ Hàm tạo véc tơ trên 3 trục tọa độ không gian x,y,z ( hay chính là việc
xác định tọa độ trong không gian thế giới):
void set_vector(double vector[3], double x, double y, double z);
{
vector[0] = x;
vector[1] = y;
vector[2] = z;

}
Việc khởi tạo véc tơ để sau đó gắn vào nhân vật sẽ giúp cho dễ dàng trong
quá trình điều khiển theo các góc, hướng di chuyển, độ nghiêng …của nhân vật.
+ Hàm xác định một điểm dưới nền :
double point_below[3];
get_polygon_below(point_below);
Hàm này sẽ cho phép tạo và xác định một điểm dưới nền tạo tiền đề cho
việc xây dựng xác định một vùng (hay một khoảng vị trí dưới nền).
point_below[3] được khai báo tương ứng với các trục tọa độ xyz.
+ Hàm xác định một vùng dưới nền:
DWORD player::get_polygon_below(double point_below[3])
{
double location[3];
Morfit_object_get_location(m_player_object,&location[0], &location[1],
&location[2]); // (2)
double up_location[3], down_location[3];
set_vector(up_location, location[0], location[1], 1000000);
set_vector(down_location, location[0], location[1], -1000000);
}
Biến double location[3]; được khai báo tương ứng với vị trí tọa độ không
gian. (2) hàm này sẽ cho phép xác định vị trí của nhân vật. Nó kết hợp với các
véc tơ tọa độ sẽ càng làm dễ dàng trong việc xác định vị trí để ta có thể điểu
khiển nhân vật tiến, lùi hay di chuyển ngang …
17


Ngoài ra có thể kết hợp với biến DWORD terrain_poly, blocking_object;
để có thể tạo ra một cờ điểu khiển phát hiện va chạm một trạng thái nhân vật có
thể thực hiện thông qua đoạn mã sau:
DWORD terrain_poly, blocking_object;

int

flag=Morfit_object_is_movement_possible(m_player_object,

up_location, down_location, &terrain_poly, point_below, &blocking_object);
if(flag==YES)
{
printf("co loi xay ra, hien gio la nen duoi !!!\n");
return(NULL);
}
return(terrain_poly);
Việc xác định vùng nền được xác định như sau: Lấy một điểm cao phía
trên (up_location) và một điểm thấp phía dưới (down_location) của nhân vật, sau
đó tìm điểm trên nền mà nhân vật có thể bước tới, tiếp theo tìm những điểm giao
giữa đường thẳng [up_location - down_location] và địa hình của thế giới. Do đó
sẽ xác định được một vùng nền mà nhân vật có thể di chuyển qua.
Sau khi xác định được vị trí và tọa độ của nhân vật ta sẽ khai báo một biến
để lưu lại vị trí như sau: double save_location[3];
+ Hàm xác định chiều cao chính giữa của nhân vật:
Trong trường hợp bạn muốn xác định phần giữa cơ thể của nhân vật để
theo một chiều cao trên track, thì bàn chân của nhân vật phải được đặt ở trên sàn.
Điều này được minh hoạ bằng hình vẽ sau:

Hình 5. Xác định phần giữa cơ thể của nhân vật
theo một chiều cao trên track
18


Ở hình vẽ minh họa trên, chúng ta xác định điểm giữa của đối tượng theo
một track bằng một nửa chiều cao của nhân vật trên mặt đất. Điều này đã chứng

tỏ là bàn chân của nhân vật ở trên sàn. Để tính được chiều cao của nhân vật,
chúng ta sử dụng hàm sau:
Morfit_object_get_bounding_box(DWORD

m_player_object,

double

box[2][3]);
Tiếp theo là tính toán giá trị nhỏ nhất và giá trị lớn nhất của các tọa độ x,
y, z và đặt chúng vào một mảng với tên là box như sau:
box[0][0] là giá trị nhỏ nhất X
box[0][1] là giá trị nhỏ nhất Y
box[0][2] là giá trị nhỏ nhất Z
box[1][0] là giá trị lớn nhất X
box[1][1] là giá trị lớn nhất Y
box[1][2] là giá trị lớn nhất Z
Chiều cao của nhân vật được xác định như sau:
double box[2][3];
Morfit_object_get_bounding_box(m_player_object,box);
double height = (box[1][2]-box[0][2]);
+ Hàm xác định độ cao của nhân vật (hiểu là độ cao so với mực
nước biển):
Khi xác định được chiểu cao chính giữa của nhân vật thì lúc này việc xác
định độ cao của nhân vật đơn giản hơn rất nhiều. Độ cao của nhân vật chính là độ
cao của nền (điểm giao giữa chân và nền) cộng với chiều cao tính từ chính giữa
nhân vật xuống bên dưới nền (m_height/2) và được xác định như sau:
double new_altitude = point_below[2] + m_height / 2;
Vấn đề khó khăn hơn ở đây là khi đạt tới 1/3 chiều cao của nhân vật thì
không thể làm giảm xuống được nữa vì vậy khi đó ta sẽ lưu lại trạng thái và vị trí

của nhân vật, còn không thì ta sẽ được một vị trí mới ở một độ cao mới có thể
xem qua đoạn mã sau:
if(new_altitude > save_location[2] + m_height / 3)

19


{
Morfit_object_set_location(m_player_object,save_location[0],
save_location[1], save_location[2]);
m_speed = -m_speed * 0.5;
}
else
{
double location[3];
Morfit_object_get_location(m_player_object, &location[0], &location[1],
&location[2]);
Morfit_object_set_location(m_player_object,

location[0],

location[1],

new_altitude);
}
* Xác định tỉ lệ kích thước theo, tỉ lệ kích thước mặc định của
nhân vật
Tỉ lệ kích thước của nhân vật đóng vai trò vô cùng quan trọng mỗi khi
nhân vật thay đổi trạng thái di chuyển, nó sẽ làm cho kích thước của nhân vật
thay đổi theo tỉ lệ phù hợp đối với hoạt cảnh không gian thế giới. Vì vậy mà ta có

thể làm cho kích thước đó thay đổi một cách mặc định hoặc theo sự điều chỉnh
tùy ý bởi một số hàm sau:
+ Hàm thay đổi tỉ lệ kích thước theo mặc định (scale_default):
void player::scale_default(void)
{
double scale[3]={3,3,3};
Morfit_object_set_scale(m_player_object,scale);
set_parameters_according_to_scale();
}
Trong đó: double scale[3]={3,3,3}; là biến tỉ lệ kích thước được mặc định
với giá trị tương ứng trên 3 trục tọa độ là 3. Và hàm thay đổi tỉ lệ mặc định được
gọi ra bằng hàm của Morfit : Morfit_object_set_scale(m_player_object,scale);

20


+ Hàm thay đổi tỉ lệ kích thước theo các tham số của các trục tọa độ:
Việc thay đổi có thể thực hiện trên từng trục X, Y, Z (X_AXIS, Y_AXIS,
Z_AXIS) hoặc có sự kết hợp của các trục khác (ví dụ: scale(1.1,
X_AXIS+Y_AXIS))
void player::scale(double factor, int axis)
{
double scale[3];
Morfit_object_get_scale(m_player_object,scale);
if(axis & X_AXIS)
scale[0]*=factor;
if(axis & Y_AXIS)
scale[1]*=factor;
if(axis & Z_AXIS)
scale[2]*=factor;

Morfit_object_set_scale(m_player_object,scale);
set_parameters_according_to_scale();
}
Ở đây factor là hệ số mà ta có thể tùy chọn theo điều kiện cần, do đó ta sẽ
có được một nhân vật có kích thước phù hợp trong mọi trường hợp.
+ Hàm thiết lập tham số thay đổi theo tỉ lệ kích thước:
void player::set_parameters_according_to_scale()
{
double scale[3];
Morfit_object_get_scale(m_player_object, scale);
m_acceleration = ACCELERATION * scale[2] / 5;
if(m_acceleration < ACCELERATION)
m_acceleration = ACCELERATION;
m_max_speed = MAX_SPEED * scale[2] / 3;
m_min_speed = MIN_SPEED * scale[2] / 3;
//set height

21


double box[2][3];
Morfit_object_get_bounding_box(m_player_object, box);
m_height = box[1][2] - box[0][2];
}
Khi tỉ lệ kích thước thay đổi thì các tham số thuộc tính của nhân vật như
tốc độ, gia tốc, trang phục… cũng sẽ thay đổi theo. Ví dụ một nhân vật khi bị thu
nhỏ lại thì nó sẽ di chuyển chậm hơn nhưng các bước chân sẽ nhanh hơn (ở đây
ta nói tới tốc độ thực hiện một bước chân so với khi chưa thu nhỏ kích thước).
Ở đây gia tốc được đặt giá trị là 4: #define ACCELERATION 4
b. Trang phục của nhân vật

Trang phục là một phần không thể thiếu trong quá trình xây dựng nhân vật
khi mô phỏng, nó quyết định và có tầm quan trọng để tạo lên tính cách, diện
mạo, tính đồng bộ… của nhân vật đối với không gian thế giới. Vì vậy việc tạo
và xây dựng trang phục cho nhân vật cũng là một phần đáng lưu ý của tác giả
trong đề tài này.
Trước tiên ta sẽ khai báo các biến liên quan đến trang phục:
int

m_skin_id;

DWORD

m_skin_bitmap, m_pain_bitmap;

Biến m_skin_id có giá trị bằng 0 khi nhân vật có trang phục thường và có
giá trị bằng 1 khi nhân vật trong tình trạng bị thương.
m_skin_bitmap, m_pain_bitmap lần lượt là các biến khai báo các ảnh
trang phục của nhân vật ở tình trạng bình thường và tình trạng bị thương.
Việc thay đổi trang phục của nhân vật được hiểu chính là việc thay đổi các
ảnh để có thể làm cho trang phục của nhân vật thay đổi như vậy khi đó nhân vật
sẽ có một trang phục mới và ta có thể dễ dàng chuyển đổi từ trạng thái bình
thường sang trạng thái bị thương và ngược lại mà ta có thể thấy rõ hơn qua đoạn
mã sau:
void player::replace_skin(void)
{
if(m_skin_id==0)

22



{
Morfit_object_set_bitmap(m_player_object, m_pain_bitmap);
m_skin_id=1;
return;
}
Morfit_object_set_bitmap(m_player_object, m_skin_bitmap);
m_skin_id=0;
}
2.2.2 Điều khiển mô phỏng các trạng thái hành động của nhân vật
Điều khiển mô phỏng các trạng thái hành động của nhân vật là phần chính
của đề tài này vì vậy mà tác giả sẽ đi sâu vào các hàm và đoạn mã mô phỏng.
Việc xây dựng các trạng thái hành động của nhân vật phụ thuộc vào nhất
nhiều các yếu tố như lực ma sát, trọng lực, hướng di chuyển, trình tự di
chuyển...do đó dưới đây là các hàm xác định các yếu tố đó.
a. Hàm xác định lực ma sát và trọng lực tác dụng lên nhân vật.
Trước tiên ta phải hiểu rằng lực ma sát luôn luôn có tác dụng làm cản và
làm giảm tốc độ chuyển động của một đối tượng trong môi trường của nó. Với
mỗi môi trường và trọng lượng của đối tượng khác nhau mà lực ma sát tác dụng
sẽ lớn hay nhỏ khác nhau. Ví dụ như một đối tượng chuyển động trên mặt nền
đường nhựa nhẵn (có hệ số ma sát nhỏ) sẽ chuyển động nhanh hơn một đối tượng
chuyển động trên mặt nền cát (có hệ số ma sát lớn).
Như đã nói khối lượng (mà ở đây muốn nói tới chính là trọng lượng của
nhân vật) là thành phần quan trọng trong công thức tính lực ma sát vì nó có liên
quan tới trọng lực. Công thức tính lực trọng lực như sau :
player_mass*earth_gravity*sin(alpha)
Trong đó:
+ player_mass: Khối lượng của nhân vật (kí hiệu là m)
+ earth_gravity: Lực hút của trái đất (kí hiệu là g và thường có giá trị
g=9,18)
+ alpha : Góc nghiêng của nhân vật đối với mặt ngang nền


23


Sau khi đã xác định được trọng lực thì việc tính toán lực ma sát được trở
lên dễ dàng. Sau đây là công thức tính lực ma sát:
gravity_factor * gravity_force
Trong đó:
+ gravity_force : Trọng lực
+ gravity_factor: hệ số ma sát
Sau đây là một hàm được xây dựng để xác định trọng lực và lực ma sát
của nhân vật trong môi trường mô phỏng:
double player::get_friction_and_gravity_factor()
{
double plane[4];
double point_below[3];
DWORD polygon = get_polygon_below(point_below); (3)
if(polygon==NULL)
return(m_friction);
Morfit_polygon_get_plane(polygon, plane);

(4)

double gravity_direction[3];
double z_vector[3] = {0,0,1};
// quá trình xác định phương và hướng một véc tơ trọng lực (5)
Morfit_math_cross(plane, z_vector, gravity_direction);
Morfit_math_cross( plane, gravity_direction, gravity_direction);
Morfit_math_normalize_vector(gravity_direction);
if(plane[2] < -1 || plane[2] > 1)

return(m_friction); //trả về ma sát của môi trường
// tính trọng lực

(6)

double cos_alpha = plane[2];
double alpha = acos(cos_alpha);
double gravity_force = sin(alpha); //m*g*sin(alpha) .
// xác định hướng của nhân vật
double direction[3];

24


Morfit_object_get_direction(m_player_object,&direction[0],
&direction[1], &direction[2]);
// xác định hệ số ma sát (7)
double gravity_factor = Morfit_math_product (gravity_direction, direction);
if(m_speed < 0)
gravity_factor = -gravity_factor;
//Nhân vật sẽ ngã khi có một tốc độ quá lớn và chịu trọng lực quá lớn
if((m_sequence_id_num != FALL) && (gravity_factor * gravity_force >
0.3) && (fabs(m_speed) > 0.8 * m_max_speed))
{
m_current_sequence = set_animation_sequence("death",300);
m_sequence_id_num = FALL;
}
// tổng lực tác dụng nhân vật

(8)


double result = m_friction+gravity_factor * gravity_force;
if(result < 0)
result = 0;
return(result);
}
Trong đó:
+ m_friction: biến toàn cục khai báo ma sát của môi trường tác động tới
nhân vật
(3) : Xác định một vùng nền bên dưới nơi mà chân của nhân vật sẽ di
chuyển tới.
(4): Xác định một vùng nền trên mặt nghiêng mà ta sẽ dựa vào đây để
xác định.
(5): Quá trình xác định một véc tơ chính của trọng lực
(6): Quá trình tính trọng lực tác dụng lên nhân vật
(7): Xác định hệ số ma sát
(8): Tổng hợp các lực tác dụng lên nhân vật

25


×