MỤC LỤC
Nếu như trong rainbow six vegas, khung cảnh đa phần là những khu vực rực rỡ ánh sáng của mặt trời, của đèn điện đủ màu sắc chiếu rực cả một thành phố las vegas về đêm, thì ngược lại trong bioshock, khung cảnh lại là một thành phố dưới đáy biển tối tăm và ẩm thấp. Còn với “siêu phẩm điện ảnh” stranglehold của đạo diễn ngô vũ sõm, dấu ấn ỏnh sỏng cũng rất rừ nột với những cảnh trong nhà và ngoài trời được dựng vô cùng chân thật, tạo nên một khung cảnh nền sống động với những cảnh phim “đẹp mê ly” hệt như trong các siêu phẩm anh hùng, ngọa hổ tàng long hay thập diện mai phục.
Và cũng chính nhờ hiệu ứng ánh sáng, thể hiện mặt nước trở nên thật hơn, đặc biệt là trong bioshock. Các hiệu ứng của nước được dựng rất công phu, thêm nữa là việc nhúng các hiệu ứng của directx 10 vào làm cho tương tác với mặt nước không còn chỉ là các vân (texture) đắp lên bề mặt nữa, mà giờ đây đã mềm mại hơn rất nhiều.
Phủ vân bề mặt tạo nên những mô hình cực kỳ chi tiết
Chẳng hạn, ở màn market garden thường xuất hiện các “quái vật cổ dài”, theo nguyên tắc vật lý của engine thì phần đầu khi bị bắn trúng phải đứt rời ra, nhưng giờ đây “dính lại”, tạo thành một hình ảnh hết sức khôi hài. Với những ưu điểm nổi trội như vậy, sẽ không có gì đáng ngạc nhiên khi engine unreal 3 ngày càng trở nên thu hút sự quan tâm của giới phát triển trò chơi và ngày càng có nhiều game “đỉnh” ra mắt cộng đồng game thủ.
Có thể ví von engine này giống như những nguyên liệu tốt, rất cần thiết để chế biến ra một món ăn ngon, mặc dù các đầu bếp tài hoa phải thật khéo tay để nhặt cho kỳ hết những hạt sạn còn tồn tại. Id tech 4 (hay doom 3 engine) xuất hiện đồng thời với doom iii, mang nhiều tính năng và hiệu ứng đặc biệt, nổi trội như: ánh sáng, đổ bóng hoàn hảo, vân bề mặt với độ chi tiết cao, hỗ trợ chơi mạng tốt (điển hình là trò chơi quake iv).
Engine này cũng được sử dụng để thực hiện nhiều game khá nổi tiếng, trong đó có call of duty, medal of honor: allied assault. Hiện nay, id tech 5 vẫn đang được id software phát triển, hứa hẹn nhiều cải tiến mới, và đặc biệt là hỗ trợ.
Mặt khác 1 game dùng khá nhiều loại dữ liệu ( dữ liệu mesh , dữ liệu va chạm vật lý, dữ liệu terrain, dữ liệu các vật thể trong thế giới 3d v.v.. ), người ta không thể dùng tay để tạo ra tất cả các loại dữ liệu này được, nên thường họ sẽ phát triển các tool để sử dụng 1 cách trực quan hơn. Các đặc trưng cơ bản của các game engine này là nó hỗ trợ nhiều chức năng như tô bóng điểm ( pixel shader ), quản lý diễn hoạt (animation), mô phỏng vật lý, mô phỏng chuyển động của cậht nhỏ ( như bụi, lửa. Khói), mô phỏng chất lỏng, áo quần, và cáchiệu ứngkhác mà ta hiếm khi được tấy ở các 2d engine.
Đây chính là sức manh ủa Pixel Shader: người lập trình không còn phải tốn nhiều công sức để thiết lập các trạng thái cho các tầng texture nữa, họ giờ đây hoàn toàn có thể tự lập trình ra các thuật toán mới để sử dụng, thậm chí hoàn tôánc thể trung chuyển các luồn dữ liệu từ vertex shader vào pixel shader ( nếu dùng kết hợp cả 2 shader). Đây chính là sức manh ủa Pixel Shader: người lập trình không còn phải tốn nhiều công sức để thiết lập các trạng thái cho các tầng texture nữa, họ giờ đây hoàn toàn có thể tự lập trình ra các thuật toán mới để sử dụng, thậm chí hoàn tôánc thể trung chuyển các luồn dữ liệu từ vertex shader vào pixel shader ( nếu dùng kết hợp cả 2 shader).
Ví dụ module đảm nhận chức năng dựng hình 3D bằng Direct3D, module đảm nhận chức năng truy xuất tập tin, các module này hoàn toàn trong suố ( transparent) với ứng dụng đầu cuối, vì chúng chỉ được sử dụng nội bộ bởi module chính mà thôi. Dù trong Engine chỉ được cài đặt sẵn module renderer cho thư viện Direct3D mà thôi (cụ thể là phiên bản 9.0c) nhưng ta hoàn toàn có thể then module dựng hình cho opengl bằng các phát triển then module mới mà hoàn toàn không phải thong báo gì cho.
Đổ bóng thời gian thực Shadow Volume
Sử dụng thuật toán 2 cho ra tốc độ nhanh hơn hẳn thuật toán 1 dù khi render có chậm hơn dó có nhiều mạt hơn, vì ưu diểm về tốc độ nên thuật toán 2 cũng là thuật toán mà Engine chọn đêt sử dụng nên sẽ được trình bày kỹ ở phần sau. Tại khu vực A và E, mặt trước và sau khi vẽ đều khiến giá trị trong stencil buffer không đổi do trong 2 khu vực này vật nhận bóng tối (màu cam ) và vật chắn sáng (màu xanh) gầm mắt hơn nên làm cho việc kiểm tra độ sau thất bại khiến giá trị trong stencil buffer trung hoà về 0.
Các giá trị ở các vùng là giá trị tróngtenil buffer thay đổi khi mặt trước (front face) hay mặt sau (back face) của shadow volume được vẽ vào frame hình. Khi kết thúc quá trình vẽ shadow volume thì stencil ở khu vực b, D khác 0, cho thấy b và D nằng trong vùng bóng tối của vật chắn sáng.
Một số kết quả đạt được
Khung cảnh bầu trời
Rất xa so với tầm nhìn, khi ta nhìn tập trung vào một hướng thì dù ta có di chuyển đến đâu đi nữa thì theo hướng nhìn ( với điều kiện khoảng cách không quá lớn) thì hình ảnh mà ta nhận được từ bầu trời là không đổi. Vì ta không thể nào đi xuyên qua bầu trời, nên ta phải luôn cập nhật vị trí của hình khối bầu trời = vị trí hiện thời của camera ( hay vị trí của mắt) ( thoả mãn tính chất 1).
Vertex Shader cho skybox
Khung cảnh bầu trời được vẽ ra đảm bảo đúng các đặc tính của bầu trời trong thực tế, cho dù ta có di chuyển camẻa thế nào đi nữa, ta cũng không thể “đi xuyên” qua bầu trời được.
Chiếu sáng theo điểm ảnh (per-pixel lighting) sử dụng normal map và specular map
Normal map là một texture nhưng có đặc tính khá đặc biệt, thay vì chứa thông tin về điểm màu như texture thông thường, normal map lại chứa thông tin về không gian tiếp tuyến (tangent space) hay không gian texture (texture space) của vật thể, hay nói cách khác nếu các điểm thì normal map sẽ biểu diễn không gian tiếp tuyến của vật thể tại điểm đó. Để tránh công việc phải phân rã vật thể ra thành nhiều thành phần để dựng hình với các mức phản chiếu khác nhau người ta dùng specular map như một lookup table để xác định mức độ phản chiếu của ánh sáng trên từng điểm ảnh.
Specular lookup: cho biết mức độ phản chiếu của điểm đó, giá trị này có được do lấy mẫu từ Specular Map. Sau khi thên độ phản chiếu ánh sáng vào xe trông như là được cấu tạo từ kim loại, do đó sự phản chiếu góp phần tăng đáng kể chất lượng đồ hoạ.
Xe sau khi thực hiện kết hợp với ánh sáng môi trường 6 mặt (ambient light cube).
Cụ thể ta xây dựng lớp quản lý một diễn hoạt cho một khớp xương, dựa vào lớp này ta xây dựng lớp quản lý một diễn hoạt cho toàn bộ khung xương, và cuối cùng dựa vào lớp vừa xây dựng ta xây dựng tiếp lớp quản lý tất cả các diễn hoạt cho toàn bộ khung xương, và cuối cùng dựa vào lớp vừa xây dựng ta xây sựng tiếplớp quản lý tất cả các diễn hoạt cho một khung xương. Trong lớp quảnlý này ta cần quản lý các thông tin liên quan đến diễn hoạt cho khung xương như: khoảng thời gian trôi qua từ khi diễn hoạt từ khung hình thứ nhất, diễn hoạt có lawpj đi lặp lạikhông, khoảng cách di chuyển của khung xương như: khoảng thời gian trôi qua từ khi diễn hoạt từ khung hình thứ nhất, diễn hoạt có lặp đi lặp lại không, khoảng cách di chuyển củakhung xương kể rừ lần cập nhật trước và tổng khoảng cách di chuyển của khung xương dể tử lầncập nhật trước và tổng khoảng cách di chuyển của khung xương trong toàn bộ diễn hoạt.
Thành phần quản lý chung: đây la thành phân giúp thực hiện việc khởi tạo, huỷ hệ thống cũng như thực hiện thiết lập các thông số đặc trưng cho hệ thống vật lý như gia tốc trọng trường, các loại vật liệu bề mặt, xử lý các sự kiện trả về khi có va chạm xảy ra, thực hiện việc giả lalạp vật lý, và hiển thị chế độ debug để kiểm tra. CobjectPhysicController nhưng được áp dụng cho một đối tượng đặc biệt cho phép người lập trình có thể điều khiển trực tiếp đó là nhân vật mỗi đối tượng thuộc một lớp Cactor cũng sẽ chứa duy nhất một đối tượng thuộc lớp CcharacterPhysicController để điều khiểu nhân vật, quản lý nhân vật là một tính năng nổi bật của NovodeX được cung cấp khả năng quản lý nhân vật.