Hình 1.7: Bảng Sao chép đối tượng – CopyDi chuyển đối tượng – Move: Di chuyển tự do: Chọn công cụ Select And Move, nhấn vào đối tượng, kéo chuột vào một trong 3 trục, trục nào có màu vàn
Trang 1LỜI CAM ĐOAN
Tôi xin cam đoan đồ án tốt nghiệp “Xây dựng chương trình mô phỏng phòng truyền thống ảo Trường Đại học Công nghệ thông tin và Truyền thông
sử dụng công nghệ 3D” là công trình nghiên cứu của bản thân Những phần sử
dụng tài liệu tham khảo trong đồ án đã được nêu rõ trong phần tài liệu thamkhảo Các số liệu, kết quả trình bày trong đồ án là hoàn toàn trung thực, nếu saitôi xin chịu hoàn toàn trách nhiệm và chịu mọi kỷ luật của bộ môn và nhà trường
đề ra
Thái Nguyên, tháng 6 năm 2012
Sinh viênNguyễn Công Thịnh
Trang 2LỜI CẢM ƠN
Lời đầu tiên, em xin chân thành cảm ơn bộ môn Mạng – Truyền thông,Trường Đại học Công nghệ thông tin và Truyền thông, Đại học Thái Nguyên đãtạo điều kiện thuận lợi cho em thực hiện đồ án tốt nghiệp
Đặc biệt em xin chân thành cảm ơn ThS Lê Anh Tú đã rất tận tình hướngdẫn, chỉ bảo em trong suốt thời gian thực hiện đồ án vừa qua
Em cũng xin chân thành cảm ơn tất cả các Thầy, các Cô trong Trường đãtận tình giảng dạy, trang bị cho em những kiến thức cần thiết, quý báu để giúp
em thực hiện được đồ án
Mặc dù em đã có cố gắng, nhưng với trình độ còn hạn chế, trong quá trìnhthực hiện đồ án không tránh khỏi những thiếu sót Em hi vọng sẽ nhận đượcnhững ý kiến nhận xét, góp ý của các Thầy giáo, Cô giáo về những vấn đề triểnkhai trong đồ án
Em xin chân trọng cảm ơn!
Thái Nguyên, tháng 6 năm 2012
Sinh viênNguyễn Công Thịnh
Trang 3MỤC LỤC
LỜI CAM ĐOAN 1
LỜI CẢM ƠN 2
MỤC LỤC 3
DANH MỤC HÌNH ẢNH 5
LỜI NÓI ĐẦU 7
CHƯƠNG 1: TỔNG QUAN VỀ THIẾT KẾ 3D SỬ DỤNG 3DS MAX 8
1.1 Giới thiệu về 3ds Max 8
1.2 Khởi động 3ds Max 8
1.2.1 Màn hình giao diện 9
1.2.2 Cách vẽ một đối tượng 11
1.2.3 Các thao tác cơ bản 15
1.2.4 Hệ trục toạ độ 18
1.2.5 Các lệnh biến đổi đối tượng 20
1.3 Shape và hiệu chỉnh Shape 23
1.3.1 Giới thiệu các Shape 23
1.3.2 Hiệu chỉnh Shape 24
1.4 Các lệnh chuyển đối tượng 2D thành 3D 25
CHƯƠNG 2: ĐIỀU KHIỂN MÔ HÌNH 3D SỬ DỤNG XNA 27
2.1 Giới thiệu về thư viện đồ họa XNA 27
2.1.1 Lịch sử phát triển của XNA 27
2.1.2 Các phiên bản tính năng của XNA framework 27
2.2 Tổng quan về XNA framework Content Pipeline 29
2.3 Thiết bị đầu vào 30
2.3.1 GamePad cho máy Xbox360 30
2.3.2 Bàn phím 31
2.3.3 Chuột 31
2.4 Camera 32
2.4.1 Các thành phần của camera 32
2.4.2 Thao tác với camera 35
2.5 Đồ hoạ hai chiều trong XNA 36
Trang 42.5.1 Hệ tọa độ 2D 36
2.5.2 Một số định nghĩa 36
2.6 Đồ hoạ ba chiều trong XNA 37
2.6.1 Hệ tọa độ 3D 37
2.6.2 Cách sử dụng phép chiếu để ánh xạ một đối tượng 3D lên màn hình 37
2.6.3 Đỉnh và các hình cơ bản (Primitives) 39
2.6.4 Các vector, ma trận và các phép biến đổi 3D 40
2.6.5 Hiệu ứng Ánh sáng – Camera 42
2.6.6 Mô hình và Mảnh (Models and Meshes) 43
2.7 Kiểm tra va chạm 43
2.7.1 Khối cầu giới hạn (BoundingSphere) 44
2.7.2 Hình khối giới hạn (Bounding Box) 45
2.7.3 Khối chóp giới hạn (Bounding Frustum) 45
CHƯƠNG 3: XÂY DỰNG PHÒNG TRUYỀN THỐNG ẢO 3D 47
3.1 Giới thiệu Trường Đại học Công nghệ thông tin và Truyền thông 47
3.2 Mục đích xây dựng phòng truyền thống 47
3.3 Xây dựng mô hình 48
3.3.1 Xây dựng mô hình khung phòng truyền thống 48
3.3.2 Xây dựng mô hình tủ kính 49
3.3.3 Xây dựng khung ảnh 51
3.3.4 Xây dựng tượng Bác Hồ và bục kê tượng 52
3.3.5 Tạo ánh sáng trong khung hình 52
3.3.6 Tạo vật liệu cho các model 53
3.4 Xây dựng phòng truyền thống ảo sử dụng thư viện XNA 55
3.4.1 Cấu trúc cơ bản của một game XNA 55
3.4.2 Xây dựng các lớp đối tượng 58
3.5 Kết quả mô phỏng phòng truyền thống ảo 63
KẾT LUẬN 65
TÀI LIỆU THAM KHẢO 66
Trang 5DANH MỤC HÌNH ẢNH
Hình 1.1: Màn hình giao diện 3dsMax 9
Hình 1.2: Cách vẽ một đối tượng 12
Hình 1.3: Bảng lệnh Modify 13
Hình 1.4: Bảng Viewport controls 14
Hình 1.5: Khung nhìn – viewport 14
Hình 1.6: Layout các khung nhìn 15
Hình 1.7: Bảng Sao chép đối tượng – Copy 16
Hình 1.8: Bảng di chuyển đối tượng – Move 17
Hình 1.9: Bảng biến đổi tỉ lệ to, nhỏ – Scale 18
Hình 1.10: Điều chỉnh tâm của phép biến đổi 19
Hình 1.11: Bảng Lệnh Align 21
Hình 1.12: Bảng Lệnh Mirror 21
Hình 1.13: Bảng Lệnh Array 22
Hình 2.1: Sơ đồ thành phần của Content Pipeline 29
Hình 2.2: Các thành phần của camera 32
Hình 2.3: Ma trận projection 33
Hình 2.4: Ma trận View 34
Hình 2.5: Hệ tọa độ màn hình 36
Hình 2.6: Hệ tọa độ 3 chiều bàn tay trái và bàn tay phải 37
Hình 2.7: Phép chiếu phối cảnh 38
Hình 2.8: Phép chiếu trực giao 39
Hình 2.9: Mô tả phép toán Matrix.CreatePerspectiveFieldOfView 41
Hình 2.10: Mô phỏng phát hiện va chạm giữa 2 khối cầu 44
Hình 2.11: Ví dụ về frustum 46
Hình 3.1: Mô hình khung phòng truyền thống 48
Hình 3.2: Mô hình chiếc tủ kính 49
Hình 3.3: Mô hình khung ảnh 51
Hình 3.4: Mô hình khi tạo ánh sáng 52
Hình 3.5: Mô hình tủ kính khi thêm chất liệu 53
Hình 3.6: Mô hình tủ kính hoàn thiện 54
Trang 6Hình 3.7: Mô hình khung ảnh khi thêm chất liệu 54
Hình 3.8: Mô hình khung ảnh hoàn thiện 55
Hình 3.9: Tạo dự án Mophong 55
Hình 3.10: Trình tự gọi các biến và hàm thành viên trong Game1.cs 56
Hình 3.11: Thêm lớp CModel 58
Hình 3.12: Mô hình trong 3Ds Max 63
Hình 3.13: Mô hình trong lập trình 64
Trang 7LỜI NÓI ĐẦU
Trong quá trình phát triển của thế giới, những cuộc cách mạng công nghệđóng vai trò rất quan trọng, công nghệ làm thay đổi từng ngày, từng giờ cuộcsống của con người, theo hướng hiện đại hơn Đi đôi với quá trình phát triển củacon người, nhu cầu giải trí ngày càng đòi hỏi được nâng cao Trong đó 3D là mộtcông nghệ xây dựng chương trình giải trí mới Ngày nay công nghệ 3D đang pháttriển nhanh chóng thay thế cho những công nghệ cũ với những ưu điểm vượt trội
mà công nghệ 3D mang lại
Hiện nay có rất nhiều kỹ thuật lập trình đồ họa với những ưu nhược điểmkhác nhau Trong đó sử dụng thư viện XNA là một trong những kỹ thuật lập trình
đồ họa tốt nhất hiện nay với ưu điểm của là tốc độ làm game nhanh, quản lý tàinguyên (hình ảnh, âm thanh, ….) một cách hiệu quả và đơn giản, hỗ trợ nhiềungôn ngữ
Được sự định hướng và chỉ dẫn của ThS Lê Anh Tú, em đã chọn đề tài đồ
án tốt nghiệp: “Xây dựng chương trình mô phỏng phòng truyền thống ảo TrườngĐại học Công nghệ thông tin và Truyền thông sử dụng công nghệ 3D” Với mụcđích tìm hiểu kỹ thuật lập trình đồ họa sử dụng thư viện XNA và viết demo môphỏng phòng truyền thống Nội dung của đề tài được thể hiện qua 3 chương:
- Chương 1: Tổng quan về thiết kế 3D sử dụng 3Ds Max
- Chương 2: Điều khiển mô hình 3D sử dụng XNA
- Chương 3: Xây dựng phòng truyền thống ảo 3D
Do kiến thức và khả năng của em còn hạn chế, nên đồ án tốt nghiệp nàykhông tránh khỏi các thiếu sót Em rất mong nhận được sự góp ý của các thầy,các cô và các bạn để nội dung đồ án tốt nghiệp của em được hoàn thiện hơn
Trang 8CHƯƠNG 1: TỔNG QUAN VỀ THIẾT KẾ 3D SỬ DỤNG
3DS MAX
1.1 Giới thiệu về 3ds Max
3ds Max là một ứng dụng đồ họa đầy đủ đủ đặc điểm 3D được phát triểnbởi Autodesk Media & Entertainment, 3ds Max chạy trên nền Win32bit vàWin64bit Đến tháng 8 năm 2006 3ds Max đã phát triển phiên bản thứ 9
Sản phẩm 3D Studio gốc được tạo cho nền DOS phát triển bởi Yost Group
và do Autodesk xuất bản Autodesk đã mua sản phẩm khi phát hành lần thứ hai
và phát triển một cách rộng rãi Sau 3D Studio phiên bản 4, sản phẩm đã đượcđưa lên nền Windows NT, và tên gốc là "3D Studio MAX." Đây cũng là phiênbản gốc được tạo bởi Yost Group Sau đó sản phẩm được đổi tên thành "3dsmax" (tất cả đều là kí tự thường) để phù hợp hơn với từ Discreet, một công typhần mềm tiền thân là Montreal mà Autodesk đã mua lại Tại phiên bản 8 sảnphẩm đã lấy logo là của Autodesk, và tên đã được đổi lại thành "3ds Max" (chữthường và hoa)
3ds Max là một chương trình giúp tạo ra và diễn hoạt, mô phỏng các đốitượng 3 chiều, cho phép thiết đặt các khung cảnh mà trong đó ánh sáng, bóng đỗ,
sự phản chiếu, các hiệu ứng đặc biệt như: hiệu ứng mưa, sương mù, lửa, khói…được thiết kế khi cần thiết và cuối cùng cho phép xuất ra dưới các định dạng nhưphim, ảnh, các mô hình thực tế ảo…phục vụ cho việc tạo các phim hoạt hình,quảng cáo, thiết kế các nhân vật trong các trò chơi game
Đặc biệt trong lĩnh vực xây dựng dùng 3ds Max để thiết kế phối cảnh nội,ngoại thất Ngoài ra 3ds Max còn được ứng dụng rất đắc lực trong việc thiết kếcác mô hình hỗ trợ cho việc giảng dạy như: trong cơ khí thiết kế và diễn hoạt quátrình hoạt động của một động cơ, một người máy… Trong giải phẫu học diễnhoạt sự lưu thông của máu trong cơ thể…
1.2 Khởi động 3ds Max
Sau khi cài đặt xong chương trình 3ds Max, tiến hành khởi động chươngtrình như sau:
Trang 9C1: Nhấn Start – Programs – Autodesk – Autodesk 3ds Max 2009 – 32bit –Autodesk 3ds Max 2009 – 32bit
C2: Nhấn double lên shortcut 3ds Max Autodesk 3ds Max 2009 – 32bit trên mànhình nền Desktop
1.2.1 Màn hình giao diện
Hình 1.1: Màn hình giao diện 3dsMax
- Menu Bar: chứa thanh chọn các menu lệnh của chương trình.
Trang 10- Main Toolbar: thanh công cụ chính của max, chứa một số công cụ thể hiện
một số lệnh thông dụng để người sử dụng có thể chọn lệnh bằng mouse Thanhcông cụ chứa rất nhiều công cụ vì vậy phải dùng mouse để cuộn thanh công cụkéo ra
- Command Panel: chứa 6 bảng lệnh, mỗi bảng có một bộ lệnh và chức năng
riêng, bao gồm: Create: tạo mới, Modify: hiệu chỉnh, Hierarchy: phả hệ, Motion:chuyển động, Display: hiển thị, Utilities: tiện ích
- Time Slider: thanh trượt thời gian dùng cho việc diễn hoạt các đối tượng trong
khung cảnh
- Lock Selection: nút lệnh dùng bật tắt chế độ khoá đối tượng đang được chọn.
- Transform: các thông số toạ độ giúp di chuyển, xác định vị trí đối tượng chính
xác hơn
- Animation Button: bộ nút lệnh bật tắt chế độ ghi lại sự diễn hoạt của đối
tượng hiện hành
- Viewport Controls: các công cụ điều khiển khung nhìn, phóng to, thu nhỏ,
dich chuyển, xoay khung nhìn…
Cameras: Máy quay phim
Helpers: Công cụ trợ giúp
Space Warps: Tạo các hiệu ứng đặc biệt
Systems: Các lệnh hệ thống.
Trang 111.2.1.2 Nhánh lệnh Geometry
Gồm các mục công cụ sau:
- Standard Primitives: các khối hình học nguyên sinh chuẩn như: hình hộp,
khối cầu, hình trụ, ấm trà, hình nón…
- Extended Primitives: các khối hình học nguyên
sinh mở rộng như: khối hình hộp bo góc, khối đa
giác đặc biệt hình kim cương, bức tường dạng chữ
L…
- Compound Objects: dùng tạo các mô hình phứt
tạp từ các hình 2D hoặc 3D có sẵn…
- Particle System: hệ thống tạo hạt
- Patch Grids: mô hình tấm lưới
- NURBS Surfaces: bề mặt NURBS
- Doors: các mô hình cửa chính
- Windows: các mô hình cửa sổ
- AEC Extended: các đối tượng mở rộng hỗ trợ như: cây cảnh, các đường ray
tay vịn, các bức tường đa dạng…
- Dynamics Objects: các đối tượng thuộc động
lực học
- Stairs: các dạng cầu thang.
1.2.1.3 Nhánh lệnh Shapes
Bao gồm các công cụ giúp vẽ các hình
phẳng 2D như: đường thẳng, đường tròn, cung,
Trang 12Mỗi đối tượng đều có một số tham số về kích thước, hình dáng riêng biệt, muốnthay đổi các thông số này có nhiều cách:
- Vẽ đối tượng và tiến hành sửa chữa ngay trong bảng lệnh Create trước khi kết
thúc lệnh, để kết thúc lệnh đang vẽ bấm right click mouse hoặc nhấn chọn qua
Hình 1.2: Cách vẽ một đối tượng
Trang 131.2.2.2 Bảng lệnh Modify
- Bảng lệnh modify cho phép thực hiện các phép hiệu chỉnh trên đối tượng vàthực hiện các điều khiển thông số liên quan đến các thành phần của đối tượngcũng như các thông số của từng hiệu ứng
- Khi áp phép hiệu chỉnh cho đối tượng chương trình sẽ theo dõi thứ tự của phéphiệu chỉnh trong danh sách modifier stack, có thể xem danh sách modifier stacknhư là lý lịch ghi chép lại các hiệu chỉnh trên đối tượng
Hình 1.3: Bảng lệnh Modify
Trang 14Hình 1.5: Khung nhìn – viewport
Trình bày Layout các khung nhìn:
Nhấn phải lên tên khung nhìn, chọn Configure, chọn thẻ Layout, chọn kiểukhung nhìn
Trang 15Hình 1.6: Layout các khung nhìn
1.2.3 Các thao tác cơ bản
Thao tác chọn đối tượng - Select:
Chọn một đối tượng: Nhấn chuột trái lên đối tượng cần chọn
Chọn nhiều đối tượng: Chọn đối tượng thứ nhất, giữ Ctrl và nhấn chọn đối tượng
tiếp theo
Chọn theo tên: Chọn công cụ Select by name
Bỏ chọn tất cả đối tượng: Nhấn trái ra vùng nhìn trống
Bỏ chọn một vài đối tượng trong tập chọn: Giữ Alt và nhấn trái đối tượng muốn
bỏ chọn
Xoá đối tượng: Chọn đối tượng cần xoá, nhấn phím Delete.
Sao chép đối tượng – Copy:
Chọn một trong 3 công cụ Transform: Move, Rotate, Scale và giữ Shift và nhấn
và kéo đối tượng ra, xuất hiện hộp thoại, chọn kiểu copy, nhấn ok
Trang 16Hình 1.7: Bảng Sao chép đối tượng – Copy
Di chuyển đối tượng – Move:
Di chuyển tự do: Chọn công cụ Select And Move, nhấn vào đối tượng, kéo
chuột vào một trong 3 trục, trục nào có màu vàng thì sẽ di chuyển theo chiều trụcđó
Di chuyển chính xác: Chọn đối tượng và nhấn Phải vào công cụ Select And
Move để hiện ra hộp thoại tham số Move Transform Type In:
+ Absolute: Nhập vào các giá trị tuyệt đối chính xác cho các trục toạ độ x,
y, z so với gốc toạ độ
+ Offset: Nhập vào các giá trị toạ độ theo cách tịnh tiến so với vị trí hiện
hành
Trang 17Hình 1.8: Bảng di chuyển đối tượng – Move
Xoay đối tượng – Rotate:
Chọn công cụ select and rotate, chọn đối tượng cần xoay, di chuyển chuộtvào một trong 3 trục để kéo xoay Có thể quan sát góc độ xoay trong lúc quay, vàchỉ có vùng nhìn phối cảnh mới có thể xoay được 3 trục
Biến đổi tỉ lệ to, nhỏ – Scale:
- Co giãn tự do: Chọn công cụ Select And Uniform Scale, nhấn chuột lên đốitượng, kéo theo trục hoặc toàn bộ đối tượng để thay đổi kích thước
- Co giãn chính xác: Nhấn phải lên công cụ Select And Uniform Scale, hiện hộpthoại, nhập giá trị chính xác để điều chỉnh
Trang 18Hình 1.9: Bảng biến đổi tỉ lệ to, nhỏ – Scale
Trục – Axis:
Trục là một đường thẳng tưởng tượng trong không gian máy tính nhằmxác định một hướng Ba trục chuẩn trong max gọi là trục x, y và z Trong max cóthể xem như trục x là chiều rộng, trục y là chiều dài và trục z là chiều cao Giaođiểm của 3 trục này trong max gọi là gốc toạ độ (0, 0, 0)
Khi xoay một đối tượng, ba yếu tố ảnh hưởng đến kết quả là:
+ Hệ toạ độ hiện hành
+ Vị trí của điểm làm tâm xoay
+ Trục nào được chọn để xoay
Các phép biến đổi Transform dựa vào các trục Axis và vùng nhìnViewport Đây là một vấn đề cơ bản rất quan trọng trong MAX, hầu hết các phépbiến đổi như di chuyển – Move, xoay – Rotate, thu phóng – Scale đều sử dụng hệ
toạ độ vùng nhìn – View Coordinate như hệ toạ độ mặc định Với hệ toạ độ
Trang 19View này các trục được thể hiện tại các vùng nhìn phẳng – Top, Front, Left theo
cách như sau: trục x nằm ngang, trục y dọc và trục z thì vuông góc với hai trục
xy, đây chính là hệ trục toạ độ Screen trong Max.
Tại vùng nhìn phối cảnh – Perspective, hệ toạ độ lại thể hiện trục X chiều
ngang, trục Y chiều dài (chiều sâu) và trục Z chiều cao (chiều dọc), đây là hệ toạ
độ thế giới – World trong Max.
Tại các vùng nhìn phẳng có thể di chuyển đối tượng theo 2 trục x và y,
nhưng không thể di chuyển theo trục z Vì trong hệ toạ độ View thì đối tượng tại
các vùng nhìn phẳng không thể di chuyển theo trục z được, bởi vì không thể lôiđối tượng ra khỏi màn hình vi tính Do trục z vuông góc với 2 trục xy và hướng
ra trước mặt Trong khi tại vùng nhìn phối cảnh thì có thể tự do với cả 3 trục
Điều chỉnh tâm của phép biến đổi:
Tâm của phép biến đổi được gọi là điểm chốt – Pivot Point, tất cả các đối
tượng đều được làm biến đổi trong mối tương quan với điểm chốt này Các điềuchỉnh cho điểm chốt nằm tại Main Toolbar như sau:
Hình 1.10: Điều chỉnh tâm của phép biến đổi
Max cung cấp 3 loại điều chỉnh điểm chốt như sau:
Use Pivot Center: Tâm của điểm chốt
Mỗi một đối tượng trong max có một hệ toạ độ cục bộ của riêng đốitượng, gốc của hệ toạ độ cục bộ này được gọi là điểm chốt, tuỳ theo đối tượng cótâm ở giữa hay có tâm ở đáy, đây là vị trí mặc định
Use Selection Center: Tâm của tập chọn
Khi chọn nhiều đối tượng, loại tuỳ chọn tâm điểm chốt sẽ không còn dễ sửdụng nữa Tuỳ chọn này xác định điểm chốt nằm ngay tại tâm hình học của cácđối tượng đang được chọn, và khi xoay tất cả các đối tượng sẽ sử dụng tâmchung giữa các đối tượng
Trang 20Use Transform Coordinate Center: Tâm của hệ toạ độ
Khi chọn một hệ toạ độ tham chiếu có thể có một tâm điểm riêng, ví dụ hệtoạ độ World có tâm điểm tại 0, 0, 0
Thay đổi vị trí điểm chốt – tâm xoay:
Để thay đổi vị trí điểm chốt của một đối tượng, chọn đối tượng đó, chọn bảng
lệnh Hierarchy, chọn kiểu điều chỉnh điểm chốt thích hợp.
Affect Pivot Only: Chỉ làm biến đổi điểm chốt của đối
tượng mà thôi, không thể di chuyển, xoay, scale khối
hình học khi nút lệnh này được bật
Affect Object Only: Ngược lại với lệnh trên, điểm chốt
vẫn giữ nguyên vị trí, làm biến đổi trên đối tượng tuỳ
ý
Center to Object: Gióng cho điểm chốt trở về giữa tâm
của đối tượng hiện hành
Align to Object: Gióng cho các trục x,y,z của điểm
chốt trùng với trục x,y,z của hệ toạ độ cục bộ được
chọn
Align to World: Gióng cho các trục x,y,z của điểm
chốt trùng với hệ toạ độ thế giới
Reset Pivot: Cho điểm chốt trở về vị trí mặc định.
1.2.5 Các lệnh biến đổi đối tượng
Trang 22Cách thực hiện:
+ Chọn đối tượng cần tạo dãy
+ Chọn menu Tools – Array
+ Xuất hiện hộp thoại tham số cho lệnh Array
+ Điền các tham số thích hợp cho việc tạo dãy, nhấn Preview xem thử, xongOk
+ Chọn đối tượng 3d, chọn menu
Tools – Spacing tool, hiện hộp
thoại, nhấn Pick Path, nhấn chọn
Trang 23đường dẫn, xác định số lượng các đối tượng cần nhân bản ở hộp Count, xong Apply.
1.3 Shape và hiệu chỉnh Shape
1.3.1 Giới thiệu các Shape
Max hỗ trợ 11 công cụ tạo Shape, cách sử dụng các công cụ này tương tự như các phần mềm đồ hoạ 2d khác như: Corel, Illustrator…
Mặc định các shape khi được tạo ra sẽ không
nhìn thấy khi render
1.3.2 Hiệu chỉnh Shape
Max xem các Splines như là hình Shape, một hoặc nhiều các splines cóthể kết hợp để tạo ra các hình Shape phứt tạp hơn
Nút lệnh Start New Shape nếu không được
kiểm nhận thì tất cả các Spline tạo ra đều là một
shape, ngược lại khi nút được kiểm thì mỗi spline
đều là một shape mới
Bất kỳ một shape nào được tạo ra từ lệnh
line đều có thể chỉnh sửa, tuy nhiên các đường
Trang 24spline khác như vòng tròn, cung… thì phải chuyển đổi để trở thành một spline cóthể chỉnh sửa được, bằng cách nhấn phải vào đường spline chọn Convert ToEditable Splines.
Sau khi chuyển sang chế độ chình sửa có thể truy cập các thành phần thứ cấpcủa spline như: đỉnh – vertex, đoạn – segment, hay chính spline đó Attach chophép gán một hoặc nhiều spline vào một shape hiện hành…
a) Hiệu chỉnh Spline ở cấp độ đỉnh – Vertex:
Cấp độ đầu tiên và quan trọng để hiệu chỉnh spline chính là vertex Khi cấp
độ đỉnh được kích hoạt, các đối tượng mà chỉ có thể chọn trong khung nhìn chỉ làcác đỉnh mà thôi
Bằng cách nhấn phải vào đỉnh, có thể thay đổi kiểu hiệu chỉnh đỉnh như sau:+ Corner: nhọn
+ Smooth: trơn tru
+ Bezier: nét trơn với 2 cần điều khiển phụ thuộc
+ Bezier corner: nét trơn với 2 cần điều khiển độc lập
Các lệnh thường sử dụng khi hiệu chỉnh đỉnh:
+ Refine: thêm đỉnh
+ Break: tách đỉnh
+ Connect: nối 2 đỉnh…
b) Hiệu chỉnh Spline ở cấp độ đoạn – Segment:
Devide: chia đoạn
Detach: tách đoạn
Hide: dấu đoạn
Delete: xóa đoạn
c) Hiệu chỉnh Spline ở cấp chu tuyến – Spline:
Chọn chế độ Spline tại Sub Object cho phép hiệu chỉnh đối tượng ở chế độ này.Mirror: Lật đối xứng spline hiện hành
Outline: Tạo ra một bảng song song với spline hiện hành
Reverse: Dùng để đảo ngược thứ tự các đỉnh trong spline
Trim: Cắt xén spline
Trang 25Extend: Kéo dài spline.
Boolean: Thực hiện các phép cộng, trừ, giao nhau…
Attach: Kết hợp các spline
Detach: Tách các spline ra
1.4 Các lệnh chuyển đối tượng 2D thành 3D
Lệnh Extrude: Dùng tạo khối 3D
Cách thực hiện:
+ Chọn đối tượng shape 2d muốn tạo khối
+ Chọn bảng lệnh Modify – Modifier List – Extrude
Bevel Profile: Là một hình thức vát cạnh hay trượt vòng theo biên hình dạng Để
sử dụng lệnh này cần phải có 2 đối tượng shape: một hình shape dùng làm đườngdẫn, và hình shape còn lại dùng làm tiết diện
Độ sâu của khối
khối
Trang 26+ Chọn đối tượng làm tiết diện.
Bevel: Cũng là một hình thức tạo khối như Extrude, nhưng có khả năng vát cạnh
+ Tạo đối tượng shape muốn áp dụng lệnh Lathe
Chọn Modify – Lathe, xác lập các tham số thích hợp
Trang 27CHƯƠNG 2: ĐIỀU KHIỂN MÔ HÌNH 3D SỬ DỤNG XNA
2.1 Giới thiệu về thư viện đồ họa XNA
2.1.1 Lịch sử phát triển của XNA
XNA được phát triển bởi Microsoft cách đây hơn chục năm nhưng khi đóXNA vẫn là một bí mật và không được nhiều người biết đến Vào năm 2004,Microsoft giới thiệu XNA lần đầu tiên tại hội nghị phát triển trò chơi lớn nhấthàng năm (Game Developers Conference) XNA không chỉ là một frameworkgiống DirectX, XNA còn chứa nhiều công cụ và thậm chí là một môi trường pháttriển tương thích với Visual Studio để giúp phát triển các ứng dụng trò chơi mộtcách dễ dàng
XNA có thể là một kế thừa của DirectX Framework, nhưng khi Direct3D
10 Beta cho Windows Vista được phát hành vào cuối năm 2005, DirectX vẫn làframework đồ họa dành cho hệ điều hành mới này Sau đó, đầu năm 2006 tạiGDC bản Microsoft XNA Build March 2006 CTP được phát hành XNA Build làmột công cụ cho phép quản lí các tiến trình xây dựng các tác vụ phức tạp, tương
tự như là MsBuild và Ants, nhưng phức tạp và hiệu quả hơn Nhưng sau một thờigian không có gì xảy ra, đặc biệt là các nhóm phát triển vừa và nhỏ không thật sựcần một công cụ quản lí xây dựng phức tạp
Tại hội nghị Gamefest vào tháng tám (hội nghị phát triển trò chơi mớiđược tổ chức bởi Microsoft), ở đó Microsoft thông báo XNA Game StudioExpress beta 1 được phát hành vào 30/8/2006 Bản beta đầu tiên chỉ chứa mộtdụng cụ khởi đầu, “Space Wars”, và XNA không bao gồm nhiều tính năng 3D.Nhiều nhà phát triển và người yêu thích thử dùng XNA và viết nhiều trò chơi 2Dnhỏ với sự giúp đỡ của lớp Sprite trong XNA Khi đó, việc tạo mô hình 3D theo
ý mình là một điều rất khó
2.1.2 Các phiên bản tính năng của XNA framework
XNA Game Studio Express hướng tới những người mới bắt đầu, nhữngngười yêu thích trò chơi và sinh viên Môi trường phát triển cho phép họ pháttriển ứng dụng trò chơi trên nền tảng Windows và Xbox 360 một cách nhanhchóng Điều này không có nghĩa là các nhà phát triển trò chơi chuyên nghiệp
Trang 28không thể sử dụng XNA Phiên bản đặc biệt XNA Game Studio Professionalnhằm vào những nhà phát triển chuyên nghiệp được phát hành vào mùa hè 2007.
XNA Game Studio Professional là một phiên bản môi trường phát triểntích hợp của XNA cho các nhà phát triển trò chơi chuyên nghiệp
XNA Game Studio Express là phiên bản hướng đến những đối tượng cóthể không chuyên nghiệp nhưng lại yêu thích lập trình trò chơi như: sinh viên,những người yêu thích trò chơi, các nhà phát triển trò chơi độc lập XNA GameStudio Express là phiên bản miễn phí Phiên bản cuối cùng được cung cấp ngày
sự hỗ trợ điều khiển tốt hơn
XNA Game Studio 3.0 (dùng cho Visual Studio 2008 hoặc Visual C#
2008 Express Edition) Phiên bản được đưa ra vào ngày 30 tháng 10 năm 2008.Tạo game chạy đa nền tảng như Windows, Xbox 360 và Zune
XNA Game Studio 3.1 là bản được cập nhật và sửa lỗi của bản XNAGame Studio 3.0 được đưa ra vào 11/6/2009
XNA Game Studio 4.0 (dùng cho Visual Studio 2010 hoặc Visual C#
2010 Express Edition) XNA Game studio 4.0 chính thức ra đời vào ngày16/9/2010 XNA Game Studio 4.0 đã hỗ trợ thêm nền tảng WP7 (bao gồm cả giatốc phần cứng 3D), trang bị thêm đặc tính, các đối tượng được xây dựng sẵn, cácthiết bị đồ hoạ có hướng và vô hướng, hỗ trợ chạy đa nền tảng, hỗ trợ điều khiêncảm ứng đa diểm chạm, hỗ trợ nhận âm thanh từ micro
XNA Game Studio 4.0 Refresh là bản cập nhật của XNA Game Studio 4.0
để sửa lỗi và thêm hỗ trợ cho phát triển trò chơi mà mục tiêu của hệ điều hànhWindows Phone 7.1 và trò chơi phát triển trong Visual Basic
Trang 292.2 Tổng quan về XNA framework Content Pipeline
Hầu hết các trò chơi đều sử dụng các dạng mô hình, sprite, texture, hiệuứng, hình động… Toàn bộ tài nguyên đó có thể được tạo bằng nhiều cách khácnhau và được lưu trữ bởi nhiều định dạng tập tin khác nhau Content Pipelineđược thiết kế để giúp đưa tài nguyên vào trò chơi một cách dễ dàng và tự động.Content Pipeline có thể được dùng để giải quyết vấn đề thực tế: Những nội dung
mà tạo cho trò chơi thì không sẵn sàng cho trò chơi Ví dụ, nội dung 3D thườngđược lưu giữ trong một định dạng riêng và cần phải chuyển đổi dữ liệu trước khinạp nội dung vào trong trò chơi Nói chung, Content Pipeline có thể nhận các tậptin khác nhau như đầu vào, chuyển tập tin sang dạng mà có thể làm việc, và sau
đó biên dịch tập tin thành một định dạng mà có thể dễ dàng nạp vào trò chơi khitrò chơi bắt đầu
XNA framework Content Pipeline được thiết kế để:
- Cho phép các họa sĩ trò chơi sử dụng công cụ tạo nội dung kỹ thuật số(DCC)
- Cung cấp một kỹ thuật để tách riêng sự độc lập của nội dung số trên mộtmáy trò chơi cụ thể
- Cung cấp nội dung đơn giản, mở rộng để xây dựng hệ thống mà cần cảngười thiết kế đồ họa và người phát triển trò chơi
Sơ đồ các thành phần của Content Pipeline :
Hình 2.1: Sơ đồ thành phần của Content Pipeline
Các định dạng Content Pipeline hỗ trợ:
- Định dạng tập tin 3D: X (dùng bởi DirectX), FBX ( chuyển định dạng tậptin tạo bởi Autodesk )
Trang 30- Định dạng tập tin nguyên liệu (material): FX (các tập tin hiệu ứng có thểđược dùng để mô tả chi tiết mô hình 3D hoặc thêm hiệu ứng vào cảnh3D).
- Định dạng tập tin 2D: BMP, DDS, DIB, HDR, JPG, PFM, PNG, PPM vàTGA (các định dạng tập tin hình ảnh thông thường)
- Mô tả phông chữ: SPRITEFONT (tập tin XML được dùng bởi XNA, mô
tả cách tạo một sơ đồ bố cục từ kích thước loại phông chữ cụ thể)
Định dạng tập tin âm thanh: XAP (tạo bởi công cụ XACT, có thể gắn hầuhết các định dạng tập tin âm thanh)
2.3 Thiết bị đầu vào
Thiết bị đầu vào là những thiết bị giúp người chơi điều khiển nhân vật củamình trong trò chơi Thông qua thiết bị vào, người chơi có thể hoá thân thànhmột nhân vật trong trò chơi Ví dụ, khi chơi các trò chơi đua xe, quả thật rất làhồi hộp Khi đó, người chơi phải xem mình chính là người lái chiếc xe đó và xemnhư mình đang thật sự điều khiển chiếc xe ở ngoài thế giới thật vậy Mỗi khinhân vật bị té ngã hay va chạm với ai đó thì người chơi cũng có cảm giác giốngnhư vậy, cũng vui, buồn, giận…
Hiện tại có nhiều thiết bị vào để điều khiển trò chơi như bàn phím, chuột(cho Windows), GamePad cho máy Xbox360,… Và XNA hỗ trợ cả ba loại trên
2.3.1 GamePad cho máy Xbox360
XNA cung cấp cho những lớp hỗ trợ cho phép dễ dàng xác định trạng tháicủa GamePad Sử dụng lớp GamePad làm đại diện cho thiết bị gamepad tươngứng của Xbox và lớp GamePadState để biểu diển các trạng thái của gamepad
- Kiểm tra xem gamepad đã kết nối hay chưa: Để kiểm tra xem gamepad đãkết nối hay chưa, sử dụng thuộc tính GetState().IsConnected của lớpGamePad Thuộc tính này có giá trị kiểu bool, nếu là true thì gamepad đãđược kết nối, ngược lại là chưa kết nối
- Kiểm tra xem nút nào trên gamepad đang được ấn: Sử dụng phương thứcGamePadState.IsButtonDown(Buttons btn) để kiểm tra Nếu đầu ra là truethì nút này đang được ấn, ngược lại là không được ấn
Trang 31- Các lớp hỗ trợ: GamePad, GamePadState.
2.3.2 Bàn phím
Bàn phím, với nhiều phím tốt nhất cho các mô phỏng phức tạp, với nhiềuchức năng, hoặc khi gõ văn bản là cần thiết nhưng bàn phím không phải là mộtđiều khiển cho các chuyển động chính xác
Nếu bàn phím của người dùng kết nối thông qua cổng USB, bàn phím cóthể được dùng cho hệ thống Windows hoặc Xbox 360
XNA cung cấp cho những lớp hỗ trợ cho phép dễ dàng xác định trạng tháicủa những thiết bị vào Xác định trạng thái của bàn phím bằng cách khai báo biếnchứa trạng thái của bàn phím và gọi phương thức GetState của đối tượngKeyboard
private KeyboardState keyboardState ;
xe cuộn có thể điều khiển thêm hai hướng, nhưng không cung cấp dữ liệu vàochính xác
Kiểm tra nút nào đang ấn: Sử dụng phương thức GetState() của lớp Mouse
và giá trị trả về là một đối tượng của lớp MouseState Sau đó, khai thác của thuộctính của lớp MouseState để sử dụng
Lấy vị trí của chuột: Để lấy toạ độ hiện thời của chuột, cũng phải khai báo
để lấy được trạng thái hiện thời của chuột bằng phương thức Mouse.GetState().
Để lấy toạ độ chuột, dùng thuộc tính MouseState.X hoặc MouseState.Y
Trang 32Cho phép hiện con trỏ chuột trong trò chơi: Dùng thuộc tính
Game.IsMouseVisible để qui định Nếu thuộc tính này được gán là true, thì con
trỏ chuột sẽ được hiển thị, ngược lại thì không
2.4 Camera
2.4.1 Các thành phần của camera
Camera rất quan trọng đối với trò chơi Camera giống như khi quay phim.Camera có rất nhiều góc quay, như camera người thứ nhất (loại camera này chính
là con mắt của nhân vật trong các trò chơi đi cảnh, nhân vật), camera người thứ
ba (loại camera nhìn nhìn từ trên cao xuống, xem toàn cảnh trò chơi, thường ápdụng cho trò chơi chiến thuật, và thường được chuyển đổi qua lại với camerangười chơi thứ nhất) Kết quả thu được từ camera còn tuỳ thuộc vào vị trí đặtcamera, mục tiêu nhìn (hướng nhìn – nhìn về đâu), và góc nhìn của camera,phạm vi nhìn thấy được của camera (nếu các đối tượng trong cảnh nằm ngoàivùng này thì không được nhìn thấy)
Camera gồm có năm thành phần sau: vị trí đặt camera (Position), mục tiêucần nhìn vào (View), hướng nhìn của camera (Look), hướng phía trên củacamera (Up) và vector pháp tuyến (Right) hướng ra từ mặt phẳng tạo bởi haivecctor (Up, Look)
Hình 2.2: Các thành phần của camera
Để sử dụng camera, ta cần phải nắm rõ ba loại ma trận sau: ma trận chiếu,
ma trận nhìn và ma trận thế giới
Ma trận chiếu – Projection: chuyển dữ liệu từ dữ liệu không gian camera
đã được chiếu lên màn hình Tính toán ma trận chiếu nên được thực hiện ở một
Trang 33bước riêng để cho phép ViewMatrix có thể được tính toán và thay đổi dễ dànghơn Không gian Camera dao động từ -1 đến +1 cho cả hai trục X và Y Riêng Zchứa giá trị độ sâu cho mỗi điểm liên quan với vị trí camera Ma trận chiếu:chuyển 3 giá trị trên sang độ phân giải màn hình và cho phép xem cận cảnh, xa,gần…
Độ sâu: quyết định thứ tự trước sau của các đối tượng 3-D
Để tìm ra được ma trận chiếu tương ứng, XNA cung cấp một vài hàm,
thường dùng nhất là hàm Matrix.CreatePerspectiveFieldOfView(fieldOfView,
aspectRatio, nearPlane, farPlane) Trong đó, ý nghĩa các tham số như sau:
- fieldOfView: tính theo radian FOV biểu thị góc nhìn cảnh 3D Chỉ nhữngphần cảnh nào nằm trong góc này mới có thể nhìn thấy được Góc FOVcàng lớn thì nhìn được cảnh rộng hơn Thông thường giá trị mặc định củaFOV là 450 tức (П/2)
- aspectRatio: được gọi là tỉ lệ co
- nearPlane và farPlane: xác định khoảng cách tới mặt gần nhất và xa nhấtcho phép thấy được cảnh Thường lấy theo tầm nhìn của mắt người là từ0.1 mét đến 100 mét Chỉ những phần cảnh nào nằm trong vùng giới hạnnày thì mới được hiển thị Phần nằm ngoài sẽ mất đi (không được hiểnthị)
Hình 2.3: Ma trận projection