Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 67 trang
THÔNG TIN TÀI LIỆU
Nội dung
MỤC LỤC CHƯƠNG I: TỔNG QUAN 1.1 Giới thiệu nơi thực tập 1.2 Lý chọn đề tài: “nghiên cứu công nghệ với 3d engine” 1.3 Tổng quát đề tài CHƯƠNG II: LÝ THUYẾT VỀ SHADER 2.1 Vertex shader 2.1.1 Xử lý vertex fixed function pipeline 2.1.2 Cách thức hoạt động vertex shader 2.2 Pixel shader .10 2.2.1 xử lý điểm ảnh fixed function pipeline 10 2.2.2 cách thức hoạt động pixel shader .14 2.3 Tìm hiểu ngơn ngữ bậc cao hlsl sử dụng cho shader 16 CHƯƠNG III: 3D NWFC .17 3.1 Các tính nwfc engine 17 3.2 Các tính 3d 17 3.3 Mơ hình xây dựng nwfc engine 18 3.4 Cấu trúc nwfc .19 3.5 Hệ thống chất liệu .23 3.5.1 Giới thiệu 23 3.5.2 Cấu trúc hệ thống chất liệu ( material) 23 3.6 Các thuật toán vertex pixel shader áp dụng cho nwfc engine 26 3.6.1 Các thuật toán đổ bóng thời gian thực cho shadow volume 26 3.6.1.1 L ý thuyêt đổ bóng thời gian thực .26 3.6.1.2 Thuật toán đổ bóng thời gian thực dùng vertex shader 32 3.6.2 Thuật toán để dựng khung cảnh bầu trời 33 3.6.2.1 Lý thuyết khung cảnh bầu trời .34 3.6.2.2 Thuật toán vertex shader cho khung cảnh bầu trời .35 3.6.3 Các thuật toán chiếu sáng theo điểm ảnh (per-pixel lighting) sử dụng normal map specular map .37 3.6.3.1 Lý thuyết chiếu sáng theo điểm ảnh 37 3.6.3.2 Thuật toán vertex shader pixel shader dùng cho per-pixel lighting 43 CHƯƠNG IV: HỆ THỐNG VẬT LÝ .47 4.1 Hệ thống vật lý 47 4.2 Engine vật lý novodex .48 4.3 Engine vật lý novedex .50 4.4 Cài đặt novodex ứng dụng .52 CHƯƠNG V: HỆ THỐNG DIỄN HOẠT 58 5.1 Giới thiệu chung hệ thống diễn hoạt 58 5.2 Diễn hoạt khung xương 58 5.2.1 Khái niệm: 58 5.2.2 Tổ chức quản lý diễn hoạt khung xương: 58 5.3 Diễn hoạt nội suy .61 5.3.1 Khái niêm: 61 5.3.2 Nội dung: 61 5.4 Kết hợp diễn hoạt .62 5.4.1 Kết hợp diễn hoạt khác vào khung xương 62 5.4.2 Kết hợp diễn hoạt phần khung xương 63 5.5 Hệ thống diễn hoạt thực thi 65 5.5.1 Sơ đồ hệ thống diễn hoạt 65 5.5.2 Chức thành phần sơ đồ 66 5.5.2.1 Hệ thống xử lý liệu 66 5.5.2.2 Các lớp quản lý đường dẫn 66 5.5.2.3 Các lớp quản lý diễn hoạt 67 KẾT LUẬN 69 TÀI LIỆU THAM KHẢO 71 CHƯƠNG I: TỔNG QUAN 1.1 Giới thiệu nơi thực tập Trường trung học phổ thơng kỹ thuật việt trì thành lập ngày 03/7/2003 Là trường nằm hệ thống trường trung học phổ thông công lập tỉnh phú thọ Những ngày thành lập trường có 18 cán giáo viên công nhân viên với 180 học sinh, sau gần năm đội ngũ cán giáo viên công nhân viên nhà trường phát triển mạnh mẽ số lượng chất lượng, năm 2007-2008 trường có 44 cán hộ giáo viên công nhân viên với gần 500 học sinh Qua hai năm học 2006-2007, 2007-2008, trường có 12 lớp ( bao gồm 04 lớp khối 10, 04 lớp khối 11, 04 lớp khối 12) Tuy có nhiều khó khăn nhà trường tổ chức tốt việc dạy học Kết có 12 học sinh giỏi cấp tỉnh mơn: ngữ văn, hố học, vật lý lịch sử, Tin học Được quan tâm tỉnh uỷ hội đồng nhân dân tỉnh, ubnd tỉnh phú thọ sở giáo dục đào tạo trường cấp vốn xây dựng đợt một, dự kiến học kỳ hai năm học 2008-2009 có ngơi trường cơng lập với quy mô 30 lớp đại khang trang nước thơn thình xã vân phú Thực chương trình thí đua thay đổi nội dung, phương pháp giảng dạy tiên tiến khối trung học phổ thông Đáp ứng nhu cầu học tập ngày cao học sinh khu vực phía bắc thành phố việt trì xã lân cận thuộc huyện phù ninh, lâm thao Là trường vừa dạy chương trình văn hố phổ thơng vừa dạy nghề với mục đích học sinh trường vừa có trung học phổ thơng hệ quy vừa có tay nghề bậc 2/7 Vì chương trình dạy nghề nhiều mà cơng nghệ thông tin nghề học sinh u thích đăng ký nhiều Chương trình đào tạo nghề sau: lớp 10: tiết /1 tuần lớp 11: tiết /1 tuần lớp 12: 5,5 tiết/1 tuần Vì sau trường học sinh nhận tay nghề bậc 2/7, cơng ty, sở tuyển dụng yêu cầu với tay nghề bậc 3/7 thế, nhà trường liên kết với trường trung tâm dạy nghề Đào tạo tiếp em có nhu cầu sau tốt nghiệp cần học thêm để lấy tay nghề cao phục vụ cho công việc sau 1.2 Lý chọn đề tài: “nghiên cứu công nghệ với 3d engine” Ngày nay, sản phẩm giải trí mà đặc biệt game mang lại nguồn lợi nhuận to lớn cho ngành cơng nghiệp máy tính Do nhu cầu thị trường tăng nhanh, game ngày có chất lượng cao thời gian xây dựng ngày rút ngắn Các game 3d thị trường đa dạng nội dung chủng loại có điểm chung xây dựng game engine Chất lượng game phụ thuộc vào chất lượng game engine mà sử dụng Game engine phần cốt lõi để xây dựng game 3d engine phần quan trọng game engine Việc sử dụng game engine để xây dựng game xu tất yếu để có game chất lượng cao thời gian ngắn Tuy nhiên, nước ta việc xây dựng game 3d game engine điều mẻ Chính vậy, em thực đề tài “nghiên cứu công nghệ 3d engine” với mong muốn góp vào viên gạch để xây dựng nên ngành công nghiệp game nước nhà tương lai Thực đề tài em muốn giới thiệu với thầy cô giáo trường trung học phổ thơng kỹ thuật việt trì, em học sinh công nghệ làm game 3d Em hi vọng sau xem song đề tài em học sinh trường có cách nhìn khác lập trình game số học sinh trở thành lập trình game chuyên nghiệp tương lai, đưa game việt nam có vị trí tương đối làng game giới 1.3 Tổng quát đề tài Trong đề tài “nghiên cứu công nghệ 3d engine” em chia làm chương Trong đó: Chương i: giới thiệu nơi thực tập lý chọn đề tài Chương ii: tìm hiểu cơng nghệ shader Đây cơng nghệ làm game việc dựng hình 3d Chương iii: giới thiệu thành phần nwfc engine cách thức xây dựng nwfc engine công cụ dùng để thiết kế game 3d chủ yếu làm nhiệm vụ hiển thị quản lý tập tin, nwfc engine viết dựa cơng nghệ shader Ngồi việc hiển thị quản lý tập tin cần phải có hệ thống khác để tạo game hoàn chỉnh hệ thống diễn hoạt, hệ thống vật lý chương iv,v em giới thiệu xây dựng hệ thống diễn hoạt, hệ thống vật lý dùng game 3d Để tìm hiểu sâu vấn đề chi tiết vào chương sau CHƯƠNG II: LÝ THUYẾT VỀ SHADER Công nghệ shaders gồm hai thành phần là: vertex shader (còn gọi vertex program) pixel shader (hay fragment program) công nghệ tích hợp sẵn phần cứng cho phép người lập trình 3d hồn tồn làm chủ quy trình xử lý liệu hình ảnh phần cứng (graphic pipeline) Để tìm hiểu shaders tìm hiểu vertex shader pixel shader Pixel shader vertex shader xử lý điểm đỉnh chip xử lý đồ họa Tại pixel / vertex shader, gpu tiến hành dựng tô màu cho đối tượng đồ họa Gpu có nhiều pixel shader vertex shader có khả xử lý đồng thời nhiều đối tượng đồ họa Vì pixel shader vertex shader có vai trị định đến khả xử lý CPU 2.1 Vertex shader Vertex shader chương trình có vai trị xử lý liệu vertex thi hành Vertex shader direct3d chủ yếu viết hợp ngữ hlsl (được phát triển kể từ phiên direct3d 9.0) Vertex shader công nghệ phát triển theo hệ phần cứng có nhiều phiên khác nhau, phiên cao chạy hệ phần cứng cũ ngược lại Các phiên vertex shader gồm có vs_1_1, vs_2_0, vs_2_x, vs_3_0… Vertex shader fixed function loại trừ lẫn thi hành, ta phải nắm quy trình xử lý vertex fixed function trước tự viết cho vertex shader ý muốn 2.1.1 Xử lý vertex fixed function pipeline Fixed function pipeline quy trình xử lý liệu hình ảnh 3d cung cấp sẵn direct3d, quy trình theo thuật tốn dựng hình cố định loại liệu 3d đầu vào Trước tìm hiểu vertex shader ta xem qua qui trình xử lý vertex mà direct3d cung cấp sẵn thơng qua fixed function pipeline Hình 2-1: xử lý vertex pixel function pipeline Dữ liệu đầu vào quy trình liệu đỉnh 3d (vertex) không gian vật thể (model space), không gian vertex có toạ độ tính từ gốc toạ độ vật thể Biến đổi giới (world transform): biến đổi vertex từ không gian vật thể (model space) sang không gian giới (world space), vertex có toạ độ tương khơng gian giới Vertex blending Biến đổi toạ độ vertex nhiều ma trận biến đổi giới khác Mức độ tham gia ma trận xác định thông qua giá trị trọng lượng (weight) ứng với ma trận Biến đổi quan sát (view transform) Biến đổi vertex từ không gian giới vào không gian quan sát Vị trí camera nằm gốc toạ độ không gian quan sát, sau biến đổi vertex có toạ độ toạ độ tương đối camera Tính giá trị sương mù vertex (vertex fog) Tính tốn giá trị màu sắc vertex áp dụng hiệu ứng sương mù Chiếu sáng ( lighting and material) Tính tốn ánh sáng vertex dựa mức độ phản xạ ánh sáng vertex Biến đổi chiếu ( prọection transform) Biến đổi vertex từ không gian quan sát sang không gian chiếu Đây cơng đoạn cuối quy trình biến đổi liệu đầu quy trình đầu vào quy trình xử lý đối tượng sở (primitive processing) Tồn quy trình xử lý vertex fixed function thay chương trình vertex shader, direct3d hồn tồn chuyển giao quyền xử lý vertex cho vertex shader Vertex shader sau kết thúc trả quyền điều khiển với liệu xử lý ngược lại cho fixed function pipeline để xử lý tiếp 2.1.2 Cách thức hoạt động vertex shader Để biết cách thiết kế vertex shader trước tiên ta cần phải nắm mơ hình hoạt động vertex shader Đó mơ hình mang tính chất lý thuyết giúp ta dễ tiếp cận hình dung cách thức mà vertex shader hoạt động Giống loại máy móc cơng nghiệp Vertex shader nhận liệu đầu vào (input), sau tiến hành xử lý liệu số tác vụ, cuối xuất thành phẩn liệu đầu (output) Sau sơ đồ lý thuyết: Hình 2-2: sơ đồ lý thuyết máy ảo vertex shader Trong sơ đồ liệu vertex truyền từ trái sang phải Các ghi (registers) nơi chứa quản lý liệu đầu vào đầu shader Các tác vụ thi hành shader cấu tạo từ tập vi lệnh hợp ngữ (assembly- language instructions), vi lệnh thi hành đơn vị số học luận lý (arithmetic logic unit, alu) nằm gpu (graphic processor unit) 3d Dữ liệu đầu vào vertex shader truyền vào thông qua ghi đầu vào (input registers) Vertex shader sau thi hành xuất giá trị đầu thông qua ghi đầu (output registers) Dữ liệu đầu vào shader thông tin vertex lấy từ vertex buffer (do chương trình cung cấp), liệu bao gồm toạ độ, pháp tuyến, toạ độ texture, màu diffuse… liệu đầu vertex shader trả thẳng lại cho qui trình xử lý (graphic pipeline) để chuyển qua cơng đoạn xử lý đối tượng sở (primitive processing) Các ghi sử dụng shader ghi chiều ( lưu số thực ghi) Có kiểu ghi, kiểu có cách sử dụng khác Thanh ghi liệu vào (input registers): chứa liệu đầu vào Thanh ghi (constant registers ): chứa số dùng alu Thanh ghi tạm (temporary registers): chứa liệu tạm thời Thanh ghi liệu (output registers): chứa kết tính tốn vertex shader Với ghi đóng vai trị lưu trữ, alu đóng vai trị thi hành lệnh, phần quan trọng shader vi lệnh Vi lệnh vertex shgader chủ yếu vi lệnh toán học thực tác vụ cụ thể tính tích vơ hưóng (dot product), tích hữu hướng (cross product), nhân ma trận, tìm minmax… Vertex shader nguyên thuỷ đựợc xây dựng hợp ngữ Các ngôn ngữ cấp cao dành cho vertex shader xuất sau hlsl (chỉ có direct3d 9.0 trở lên) hay glsl (được phát triển phiên opengl 2.0) Vì trước directx9 đời việc viết shader công việc thật nặng nhọc Người lập trình phải tự quản lý thứ từ ghi vi lệnh Họ phải tự tối ưu hố cơng việc (vertex shader pixel shader có giới hạn số lượng vi lệnh tối đa chương trình), chưa kể đến chương trình hợp ngữ khó đọc kiểm lỗi Sự đời ngơn ngữ cấp cao bước tiến lớn cơng nghệ giúp người lập trình dễ dàng việc viết shaders đề cập tới thuật toán viết ngôn ngữ hlsl ngôn ngữ giới thiệu chi tiết phần sau 2.2 Pixel shader Pixel shader chương trình tính tốn xử lý màu hay nhiều điểm ảnh Pixel shader thực thi lần cho điểm ảnh dựng lên hình từ liệu vertex Vì pixel shader chạy tốn nhiều thời gian vertex shader (chỉ xử lý lần cho vertex) Pixel shader viết hợp ngữ hay hlsl Các phiên pixel shader gồm có ps_1_1,ps_1_2,ps_1_3 Ps_1_4, ps_2_0,ps_2_x , ps_3_0… Cũng giống vertex shader, pixel shader thi hành loại trừ với fixed function, tìm hiểu qui trình xử lý pixel fixed function điều cần thiết 2.2.1 xử lý điểm ảnh fixed function pipeline Sau liệu vertex xử lý ( thành toạ dộ không gian chiếu) chuyển qua để xử lý đối tượng sở (primitive processin) Hình 2-3 Qui trình xử lý đối tượng Clipping Loại bỏ đối tượng hình học khơng nhìn thấy khối quan sát ( viewing frustum) để tăng hiệu suất dựng hình Chuẩn hố hệ toạ độ (hômgênous divide) Chia thành phần liệu cho phần từ cuối Ánh xạ viewport (viewport scaling) Ánh xạ liệu vào toạ độ viewport Xử lý tam giác ( triangle setup) Chuẩn bị cho việc nội suy tam giác biến đổi thuộc tính vertex thành thuộc tính điểm ảnh Sau quy trình xử lý đối tượng sở hồn tất, liệu vertex nội suy thành liệu điểm ảnh sẵn sàng chuyển sang qui trình xử lý điểm ảnh (điểm ảnh lúc chưa phải giá trị màu mà mang thuộc tính tính tốn từ việc nội suy tamgiác mà thơi) Điểm ảnh sau tính tốn kết hợp thuộc tính màu sắc lấy mẫu 10