69 Trang 10 LỜI MỞ ĐẦU Cùng với sự phát triển của công nghệ đồ họa, trong đó công nghệ thực tại ảo đã góp phần vào tạo ra nhiều ứng dụng trong các lĩnh vực của đời sống, gắn vào các sả
Trang 1ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
DƯƠNG ĐỨC VƯƠNG
NGHIÊN CỨU KỸ THUẬT ĐIỀU KHIỂN NHÂN VẬT
TỰ ĐỘNG VÀ ỨNG DỤNG
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Thái Nguyên, năm 2023
Trang 2ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC
PGS.TS NGUYỄN VĂN HUÂN
Thái Nguyên, năm 2023
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan toàn bộ nội dung bản luận văn này là do tôi tự sưu tầm, tra cứu và sắp xếp cho phù hợp với nội dung yêu cầu của đề tài
Nội dung luận văn này chưa từng được công bố hay xuất bản dưới bất
kỳ hình thức nào và cũng không được sao chép từ bất kỳ một công trình nghiên cứu nào
Tất cả phần mã nguồn của chương trình đều do tôi tự thiết kế và xây dựng, trong đó có sử dụng một số thư viện chuẩn và các thuật toán được các tác giả xuất bản công khai và miễn phí
Nếu sai tôi xin hoàn toàn chịu trách nhiệm
Thái Nguyên, ngày tháng năm 2023
Người cam đoan
Dương Đức Vương
Trang 4LỜI CẢM ƠN
Trước hết tôi xin gửi lời cảm ơn sâu sắc đến Thầy hướng dẫn khoa học PGS.TS Nguyên Văn Huân về những chỉ dẫn khoa học, định hướng nghiên cứu và tận tình hướng dẫn tôi trong suốt quá trình làm luận văn
Tôi xin cảm ơn các Thầy Cô giáo trong Khoa Công nghệ thông tin, các Thầy Cô giáo trong trường Đại học Công nghệ thông tin và Truyền thông – Đại học Thái Nguyên đã cung cấp cho tôi những kiến thức vô cùng quý báu
và cần thiết trong suốt thời gian học tập tại trường để tôi có thể thực hiện và hoàn thành tốt luận văn này
Với thời gian nghiên cứu còn hạn chế, ngôn ngữ còn khiêm tốn, luận văn không tránh khỏi những thiếu sót, tôi rất mong nhận được các ý kiến đóng góp chân thành từ các Thầy Cô giáo, đồng nghiệp và bạn bè
Cuối cùng, tôi xin cảm ơn gia đình và bạn bè, những người đã luôn ủng hộ và động viên tôi, giúp tôi yên tâm và có tâm lý thuận lợi nhất để tôi nghiên cứu luận văn này Tuy nhiên do giới hạn về mặt thời gian và kiến thức nên luận văn chắc chắn sẽ không tránh khỏi những sai sót ngoài ý muốn Tôi rất mong nhận được sự thông cảm và đóng góp ý kiến của các Thầy Cô giáo, đồng nghiệp và bạn bè
HỌC VIÊN
Dương Đức Vương
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
MỤC LỤC iii
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT v
DANH MỤC CÁC HÌNH VẼ vi
LỜI MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ ĐIỀU KHIỂN NHÂN VẬT CHUYỂN ĐỘNG 4
1.1 Các khái niệm cơ bản 4
1.1.1 Thực tại ảo 4
1.1.2 Một số lĩnh vực ứng dụng của thực tại ảo 4
1.2 Lý thuyết về các nguyên tắc chuyển động của nhân vật 9
1.2.1 Vai trò của việc tạo chuyển động 9
1.2.2 Cơ sở lý thuyết của tạo chuyển động 9
1.2.3 Một số bài toán chuyển động 11
1.3 Bài toán điều khiển nhân vật chuyển động và ứng dụng 14
1.4 Giới thiệu công cụ và ngôn ngữ lập trình 14
1.4.1 Công cụ Unity 3D 14
1.4.2 Tổng quan về ngôn ngữ lập trình C# 15
1.5 Tiểu kết chương 1 16
CHƯƠNG 2: CÁC THUẬT TOÁN THÔNG DỤNG ĐIỀU KHIỂN CHUYỂN ĐỘNG NHÂN VẬT 17
2.1 Cơ sở toán học về mô phỏng chuyển động trong không gian 3D 17
2.1.1 Phép tịnh tiến 17
2.1.2 Phép quay 17
2.1.3 Phép tỉ lệ 22
2.1.4 Phép đối xứng 22
2.2 Lập trình khởi tạo mô hình nhân vật 3D vào không gian 3D 23
Trang 62.3 Kỹ thuật gán xương cho từng bộ phận của nhân vật 3D 26
2.4 Thuật toán điều khiển dịch chuyển tiến nhân vật FK 28
2.5 Thuật toán điều khiển dịch chuyển lùi nhân vật IK 31
2.5.1 HI (History-Independent) solver 40
2.5.2 HD (History Dependent) Solver 41
2.5.3 IK Limb Solver 42
2.5.4 SplineIK Solver 42
2.6 Một số kỹ thuật bổ trợ mô phỏng nhân vật chuyển động 45
2.6.1 Chuyển động theo các thời điểm chính (Keyframe Animation) 46
2.6.2 Kỹ thuật điều khiển theo đường path 55
2.7 Tiểu kết chương 2 57
CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH THỬ NGHIỆM 58
3.1 Giới thiệu bài toán 58
3.2 Yêu cầu thực nghiệm, ứng dụng 59
3.2.1 Yêu cầu với thực nghiệm 59
3.2.2 Kiểm tra các mô hình đầu vào 60
3.3 Quy trình xây dựng mô phỏng chuyển động nhân vật tự động 62
3.3.1 Giai đoạn 1: Pre-production (Tiền sản xuất) 62
3.3.2 Giai đoạn 2: Production (Giai đoạn sản xuất) 64
3.3.3 Phần 3: Post-production (Giai đoạn hậu kỳ) 66
3.4 Thiết kế giao diện chính của phần mềm đồ họa nhân vật chuyển động 66
3.5 Một số kết quả thực nghiệm 68
3.5.1 Hướng dẫn cài đặt, sử dụng chương trình 68
3.5.2 Kết quả thực nghiệm 69
3.6 Nhận xét, đánh giá thử nghiệm chương trình 71
KẾT LUẬN 74
TÀI LIỆU THAM KHẢO 76
Trang 7DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
1 VR Virtual Reality Thực tại ảo
3 FK Forward kinematics Điều khiển tiến
4 IK Inverse kinematics Điều khiển ngược
5 HD History - Dependent Lược sử phụ thuộc
Trang 8DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Ứng dụng Thực tại ảo trong thiết kế nội thất 4
Hình 1.2 Ứng dụng Thực tại ảo trong thiết kế xe hơi 5
Hình 1.3 Ứng dụng Thực tại ảo trong game giải trí 6
Hình 1.4 Ứng dụng Thực tại ảo trong phim Avatar 6
Hình 1.5 Mô phỏng lái xe trên cabin ảo 7
Hình 1.6 Mô phỏng phẫu thuật trong thực tại ảo 8
Hình 1.7 Ba đặc tính trong VR 9
Hình 1.8 Hành động sút bóng của nhân vật 12
Hình 1.9 Hành động nhảy dù của nhân vật 12
Hình 1.10 Chuyển động theo đường cong của nhân vật khi ném trái bóng 13
Hình 1.11 Một số frame chính trong bước nhảy của nhân vật 13
Hình 2.1 Phép tịnh tiến 17
Hình 2.2 Phép quay chiều dương, trục quay ox, nhìn là hướng âm trục ox 18
Hình 2.3 Phép quay quanh một trục bất kì 20
Hình 2.4 Véc tơ u về trục oz 21
Hình 2.5 Độ lớn của góc α 21
Hình 2.6 Tạo xương cho nhân vật 26
Hình 2.7 Mô hình khung xương nhân vật 27
Hình 2.8 Mô tả tham số Denavit-Hartenberg 29
Hình 2.9 Sử dụng điều khiển FK để tạo chuyển động cho chân, tay thao tác 31
Hình 2.10 Tư thế tạo chuyển động cho chân, tay thao tác cho nhân vật 32
Hình 2.11 Sử dụng một giải pháp IK để làm cho bàn tay của một nhân vật 34
Hình 2.12 Một liên kết IK đơn 34
Hình 2.13 Môt liên kết đôi IK 35
Hình 2.14 Một IK có nhiều hơn một giải pháp 36
Hình 2.15 Xoay liên kết sử dụng kỹ thuật Phối hợp Descent Cylic cho IK 37
Trang 9Hình 2.16 Quay liên kết trung gian sử dụng kỹ thuật Phối hợp 38
Hình 2.17 Hệ thống xương ứng dụng bộ xử lý HI solver 41
Hình 2.18 Xác định chốt của chuỗi xương 43
Hình 2.19 Mô tả chuyển động theo các thời điểm chính 46
Hình 2.20 Nội suy tuyến tính cho 5 Keyframe theo thời gian 49
Hình 2.21 Nội suy bậc hai cho 5 Keyframe 50
Hình 2.22 Mô tả chuyển động theo đường cong xác định trước 56
Hình 2.23 Đường path trong tham quan tự động 56
Hình 2.24 Đường path tham quan tự động bên ngoài bảo tàng 56
Hình 3.1 Hình ảnh mô tả tư thế, cử chỉ, hành động của nhân vật 61
Hình 3.2 Các tư thế khác nhau của nhân vật 62
Hình 3.3 Mặt trước toàn thân 63
Hình 3.4 Mặt phải toàn thân 63
Hình 3.5 Các tư thế do nhân vật tạo ra 65
Hình 3.7 Mô tả quan hệ giữa các hệ thống của sản phẩm thực tại ảo 67
Hình 3.8 Thư mục và file chạy chương trình mô phỏng 68
Hình 3.9 Giao diện khởi tạo chương trình mô phỏng nhân vật “Dương Đức Vương”, kèm chuyển động, dịch chuyển của nhân vật 69
Hình 3.10 Góc nhìn của camera về nhân vật 69
Hình 3.11 Mô hình các vị trí, khung cảnh khác nhau 70
Trang 10LỜI MỞ ĐẦU
Cùng với sự phát triển của công nghệ đồ họa, trong đó công nghệ thực tại
ảo đã góp phần vào tạo ra nhiều ứng dụng trong các lĩnh vực của đời sống, gắn vào các sản phẩm mô phỏng các ứng dụng không gian ảo để hỗ trợ tham quan
ảo, trải nghiệm ảo các điểm tham quan, di tích lịch sử, các điểm văn hóa, Với những sản phẩm ứng dụng như các bộ phim, game 3D hay các hệ thống tái hiện lại các cuộc chiến lịch sử hay ứng dụng tham quan các điểm văn hóa, thì bao giờ cũng có những nhân vật, đối tượng là con người hay đối tượng nào đó đều
có những chuyển động, di chuyển theo định hướng tự động (Auto) hay điều khiển tương tác (Control) Trong luận văn thạc sỹ dự kiến, đề tài sẽ chỉ tập trung vào nghiên cứu thiết lập chế độ chuyển động, di chuyển nhân vật theo chế độ tự động Ví dụ như đi tham quan tự động, những chiến binh trong các trò chơi game 3D, hay các nhân vật trong các ứng dụng tái hiện lịch sử di chuyển theo chế độ tự động Vì vậy, một vấn đề đặt ra là làm thế nào để tạo dựng mô hình 3D các nhân vật và thiết lập được chế độ mô phỏng tự động cho các nhân vật để
sử dụng vào trong các ứng dụng thực tại ảo, không gian ảo
Để tạo dựng mô hình 3D nhân vật ảo và cài đặt chế độ dịch chuyển, chuyển động cho nhân vật một cách tự động trong không gian ảo, trong các ứng dụng thực tại ảo như di chuyển trong khu di tích lịch sử thì việc nghiên cứu các kỹ thuật cho phép thiết lập chế độ chuyển động hay di chuyển tự động của các nhân vật tham quan trong không gian ảo sao cho giống với không gian thực theo
hướng tự động là rất quan trọng Đề tài luận văn được lựa chọn là “Nghiên cứu
kỹ thuật điều khiển nhân vật tự động và ứng dụng” vừa có ý nghĩa khoa học,
vừa có ý nghĩa thực tiễn cao Đề tài sẽ sử dụng các thuật toán điều khiển nhân vật theo các hướng khác nhau và sử dụng các ngôn ngữ lập trình Unity 3D và C# (C Sharp) để cài đặt chương trình thử nghiệm
1 Phạm vi nghiên cứu
Đề tài luận văn tập trung nghiên cứu đối tượng chuyển động, di chuyển của nhân vật trong không gian ảo theo các hướng điều khiển khác nhau
2 Mục đích nghiên cứu
Trang 11- Nghiên cứu các tư thế, trạng thái chuyển động của các nhân vật trong các tình huống: đi tham quan, tham gia chiến tranh với nhiều nhân vật di chuyển Lựa chọn môi trường không gian ảo để cho đối tượng nhân vật chuyển động, di chuyển
- Xây dựng mô hình 3D và mô phỏng trạng thái chuyển động, di chuyển nhân vật
- Nghiên cứu các thuật toán, phương pháp tạo dựng khung xương cho các
bộ phận của mô hình nhân vật 3D, kỹ thuật điều khiển cho nhân vật 3D, tạo ràng buộc giữa các đối tượng và các kỹ thuật gán xương cho mô hình nhân vật 3D
3 Bố cục đề tài
Ngoài phần mở đầu và kết luận thì báo cáo gồm 3 chương:
Chương 1: Tổng quan về điều khiển nhân vật chuyển động
Chương 2: Các thuật toán thông dụng điều khiển chuyển động nhân vật Chương 3: Cài đặt chương trình thử nghiệm
4 Phương pháp nghiên cứu đề tài
- Phương pháp nghiên cứu lý thuyết: Tìm hiểu tài liệu, kiến thức cơ bản về
mô hình toán học và các ngôn ngữ lập trình C# (C Sharp) và Unity 3D
- Phương pháp trao đổi khoa học: trao đổi hướng nghiên cứu với người
hướng dẫn, đề xuất và giải quyết các nội dung luân văn đề ra
- Phương pháp mô hình hóa: Mô hình hóa là một phương pháp khoa học để
nghiên cứu các đối tượng, các quá trình … bằng cách xây dựng các mô hình của chúng (các mô hình này bảo toàn các tính chất cơ bản được trích ra của đối tượng đang nghiên cứu) và dựa trên mô hình đó để nghiên cứu trở lại đối tượng thực
- Nghiên cứu thực nghiệm: Sử dụng ngôn ngữ lập trình Unity 3D và C# (C
Sharp) để cái đặt chương trình thử nghiệm
Kết quả: Đánh giá, kiểm tra, thử nghiệm biểu diễn kết quả
5 Ý nghĩa khoa học của đề tài
Ý nghĩa khoa học của luận văn: Khái quát được khung cơ sở lý thuyết về
phương pháp thiết lập chế độ tự động cho nhân vật chuyển động để hỗ trợ tham quan, di chuyển của nhân vật trong các không gian ảo và trang bị thêm tài liệu
Trang 12học tập, nghiên cứu cho sinh viên và giảng viên nhóm ngành thiết kế đồ họa, đa phương tiện
Ý nghĩa thực tiễn của luận văn: Kết quả nghiên cứu thực tiễn của đề tài là
báo cáo tổng kết khoa học luận văn và chương trình mô phỏng tự động nhân vật tham quan trong không gian ảo sẽ góp phần tạo tiền đề cho xây dựng các chương trình ứng dụng tham quan vào thực tiễn trong môi trường không gian ảo
Trang 13CHƯƠNG 1:
TỔNG QUAN VỀ ĐIỀU KHIỂN NHÂN VẬT CHUYỂN ĐỘNG
1.1 Các khái niệm cơ bản
1.1.1 Thực tại ảo
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, đưa thế giới ba chiều vào trong máy tính để tạo ra một môi trường ảo (Virtual Environment) bằng 3D Trong môi trường ảo, người sử dụng đã thực sự trở thành một phần của hệ thống Một trong các ứng dụng, con người có thể được nhập vai để có thể tự do chuyển động trong không gian ảo, tương tác với các vật thể ảo Ngược lại, môi trường ảo tác động lại hay có những phản hồi tương ứng với các hành động của người sử dụng, các tác động này tuân theo những quy tắc toán học, vật lý, tự nhiên, làm con người có cảm giác như đang tồn tại trong một thế giới thực [5],[6],[11],[27]
1.1.2 Một số lĩnh vực ứng dụng của thực tại ảo
Công nghệ Thực tại ảo đang ngày một phát triển rộng rãi và đã có mặt trong hầu hết các lĩnh vực quan trọng của cuộc sống
- Kiến trúc, xây dựng và công nghiệp chế tạo
Hình 1.1 Ứng dụng Thực tại ảo trong thiết kế nội thất Thiết kế kiến trúc là một trong những lĩnh vực ứng dụng công nghệ thực tại ảo nhiều nhất Trước đây, khi chưa có thực tại ảo, các ý tưởng công trình kiến trúc chỉ được thể hiện trên các khổ giấy Và chi tiết bằng cách thêm thông số và
Trang 14bản vẽ các mặt của công trình Ngày nay, 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 đầy đủ, trực quan các công trình của ngành thiết kế kiến trúc từ không gian 3D, kết cấu công trình, vật liệu, ánh sáng, cho phép khách hàng, nhà đầu tư tự do tham quan, khảo sát công trình cần xây dựng của họ theo nhiều góc độ và vị trí khác nhau
Bên cạnh kiến trúc, xây dựng công nghệ thực tại ảo hỗ trợ đắc lực cho ngành sản xuất thiết bị cơ khí, mà công đoạn thiết kế mô hình có vai trò quan trọng khi thiết kế động cơ, thiết kế ô tô, tàu biển, máy bay,
Hình 1.2 Ứng dụng Thực tại ảo trong thiết kế xe hơi Khả năng mô hình hoá cho phép nhà thiết kế thể hiện được một cách trực quan nhất ý tưởng thiết kế của mình, qua đó có thể đánh giá cơ bản về hiệu năng của thiết bị dựa trên những thử nghiệm mô phỏng trên thiết bị ảo,
và có những hiệu chỉnh cần thiết trước khi thiết bị thực sự được sản xuất Điều này rõ ràng góp phần không nhỏ trong thành công của thiết bị công nghệ, giảm bớt những chi phí phát sinh
- Giải trí
Khi công nghệ thực tại ảo ra đời, con người luôn luôn nghĩ ra những thứ mới để đầu tư cho lĩnh vực giải trí Việc áp dụng công nghệ 3D khiến chi phí đầu tư vào lĩnh vực phim, game, … khá thấp mà lợi nhuận thu vào là vô cùng to lớn Số lượng người bị cuốn hút theo các trò chơi game, đặc biệt là giới trẻ, tăng theo cấp số nhân, số lượng vé bán ra trong các rạp chiếu phim 3D làm vô cùng lớn ví dụ như phim Avatar, Transfomer,
Trang 15Hình 1.3 Ứng dụng Thực tại ảo trong game giải trí
Hình 1.4 Ứng dụng Thực tại ảo trong phim Avatar
- Giáo dục và Đào tạo
Ngay từ khi công nghệ 3D ra đời, thì hầu hết các ứng dụng thực tại ảo đều được phát triển trong quân đội Sự đầu tư vô cùng lớn từ phía các nhà lãnh đạo của Mỹ, Nga, là việc tập luyện bắn ảo, các bài toán mô phỏng cháy nổ của thuốc súng, hay mô phỏng đường đi của tên lửa, …
Ngày nay, sự 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 Ví dụ: tương tác lái container, lái máy bay ảo, học lái xe ô tô trên mô hình thực tại ảo Qua các thiết
bị phần cứng, như màn hình, joytick, kính, người học có thể nhập vai để tương tác với thực tế ảo thông qua các hành động của mình, đồng thời thế giới ảo cũng tác động lại với người học, khiến người học tăng thêm các kỹ năng nghiệp vụ
Trang 16mà không cần phải chịu chi phí, hay hậu quả do mình gây ra Ví dụ một vụ lái
xe container mà đâm vào một tòa nhà ven đường,…
Hình 1.5 Mô phỏng lái xe trên cabin ảo Khi công nghệ thực tại ảo tính toán chính xác những vụ nổ, vụ va chạm, tính toán khác trong xã hội thì ngày càng nhiều các thí nghiệm được thực hiện ngay trên môi trường ảo
Tính chất trực quan của bài giảng thực tại ảo đượ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 Ví dụ chúng ta hoàn toàn có thể tạo ra một môi trường ảo của các trận chiến trong môn học lịch sử mà người học có thể nhìn cuộc chiến từ nhiều góc độ khác nhau, có thể là người trung gian, có thể là hóa thân một nhân vật để tham gia trận chiến đó 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 viên
sẽ là những kỹ năng sống được đào tạo trong môi trường ảo
- Y học
Trong y học, công nghệ thực tại ảo giúp cho con người có thể thao tác giải phẫu trực tiếp với các thể ảo Giúp cho việc đào tạo các bác sỹ đa khoa được hoàn thiện hơn và tự tin hơn trong các ca mổ của mình Giúp cho công nghệ y tế được phát triển hơn, qua mô phỏng giúp cho con người hiểu hơn về quá trình truyền máu, tiêu hóa thức ăn, từ các bài toán mô phỏng
Trang 17Hình 1.6 Mô phỏng phẫu thuật trong thực tại ảo
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)
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 v.v Đ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 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
Trang 18mổ 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
1.2 Lý thuyết về các nguyên tắc chuyển động của nhân vật
Hình ảnh 3D trong thực tại ảo ngày càng có nhiều ứng dụng trong thực tế Việc tạo ra các mô hình 3D với các chuyển động gắn với nó là một đòi hỏi tất yếu Trong lĩnh vực thể hiện hình ảnh 3D trong VR có hai khâu quan trọng là tạo mô hình và điều khiển mô hình [7],[8],[24]
1.2.1 Vai trò của việc tạo chuyển động
Có thể nói việc tạo chuyển động là thành phần không thể thiếu trong VR Chuyển động, tương tác giữa các đối tượng sẽ làm cho đối tượng trở lên chân thực và sống động hơn, sẽ đưa người ta vào một thế giới nhân tạo giống như thật Việc thể hiện thành công kỹ thuật tạo chuyển động trong VR sẽ cho phép ta
đi sâu vào thế giới ảo để tạo ra những giá trị thật cho cuộc sống con người Nhưng để tạo chuyển động cho đối tượng để nó có thể thể hiện được hành vi, trạng thái trong thế giới thực không hề đơn giản
1.2.2 Cơ sở lý thuyết của tạo chuyển động
Cơ sở lý thuyết của việc tạo chuyển động chính là các đặc tính của nó trong VR Trong điều khiển mô hình thì tạo chuyển động cho đối tượng là quan trọng Chất lượng hệ thống phụ thuộc nhiều vào quá trình điều khiển do phải đảm bảo những đặc tính trong VR Dưới đây giới thiệu ba đặc tính chính của VR
để tạo cơ sở cho việc tạo chuyển động trong VR
Hình 1.7 Ba đặc tính trong VR
Tính tương tác ( Interactive)
Trang 19Có nghĩa là bằng một hệ thống mô phỏng có sử dụng đồ họa máy tính, công nghệ VR có thể đưa người ta vào một thế giới nhân tạo với không gian 3 chiều như thật Thế giới này không tĩnh tại mà phản ứng, thay đổi theo ý muốn tín hiệu vào của người sử dụng nhờ hành động, lời nói,
Một đặc tính chính của VR là tính tương tác theo thời gian thực (Real Time Interactivity) Thời gian thực ở đây có nghĩa là máy tính có khả năng nhận biết được tín hiệu vào của người sử dụng và thay đổi ngay lập tức thế giới ảo Người sử dụng nhìn thấy sự vật thay đổi trên màn hình ngay theo ý muốn của họ
và bị thu hút bởi sự mô phỏng này
Có hai khía cạnh của tính tương tác trong một thế giới ảo đó là: sự du hành bên trong thế giới và động lực học của môi trường
- Sự du hành (navigation) là khả năng của người dùng để di chuyển khắp nơi một cách độc lập, cứ như là đang ở bên trong một môi trường thật Nhà phát triển phần mềm có thể thiết lập những áp đặt với việc truy cập vào những khu vực ảo, cho phép có được nhiều mức độ tự do khác nhau như người sử dụng có thể bay, xuyên tường, đi lại khắp nơi hoặc bơi lặn,… Một khía cạnh khác của sự
du hành là sự định vị điểm nhìn của người dùng Sự kiểm soát điểm nhìn là việc người sử dụng tự theo dõi chính họ từ một khoảng cách, việc quan sát cảnh tượng thông qua đôi mắt của một con người khác, hoặc di chuyển khắp trong thiết kế của một cao ốc mới như thể đang ngồi trong một chiếc ghế đẩy…
- Động lực học của môi trường là những quy tắc về cách thức mà người, vật và mọi thứ tương tác với nhau trong một trật tự để trao đổi năng lượng hoặc thông tin Mỗi một đối tượng (object) và mối quan hệ của nó với mọi đối tượng khác là một yếu tố thiết kế trong sự suy xét cẩn thận của nhà phát triển
Tính đắm chìm (Immersion)
Đặc tính chính thứ hai của VR là tạo cảm giác đắm chìm Cảm giác đắm chìm là một hiệu ứng tạo khả năng tập trung sự chú ý cao nhất, có nghĩa là ngăn chặn sự xao nhãng và tập trung một cách có chọn lọc vào chính thông tin với những gì bạn muốn làm Cảm giác của người sử dụng cảm thấy mình là một phần của thế giới ảo, hòa lẫn vào thế giới đó Nhưng VR còn đẩy cảm giác này
Trang 20"thật" hơn nữa nhờ tác động lên các kênh cảm giác của con người Người dùng không những nhìn thấy đối tượng đồ họa 3D, điều khiển xoay, di chuyển, được đối tượng trên màn hình như trong game, mà còn sờ và cảm thấy chúng như có thật Ngoài khả năng nhìn, nghe, sờ Nhiều nhà nghiên cứu hiện nay đang tìm cách tạo ra những cảm giác khác như ngửi và nếm Tuy nhiên hiện nay trong VR các cảm giác này cũng ít được sử dụng đến
Tính tưởng tượng (Imagination)
Như trên đã trình bày, hai đặc tính chính của VR là Tương tác và Đắm chìm, đây là hai "I" (Interactive, Immersion) mà nhiều người đã biết Tuy nhiên
VR cần có một đặc tính thứ ba mà ít người để ý tới VR không chỉ là một hệ thống tương tác Người - Máy tính, mà các ứng dụng của nó còn liên quan tới việc giải quyết các vấn đề thật trong kỹ thuật, y học, quân sự, Các ứng dụng này do các nhà phát triển VR thiết kế, điều này phụ thuộc rất nhiều vào khả năng Tưởng tượng của con người, đó chính là đặc tính "I" (Imagination) thứ 3 của VR
Do đó có thể coi VR là tổng hợp của 3 yếu tố: Tương tác - Đắm chìm - Tưởng tượng
1.2.3 Một số bài toán chuyển động
- Chuyển động theo thời gian và khoảng cách:
Thời gian và khoảng cách (Timing and Spacing) trong phim hoạt hình giúp cho các đối tượng và nhân vật hoạt hình chuyển động theo một quy luật vật lý Thời gian và khoảng cách rất quan trọng để thiết lập tâm trạng, cảm xúc và phản ứng của nhân vật Có thể hiểu, đây chính là mối liên hệ tương quan giữa số lượng frame với khoảng cách giữa các frame trên đường chuyển động của vật thể Thời gian đề cập đến số lượng khung hình giữa hai tư thế, khoảng cách đề cập đến cách đặt các khung hình riêng lẻ đó [5],[11],[22]
Một chuyển động có ít frame và khoảng cách giữa các frame xa nhau sẽ tạo
ra chuyển động nhanh Một chuyển động có nhiều frame và khoảng cách giữa các frame gần nhau sẽ tạo ra chuyển động chậm
Trang 21Hình 1.8 Hành động sút bóng của nhân vật Nguyên tắc thời gian và khoảng cách tạo nên sự ảnh hưởng rõ rệt tới ý nghĩa của các chuyển động Để tạo ra những chuyển động chân thực, sống động
và đúng nguyên tắc vật lý thì cần có sự quan sát kĩ lưỡng và cẩn thận trong cuộc sống hàng ngày
- Chuyển động kéo theo và trễ lại:
Trong cuộc sống, mọi thứ di chuyển với các tốc độ khác nhau và tại các thời điểm khác nhau Sự kéo theo và trễ lại (Follow through và Overlapping) là một trong những nguyên tắc quan trọng để diễn tả từng phần cơ thể riêng biệt, phụ thuộc vào lực quán tính Đó là, khi vật thể ngừng chuyển động, các phần khác nhau của vật thể sẽ dừng ở các mức độ khác nhau Tương tự, các phần khác nhau của vật thể sẽ di chuyển vào các thời điểm khác nhau
Hình 1.9 Hành động nhảy dù của nhân vật Tại mỗi thời điểm, thân là phần chính sẽ rơi xuống trước, kéo theo là chân tay, đầu tóc Đồng thời, mỗi bộ phận trên cơ thể sẽ rơi với tốc độ khác nhau: chân phải sẽ rơi xuống trước chân trái hoặc ngược lại
Chuyển động kéo theo và trễ lại được phối hợp cùng lúc với nhau tạo ra sự mềm mại và sinh động cho nhân vật
- Chuyển động theo đường cong:
Hầu hết các đối tượng trong cuộc sống đều di chuyển theo một đường cong hay một vòng cung Có rất ít các trường hợp chuyển động theo các đường thẳng
Trang 22hoàn hảo vì chúng còn chịu tác động của trọng lực và tuân theo quy tắc vật lí Hãy cùng phân tích yếu tố chuyển động theo đường cong của nhân vật khi ném bóng Nguyên tắc chuyển động theo đường cong được áp dụng trên toàn bộ tay, chân, đầu và cơ thể nhân vật Khi cánh tay ném bóng được đẩy về phía sau để tạo lực, sau đó được nâng lên, chuẩn bị ném và hạ xuống đều chuyển động theo một vòng cung Nếu cánh tay không chuyển động theo một vòng cung mà theo một đường thẳng, khi đó cánh tay sẽ không tạo được lực để ném bóng Điều đó hoàn toàn không đúng với thực tế Tương tự, chuyển động của bộ phận đầu, tay và hông đều tạo thành một đường cong mềm mại
Hình 1.10 Đường chuyển động theo đường cong của nhân vật khi ném trái bóng
- Chuyển động diễn tiến và chuyển hóa điệu bộ:
Trong quá trình tạo chuyển động, có hai cách để xử lý chuyển động: Straight Ahead (sự diễn tiến) và Pose to pose (sự chuyển hóa) Mỗi cách đều có những lợi ích riêng và chúng thường được kết hợp với nhau Sự diễn tiến là cách diễn hoạt tự do, thực hiện vẽ lần lượt từng khung hình theo thứ tự và làm liền một mạch các hình liên tiếp nhau từ đầu cho đến khi kết thúc
Hình 1.11 Một số frame chính trong bước nhảy của nhân vật
Với kỹ thuật này, khó kiểm soát được kích thước, khối lượng và vị trí của nhân vật Chính vì thế sẽ mất nhiều công sức sửa lại những lỗi sai xảy ra trong quá trình thực hiện chuyển động Ưu điểm của kỹ thuật này là khi làm các chuyển động không có tính định hình cụ thể, ví dụ như các hiệu ứng đặc biệt như ngọn
Trang 23lửa, hạt nước, hay một làn khói bụi, …vì những hiệu ứng này không có hình dạng
cố định, liên tục thay đổi, nên diễn tiến là một cách hay để tạo sự tự nhiên cho hình ảnh Dù vậy, vẫn có thể áp dụng kỹ thuật chuyển hoá để lấp thêm các khung hình vào giữa nhằm tạo cảm giác mượt mà hơn
1.3 Bài toán điều khiển nhân vật chuyển động và ứng dụng
Trong thế giới thực thì các đối tượng động, nhân vật động như con người, động vật… thường xuyên chuyển động, di chuyển từ những vị trí sang vị trí khác, hay trong những môi trường thế giới ảo cũng vậy, các nhân vật hay động vật trong đó cũng thường xuyên cử động, chuyển động, di chuyển Vì vậy, dù là môi trường thực hay môi trường ảo thì việc tạo ra, mô phỏng những đối tượng như con người thì cần phải nghiên cứu và mô phỏng các nhân vật là con người
có yếu tố chuyển động, di chuyển từ vị trí sang vị trí khác kèm những hành động
cử chỉ khác nhau[26][28][29]
Do vậy, việc xây dựng các bài toán mô phỏng thế giới ảo cũng cần phải quan tâm, nghiên cứu các cơ sở toán học cho bài toán chuyển động để mô phỏng được nhân vật là những con người chuyển động
Trong các ứng dụng mô phỏng, tái hiện các nhân vật lịch sử trong chiến tranh, chiến đấu thì việc nghiên cứu mô phỏng các cử chỉ, hành động của nhân vật con người là rất quan trọng Vì vậy, bài toán nghiên cứu điều khiển mô phỏng nhân vật chuyển động được ứng dụng nhiều trong thực tế
1.4 Giới thiệu công cụ và ngôn ngữ lập trình
1.4.1 Công cụ Unity 3D
Unity 3D là một công cụ phát triển trò chơi đa nền tảng mạnh mẽ, cung cấp nhiều công cụ và tính năng để phát triển trò chơi trên nhiều nền tảng khác nhau Dưới đây là một số công cụ quan trọng của Unity 3D [14]
Trình chỉnh sửa đồ họa: Unity cung cấp trình chỉnh sửa đồ họa để thiết kế môi trường 3D và 2D trong trò chơi, bao gồm các công cụ vẽ, tạo đối tượng, kết xuất, ánh sáng, v.v
Trang 24Bộ công cụ lập trình: Unity cung cấp bộ công cụ lập trình để tạo ra gameplay logic cho trò chơi, bao gồm các công cụ để quản lý đối tượng, điều khiển hành vi, xử lý sự kiện, và nhiều tính năng khác
Hệ thống vật lý: Unity cung cấp hệ thống vật lý để mô phỏng chuyển động
và xung đột vật thể trong trò chơi, giúp cho các đối tượng và hành vi trong trò chơi trở nên chân thực hơn
Các tính năng khác: Unity cung cấp nhiều tính năng hỗ trợ khác như âm thanh, hiệu ứng đặc biệt, các công cụ để tạo ra hình ảnh động, các tính năng để tối ưu hóa trò chơi và tăng tốc độ xử lý, và nhiều tính năng khác
1.4.2 Tổng quan về ngôn ngữ lập trình C#
Ngôn ngữ lập trình C# hay còn được gọi là C Sharp là một ngôn ngữ lập trình thuần hướng đối tượng rất đa năng, mạnh mẽ được rất nhiều lập trình viên tin dùng Được ra đời vào năm 2000, thiết kế bởi Anders Hejlsberg rất nổi tiếng với việc tạo ra các sản phẩm Turbo Pascal, Delphi, J++, WFC và do Microsoft phát triển C# được phát triển dựa trên ngôn ngữ lập trình C++ và ngôn ngữ lập trình java Do đó C# có được những ưu điểm của hai ngôn ngữ trên đồng thời khắc phục những hạn chế của hai ngôn ngữ nền tảng của nó Cái tên C# của ngôn ngữ lập trình này bao gồm ký tự thăng theo Microsoft nhưng theo ECMA
là C#, chỉ bao gồm dấu số thường
Ngôn ngữ lập trình C# dùng để làm gì?
Ngôn ngữ lập trình C# là một ngôn ngữ rất đa đụng và mạnh mẽ, tùy theo ý muốn của lập trình viên ngôn ngữ này có thể làm được những công việc sau đây: Phát triển web backend (ASP.NET MVC, ASP.NET core, Web API, Graph API, gPRC, Blazor sevver,Uno platform, Mono); Phát triển web front end (Blazor WebAssembly,Uno platform)
Phát triển desktop app (Winform, WPF, UWP, WinUI, Mono, Uno, MAUI, Blazor desktop…)
Phát triển game 2D, 3D đa nền tảng (Game engine: Unity, Monogame, Godot, Stride, CryEngine, Flax Engine, Evergine, NeoAxis, XNA )
Phát triển thực tế ảo (VR), thực tế tăng cường (AR), thực tế hỗn hợp (MR)
Trang 25Phát triển ứng dụng đồ họa 2D, 3D đa nền tảng (2D: SkiaSharp, ImageSharp…; 3D: OpenTK, SharpDX, SharpVulkan, Vulkan.NET, Veldrid, Silk.NET, Helix Toolkit, Aspose )
Phát triển mobile app, IOS native, Android native (Xamarin, MAUI, ) Phát triển đám mây (Azure, AWS, Google Cloud…)
Học máy và trí tuệ nhân tạo (ML.Net, TensorFlow, csiSharp )
Data science, bigdata (csiSharp, Apache Spark)
Blockchain (NEO, Stratis) Microservices and containers Internet of thing
Hệ thống nhúng (Raspberry pi, PLC)
C# là ngôn ngữ lập trình chính được sử dụng trong Unity 3D, một trình tạo trò chơi và ứng dụng thực tế ảo (AR/VR) phổ biến Unity 3D cung cấp một nền tảng lập trình cho phép lập trình viên tạo các trò chơi, ứng dụng và trải nghiệm thực tế ảo bằng cách sử dụng các công cụ lập trình đơn giản [14]
Khi làm việc với Unity 3D, lập trình viên sử dụng C# để lập trình các tính năng của trò chơi hoặc ứng dụng của mình Các tính năng này bao gồm việc điều khiển đối tượng, xử lý va chạm, chuyển động, ánh sáng và âm thanh, và nhiều hơn nữa
C# trong Unity 3D được sử dụng để tạo các script (kịch bản) điều khiển các đối tượng trong trò chơi hoặc ứng dụng Script được tạo ra bằng cách sử dụng các lớp và đối tượng được cung cấp bởi Unity 3D và được lập trình viên tùy chỉnh để thực hiện các tính năng cần thiết
1.5 Tiểu kết chương 1
Chương này đã tập trung nghiên cứu tổng quan về thực tại ảo, không gian
ảo, các nguyên tắc chuyển động, bài toán điều khiển theo chế độ tự động cho nhân vật chuyển động trong thế giới ảo Đồng thời, chương này trình bày về công cụ, ngôn ngữ lập trình sử dụng trong cài đặt chương trình thử nghiệm một
số kỹ thuật mô phỏng, điều khiển chế độ tự động (auto) nhân vật chuyển động trong thế giới ảo
Trang 26CHƯƠNG 2:
CÁC THUẬT TOÁN THÔNG DỤNG ĐIỀU KHIỂN
CHUYỂN ĐỘNG NHÂN VẬT 2.1 Cơ sở toán học về mô phỏng chuyển động trong không gian 3D
Trong không gian 3D, các đối tượng hay nhân vật động thường chuyển động theo các hướng khác nhau như tiến, lùi, xoay trái hay phải Vì vậy, để mô phỏng nhân vật chuyển động trong không gian 3D thì cần phải sử dụng các phép toán tịnh tiến, xoay… [10]
0 1 0'
t t t
x x
y y
R P
z z
Trang 27Hình 2.2 Phép quay chiều dương, trục quay ox, hướng nhìn là hướng âm trục ox
a Phép quay quanh các trục toạ độ:
Trước hết ta xét các phép quay một góc θ theo các trục ox, oy, oz khi hướng nhìn là hướng âm của trục đó
Phép quay quanh trụ c oz: Ta có thể có công thức biến đổi toạ độ bằng cách mở rộng công thức phép quay trong không gian hai chiều:
' '
cos ysin sin ycos
x y z
001
'
x x
y y z
cos zsin sin z os
x y z
Trang 28' '
x x
y y z
cos zsin
sin zcos x
x y z
b Phép quay quanh một trục song song với trục toạ độ
Giả sử trục quay song song với trục ox (các trường hợp còn lại tương tự),
ta thực hiện lần lượt các lệnh biến đổi sau:
(1) Áp dụng phép tịnh tiến T để đưa trục quay về trục ox
(2) Áp dụng phép quay R(θ) quay đối tượng quanh trục ox một góc θ (3) Áp dụng phép tịnh tiến T-1 để đưa trục quay về vị trí ban đầu c Phép quay quanh một trục bất kì
Giả sử trục quay là một đường thẳng d đi qua hai điểm P1(x1, y1, z1) và P2(x2, y2, z2) Phép quay R(θ) quanh đường thẳng d một góc θ theo hướng nhìn
từ điểm P2 tới P1 Ta thực hiện lần lượt các phép biến đổi sau:
(1) Áp dụng phép tịnh tiến đưa trục quay về vị trí đi qua gốc toạ độ (2) Áp dụng phép quay đưa trục quay về vị trí trùng với một trục toạ độ (3) Áp dụng phép quay vật thể quanh trục quay (trục toạ độ)
(4) Áp dụng phép quay đưa trục quay về vị trí tại bước 2
(5) Áp dụng phép quay đưa trục quay về vị trí ban đầu
Quá trình được minh hoạ trong hình 2.3
Trang 29Hình 2.3 Phép quay quanh một trục bất kì
Ta sẽ tìm ma trận biến đổi của từng phép biến đổi theo từng bước
Bước 1: Tịnh tiến đưa điểm P1 về gốc toạ độ bằng cách tịnh tiến theo véc
tơ (-x1, -y1, -z1), đoạn thẳng P1P2 chuyển thành P1’P2’ Ma trận phép biến đổi là:
Bước 2: Đây là bước phức tạp nhất, đưa trục quay P1'P2' về trùng với một
trục toạ độ, ta sẽ chọn đ ó là trục oz Để thuận tiện ta sẽ chọn véc tơ đơn vị u thuộc đường thẳng P1'P2' và có hướng trùng với hướng của véc tơ V=P1'P2' như sau:
Trang 30(1) Quay một góc α quanh trục ox đưa véc tơ u về vị trí véc tơ u'' nằm trên mặt phẳng xz
(2) Quay một góc β quanh trục oy đưa véc tơ u'' vị trí uz thuộc trục oz
Trang 31u u
u
u =d (chú ý rằng u'' u z 1) Theo định nghĩa tích có hướng của hai véc tơ ta có:
u'' x uz=uy.||u''||.||uz|| sinβ Mặt khác u'' x uz=uy.(-a) do đó sinβ=-a
a a
00
Tương tự như phép tỉ lệ trong không gian hai chiều phương trình phép tỉ
lệ trong không gian ba chiều như sau:
P’=
000
0 0'
'
1
y z
x
y y
s s s
S P
z z
Trang 32Trong không gian ta có thể thực hiện phép đối xứng qua một đường thẳng hoặc qua một mặt phẳng Trong mục này ta chỉ xét khi trục đối xứng là các trục toạ độ và mặt phẳng đối xứng là mặt phẳng xy, yz hoặc xz
Nếu trục to ạ độ là trục đối x ứng thì phép đối xứng tương đương với phép quay 1800 quanh trục đó Ví dụ phép đối xứng qua trục ox có ma trận là:
Tương tự khi mặt phẳng đối xứng là xz hoặc yz
2.2 Lập trình khởi tạo mô hình nhân vật 3D vào không gian 3D
Trên cơ sở các mô hình nhân vật 3D đã được mô hình hóa từ nhân vật ở đây là con người, chúng ta tiến hành sử dụng các công cụ thiết kế đồ họa như 3DS Max là một phần mềm được sử dụng rộng rãi bởi các kiến trúc sư và nhà phát triển trò chơi để tạo mô hình 3D, hoạt hình và thậm chí là kết xuất ảnh thực
để đưa, khởi tạo mô hình nhân vật vào môi trường thế giới ảo[1],[2],[25]
Sau đó, sử dụng các ngôn ngữ lập trình, thư viện đồ họa 3D để khởi tạo, gọi các mô hình 3D vào môi trường ảo để làm cơ sở cho lập trình điều khiển các
mô hình nhân vật chuyển động
Mô hình 3D là một cấu trúc dữ liệu trong đó mô tả hình thái 3D của một đối tượng Hiện nay để tạo ra một mô hình 3D có nhiều cách khác nhau, chúng
có thể được tạo ra nhờ các phần mềm thiết kế 3D như 3Ds max, maya v.v thông qua các nhà thiết kế 3D, hoặc từ các máy quét 3D (khi đó một đối tượng ngoài thế giới thực sẽ tạo một được một mô hình 3D trên máy tính thông qua máy quét), hoặc được tạo ra bằng một vài cách đặc thù nào đó Ví dụ như được tạo ra từ việc tối ưu một mô hình khác như trong luận văn đang trình bày, hoặc
Trang 33lập trình để tạo ra mô hình v.v Để có thể tạo ra một mô hình 3D đầu tiên chúng
ta phải hiểu về cấu trúc của một mô hình 3D Theo những tài liệu tôi tìm hiểu được, một mô hình gồm có 3 thành phần cơ bản là tập các đỉnh, tập các mặt và tập UV Trong đó, tập UV thường kết hợp với một ảnh chất liệu bên ngoài để tạo ra hình ảnh của mô hình với bề mặt giống với thực tế
Trong mô hình 3D, tập đỉnh là tập các vector 3 chiều mà mỗi vector là một điểm trong không gian 3 chiều Tâp đỉnh này sẽ quy định hình dạng 3D của đối tượng, tiếp đó chúng ta cần tập các mặt để kết nối các đỉnh với nhau từ đó tạo ra bề mặt của đối tượng Tập các đỉnh và tập các mặt về cơ bản tạo ra một
mô hình 3D giống với một bức tượng được đan bởi lưới sắt rỗng bên trong Chúng tạo ra một hình dạng giống một lưới dựa trên quan hệ giữa các đỉnh và các mặt
Để mô hình giống thật hơn ta xác định một texture và một tập UV để quy định việc sử dụng texture trên mỗi bề mặt của đối tượng Như vậy để xác định một mô hình 3D thường chúng ta phải xác định 3 thành phần của nó là tập các đỉnh, tập các mặt và tập UV Để dễ hình dung, tôi lấy ví dụ về một đối tượng 3D
cơ bản là một khối hộp được tạo ra dựa trên dạng lưới tam giác như sau:
Tập các đỉnh
var size = 100;
Vector3 [] VertexList =new Vector3 []{
new Vector3(-size, -size, -size), new Vector3(-size, size, -size), new Vector3( size, size, -size), new Vector3( size, -size, -size), new Vector3( size, -size, size), new Vector3( size, size, size), new Vector3(-size, size, size), new Vector3(-size, -size, size) };
Xác định một khối hộp, cần tối thiểu 8 đỉnh, vị trí các định được sắp xếp trong không gian tương ứng với tập vector 3 chiều VertexList được tạo ở trên
Trang 34Tập UV:
Vector2 [] UVs = new Vector2[]{
new Vector2(0,0), new Vector2(0,0), new Vector2(0,0), new Vector2(0,0), new Vector2(0,0), new Vector2(0,0), new Vector2(0,0), new Vector2(0,0), };
Trang 35Tập UV xác định vị trí của các texture, đó là một tập của các vector 2 chiều và số lượng phần tử của tập này tương ứng với số đỉnh của đồ thị Trong nội dung luận văn vì mô hình tái cấu trúc không thu được texture từ ảnh cắt lớp nên tôi không xây dựng tập UV cho các mô hình 3D và khởi tạo mặc định là một vector 2 chiều có 2 giá trị tương ứng bằng 0
2.3 Kỹ thuật gán xương cho từng bộ phận của nhân vật 3D
Với những nhân vật là đối tượng chuyển động như con người, để mô phỏng được chuyển động của con người trong thế giới ảo như trong thế giới thực thì cần phải thiết kế mô hình các bộ phận tách biệt nhau như đầu, chân, tay, cẳng chân, cẳng tay, ngón chân, ngón tay… để các bộ phận rời rạc Trên cơ sở
đó, để mô phỏng được chuyển động thì chúng ta phải tạo khung xương cho nhân vật ứng với từng bộ phận để làm cơ sở lập trình tương tác, chuyển động của nhân vật đảm bảo tính logic giữa các phần với nhau trong tổng thể cả nhân vật con người
Để mô phỏng đối tượng nhân vật chuyển động, tạo khung xương cho nhân vật
và phần giữ cấu trúc và gây ra điều khiển chuyển động cho nhân vật Dưới đây là xương, tư thế chuyển động của xương người [12],[13],[16],[18],[19],[22]
Hình 2.6 Tạo xương cho nhân vật
- Tạo xương cho đối tượng: Để có thể điều khiển và tạo được chuyển
động cho mô hình nhân vật, cần tạo xương cho nhân vật Có hai phương pháp tạo xương cho đối tượng, đó là sử dụng các khớp nối và sử dụng khung có sẵn
- Sử dụng các khớp nối: có thể tạo xương cho bất kì đối tượng nào Nghĩa
là việc hỗ trợ tạo xương cho đối tượng thông qua các khớp xương (joints, bones), khi các khớp xương được đặt tại vị trí mong muốn thì một đoạn xương
Trang 36được tự động tạo ra giữa hai khớp xương trông gần giống với xương trong thực
tế của đối tượng
- Các điểm cần quan tâm khi tạo xương:
1 Phải hiểu được cấu trúc xương trong thực tế bao gồm các khớp xương, sự phân bố các khớp
2 Phải xác định rõ ràng, đầy đủ mục đích chuyển động của đối tượng
3 Ba loại khớp xương quan trọng: Gốc, cha và con
Khớp gốc: hay còn gọi là gốc của xương Trên cơ thể động vật không có
khái niệm khớp xương gốc, song trong mô hình 3D để điều khiển được đối tượng, công cụ 3D đưa ra khái niệm khớp xương gốc Dựa vào khớp gốc ta có thể di chuyển toàn bộ đối tượng
Khớp cha: thấp hơn khớp gốc Nếu ta điều khiển khớp cha thì sẽ gây ra
chuyển động của các khớp khác
Khớp con: chịu điều khiển của các khớp khác, hay chính là khớp cha Tức
là nó chuyển động không chỉ do chịu sự tác động trực tiếp vào khớp mà còn do gián tiếp từ một khớp khác bị tác động
Hình 2.7 Mô hình khung xương nhân vật Như vậy, trừ khớp gốc và những khớp ở ngoài cùng thì các khớp còn lại vừa là khớp cha vừa là khớp con
Một bộ khung xương hoàn chỉnh sẽ thiết lập lên một cấu trúc thứ tự dạng cây theo quan hệ gốc-cành, cha-con
Trang 37- Sử dụng khung có sẵn: áp dụng khi tạo xương người Đối với các đối
tượng dạng này, sử dụng khung xương có sẵn sẽ giúp việc tạo xương nhanh hơn
Có thể thêm các đốt xương cho khung
Để tạo hoạt cảnh cho mô hình chính là tạo sự chuyển động, tương tác của đối tượng với các đối tượng khác và môi trường xung quanh Mô hình sẽ trở lên thiếu chân thực và không sống động nếu không có chuyển động và tương tác Vậy làm thế nào để có thể tạo chuyển động cho đối tượng được linh hoạt, uyển chuyển, để nó có thể thể hiện được hành vi, trạng thái của đối tượng trong thế giới thực không hề đơn giản Việc này đòi hỏi người tạo chuyển động phải hiểu được đối tượng trong thực tế và sự chuyển động của chúng
Khi một đối tượng hoặc một tổ hợp các đối tượng chuyển động, ta có thể
xử lý đối tượng đơn giản hơn bằng cách liên kết các thành phần của chúng thành liên kết phả hệ (Hierarchy linkage) hoặc thành một chuỗi (chain)
Liên kết phả hệ là liên kết giữa hai hay nhiều đối tượng, hình thành lên mối quan hệ cha - con, anh - em Nhờ vào liên kết phả hệ mà ta có thể xây dựng lên mối quan hệ phức tạp với nhiều đối tượng
Đối tượng cha điều khiển các đối tượng con trong cấu trúc, nói một cách khác chuyển động của cha ảnh hưởng đến tất cả các đối tượng thuộc lớp con nó đối tượng cha này lại chịu ảnh hưởng của đối tượng khác có cấp bậc cao hơn nó (đối tượng cha của nó)
Đối tượng con bị điều khiển bởi cha của nó Một đối tượng có thể là con của đối tượng này song lại là cha của đối tượng khác trong mối quan hệ thứ bậc Một đối tượng không có cha khi nó có vị trí cao nhất trong cấu trúc, nói cách khác nó là gốc của cấu trúc đó (Ancestor) Ngược lại đối tượng không có con khi nó có vị trí thấp nhất trong cấu trúc (Descendent) hay nói cách khác nó đóng vai trò là lá trong một cây
Đối với chuỗi liên kết: khi một đối tượng chuyển động có thể ảnh hưởng
đến một số hoặc tất cả các đối tượng khác làm cho một số thành phần hoặc cả đối tượng chuyển động theo
2.4 Thuật toán điều khiển dịch chuyển tiến nhân vật FK
Trang 38Để tạo ra những thao tác chuyển động của cánh tay của nhân vật con người có thể được coi như là một chuỗi các cơ quan cố định của cơ thể gắn với một trục tọa độ hoặc một khung (frame) gắn kết từng cái đơn lẻ lại với nhau
Các ký hiệu D-H bao gồm bốn thông số xác định vị trí tương đối của khung i
(frame i) đối với một frame trước đó (xem hình 2.8) Bao gồm:
Hình 2.8 Mô tả tham số Denavit-Hartenberg
a i chiều dài phổ biến, gọi là độ dài liên kết, có nghĩa là khoảng cách từ
giao điểm của trục z i - 1 với trục x i
d i là biến khớp cho một khớp dạng lăng trụ, khoảng cách giữa gốc O i -1 và
điểm Hi, Hi là điểm giao nhau của trục zi - 1 với trục x i
α i góc giữa trục của khớp i (joint i) và trục z i , trong đó trục x i phải nằm về phía bên phải, nó được gọi là vòng xoắn (độ xoắn) của liên kết
q i là biến cho một khớp cuốn ngoài, là góc tạo bởi trục x i -1 và trục x i, về
phía trục z i -1, bằng cách sử dụng các quy tắc bàn tay phải
Biến khớp của khớp thứ i, q i được định nghĩa là:
Ký hiệu D-H cung cấp cách để biểu diễn mỗi khung bởi một ma trận 4x4,
A ii-1cho biết vị trí và hướng của bộ phận cơ thể ở trạng thái thứ i so với trạng thái trước đó
Trang 39ma trận A được sử dụng để phát triển một ma trận của các biểu thức cho các phương trình chuyển động tiến T, cho thao tác của cánh tay T là một ma trận 4x4 mô tả vị trí và hướng của cơ quan phản ứng cuối cùng đối với khung cơ sở
như là một chức năng của mỗi biến khớp q i
Thao tác tại đỉnh của hệ đẳng cấp để tạo chuyển động cho cả chuỗi
FK (Forward kinematics) có các đặc trưng sau:
+ Cấp bậc liên kết từ cha đến con
+ Kế thừa những thay đổi về vị trí, sự xoay hoặc co dãn từ cha tới con + Khi 2 đối tượng liên kết với nhau, đối tượng con duy trì vị trí, sự quay và
sự co dãn của nó trong mối quan hệ với đối tượng cha Những thay đổi này là nhịp nhàng từ trụ của cha tới trụ của con Có thể dịch chuyển, xoay hoặc co dãn + Đối tượng con kế thừa những thay đổi của cha nó, và đối tượng cha lại kế thừa những thay đổi từ đối tượng có cấp bậc cao hơn nó (tổ tiên)
Tuy nhiên, với điều khiển FK, đối tượng con không bị cưỡng ép việc liên kết với đối tượng cha Có thể dịch chuyển, xoay hoặc co dãn đối tượng con độc lập với đối tượng cha
Điều khiển tiến FK yêu cầu xoay mỗi khớp xương lần lượt tới khi có được
vị trí mong muốn cho một cảnh Việc này chỉ phù hợp với chuyển động đơn giản còn đối với mô hình yêu cầu chuyển động phức tạp thì dùng FK sẽ là chậm không phù hợp gây cảm giác không uyển chuyển và chán nản, trong trường hợp này FK được dùng để hỗ trợ cho IK [15][21]
Dưới đây là một số tư thế hành động chuyển động của nhân vật là con người, khi đi có những hành động tay, chân,…
Trang 40Hình 2.9 Sử dụng điều khiển FK để tạo chuyển động cho chân, tay thao tác
2.5 Thuật toán điều khiển dịch chuyển lùi nhân vật IK
Để tạo ra các hành động chuyển động của nhân vật trong các ứng dụng thời gian thực các hành động sẽ được tạo ra trước khi ứng dụng được chạy Việc lập trình tương tác cho các ứng dụng Thực tại ảo nghĩa là sẽ chọn hành động phù hợp nhất cho một giai đoạn đặc biệt của ứng dụng Phương pháp này cung cấp một cách tạo hoạt động cho nhân vật trong các ứng dụng rất hiệu quả, nhưng điều gì sẽ xảy ra khi một nhân vật cần thực hiện các thao tác nhiều hơn so với các hành động được lưu trữ sẵn để lựa chọn? Cách giải quyết sẽ là tốt nếu vị trí