Vậy làm thế nào để có thể tạo sự chuyển động cho đối tượng để 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.. Chương 2: Nghiên cứu về cá
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
PHAN THỊ CÚC
NGHIÊN CỨU MÔ PHỎNG ĐỘNG TÁC CHUYỂN ĐỘNG
CỦA CON NGƯỜI TRONG THỰC TẠI ẢO
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội - Năm 2016
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
PHAN THỊ CÚC
NGHIÊN CỨU MÔ PHỎNG ĐỘNG TÁC CHUYỂN ĐỘNG
CỦA CON NGƯỜI TRONG THỰC TẠI ẢO
Chuyên ngành: Công nghệ thông tin
Trang 3MỤC LỤC
MỤC LỤC i
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT iii
DANH MỤC HÌNH ẢNH iv
LỜI NÓI ĐẦU 1
CHƯƠNG 1 TỔNG QUAN VỀ THỰC TẠI ẢO VÀ CHUYỂN ĐỘNG TRONG THỰC TẠI ẢO 2
1.1 Tổng quan về Thực tại ảo 3
1.1.1 Khái niệm thực tại ảo 3
1.1.2 Lịch sử phát triển của thực tại ảo 4
1.1.3 Hệ thống thực tại ảo 7
1.1.4 Đặc điểm của hệ thống thực tại ảo 8
1.1.5 Một số ứng dụng của thực tại ảo 9
1.2 Chuyển động trong Thực tại ảo 14
1.2.1 Vai trò của việc tạo chuyển động 15
1.2.2 Phân loại chuyển động 15
1.2.3 Tạo chuyển động 18
CHƯƠNG 2 MỘT SỐ KỸ THUẬT TẠO CHUYỂN ĐỘNG 21
CHO CON NGƯỜI TRONG THỰC TẠI ẢO 21
2.1 Kỹ thuật tạo chuyển động không dựa vào xương 21
2.1.1 Kỹ thuật tạo chuyển động Keyframe Animation 21
2.1.2 Kỹ thuật tạo chuyển động Path Animation 28
2.1.3 Kỹ thuật tạo chuyển động Non linear Animation With Track 30
2.1.4 Kỹ thuật tạo chuyển động Set Driven Key 30
2.2 Kỹ thuật tạo chuyển động dựa vào xương 31
2.2.1 Kỹ thuật điều khiển tiến FK (Forward kinematics) 35
2.2.2 Kỹ thuật điều khiển ngược IK (Inverse kinematics) 36
Trang 4CHƯƠNG 3: CHƯƠNG TRÌNH THỰC NGHIỆM 47
3.1 Mô tả bài toán 47
3.2 Phân tích lựa chọn công cụ mô phỏng 47
3.3 Một số kết quả thực nghiệm 49
PHẦN KẾT LUẬN 63
TÀI LIỆU THAM KHẢO 64
Trang 5LỜ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í trên mạng Internet
Nếu sai tôi xin tôi xin hoàn toàn chịu trách nhiệm
Hà Nội, Tháng 4 năm 2016
Học viên
Phan Thị Cúc
Trang 6LỜI CẢM ƠN
Với lòng biết ơn sâu sắc, em xin gửi lời cảm ơn tới các thầy, cô giáo trong Viện công nghệ thông tin và Truyền thông - Trường Đại học Bách Khoa Hà Nội đã tâm huyết truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thời gian học tập tại trường Và em cũng xin cảm ơn các thầy, cô giáo quản lý trong khoa sau đại học Viện Công nghệ thông tin và truyền thông Thái Nguyên đã luôn giúp đỡ, tạo điều kiện tốt nhất cho em trong quá trình học tập
Luận văn được thực hiện dưới sự hướng dẫn của PGS TS Đỗ Năng Toàn Viện Công nghệ thông tin - Đại học Quốc gia Hà Nội Em xin bày tỏ lòng biết ơn sâu sắc tới Thầy đã hướng dẫn và có ý kiến chỉ dẫn quý báu trong quá trình em làm luận văn
-Em xin cám ơn các anh chị trong Phòng Thực tại ảo -Viện Công nghệ thông tin - Viện Hàn lâm khoa học Việt Nam đã nhiệt tình giúp đỡ em trong quá trình làm luận văn
Tôi xin cảm ơn các đồng nghiệp và người thân đã động viên, giúp đỡ tôi trong quá trình nghiên cứu và thực hiện luận văn này
Hà Nội, Tháng 4 năm 2016
Học viên
Phan Thị Cúc
Trang 7DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
STT Ký hiệu/
1 VR Virtual Reality Thực tại ảo
3 HMD Head Mounted Displays Mũ đội đầu có màn hiển thị
5 FK forward kinematics Điều khiển tiến
6 IK inverse kinematics Điều khiển ngƣợc
Trang 8DANH MỤC HÌNH ẢNH
Hình 1.1 Giao diện giữa người sử dụng và hệ thống máy tính 3D 4
Hình 1.2 Thiết bị mô phỏng Sensorrama-1960 4
Hình 1.3 Ivan Sutherland và thiết bị mô phỏng HMD 5
Hình 1.4 Thiết bị VIDEOPLACE của Myron Kreuger 6
Hình 1.5 Scott Fisher, McGreevy và Thiết bị HMD-1984 của NASA 6
Hình 1.6 Hệ thống thực tại ảo 8
Hình 1.7 Mô hình lớp học ảo 10
Hình 1.8 Hệ thống phẫu thuật ảo 11
Hình 1.9 Mô phỏng thiết kế kiến trúc nhà ở 3D 12
Hình 1.10 Binh lính học nhảy dù bằng thực tế ảo 12
Hình 1.11 Hệ thống xương trong phần mềm đồ họa 17
Hình 1.12 Hệ thống khớp xương liên kết được phân cấp trong phần mềm đồ họa 18 Hình 1.13: Cấu trúc chung của mô hình cây phân cấp 19
Hình 1.14 Số lượng các khung hình nội suy xác định chuyển động 20
Hình 2.1 Hệ thống Frame trong phần mềm đồ họa 3D 21
Hình 2.2 Mô tả chuyển động theo các thời điểm chính 21
Hình 2.3 Chuyển động nhận vật sử dụng keyframe 22
Hình 2.4: Nội suy tuyến tính cho 5 Keyframe theo thời gian 23
Hình 2.5 Nội suy bậc hai cho 5 Keyframe 24
Hình 2.6 Mô tả chuyển động theo đường cong xác định trước 29
Hình 2.7 Mô tả chuyển động theo sự ràng buộc giữa các thuộc tính 31
Hình 2.8 Mô tả các khớp gối và xương chân 32
Hình 2.9 Hệ thống xương và khớp trong cơ thể con người 32
Hình 2.10 Sự phân cấp mô hình khung xương người 33
Hình 2.11 Tạo xương bàn tay 34
Hình 2.12 Mô tả chuyển động dựa vào khung xương 34
Hình 2.13 Hình ảnh điều khiển xoay một nhánh xương 35
Hình 2.14 Hệ thống khớp xương sử dụng phương pháp FK 35
Trang 9Hình 2.15 Sử dụng FK để tạo chuyển động cho chân thao tác với quả bóng 36
Hình 2.16 Hình ảnh một điều khiển IK được thêm cho một nhánh xương 37
Hình 2.17 Hình ảnh điều khiển xoay một nhánh xương 37
Hình 2.18 Sử dụng IK để tạo chuyển động cho cánh tay 38
Hình 2.19 Dịch chuyển chân từ vị trí đứng để nâng lên 39
Hình 2.20 Sử dụng một giải pháp IK để làm cho bàn tay của một nhân vật đạt được một mục tiêu 40
Hình 2.21 Một liên kết IK đơn 40
Hình 2.22 Môt liên kết đôi IK 41
Hình 2.23 Xoay liên kết cuối cùng bằng cách sử dụng kỹ thuật Phối hợp Descent Cylic cho IK 42
Hình 2.24 Quay liên kết trung gian bằng cách sử dụng kỹ thuật Phối hợp Descent Cylic cho các giải pháp IK 43
Hình 3.1 Mô hình skin đi ở mặt Front 61
Hình 3.2 Mô hình Wireframe 61
Hình 3.3 Mô hình Skeleton 61
Hình 3.4 Mô hình skin ở góc nhìn right 62
Hình 3.5 Mô hình skin vừa đi vừa chào ở góc nhìn right 62
Trang 10LỜI NÓI ĐẦU
Ngày nay, sự phát triển của máy tính đã đem đến cho con người những cơ hội mới để nghiên cứu các vấn đề của thực tế Bằng việc xây dựng lên môi trường thực tại ảo, con người có thể xây dựng thế giới thực vào máy tính, mô phỏng những
sự kiện có thật hoặc giả định trong thực tế vào vi tính để tìm hiểu
Thực tại ảo (VR – Virtual Reality) [1] 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
Các ứng dụng VR ngày càng trở nên hấp dẫn và phong phú hơn đặc biệt là trong lĩnh vực y học, kiến trúc, kỹ thuật, khoa học, giáo dục và giải trí Trong môi trường ảo, hầu hết các ứng dụng đều ở chế độ tạo mẫu ảo Các đối tượng được tạo
ra trong thế giới nhân tạo ở dạng mô hình hình học
Có thể nói lĩnh vực Thực tại ảo là một lĩnh vực vô cùng rộng lớn của công nghệ thông tin Nó bao gồm nhiều hướng phát triển và ứng dụng, trong đó không thể không nói tới vấn đề điều khiển mô hình thì tạo chuyển động cho đối tượng là cần thiết, là quan trọng
Khi có 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 Từ đó mô hình sẽ trở nên chân thực và sống động hơn Vậy làm thế nào để có thể tạo sự chuyển động cho đối tượng để 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 rõ được đối tượng trong thực tế và có những kiến thức sâu về hỗ trợ tạo chuyển động mà công cụ đưa ra
Xuất phát từ những thành quả do thực tại ảo đem lại nên tôi đã quyết định
lựa chọn đề tài: “Nghiên cứu mô phỏng động tác chuyển động của con người trong thực tại ảo” là một việc làm không chỉ có ý nghĩa khoa học và còn mang đậm tính
thực tiễn nhất khi thực tế đang đặt ra những yêu cầu đòi hỏi
Mục đích nghiên cứu của đề tài là:
Trang 11- Trình bày khái quát về Thực tại ảo và tạo chuyển động trong Thực tại ảo
- Tìm hiểu về các kỹ thuật tạo chuyển động cho đối tương 3D trong thực tại ảo
- Tìm hiểu về phương pháp tạo chuyển động cho đối tượng có xương
Chương 2: Nghiên cứu về các kỹ thuật tạo chuyển động cho con người trong thực tại ảo không dựa vào xương và tìm hiểu một số phương pháp điều khiển chuyển động áp dụng cho đối tượng có xương
Chương 3: Chương trình cài đặt thực nghiệm áp dụng một trong các kĩ thuật đã
tìm hiểu để mô phỏng chuyển động cho con người dựa vào xương
Trang 12CHƯƠNG 1 TỔNG QUAN VỀ THỰC TẠI ẢO VÀ CHUYỂN ĐỘNG
TRONG THỰC TẠI ẢO
Trước khi đi vào nội dung chính của luận văn, chúng ta tìm hiểu đôi nét về công nghệ thực tại ảo và vai trò của của việc tạo chuyển động trong thực tại ảo
1.1 Tổng quan về Thực tại ảo
1.1.1 Khái niệm 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 (tiếng Anh là virtual reality, viết tắt là VR) là thuật ngữ miêu tả một môi trường mô phỏng bằng máy tính Đa phần các môi trường thực tại ảo chủ yếu là hình ảnh hiển thị trên màn hình máy tính hay thông qua kính nhìn ba chiều, tuy nhiên một vài mô phỏng cũng có thêm các loại giác quan khác khác như âm thanh hay xúc giác
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 [6]
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
Trang 13để 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 đó
Hình 1.1 Giao diện giữa người sử dụng và hệ thống máy tính 3D
1.1.2 Lịch sử phát triển của thực tại ảo
Khái niệm thực tế ảo đã có trong nhiều thập niên nhưng nó chỉ thực sự được hận thức vào đầu năm 90 Vào giữa những năm 60 Morton Heilig (Mỹ) đã phát minh ra thiết bị mô phỏng SENSORAMA Sử dụng các hệ thống này người quan sát có cảm giác ảnh đang sống động ngay trước mắt mình Do không có sự hỗ trợ về tài chính do đó Heilig không thể hoàn thành ước mơ của mình Xong anh cũng đã tạo ra được một thiết bị mô phỏng được gọi là "Sensorrama Simulator", thiết bị này được công bố vào khoảng đầu những năm 1960
Hình 1.2 Thiết bị mô phỏng Sensorrama-1960
Trang 14Thiết bị này sử dụng hình ảnh 3D, thu được từ camera 35mm kết hợp thành một camera chính Nó gồm có một hệ thống âm thanh kết hợp với những cảnh quay
3 chiều thực sự
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 đề Heilig đã bỏ dở Anh ta đã chế tạo được hệ thống thiết bị hiển thị đội đầu (Head Mounted Display-HMD) Cái mũ sắt bao gồm một màn ảnh và hệ thống theo dõi video đã được các kỹ sư liên kết tới một hệ thống camera mạch đóng Họ dự định sử dụng HMD trong các tình huống nguy hiểm - một người có thể quan sát một môi trường thực sự từ xa, điều chỉnh góc quay camera bằng cách quay đầu Bell Laboratories đã sử dụng HMD cho những phi công lai máy bay trực thăng Họ liên kết HMD với những camera hồng ngoại gắn bên ngoài máy bay giúp phi công có thể nhìn rõ ngay cả trong môi trường thiếu ánh sáng
Năm 1970, Sutherland tiếp tục phát triển phần cứng của HMD tại trường đại học Utah, làm cho nó hoàn thiện hơn có màn hình là màn hình màu
Hình 1.3 Ivan Sutherland và thiết bị mô phỏng HMD
Cũng trong khoảng thời gian này Myron Kreuger (1942) đã phát triển một thiết bị có tên VIDEOPLACE Thiết bị này 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 hiển thị cái bóng người dùng Hệ thống 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
Trang 15Hình 1.4 Thiết bị VIDEOPLACE của Myron Kreuger
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), 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à ả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
Hình 1.5 Scott Fisher, McGreevy và Thiết bị HMD-1984 của NASA
Công nghệ Thực tại ảo từ những năm 90 trở lại đây được phát triển mạnh mẽ
và đang trở thành một công nghệ mũi nhọn nhờ khả năng ứng dụng rộng rãi trong mọi lĩnh vực như: nghiên cứu và công nghiệp, giáo dục và đào tạo cũng như thương mại, giải trí, tiềm năng kinh tế, cũng như tính lưỡng dụng trong dân dụng và quân
sự của nó
Trang 161.1.3 Hệ thống thực tại ảo
Hệ thống thực tại ảo bao gồm 3 thành phần chính sau: HW (phần cứng), bộ giả lập thực tại (reality simulator), phần mềm
Phần cứng (Hardware): Phần cứng của một VR bao gồm:
- Các thiết bị đầu vào (Input devices): là các thiết bị có khả năng kích thích các giác quan để tạo nên cảm giác về sự hiện hữu trong thế giới ảo gồm có:
Bộ dò vị trí (position tracking) để xác định vị trí quan sát Bộ giao diện định
vị (Navigation interfaces) để di chuyển vị trí người sử dụng Bộ giao diện cử chỉ (Gesture interfaces) như găng tay dữ liệu (data glove) Thiết bị tương tác
với máy tính thông qua thiết bị như chuột (SpaceBall), bàn phím,…
- Các thiết bị đầu ra (Output devices): gồm thiết bị hiển thị đồ họa (như Kính mắt Shutter Glasses, màn hình rộng, thiết bị HDM, ) để nhìn được đối tượng 3D Thiết bị âm thanh (loa) để nghe được âm thanh vòm (như Hi-Fi, Surround, ) Bộ phản hồi cảm giác (Haptic feedback như găng tay, ) để tạo xúc giác khi sờ, nắm đối tượng Bộ phản hồi xung lực (Force Feedback) để
tạo lực tác động như khi đạp xe, đi đường xóc,
Phần mềm (Software): Phần mềm luôn là linh hồn của VR cũng như đối với bất
cứ một hệ thống máy tính hiện đại nào Về mặt nguyên tắc có thể dùng bất cứ ngôn ngữ lập trình hay phần mềm đồ họa nào cũng phải bảo đảm hai công dụng chính là:
Mô hình hóa (modelling) và mô phỏng (simulation) các đối tượng trong VR
Các đối tượng của VR được mô hình hóa (modelling) tức là tạo dựng mô hình nhờ chính phần mềm này hay mô hình hoá từ mô hình 2D thành mô hình 3D nhờ công cụ đặc biệt từ các phần mềm như Maya, 3D Max,…
Mô phỏng (Simulation) là quá trình “bắt chước” hay mô tả các sự vật hiện tượng, cảnh vật có thực trong thiên nhiên hoặc trong trí tưởng tượng của con người
Bộ giả lập thực tại (reality simulator)
Là trái tim của hệ thống thực tại ảo, bao gồm hệ thống máy tính và phần cứng ngoại vi, thiết bị đồ hoạ và multimedia; cung cấp cho bộ tác động những thông tin giác quan cần thiết Trong hệ thống mô phỏng cabin lái, thì mô hình cabin là thành phần này
Trang 17Tóm lại, một hệ mô phỏng được thiết kế tốt, kết hợp với các thiết bị trình chiếu hiện đại và các thiết bị tương tác ngoại vi sẽ giúp con người tiếp cận được với thế giới ảo đó như đang ở trong thế giới thực Việc tạo ra các mô hình đối tượng có
độ chân thực và sức hấp dẫn hoàn toàn phụ thuộc vào cách ta lựa chọn phương pháp
để thể hiện chúng Mỗi phương pháp có những ưu điểm và nhược điểm riêng, vì thế tuỳ vào mức độ quan trọng của đối tượng trong hệ mà ta có thể chọn phương pháp phù hợp để xây dựng
1.1.4 Đặc điểm của hệ thống thực tại ảo
Một hệ thống VR có 3 đặc tính chính đó là: Tương tác (Interactive) - Đắm chìm (Immersion) - Tưởng tượng (Imagination)
là tương tác 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
Tính đắm chìm: 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 Điều này chúng ta có thể nhận thấy ngay khi quan sát trẻ nhỏ chơi video game Tương tác và khả năng thu hút của VR góp phần lớn vào cảm giác đắm chìm (immersion), cảm giác trở thành một phần của hành động trên màn hình mà người sử dụng đang trải nghiệm Nhưng
Trang 18VR còn đẩy cảm giác này "thật" hơn nữa nhờ tác động lên tất cả các kênh cảm giác của con người Trong thực tế, người dùng không những nhìn thấy đối tượng đồ họa 3D nổi, đ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 (thị giác), nghe (thính giác), sờ (xúc giác), các nhà nghiên cứu cũng đã nghiên cứu để tạo các cảm giác khác như ngửi (khứu giác), nếm (vị giác) 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: 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
Có hai khía cạnh của tính tưởng tượng trong một thế giới ảo: 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 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 đối với việc truy cậpvào những khu vực ảo nhất định, cho phép có được nhiều mức độ tự do khác nhau (Người 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 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ắtcủ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
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, (3I: Interactive - Immersion - Imagination)
1.1.5 Một số ứng dụng của thực tại ảo
Tại các nước phát triển, chúng ta có thể nhận thấy VR được ứng dụng trong mọi lĩnh vực: Khoa học kỹ thuật, kiến trúc, quân sự, giải trí, và đáp ứng mọi nhu cầu: Nghiên cứu - Giáo dục - Thương mại Y học là lĩnh vực ứng dụng truyền thống
Trang 19của VR Bên cạnh đó VR cũng được ứng dụng trong giáo dục, nghệ thuật, giải trí Trong lĩnh vực quân sự, VR cũng được ứng dụng rất nhiều ở các nước phát triển [7]
a 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
Hình 1.7 Mô hình lớp học ảo
Tất cả những đặc tính này khiến công nghệ VR 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 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 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
b 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
Trang 20phẫ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 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…
Hình 1.8 Hệ thống phẫu thuật ảo
c Xây dựng và thiết kế kiến trúc
Một trong những lĩnh vực ứng dụng tiêu biểu nhất của VR 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ệ VR 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
Việc xây dựng các mô hình không gian kiến trúc 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
Trang 21Hình 1.9 Mô phỏng thiết kế kiến trúc nhà ở 3D
d 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
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ả
Hình 1.10 Binh lính học nhảy dù bằng thực tế ảo
Trang 22d 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
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
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
e 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 Trong du lịch, với hỗ trợ thực tại ảo khách hàng có thể 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ị
f Khoa học cơ bản
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
g Hàng không vũ trụ
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
Trang 23tậ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ới cách 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
Tóm lại, với các ứng dụng đa dạng và nhu cầu thực tế thì công nghệ mô phỏng đang ngày càng phát triển mạnh mẽ hơn, thu hút sự quan tâm của mọi người nhất là những người quan tâm đến sự phát triển của công nghệ nói chung và công nghệ thông tin nói riêng Ở nước ta hiện nay, lĩnh vực này mới thực sự bắt đầu phát triển vì vậy nghiên cứu vấn đề này sẽ đem lại nhiều kết quả hứa hẹn trong tương lai
1.2 Chuyển động trong Thực tại ảo
- 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
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
Tạo mô hình là là tạo ra các khung cảnh, các nhân vật, các đối tượng trong thế giới, hay nói đúng hơn nó chính là bước tạo ra các phiên bảo ảo cho mô hình thế giới thực Chính vì vậy mà khâu tạo mô hình nó góp phần tạo nên diện mạo của các ứng dụng VR Khâu này đòi hỏi mô hình tạo ra phải có tính chân thực so với mô hình trong thế giới thực
Trang 24Điều khiển mô hình chính là khâu sử dụng các ngôn ngữ lập trình, lập trình điều khiển thế giới và lập trình tương tác giữa các đối tượng với nhau và giữa các đối tượng với thế giới
1.2.1 Vai trò của việc tạo chuyển động
Nói đến điều khiển mô hình là nói đến sự tương tác của các đối tượng trong thế giới ảo như: va chạm giữa các đối tượng, chuyển động của các đối tượng, biến đổi của các đối tượng theo thời gian… trong rất nhiều ứng dụng thực tại ảo thì chuyển động của các nhân vật, đối tượng… đóng vai trò chủ chốt quyết định tính chân thực của ứng dụng
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 chúng 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
Tạo chuyển động cho các đối tượng, góp phần quan trọng trong việc biến Thực tại ảo trở thành môi trường thử nghiệm những nghiên cứu cho các ngành khoa học khác có thể kể đến như: tạo chuyển động, mô phỏng sự chuyển động của hệ Xương người ảo sẽ là một ứng dụng mạnh hỗ trợ cho việc nghiên cứu về giải phẫu Xương người phục vụ trong đào tạo Y học
1.2.2 Phân loại chuyển động
Thực tế người ta phân chuyển động làm 2 loại: chuyển động của đối tượng
có xương và chuyển động của đối tượng không có xương Trong phạm vi đề tài, tác giả tập trung nghiên cứu các kĩ thuật tạo chuyển động cho đối tượng có xương Chẳng hạn như chuyển động của cơ thể người hay động vật
a Đối tượng không có xương
Đối với những đối tượng kiểu này, phương pháp tạo chuyển động hiệu quả nhất là tạo chuyển động theo các thời điểm chính, tạo chuyển động theo đường cong xác đinh trước, hoặc tạo chuyển động không tuyến tính với đoạn
Trang 25Đó là những đối tượng ít có sự biến dạng khi chuyển động như tàu, thuyền, máy bay,… hay đối tượng có sự biến dạng theo quy luật
Với kỹ thuật tổng hợp hình ảnh như hiện tại sẽ rất khó khăn để mô hình hóa các hiện tượng mà bề mặt không được xác định rõ ràng, cũng như không có qui luật như mây, khói, nước, lửa… Đặc biệt, các hiện tượng này luôn chuyển động và biến đổi Do đó, những đối tượng không định hình như thế này sẽ không thể dùng các kỹ thuật biến đổi thông thường dành cho các vật thể cứng trong đồ họa máy tính như hiện tại, mà Particle chính là một phương pháp đặc biệt dùng để mô phỏng cho các đối tượng kiểu này
Particle trong Thực tại ảo chính là các phần tử hay còn gọi là các hạt, là thành phần cấu tạo lên các chất liệu trong thế giới thực Chúng ta có thể tạo ra các particle đơn hoặc hàng triệu particle để thể hiện cho một chất liệu nào đó hoặc một tính chất cụ thể nào đó của một chất liệu cụ thể trong môi trường Thực tại ảo Các particle này mang cùng một tính chất, chính là tính chất của chất liêu mà nó mô phỏng Phần tử (particle) ở đây chúng ta không chỉ hiểu theo nghĩa vật lý mà chúng
ta còn hiểu phần tử (particle) ở đây là ở mức mô phỏng mà mắt người có thể nhìn thấy và điều khiển chúng Ví dụ như chúng ta muốn mô phỏng một khối nước bằng các particle, thì particle ở đây không phải là một phần tử nước theo nghĩa vật lý mà chính là các giọt nước
Trang 26Trong đồ hoạ hình động 3D, hệ thống xương đóng vai trò rất quan trọng để xây dựng chuyển động cho vật thể, hệ thống này là những liên kết có thứ bậc và thường được đặt tên là Skeleton và Joint Đây chính là hệ thống được xây dựng trong phần mềm đồ họa 3D với chức năng chính là sử dụng hệ thống xương gắn kết với các đối tượng để làm chuyển động cho các đối tượng 3D, đặc biệt là các nhân vật 3D [9]
Hình 1.11 Hệ thống xương trong phần mềm đồ họa
Hệ thống này được cấu thành từ nhiều nút liên kết và thường bắt đầu từ một nút gốc Đối với hệ xương của cơ thể người, nút gốc này thường được đặt là nút khớp hông Một xương được cấu tạo từ hai nút liên kết và được liên kết theo bề ngoài bằng những biểu tượng xương Hệ thống thứ bậc này cho phép bạn nhóm hoặc phân vùng những thành phần khác nhau của mỗi nhân vật theo hệ thống xương
đã tạo
Trang 27Hình 1.12 Hệ thống khớp xương liên kết được phân cấp trong phần mềm đồ họa
Hệ thống khớp làm việc như các hệ thống thứ bậc khác gồm nút gốc và những nút con có quan hệ thứ bậc Việc quay một nút sẽ dẫn đến việc quay những nút con của nó nhưng không làm ảnh hưởng đến những nút cha [9]
1.2.3 Tạo chuyển động
Trong mô hình cây phân cấp, mỗi node cần một chuyển đổi mà biến đổi nó
từ tọa độ gốc con rồi nhìn lên gốc cha Trong mô hình người, những biến đổi ban đầu được thiết lập để nhận diện từ tất cả các bộ phận cơ thể được kết nối một cách chính xác ngay từ đầu Khi người sử dụng xác định một phần cơ thể và chỉ rõ một thao tác, chuyển đổi của nó sẽ được sửa đổi cho phù hợp Khi áp dụng đệ quy chuẩn thường vẽ mô hình cây phân cấp, một phần cơ thể thực hiện điều này sẽ được di chuyển phù hợp với những mong muốn của người sử dụng
Bộ phận cơ thể ban đầu được kết nối liền mạch Khi một đoạn được di chuyển, ví dụ được xoay quanh một trục, đó là khớp, vì tất cả các bộ phận cơ thể được coi là cơ thể cứng nhắc, ngoại trừ trong trường hợp những đoạn cong sẽ được
mô tả sau, một khe hở sẽ xuất hiện giữa chúng
Trang 28Hình 1.13: Cấu trúc chung của mô hình cây phân cấp
Đối với một chuỗi phả hệ tác động thêm vào các tính năng hình ảnh động bằng cách cho phép người sử dụng để tạo ra một chuỗi các khung hình Chương trình sẽ tạo ra chuyển động bằng cách nội suy các hình ảnh động với một chuỗi các khung hình Chương trình ghi lại sự khác biệt trong phép quay và sự dịch chuyển của bộ phận cơ thể Sau đó, nó nội suy các hình ảnh động bằng cách tạo ra khung hình mới với những thay đổi nhỏ
Quay (Rotation)
Mỗi một phần cơ thể có thể xoay quanh một trục đi qua khớp tương ứng với khớp cha Hướng của trục này phụ thuộc vào mong muốn của người sử dụng Người dùng chỉ định quay hướng bởi các phím khác nhau Ba bậc tự do được cung cấp cho mỗi khớp (khớp gốc, khớp cha và khớp con)
Dịch chuyển (Translation)
Mô hình có khả năng dịch từng phần cơ thể riêng biệt Nó cung cấp một cách hữu ích để kiểm tra xem các bề mặt khớp được xây dựng một cách chính xác Tương ứng với mỗi khớp trên cơ thể người chúng ta thực hiện dịch chuyển khớp đó với một góc tương ứng với tứng chuyển động của con người
Trang 29Chuyển động (Animation)
Hình 1.14 Số lượng các khung hình nội suy xác định chuyển động
Để lưu một khung hình, chúng ta cần phải ghi lại tất cả các ma trận biến đổi trong cây Để làm điều đó, chúng tôi chỉ đơn giản là lưu trữ các ma trận trong một file * amt Để hiển thị một khung hình, chúng tôi chỉ đơn giản là tải các ma trận chuyển đổi từ * amt nộp lại các mô hình cây Vì nó là rất khó để nội suy các hình ảnh động khi các frame liền kề vì các chuyển động là rất giống nhau, các hình ảnh động có thể thay đổi trong một số trường hợp
Trang 30CHƯƠNG 2 MỘT SỐ KỸ THUẬT TẠO CHUYỂN ĐỘNG
CHO CON NGƯỜI TRONG THỰC TẠI ẢO
Nếu một mô hình mà không có sự chuyển động thì 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 Mô hình sẽ trở lên không chân thực và sống động nếu không sự có chuyển động và tương tác Vậy việc 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, môi trường xung quanh
2.1 Kỹ thuật tạo chuyển động không dựa vào xương
2.1.1 Kỹ thuật tạo chuyển động Keyframe Animation
Đây là kỹ thuật phổ biến nhất, sử dụng frame đánh dấu gọi là keyframe [8], [10], [17]
Hình 2.1 Hệ thống Frame trong phần mềm đồ họa 3D
Để xác định các nhịp chuyển động thì các nhà thiết kế áp dụng kỹ thuật sử dụng frame đánh dấu gọi là keyframe Với kỹ thuật này sẽ đặt tư thế, trạng thái của đối tượng tại những vị trí khác nhau đã được xác định, lưu lại những trạng thái này thành những key Sau đó, những frame giữa hai key frame sẽ được chương trình tự động tính toán để tạo ra sự chuyển tiếp giữa hai trạng thái kề nhau
Hình 2.2 Mô tả chuyển động theo các thời điểm chính
Trang 31Trong hầu hết các phần mềm đồ họa 3D để xây dựng chuyển động của một đối tượng, hệ thống Frame được coi là phương pháp thể hiện chuyển động một cách phổ biến nhất Những frame mang những thay đổi xuất hiện trong khoảng thời gian
đủ nhanh (thường là 24 hình/s) sẽ gây cảm giác chuyển động
Hình 2.3 Chuyển động nhận vật sử dụng keyframe
Có thể hiểu hơn nữa phương pháp keyframe là một kỹ thuật mà các công trình nhỏ như là một kịch bản (một loạt hình ảnh của đối tượng minh họa bằng một chuỗi các sự kiện) Nó cho phép dàn dựng và xây dựng một hình ảnh động bằng cách bố trí các đối tượng tại những vị trí khác nhau mà ta muốn và lưu lại những trạng thái ở thời điểm quan trọng này thành những key Những thời điểm quan trọng trở thành các điểm cố định trong thời gian qua đó đối tượng chuyển động đi qua
Lưu dữ liệu ảnh động: Nội suy bởi khung hình và thời gian
Mỗi đối tượng trong số các đối tượng của chúng ta, cho dù chúng đang chuyển động hay không, sẽ cần một khung hình chính xác định cho mọi kênh truyền
dữ liệu chuyển động tại thời điểm bắt đầu Chúng ta sẽ xác định kênh truyền dữ liệu chính như sau:
typedef struct stKEYCHANNEL{
float time;
float value; //Actual magnitude float tn, bs, ct; //Tension, bias and continuity int linear; //Flag to indicate that the key is linear }KEYCHANNEL
Trang 32Nếu chúng ta có thể xem xét mỗi kênh truyền dữ liệu một cách độc lập, vấn
đề về mã sẽ là làm thế nào để nội suy một kênh đơn nhất Giả sử rằng một kênh cụ thể có năm vị trí chủ chốt Chúng ta có năm giá trị thời gian và năm giá trị dấu phẩy động Hình 2.4 cho thấy một tập hợp của các điểm, các điểm được nối lại bằng cách
sử dụng các đường thẳng Phương pháp nội suy tuyến tính này vô cùng dễ dàng thực hiện Giữa bất kỳ hai khung hình chính, K1 và K1, giá trị của một điểm P tại thời điểm t được tính bằng:
P = K 1 value + ((t – K 1 time)/(K 2 time – K 1 time))*(K 2 value – K 1 value)
Hình 2.4: Nội suy tuyến tính cho 5 Keyframe theo thời gian
Nhưng kết quả của phương pháp này sẽ rất dễ bị trục trặc Đó là do đường cong nối các điểm không rõ nét Sự mô tả về kỹ thuật của đường này là nó thiếu tính liên tục của G1 và C1 Một đường cong có tính liên tục tại G0 liên tục nếu nó được nối tại các vị trí chủ chốt, Kn, và có tính liên tục tại G1 nếu tiếp tuyến tại điểm này với cả đoạn Kn – 1 → Kn và đoạn Kn → Kn + 1 có một hướng mà không nhất thiết phải cùng biên độ Đối một đường cong liên tục tại C1, các tiếp tuyến phải ở cùng một hướng và cùng biên độ
Đối với các đường cong chúng ta đang xem xét, chúng ta có một giá trị thay theo thời gian Nếu bạn đã quen thuộc với giải tích, bạn sẽ biết rằng lấy đạo hàm một đường cong sẽ cho một đường cong mới thể hiện sự thay đổi độ dốc của đường cong ban đầu theo thời gian Đối một đường cong rõ nét chúng cần C1 liên tục khi
nó cong ở vị trí chủ chốt Có nhiều khả năng cho một đường cong dạng này Cách thức chuẩn là sử dụng một đường cong khác giữa mỗi cặp vị trí chủ chốt Để đảm
Trang 33bảo rằng đường cong rõ nét tại các vị trí quan trọng, chúng ta cần phải xem xét độ dốc hoặc sự tiếp xúc với các đường cong ở đoạn kết thúc của một phần và bắt đầu phần tiếp theo Các đường dốc phải cùng một hướng và cùng biên độ để đảm bảo một sự chuyển đổi trơn tru Hình 2.5 cho thấy kết quả của việc sử dụng đường cong riêng phần theo đường cubic có hoặc không có sự nối tiếp của tiếp tuyến đến vị trí chủ chốt và đường cong theo sau các vị trí chủ chốt này Cách làm này rất hay, nhưng làm thế nào để chúng ta xác định một đường cubic đảm bảo để đi qua các vị trí chủ chốt Vấn đề này đưa đến một vấn đề quen thuộc với đồ họa máy tính nói chung, một trong những hàm số vẽ đường cong Một số hàm số vẽ đường cong không đi qua các vị trí chủ chốt thực sẽ không phù hợp Một đường cong phải bảo đảm đi qua các vị trí chủ chốt được gọi là nội suy
Hình 2.5 Nội suy bậc hai cho 5 Keyframe
Một loại đường cong phù hợp cho vấn đề này là đường Hermite, đặt tên theo tên một nhà toán học Một lần nữa, chúng ta cần phải xem xét loại đường cong này theo cách phân đoạn riêng biệt, đơn giản chỉ là nối hai vị trí quan trọng với mỗi đường cong Chúng ta muốn điều chỉnh các tiếp tuyến ở vị trí quan trọng, do đó, các dạng biến đổi của một đường cong Hermite mà chúng tôi sẽ sử dụng là Kochanek Bartels hoặc hình thức TCB TCB là viết tắt của độ căng thẳng, tính liên tục, và độ chênh lệch Bất kỳ độc giả quen thuộc với Lightwave 3D sẽ biết rằng loại đương cong này là các đường cong chuyển động chỉ có sẵn ở phiên bản 6 Việc điều chỉnh các thông số TCB có ảnh hưởng làm thay đổi tiếp tuyến với đường cong tại các vị trí chủ chốt Bây giờ để tìm một điểm P tại thời điểm t trên đường cong giữa các vị
Trang 34trí chủ chốt K1 và K2, chúng ta tìm vectơ pháp tuyến T1 ở đoạn đầu của đường cong và vectơ pháp tuyến T2 ở đoạn cuối của đường cong Để tìm các vector pháp tuyến, đầu tiên chúng ta tính toán các hệ số thang độ của đoạn so với cả đoạn và đoạn phía trước đó với cả đoạn và đoạn phía sau
S1 = (K2.time – K1.time)/(K2.time – K0.time)
S2 = (K2.time – K1.time)/(K3.time – K1.time)
Giai đoạn tiếp theo của biểu diễn đường cong của chúng ta là tính toán các
hệ số Hermite ở thời gian thực tế Chúng ta đang xử lý một đường cong tham số khi
t biến thiên giữa 0 và 1 Bây ta bạn cũng có thể có hai vị trí chủ chốt với giá trị thời gian là 6,3 và 9,87 Nhưng chúng ta cần mở rộng khoảng thời gian này đến 1,0 Điều này rất dễ dàng thực hiện Giả sử chúng ta muốn biết giá trị của t vào thời điểm 7,8 Đầu tiên, chúng ta trừ đi thời gian bắt của đoạn và sau đó ta tính toán thời gian phân đoạn
t = 7.8 – 6.3 = 1.5
dur = 9.87 – 6.3 = 3.57
Bây giờ những gì chúng ta cần phải biết là 1,5 chính là một tỷ lệ của 3,57 Khi thời gian là 6.3 phương pháp này sẽ cho t là 0 và khi thời gian là 9,87, t sẽ là 1,0 Tuy nhiênt vào thời điểm 7,8, t được tính là
t = 1.5/3.57 = 0.42
Các hệ số Hermite được xác định như sau:
h0 = 2t 3 – 3t 2 + 1
Trang 35h1 = –2t 3 + 3t 2 h2 = t 3 – 2t 2 + t h3 = t 3 – t 2
Cuối cùng, chúng ta có thể tính toán giá trị thực tế tại thời điểm t:
Q (t) = h0*K1.value + h1*K2.value + h2*T1 + h3*T2
Chú ý rằng khi t = 0, h0 = 1, h1 = 0, h2 = 0 và h3 = 0, t = 1, h0 = 0, h1 = 1, h2 = 0 và h3 = 0 Vì vậy tại t = 0 giá trị đường cong là :
Q (0) = 1*K1.value + 0*K2.value + 0*T1 + 0*T2 = K1.value
Và tại t = 1 giá trị đường cong là:
Q (1) = 0*K1.value + 1*K2.value + 0*T1 + 0*T2 = K2.value
Vì vậy đường cong đi qua vị trí các vị trí chủ chốt như chúng ta định Sau khi tính toán các tiếp tuyến tại mỗi đầu phân đoạn của đường cong, chúng ta có thể nội suy đường cong
Nội suy hướng
Nếu chúng ta chọn sử dụng góc Euler là thông số lưu trữ cho phương hướng, nhưng chúng toán muốn sử dụng quaternions cho việc nội suy, thì chúng ta cần một cách để chuyển đổi giữa góc Euler và quaternions Lợi ích là phép nội suy này cho kết quả nội suy là hình ảnh động trơn tru hơn xu hướng của một đối tượng, so với việc sử dụng biểu diễn đường cong Hermite
Phép Toán quaternion từ các góc Euler được tính bởi:
typedef struct stQUATERNION{
double w, x, y, z;
}QUATERNION;
Hãy nhớ lại rằng nhân một phép toán quaternion chúng toán sử dụng quy tắc sau đây:
Trang 36q1q2 = [w1w2 – v1• v2, v1 × v2 + w1v2 + w2v1]
Do đó,
qhqpqb = [ cos (h/2)cos (p/2)cos (b/2) – sin(h/2) sin(p/2) sin(b/2),
(cos(h/2) sin(p/2) sin(h/2) sin(p/2) + cos(b/2) cos(p/2) sin(h/2), cos (b/2)cos (h/2)sin (p/2) – cos (p/2)sin (h/2)sin (h/2)sin (p/2), cos (b/2)sin (h/2)sin (p/2) + cos (h/2)cos (p/2)sin (b/2))]
Dẫn đến hàm này:
void EulerAnglesToQuaternion( double h, double p,
double b, QUATERNION &q)
{
double h, p, b, ch, cp, cb, sh, sp, sb;
h = euler.h / 2.0; p = euler.p / 2.0; b = euler.b / 2.0;
ch = cos(h); cp = cos(p); cb = cos(b);
sh = sin(h); sp = sin(p); sb = sin(b);
để có thể tính bằng quaternions đƣợc tạo ra bởi Euler-AnglesToQuaternions, và tạo ra một cách nội suy nhƣ sau:
SlerpQuaternions(QUATERNION &start, QUATERNION &end,
double t, QUATERNION &result)
{
double theta, ct, st, scalestart, scaleend;
ct = start.w * end.w + start.x * end.x +
start.y * end.y + start.z * end.z;
theta = acos(-ct);
Trang 37st = sin(theta);
startscale = sin((1.0 -t) * theta) / st;
endscale = sin(t * theta) / st;
result.w = startscale * start.w – endscale * end.w; result.x = startscale * start.x – endscale * end.x; result.y = startscale * start.y – endscale * end.y; result.z = startscale * start.z – endscale * end.z;
}else{
theta = acos(ct);
st = sin(theta);
startscale = sin((1.0 -t) * theta) / st;
endscale = sin(t * theta) / st;
result.w = startscale * start.w + endscale * end.w; result.x = startscale * start.x + endscale * end.x; result.y = startscale * start.y + endscale * end.y; result.z = startscale * start.z + endscale * end.z;
}
}
Nhiệm vụ duy nhất còn lại là tạo ra một ma trận toán từ phép toán quaternion mới Việc này, chúng ta có thể sử dụng kiến thức về ma trận chuyển động quay như sau [36][37][38][39][40]:
Rất khó để có thể xác định một vòng quay trực tiếp bằng cách sử dụng quaternions, do đó rất nhiều chương trình hoặc là sử dụng góc Euler hoặc sử dụng trục góc cho việc biểu thị sự tương tác và sử dụng phép toán quaternion cho việc nội suy
2.1.2 Kỹ thuật tạo chuyển động Path Animation
Kỹ thuật này cho phép một hay nhiều đối tượng chuyển động theo một đường cong đã được xác định trước trong không gian [8]
Theo phương pháp này một đường cong sẽ được vẽ ra, sau đó đối tượng sẽ được khoá với đường cong và chuyển động trên nó Ta có thể sử dụng hình dạng