XNA không chỉ là một frameworkgiống DirectX, nó 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
Trang 1LỜI CAM ĐOAN
Tôi xin cam đoan đồ án tốt nghiệp “Thiết kế trò chơi phi thuyền sử dụng
kỹ thuật lập trình đồ họa 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ệutham khảo Các số liệu, kết quả trình bày trong đồ án là hoàn toàn trung thực, nếusai tô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 Xuân Trường
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 Xuân Trường
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
MỞ ĐẦU 7
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 8
1.1 Thư viện đồ họa XNA 8
1.1.1 Giới thiệu về XNA 8
1.1.2 Tổng quan về XNA framework Content Pipeline 10
1.1.3 Quản lý Âm thanh 11
1.1.4 Thiết bị đầu vào 13
1.1.5 Camera 14
1.1.6 Đồ hoạ hai chiều trong XNA 18
1.1.7 Đồ hoạ ba chiều trong XNA 19
1.1.8 Kiểm tra va chạm 25
1.2 Phần mềm Autodesk 3ds Max 29
1.2.1 Tổng quan về 3ds Max 29
1.2.2 Sơ lược về cách sử dụng 3ds Max 30
CHƯƠNG 2: XÂY DỰNG GAME 3D SỬ DỤNG THƯ VIỆN ĐỒ HỌA XNA .39
2.1 Kịch bản game Cpacecraft 39
2.1.1 Cốt truyện 39
2.1.2 Kịch bản 39
2.1.3 Mục tiêu 39
2.2 Xây dựng các mô hình 39
2.2.1 Mô hình phi thuyền 39
2.2.2 Mô hình thiên thạch 40
2.2.3 Mô hình tên lửa 43
2.2.4 Tạo nền cho game 44
2.3 Xây dựng game Cpacecraft 44
Trang 42.3.1 Cấu trúc cơ bản của một game XNA 44
2.3.2 Xây dựng các lớp đối tượng 47
2.3.3 Xây dựng lớp Game1 54
CHƯƠNG 3: GIỚI THIỆU GAME CPACECRAFT 62
3.1 Khởi tạo game 62
3.2 Cách chơi game 62
3.3 Cách tính điểm và điều kiện thắng thua 63
3.3.1 Cách tính điểm 63
3.3.2 Điều kiện thắng thua 65
KẾT LUẬN 67
TÀI LIỆU THAM KHẢO 68
Trang 5DANH MỤC HÌNH ẢNH
Hình 1.1: Sơ đồ thành phần của Content Pipeline 10
Hình 1.2: Các thành phần của camera 15
Hình 1.3:Ma trận projection 16
Hình 1.4: Ma trận View 17
Hình 1.5: Hệ tọa độ màn hình 18
Hình 1.6: Hệ tọa độ 3 chiều bàn tay trái và bàn tay phải 20
Hình 1.7: Phép chiếu phối cảnh 20
Hình 1.8: Phép chiếu trực giao 21
Hình 1.9: Mô tả phép toán Matrix.CreatePerspectiveFieldOfView 23
Hình 1.10: Mô phỏng phát hiện va chạm giữa 2 khối cầu 26
Hình 1.11: Ví dụ về frustum 28
Hình 1.12: Màn hình giao diện phần mềm 3ds Max 30
Hình 1.13: Cách vẽ đối tượng trong 3ds Max 33
Hình 1.14: Bảng lệnh Modify trong 3ds Max 34
Hình 1.15: Khung nhìn Viewport 35
Hình 1.16: Trình bày Layout trong khung nhìn 35
Hình 2.1: Mô hình phi thuyền 39
Hình 2.2: Tạo hình cầu bán kính 300 40
Hình 2.3: Làm méo hình cầu để được đối tượng mới 40
Hình 2.4: Kéo dãn đối tượng theo trục X 41
Hình 2.5: Làm mịn, bóp méo và vặn xoắn đối tượng 41
Hình 2.6: Áp vật liệu cho đối tượng 42
Hình 2.7: Mô hình thiên thạch meteor_v1 42
Hình 2.8: Mô hình thiên thạch meteor_v2 43
Hình 2.9: Mô hình thiên thạch meteor_v3 43
Hình 2.10: Mô hình tên lửa 43
Hình 2.11: Nền Stars của game 44
Hình 2.12: Tạo dự án game Cpacecraft 44
Hình 2.13: Trình tự gọi các biến và hàm thanh viên trong Game1.cs 45
Trang 6Hình 3.1: Khởi tạo game level 1 62
Hình 3.2: Dùng phím Space để bắn đạn 63
Hình 3.3: Phi thuyền bị phá hủy 64
Hình 3.4: Người chơi giành chiến thắng 65
Hình 3.5: Người chơi bị thua 66
Trang 7MỞ ĐẦU
Trong quá trình phát triển của con người, những cuộc cách mạng côngnghệ đóng vai trò rất quan trọng, chúng 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à nó 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 đó xử dụng thư viện XNA là một trong những kỹ thuật lậptrì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ài nguyê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: “Thiết kế trò chơi phi thuyền sử dụng kỹ thuật lập trình đồ họa 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 trò chơi phi thuyền Nội dung của đề tài được thể hiện qua 3 chương:
- Chương 1: Cơ sở lý thuyết
- Chương 2: Xây dựng game 3D sử dụng thư viện đồ họa XNA
- Chương 3: Giới thiệu game CpaceCraft
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: CƠ SỞ LÝ THUYẾT
1.1 Thư viện đồ họa XNA
1.1.1 Giới thiệu về XNA
1.1.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 đó
nó 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, nó 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ó
1.1.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 nhanh
Trang 9chóng Điều này không có nghĩa là các nhà phát triển trò chơi chuyên nghiệpkhô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 Nó là phiênbản miễn phí Phiên bản cuối cùng được cung cấp ngày 11 tháng 12 năm 2006
XNA Game Studio 1.0 là phiên bản cập nhật của XNA Game StudioExpress, được đưa ra vào ngày 24 tháng 4 năm 2007
XNA Game Studio 2.0 (dùng cho Visual Studio 2005) được đưa ra vàongày 13 tháng 12 năm 2007 Có thể sử dụng cho cả Windows và Xbox cùng với
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 Nó đã hỗ trợ thêm nền tảng WP7 (bao gồm cả gia tố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ác thiết bị đồ hoạ cóhướng và vô hướng, hỗ trợ chạy đa nền tảng, hỗ trợ điều khiên cảm ứng đa diểmchạ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à các trò chơi phát triển trong Visual Basic
Trang 101.1.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à chúng ta tạo cho trò chơi thì không sẵn sàng cho trò chơi Ví dụ, nội dung 3Dthường được lưu giữ trong một định dạng riêng và cần phải chuyển đổi dữ liệutrước khi nạp nó vào trong trò chơi Nói chung, Content Pipeline có thể nhận cáctập tin khác nhau như đầu vào, chuyển chúng sang dạng mà chúng ta có thể làmviệc, và sau đó biên dịch chúng thành một định dạng mà có thể dễ dàng nạp vàotrò chơi khi trò chơi của chúng ta bắt đầu
XNA framework Content Pipeline được thiết kế để:
- Cho phép các họa sĩ game 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 1.1: Sơ đồ thành phần của Content Pipeline
Trang 11- Đị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)
1.1.3 Quản lý Âm thanh
Một ứng dụng trò chơi không thể hấp dẫn và thu hút người chơi nếu chỉđẹp về mặt hình thức và có một kịch bản hay Người chơi sẽ mất đi cảm giác thậtkhi ném bom mà không nghe tiếng nổ, cũng như khi đua xe mà không nghe tiếngđộng cơ Do đó, âm thanh là một phần không thể thiếu của trò chơi Tùy thuộcvào thể loại trò chơi mà chúng ta sẽ được thưởng thức những âm thanh khácnhau Các nhà lập trình trò chơi luôn cố gắng tạo ra các hiệu ứng âm thanh phùhợp với nội dung trò chơi của mình
1.1.3.1 Chương trình Cross-Platform Audio Creation (XACT)
Framework XNA cung cấp một công cụ hỗ trợ để tạo hiệu ứng âm thanhcho ứng dụng trò chơi là Cross-Platform Audio Creation (XACT)
Để hiện thực XNA audio phải sử dụng ít nhất 5 đối tượng chính:
- XACT Audio Project File: XACT Audio Project File là tập tin được tạo từXACT XACT project file có phần mở rộng là xap Tập tin mở rộng xapthì có hiệu quả để triển khai trên cả Windows và Xbox 360
- Audio Engine: Đối tượng AudioEngine giúp thể hiện và thao tác với cácđối tượng âm thanh cho ứng dụng trò chơi Đối tượng này được khởi tạobằng việc thiết lập các thuộc tính lấy từ tập tin thiết lập toàn cục tạo từcông cụ XACT Nếu tham chiếu tập tin xap trong Solution Explorer, tậptin thiết lập toàn cục sẽ được tạo tự động khi chạy ứng dụng Mặc dùchúng ta không thể thấy tập tin thiết lập toàn cục trong cùng thư mục chứatập tin xap, ta có thể nạp nó trong mã nguồn theo đường dẫn cùng với thưmục ứng dụng:
Trang 12AudioEngine audioEngine = new AudioEngine(“.\\thư mục tập tin audio\\ GlobalSettings.xgs”);
Khi đã khởi tạo sound engine trong mã nguồn, sau đó khởi tạoWaveBank và SoundBank Giống như tập tin thiết lập toàn cục, những tậptin này sẽ không hiển thị trong thư mục audio khi chúng ta dùng tậptin xap để tạo chúng Tuy nhiên, chúng có thể được nạp từ cùng thư mụctrong ứng dụng như tập tin *.xap:
WaveBank waveBank = new WaveBank( audioEngine, “.\\thư mục tập tin audio\\Wave Bank.xwb” );
SoundBank soundBank = new SoundBank( audioEngine, “.\\thư mục tập tin audio\\Sound Bank.xsb” );
- Global Settings: Global settings là những định nghĩa để điều khiển audiotạo bởi người thiết kế âm thanh Chúng ta sử dụng tập tin này để khởi tạosound engine
- Wave Banks: Một wave bank là một tập hợp các tập tin wave và đượcđóng gói trong tập tin xwb
- Sound Banks: Một sound bank là một tập hợp các chỉ dẫn và khúc nhạc(cue) cho các tập tin wave để điều chỉnh âm thanh được mở như thế nàotrong chương trình
1.1.3.2 Các phương pháp Playback
- Dùng phương thức Cue.Play: có thể dùng phương thức GetCue( ) của
SoundBank để khôi phục thể hiện âm thanh và sau đó dùng phương thức
Play( ) để mở nó.
cue = soundBank.GetCue(String cueName)
cue.Play( );
- Dùng phương thức SoundBank.PlayCue : Một phương thức khác được
dùng để mở âm thanh là PlayCue() của SoundBank Phương thức này hữu
dụng để mở các âm thanh nhanh chóng:
PlayCue ( String cueName );
Trang 131.1.4 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 Khi đó, ngườichơi phải xem mình chính là người lái chiếc xe đó và xem như mình đang thật sựđiều khiển nó ở ngoài thế giới thật vậy Mỗi khi nhân vật bị té ngã hay va chạmvới ai đó thì người chơi cũng có cảm giác giống như 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
1.1.4.1 GamePad cho máy Xbox360
XNA cung cấp cho chúng ta những lớp hỗ trợ cho phép chúng ta dễ dàngxác định trạng thái củ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ạngthá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, ta 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 btn này đang được ấn, ngược lại là không được ấn
- Các lớp hỗ trợ: GamePad, GamePadState
1.1.4.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, nó có thểđược dùng cho hệ thống Windows hoặc Xbox 360
XNA cung cấp cho chúng ta những lớp hỗ trợ cho phép chúng ta dễ dàngxác định trạng thái của những thiết bị vào Chúng ta xác định trạng thái của bàn
Trang 14phím bằng cách khai báo biến chứa trạng thái của bàn phím và gọi phương thứcGetState của đối tượng Keyboard.
private KeyboardState keyboardState ;
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, ta cũng phải khaibá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
Cho 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
1.1.5 Camera
1.1.5.1 Các thành phần của camera
Camera rất quan trọng đối với trò chơi Nó giống như khi chúng ta quayphim vậy Camera có rất nhiều góc quay, như camera người thứ nhất (loạicamera 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 áp dụng cho trò chơi chiến thuật, và thường được chuyển đổi qua lại
Trang 15với camera người chơi thứ nhất) Kết quả thu được từ camera còn tuỳ thuộc vào
vị trí đặt camera, mục tiêu nhìn (hướng nhìn – nhìn về đâu), và góc nhìn củacamera, phạm vi nhìn thấy được của camera (nếu các đối tượng trong cảnh nằmngoài vù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 1.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ộtbướ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:
Trang 16- 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ị)
- Mọi thứ được chiếu từ vị trí đặt camera
- Có thể quay (rotate), làm nghiêng (tilt) và rất nhiều thao tác thú vị khácvới camera
- Chuyển đổi dữ liệu thế giới 3D sang không gian camera
- Thường được tạo bằng việc sử dụng phương thức:
Matrix.CreateLookAt (cameraPosition, lookatTarget, upVector)
Trang 17Trong đó cameraPositon là vị trí đặt camera; lookatTarget là nơi màcamera sẽ nhìn vào; upVector là chiều nhìn lên của camera.:
Hình 1.4: Ma trận View
Ma trận thế giới – World: Đặt dữ liệu 3D tại đúng chính xác vị trí 3D với
sự trợ giúp của WorldMatrix Ma trận world phản ánh hiện thực của thế giới 3D
hiện tại Nó phản ánh các thay đổi của thế giới 3D Thông thường ma trận world
là sự kết hợp của việc thực hiện các phép biến đổi như phép quay, phép tỉ lệ,phép tịnh tiến XNA cung cấp nhiều phương thức hỗ trợ như:Matrix.CreateRotation, Matrix.CreateScale, Matrix.CreateTranslation để thựchiện các phép biến đổi tương ứng
Biến đổi ma trận thế giới theo công thức: I.S.R.O.T, với:
Trang 181.1.5.2 Thao tác với camera
Camera sẽ di chuyển thường xuyên, do đó ma trận nhìn của camera cũng
sẽ được cập nhật mỗi khi trò chơi của ta gọi lại phương thức Game.Update
Ma trận chiếu cũng có thể sẽ thay đổi liên tục cho các hiệu ứng phóng to, thu nhỏ(zooming)
Các bước thực hiện việc quay và di chuyển camera:
- Xác định vị trí đặt và hướng nhìn cho camera
- Tạo ma trận nhìn cho camera, sử dụng vị trí và hướng nhìn ở trên làm đầuvào cho phương thức Matrix.CreateLookAt
- Xác định góc nhìn, phạm vi nhìn thấy được của camera để tạo ma trận
chiếu, sử dụng phương thức Matrix.CreatePerspectiveFieldOfView.
- Trong hàm Game.Draw:
+ Khởi tạo một đối tượng BasicEffect
+ Xác định các ma trận thế giới, ma trận nhìn và ma trận chiếu
+ Sau đó vẽ các đối tượng với các thiết lập trên
1.1.6 Đồ hoạ hai chiều trong XNA
Trang 19- Gốc Sprite (Sprite Origin): Khi vẽ sprite, gốc sprite là khái niệm quantrọng Gốc là một điểm cụ thể trên sprite được mặc định ở góc trên bêntrái của sprite hoặc tại tọa độ (0,0) Phương thức Draw vẽ gốc của spritetại vị trí được chỉ định trên màn hình.
- Độ sâu Sprite (SpriteDepth): Sprite cũng có khái niệm độ sâu Khi vẽsprite, có thể xác định độ sâu giữa 0 và 1 (đây là một số thực) Sprite vẽtại độ sâu 0 nằm “ trước ” màn hình và sẽ phủ vài sprite vẽ ở độ sâu thấphơn Sprite ở độ sâu 1nằm “ sau ” màn hình và sẽ bị phủ bởi những sprite
1.1.7 Đồ hoạ ba chiều trong XNA
1.1.7.1 Hệ tọa độ 3D
Khi thao tác với hệ tọa độ Đề-các 3D, cần chú ý hai loại hệ thống tọa độsau: quy tắc bàn tay trái và quy tắc bàn tay phải Hai loại này khác nhau ở chỗ vịtrí của trục Z so với hai trục còn lại X và Y
Trang 20Hình 1.6: Hệ tọa độ 3 chiều bàn tay trái và bàn tay phải.
Theo mặc định, XNA Frameword chọn hệ tọa độ bàn tay phải để làm việc.Điều này khác với DirectX (chọn hệ tọa độ bàn tay trái)
1.1.7.2 Cách sử dụng phép chiếu để ánh xạ một đối tượng 3D lên màn hình
Phép chiếu phối cảnh (Perspective Projection): Đây là kiểu phép chiếuphổ biến nhất, nó sử dụng khoảng cách Z và điều chỉnh các đối tượng cho phùhợp:
- Phép chiếu này làm cho các đối tượng xuất hiện nhỏ hơn khi xa dần từmàn hình
- Tùy vào vị trí mà các đối tượng cũng có thể bị biến dạng giống như thếgiới thực (realworld)
- Ví dụ, đối với một hình lập phương, các mặt nào gần màn hình hơn thìđược xem như là lớn hơn so với các mặt xa màn hình hơn
Hình 1.7: Phép chiếu phối cảnh
Trang 21Phép chiếu trực giao (Orthogonal Projection): Đối với kiểu chiếu này,thành phần Z được bỏ qua, và các đối tượng không lớn hơn khi gần màn hìnhhoặc không nhỏ hơn khi xa màn hình Phép chiếu này hầu hết được dùng trongtrò chơi 2-D (trò chơi giả 3-D, chỉ để đặt một số sprite lên trên các sprite khác)hoặc một trò chơi 3-D đơn giản.
Sau đây là một số định nghĩa mà XNA đã cung cấp :
VertexPositionColor Định nghĩa một đỉnh kèm theo thông tin
vị trí và màu sắcVertexPositionTexture Định nghĩa một đỉnh mang thông tin vị
trí, các tọa độ texture, xác định cách để ánh xạ một texture cho trước lên đỉnh này, với (0,0) là tọa độ phía trên, bên trái, và (1,1) là giới hạn phía dưới bên
Trang 22phải của texture.
VertexPositionColorTexture Định nghĩa một đỉnh mang thông tin vị
trí, màu sắc và các hệ tọa độ textureVertexPositionNormalTexture Định nghĩa một đỉnh mang thông tin vị
trí, màu sắc, các tọa độ texture và vector pháp tuyến
1.1.7.4 Các vector, ma trận và các phép biến đổi 3D
a Vector
Vector: ngoài việc lưu trữ các giá trị vị trí, nó còn cung cấp nhiều phươngthức hỗ trợ (sẽ có ích vào một lúc nào đó khi tao tạo trò chơi) Vector3 là vectorđược dùng phổ biến nhất trong trò chơi 3-D Sau đây là một số phương thức quantrọng nhất của Vector3:
- Vector3.Distance: nhận vào hai điểm để tính toán và cho ra khoảng cáchgiữa chúng
- Vector3.Add và Vector3.Subtract: cộng và trừ hai vector
- Vector3.Multiply và Vector3.Divide: nhân và chia hai vector, hoặc mộtvector với một số
- Vector3.Clamp: ràng buộc các thành phần của vector theo một vùng giá trịcho trước (rất hữu ích khi định nghĩa các giá trị của ma trận hoặc độsáng)
- Vector3.Lerp: thực hiện nội suy tuyến tính giữa hai vector
- Vector3.SmoothStep: nội suy hai vector tùy theo giá trị cho trước đóng vaitrò làm trọng số
Ngoài các phương thức này, Vector3 cũng cung cấp một loạt các địnhnghĩa các vector đặc biệt như Vector3.Zero (0, 0, 0), Vector3.Up (0,1,0),Vector3.Right (1,0,0) và nhiều vector khác nữa Vector2 và Vector4 cũng có một
số phương thức và định nghĩa tương tự
b Ma trận
Trang 23Ma trận (Matrix): là cơ sở cho việc định nghĩa phép quay (rotation), tỉ lệ(scaling) và tịnh tiến (translation) của một đối tượng trong thế gới 3D Bởi vì các
ma trận được dùng để định nghĩa bất kỳ phép biến đổi 3D nào nên chúng cũngđược dùng để định nghĩa các phép toán cần cho việc giả lập các phép chiếu vàbiến đổi cảnh 3D tùy theo vị trí của camera và hướng đối diện
Một trong những ích lợi lớn nhất đó là ta có thể thực hiện các phép tínhphức tạp bằng cách nhân các ma trận biến đổi tương ứng của chúng lại với nhau.Sau đó, ta có thể áp dụng ma trận kết quả cho mỗi đỉnh của mô hình 3D, vì thế ta
có thể thực hiện tất cả các thao tác trên mô hình bằng việc nhân các đỉnh của nócho một ma trận, thay vì phải tính toán mỗi phép biến đổi cho mỗi đỉnh
Không cần phải hiểu tất cả các chi tiết toán học khi sử dụng ma trận vàthực thi các phép biến đổi 3D trong ứng dụng Tất cả các thư viện lập trình tròchơi (từ OpenGL đến DirectX) đều cung cấp các hàm thao tác ma trận sẵn sàngphục vụ khi cần thiết, và XNA cũng không ngoại lệ Thông qua lớp Matrix, nhiềuphép toán trên ma trận được cung cấp sẵn, ví dụ :
- Matrix.CreateRotationX,Matrix.CreateRotationY,Matrix.CreateRotationZ:dùng để tạo ma trận quay cho mỗi trục
- Matrix.Translation : tạo một ma trận tịnh tiến theo một hoặc nhiều trục
- Matrix.Scale : tạo 1 ma trận tỉ lệ theo một hoặc nhiều trục
- Matrix.CreateLookAt : tạo một ma trận nhìn (view matrix) dùng để định
vị camera, bằng cách thiết lập vị trí 3D của camera, và hướng ở trên chocamera
- Matrix.CreatePerspectiveFieldOfView : tạo ra một ma trận chiếu, dùngmột khung nhìn phối cảnh (perspective view), và các mặt gần và xa(farplane và nearplane : 2 mặt này sẽ giới hạn phần khung cảnh 3-D sẽđược vẽ) Xem hình minh họa bên dưới
Trang 24Hình 1.9: Mô tả phép toán Matrix.CreatePerspectiveFieldOfView
1.1.7.5 Hiệu ứng Ánh sáng – Camera
XNA đã đơn giản hóa việc xử lý với camera, ánh sáng và các hiệu ứngđặc biệt Nhưng cũng nên biết những điều cơ bản về chúng XNA đã cung cấpcác lớp hiệu ứng giúp ta xử lý hiệu ứng được dễ dàng hơn Điển hình là lớpBasicEffect Lớp BasicEffect đáp ứng tất cả các yêu cầu không những cho tròchơi đơn giản mà còn cho các trò chơi phức tạp Lớp này cung cấp nhiều thuộctính và phương thức giúp ta định nghĩa các thuộc tính để vẽ cảnh 3D Một sốthuộc tính quan trọng của lớp BasicEffect:
- View: là ma trận nhìn (view matrix) dùng để định nghĩa vị trí đặt vàhướng của camera Thường được tạo ra bằng phương thứcMatrix.CreateLookAt
- Projection: ma trận chiếu (projection matrix), được dùng để ánh xạ hệ tọa
độ cảnh 3D thành hệ tọa độ màn hình Thường dùng phương thứcMatrix.CreatePerspective, Matrix.CreateOrthographic hoặc các phươngthức tương tự
- World: ma trận thế giới thực (world matrix), được dùng để áp dụng cácphép biến đổi cho tất cả các các đối tượng trong cảnh 3D
- LightingEnabled: nếu là false, thì cảnh được vẽ bằng cách dùng một ánhsáng cơ sở để chiếu sáng tới tất cả các mặt của các đối tượng Nếu là truethì thuộc tính ánh sáng của BasicEffect sẽ được dùng để chiếu sáng cảnh
- EnableDefaultLighting(): phương thức này bật hiệu ứng ánh sáng đơntrắng (simple white light) chiếu hướng vào đối tượng mà không cần thêmbất kỳ cấu hình ánh sáng nào
Trang 25- DirectionalLight0, DirectionalLight1và DirectionalLight2: định nghĩa baloại ánh sáng định hướng (directional light) được sử dụng bởi hiệu ứngkhi vẽ Mỗi ánh sáng được định nghĩa bởi màu sắc phản chiếu (specularcolor) của nó (màu sắc của ánh sáng sẽ tương phản hoàn hảo, giống nhưgương), màu khuếch tán (diffuse color, màu sắc của ánh sáng sẽ đượcphản xạ một cách khuếch tán), và hướng chiếu sáng (light direction).Những thuộc tính này chỉ được dùng khi thuộc tính LightingEnabled làtrue.
- FogColor, FogStart và FogEnd: định nghĩa “làn sương mù” (fog) chokhung cảnh Vì thế các đối tượng trong vùng sương mù khi xuất hiện sẽđược nhìn thấy thông qua một làn khói dày đặc (dense smoke)
Cùng với những thuộc tính này, lớp BasicEffect cũng cung cấp tính nănggiúp vẽ các cảnh 3D một cách chính xác
1.1.7.6 Mô hình và Mảnh ( Models and Meshes)
Model là một đối tượng 3D Một mô hình đơn giản là một cây phân cấpcủa các mảnh Một mảnh có thể được vẽ độc lập Một mảnh là tập hợp của nhiềuđỉnh có quan hệ với nhau, cùng với một vài thông tin vẽ XNA cung cấp một sốlớp đặc biệt để thao tác với các mô hình và mảnh Đó là lớp Model và lớpModelMesh
Để tạo chương trình có thao tác với các mô hình, trước hết phải tải (load)
mô hình vào chương trình Các tập tin định nghĩa mô hình thường có định dạng
là (*.X ) hoặc (*.FBX) Sau đó, đặt một vòng lặp trong hàm Draw để duyệt hếtcác mảnh của mô hình Đối với mỗi mảnh, cũng lặp để duyệt tất cả các hiệu ứngrồi áp dụng hiệu ứng cho mảnh đó
1.1.8 Kiểm tra va chạm
Kiểm tra va chạm - Collision Detection là thuật ngữ dùng để biểu diễntình trạng của hai đối tượng có che phủ nhau hoặc chúng có đang va chạm nhautrong thế giới ảo hay không Căn bản của việc kiểm tra va chạm là dùng một hìnhnào đó (khối cầu, hình hộp, hình chóp, mặt phẳng, tia) để bao các đối tượng cần
Trang 26kiểm tra Khi đó việc kiểm tra va chạm sẽ trở nên đơn giản hơn, tức là chỉ cầnkiểm tra va chạm giữa các khối hình học này.
XNA đã cung cấp rất nhiều lớp cùng các phương thức hỗ trợ cho việc xử
lý va chạm này Các lớp như BoundingSphere, BoundingBox, BoundingFrustum,Plane và Ray Chúng đóng vai trò làm đại diện cho các đối tượng hình học trongthế giới thực Hầu như các lớp này đều có phương thức chính đó là Intersects(kiểm tra giao nhau với các khối hình khác) Riêng đối với BoundingSphere,BoundingBox, BoundingFrustumlại có thêm phương thức Contains để kiểm traxem nó có chứa các đối tượng khác hay không
1.1.8.1 Khối cầu giới hạn (BoundingSphere)
Sử dụng các khối cầu giới hạn (bounding sphere) là một trong những cáchphổ biến nhất trong việc kiểm tra va chạm Dù không phải là một giải pháp hoànhảo, nhưng nó lại thích hợp trong nhiều trường hợp và không đòi hỏi nhiều xử lýnhư các giải pháp khác
Phương pháp khối cầu giới hạn liên quan đến việc tạo một khối cầu vôhình xung quanh mỗi đối tượng cần kiểm tra va chạm Nếu khoảng cách giữa cáctâm của hai khối cầu nhỏ hơn (hoặc bằng) tổng các bán kính của chúng thì một
va chạm được phát hiện
Hình 1.10: Mô phỏng phát hiện va chạm giữa 2 khối cầu
Trong XNA, phương pháp bounding sphere này được gói trong một lớptên BoundingSphere Sau đây là một số thuộc tính cũng như phương thức quantrọng thường dùng của lớp này
- Các thuộc tính:
Trang 27+ Center: là một Vector3 đại diện toạ độ tâm của khối cầu.
+ Radius: là biến kiểu float đại diện bán kính khối cầu
+ CreateFromPoints: tạo một khối cầu mới từ các điểm cho trước
+ CreateMerged: tạo một khối cầu mới chứa hai khối cầu cho sẵn
+ Intersects: kiểm tra xem khối cầu có va chạm (giao) với các khối hình kháchay không (có thể là khối cầu khác, khối hộp…)
1.1.8.2 Hình khối giới hạn (Bounding Box)
Dùng hình khối giới hạn cũng là một cách để bao đối tượng lại Hình khốigiới hạn giúp xác định một khối hình ba chiều có dạng hình hộp và được thẳngđứng theo các trục Nó đại diện cho một không gian chiếm bởi một khối hộp.Mỗi mặt của khối hộp giới hạn vuông góc với ba trục x, y và z Khối hộp nàythích hợp để bao các hình có dạng hình chữ nhật
Trong XNA, hình khối giới hạn được dại diện bằng lớp BoundingBox.Lớp này cũng có vài phương thức giống với lớp BoundingSphere Sau đây là một
số thuộc tính cũng như phương thức quan trọng thường dùng của lớp này
- Các thuộc tính:
+ CornerCount: tổng số góc của khối hộp ( có giá trị là 8)
+ Min/Max: số điểm ít nhất / nhiều nhất mà khối hộp có thể chứa
- Các phương thức:
+ Contains: kiểm tra xem khối hộp này có chứa các hình khác không (cáchình có thể là khối hộp khác, khối cầu, khối chóp…)
+ CreateFromPoints: tạo một khối hộp mới từ các điểm cho trước
+ CreateFromSphere: tạo một khối hộp nhỏ nhất có thể để chứa một khối cầucho sẵn
+ CreateMerged: tạo một khối hộp mới chứa hai khối hộp cho trước
Trang 28+ GetCorners: trả về một mảng gồm 8 Vector3 chứa toạ độ của 8 đỉnh củahình.
+ Intersects: kiểm tra xem khối hộp này có giao với các khối khác hay không
1.1.8.3 Khối chóp giới hạn (Bounding Frustum)
Một frustum là :
- Là một khối ba chiều
- phần của hình chóp vuông, nằm giữa hai mặt vuông góc với đường tâm
- Dùng để biểu diễn ‘Những gì camera thấy được’ (What a camera see)trong không gian ba chiều
Hình 1.11: Ví dụ về frustum
Trong XNA, khối chóp giới hạn được đại diện bằng lớp BoundingFrustumSau đây là một số thuộc tính cũng như phương thức quan trọng thường dùng
- Các thuộc tính:
+ CornerCount: số đỉnh của khối chóp , có giá trị là 8
+ Top, Bottom, Left, Right, Near, Far: sáu mặt của khối hình chóp lần lượttương ứng với các mặt Trên, Dưới, Trái, Phải, Gần và Xa
- Các phương thức:
+ Contains: kiểm tra xem khối chóp này có chứa các khối hình khác haykhông
Trang 29+ GetCorners: trả về mảng 8 phần tử dạng Vector3 chứa toạ độ 8 đỉnh củakhối chop.
+ Intersects: kiểm tra xem khối chóp này có giao với những khối khác haykhông
Trang 301.2 Phần mềm Autodesk 3ds Max
1.2.1 Tổng quan 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 Nó 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 nó 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ên bản gốc được tạo bởi Yost Group Nó xuất bản bởi Kinetix, và tại thời gian
đó Autodesk đã chia thành đa phương tiện và giải trí Sau đó sản phẩm được đổitên thành "3ds max" (tất cả đều là kí tự thường) để phù hợp hơn với từ Discreet,một công ty phần mềm tiền thân là Montreal mà Autodesk đã mua lại Tại phiênbản 8 sản phẩm đã lấy logo là của Autodesk, và tên đã được đổi lại thành "3dsMax" (chữ thường và hoa)
3ds Max là một trong nhưng ứng dụng tạo hoạt hình 3D rộng rãi nhất Nó
có khả năng dựng mô hình mạnh mẽ, một tập hợp các plugin kiến trúc mềm dẻo
và một nền tảng tương thích với Microsoft Windows Hầu hết nó được sử dụngcho việc phát triển game, các chương trình quảng cáo TV và các mô hình kiếntrúc Nó cũng được sử dụng để tạo các hiệu ứng phim và thực tại ảo Ngoài ra vớicác công cụ dựng hình và làm hoạt cảnh, phiên bản mới nhất của 3ds Max cũng
có các đặc điểm cao cấp hơn như ( tạo môi trường và phân bổ bề mặt), mô phỏngđộng - dynamic simulation, hệ thống hạt - particle system, bản đồ pháp tuyến -normal map, và các bộ tô bóng, kiết xuất hình ảnh - rendering mạnh mẽ Ngoài
ra với các thiết kế giao diện không ngừng cải tiến và ngôn ngữ kịch bản scriptinglanguage phục vụ cho việc lập trình, Đã có một số bộ plugin để render đượcthiết kế có thể nhúng vào phục vụ cho việc kiết xuất ảnh của 3ds Max như V-Ray, Brazil r/s và finalRender Các phiên bản gần đây yêu cầu việc đăng kí vàcác thỏa thuận sử dụng với nhà sản xuất
Trang 311.2.2 Sơ lược về cách sử dụng 3ds Max
1.2.2.1Màn hình giao diện:
Hình 1.12: Màn hình giao diện phần mềm 3ds Max
- Menu Bar: chứa thanh chọn các menu lệnh của chương trình
- 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 Thanh cô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
Viewport
Time
Slider
Lock Selection
Transform
Animation Button
Viewport Controls
Trang 32- 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…
1.2.2.2 Bảng lệnh Create
Giúp tạo 7 dạng đối tượng mới:
- Geometry: Tạo các khối hình học 3d
- Shapes: Tạo các hình phẳng 2d
- Cameras: Máy quay phim
- Lights: Tạo các nguồn sáng đèn
- Helpers: Công cụ trợ giúp
- Space Warps: Tạo các hiệu ứng đặc biệt
Trang 33- Compound Objects: dùng tạo các mô hình phức tạp từ các hình 2D hoặc3D 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
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,
- Chọn đối tượng, qua bảng lệnh Modify, tiến hành hiệu chỉnh các tham sốthích hợp
Trang 34- Vì các tham số cho một đối tượng đôi khi rất nhiều, vì vậy màn hìnhkhông hiển thị hết, cuộn màn hình lên để xem hết các tham số tương ứngcủa đối tượng đang vẽ.
Hình 1.13: Cách vẽ đối tượng trong 3ds Max
1.2.2.6 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 đốitượng cũ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ủachúng trong danh sách modifier stack, ta có thể xem danh sách modifierstack như là lý lịch ghi chép lại các hiệu chỉnh trên đối tượng