 
|
04.07.07 Trò chơi máy tính (IV)
Trong các bài trước chúng ta đã biết kha khá về trò chơi 2D, chung qui lại theo tính chất đồ họa mà nói thì trò chơi loại này chỉ là tổng thể các tác động tương hỗ giữa các hình sprite và sau mỗi collision thì có các event tương ứng định sẵn theo ý của các nhà lập trình, những gì diễn ra trên màn hình cũng không khác gì mấy với trò chơi trẻ nhỏ bầy đồ chơi, chơi trên sân nhà. Đó là trò chơi 2D nhưng sang đến trò chơi 3D thì cả là một vấn đề không hề đơn giản cho các nhà lập trình và cả các nhà sản xuất ra hardware (card đồ họa). Việc đầu tiên trong trò chơi 3D là tạo ra một thế giới ảo (virtual world) với hệ trục tọa độ thường là như sau: Trục Y hướng từ dưới lên trên, trục X hướng từ trái qua phải còn trục Z hướng theo hay ngược với với hướng bạn nhìn về phía trước, tất cả mọi vật thể trong thế giới 3D đều có tọa độ của mình [X,Y,Z]. Mỗi một điểm trong thế giới ảo này được thể hiện bằng một Pixel (picture element) là một điểm trừu tượng mang một màu nhất định nào đó, như vậy mỗi một điểm trong thế giới ảo có hai tính chất là tọa độ và màu sắc. Khái niệm pixel đã được dùng trong 2D để biểu thị màu sắc trên màn hình, mỗi một pixel tương ứng với một phần tử tạo màu trên màn hình theo thứ tự dòng và cột và từ đây sinh ra khái niệm "Độ phân giải" của màn hình. Tất cả không gian ảo này được nén lại theo những thuật toán nhất định (thường là BSP, Octree, ABT và Portal) và ghi vào file gọi là 3D MAP. File 3D map chỉ có thể biến thành hình ảnh thông qua một phần mềm chuyên dụng cho từng loại thuật toán ( chẳng hạn chương trình 3D MAX ) và quá trình chuyển hóa từ một mớ bòng bong chữ số thành hình ảnh gọi là "Rendering", mà dịch sang tiếng việt có thể là "chải hình" hay "quét hình". Khi "Rendering" camera hướng vào không gian ảo theo một hướng nào đó và quét trong không gian với một góc độ quy định ( thường là 60-80) với độ xa nhất định khi gặp được một điểm pixel có màu xác định thì lập tức điểm này được đánh dấu trên một màn hình ảo (matrix) và là cơ sở để tạo ảnh trên màn hình máy tính của các bạn. Như vậy rõ ràng là ảnh hiện trên màn hình máy tính là hình 2D mà sao chúng ta lại có cảm giác là 3D nhỉ, thần thánh chỗ này là cái gì đây? Vấn đề mấu chốt chính là khi Rendering các hình 2D được tạo ra liên tục (thường là 24-60 hình /giây), tất cả các hiệu ứng trong không gian ba chiều ảo được định dạng liên tục với bất cứ thay đổi nhỏ nhoi nào, từ hướng, góc quét camera, khi camera tiến gần hay dịch xa một vật thể nào đó v.v...kết quả là một chuỗi hình ảnh 2D liên tục được tạo ra theo thời gian thực như chúng ta ngắm nhìn thế giới thật muôn màu muôn vẻ quanh ta vậy và thế là hiệu ứng 3D được xác lập. Nói thì có vẻ ngon xơi cho lắm, nhưng thực tế thì công việc tạo ra một thế giới ảo và Rendering nó để rồi có một "cảm tưởng" thế giới 3D hoàn hảo y như thật là cả một vấn đề đã làm đau đầu nhức óc mất ăn mất ngủ không biết bao nhiêu bậc đại tài trên toàn thế giới. Các nhà xây dựng thế giới ảo cố gắng làm sao cho nó càng nhẹ ký (dung lượng nhỏ) bao nhiêu càng tốt và quá trình rendering càng nhanh càng tốt và thế là họ cố gắng đơn giản hóa thế giới ảo. Một trong những cách giảm nhẹ cho máy tính trong việc tính toán và nhớ thế giới ảo là loại bỏ các điểm thừa không hiện hình trong quá trình rendering, những điểm này là những điểm nằm trong các vật thể như nhân vật, bờ tường, xe, nhà v.v...Tuy đã giảm nhẹ tới mức tối đa nhưng thế giới ảo vẫn còn to một đống thù lù và máy tính gồng hết sức của processor nhưng vẫn vô cùng ỳ ạch và thế là card đồ họa 3D ra đời. Card đồ họa ra đời nhằm giảm nhẹ gánh nặng cho vi mạch chủ trong công việc rendering không gian ba chiều, vào những ngày đầu không gian 3D được rendering theo kỹ thuật OpenGL được tích hợp trong các vi mạch nằm ngay trên card đồ họa hoạt động độc lập không cần nhờ vả gì mấy đến vi mạch chủ (phương pháp này thường gọi là phương pháp hardware). Nhưng khi máy tính ngày càng mạnh đủ để chinh chiến với cái anh thế giới ảo thì phương pháp software ra đời mà nổi bật nhất chính là phương pháp dùng DirecX. Phương pháp software tiện lợi hơn và thay đổi kịp thời với tiến bộ của nền công nghiệp máy tính bởi vì với một kiến thức hiểu biết nhất định bất cứ nhà lập trình nào cũng có thể cải tiến nâng cao hay hiệu chỉnh kỹ thuật rendering trong phần SDK của kỹ thuật ấy. Còn kỹ thuật Open GL thì còn khuya mới làm được như vậy, vì rằng chương trình được tích hợp trong các vi mạch không dễ gì mà móc chúng ra được. Từ đây mà suy ra thì kỹ thuật Open GL dần dần đi vào dĩ vãng nhường bước cho kỹ thuật software mà điển hình nhất là DirectX. [ Vũ Thế Chuyền]
PREV <<< >>> NEXT
|
|
 |
|