Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 38 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
38
Dung lượng
426,18 KB
Nội dung
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG ĐẠI HỌC THÁI NGUYÊN BÁO CÁO THỰC TẬP CHUYÊN NGHÀNH CHỦ ĐỀ:TÌM HIỂU VỀ PHÉP NHÌN TRONG KHÔNG GIAN BA CHIỀU Giáo viên hướng dẫn: Nguyễn Thị Thanh Nhàn Sinh viên thực hiện: Hà Thị Lệ LỜI MỞ ĐẦU Có câu rằng “một hình ảnh bằng cả nghìn lời nói ”. Điều đó thật không thể phủ nhận. Và rõ ràng là nếu hiển thị thông tin chỉ với các ký hiệu, chữ cái, chữ số không thôi thì không thể hấp dẫn và dễ hiểu như khi có thêm biểu diễn đồ họa Kỹ thuật đồ hoạ cũng là công cụ không thể thiếu trong các ngành khoa học kỹ thuật, giáo dục, nghệ thuật, giải trí, quảng cáo…(để diễn đạt máy móc thiết bị, kiến trúc, cấu trúc cơ thể, thông tin thiên văn địa lý, hình ảnh minh hoạ ). Chính vì vậy, đồ họa là một vấn đề được quan tâm trong ngành công nghệ thông tin. Cùng với sự phát triển của tin học, kỹ thuật đồ họa trên máy vi tính, ngày càng trở nên tinh xảo. Giao diện các phần mềm ngày nay trở nên thân thiện, đẹp mắt nhờ các thể hiện đồ họa. Sự hổ trợ của tin học cho các ngành khác trở nên đắc lực hơn nhờ khả năng đồ họa vi tính. Và thế giới thực thì được biểu diễn một cách sinh động, linh hoạt, đầy màu sắc bằng không gian ba chiều. Trong thành công của kỹ thuật đồ họa ngày nay không thể không nói đến sự phát triển vượt bậc của tốc độ phần cứng lẫn hệ điều hành. Nhưng bản thân kỹ thuật đồ họa thì có bước tiến nhảy vọt từ những phép tính toán học phức tạp đến những thư viện đồ họa được tạo sẵn để phục vụ cho cuộc sống công nghiệp hóa , hiện đại hóa ngày nay. Như không gian 3 chiều từ khi xuất hiện đã dần dần được sử dụng vào các lĩnh vực như: công nghệ thông tin, điện ảnh ,giáo dục Mục tiêu của bài thực tập chuyên nghành này là tìm hiểu về phép nhìn trong không gian ba chiều .đồng thời cũng giới thiệu đôi nét về thư viện đồ họa OpenGL trong việc minh họa các giải thuật đồ họa ba chiều. Tuy nhiên, đề tài không thể không tránh khỏi những hạn chế và thiếu sót, nên rất mong được sự chỉ bảo, góp ý của quý Thầy Cô và bạn bè. Tài liệu tham khảo thêm * GLSL - Ngôn ngữ chuyển màu OpenGL * Cg - Ngôn ngữ chuyển màu của hãng nVidia dùng cho OpenGL * Java OpenGL - OpenGL cho Java * OpenGL ES - OpenGL for embedded systems * OpenAL - Thư viện âm thanh tự do thiết kế với mục địch dùng chung với OpenGL. * OpenSL ES - Một thư viện âm thanh khác * Graphics pipeline NỘI DUNG Giới thiệu về không gian 3 chiều, Thư viện đồ họa OpenGl 1.Tìm hiểu về camera 2.Hình chiếu phối cảnh của vật thể 3D 3.Phép nhìn lập thể GIỚI THIỆU Không gian 3 chiều: Mô hình hóa ba chiều (3D) là một lãnh vực phát triển nhanh chóng là một cuộc cách mạng trong việc ứng dụng máy tính vào quá trình thiết kế. Các phần mềm thiết kế 3D, được bắt đầu sử dụng vào những năm 1980, ngày càng phổ biến trong công nghiệp. các mô hình 3D không chỉ là vẽ một đối tượng mà là hình ảnh thực của vật thể. Thư viện đồ họa OpenGl: OpenGL (tiếng Anh Open Graphics Library) là một tiêu chuẩn kỹ thuật đồ họa có mục đích định ra một giao diện lập trình ứng dụng ( API)đồ họa 3 chiều. OpenGL cũng có thể được dùng trong các ứng dụng đồ họa 2 chiều. Giao diện lập trình này chứa khoảng 250 hàm để vẽ các cảnh phức tạp từ những hàm đơn giản. Nó được dùng rộng rãi trong các trò chơi điện tử. Ngoài ra nó còn dùng trong các ứng dụng CAD, thực tế ảo, mô phỏng khoa học, mô phỏng thông tin,phát triển trò chơi. Không gian trong OpenGL được miêu tả qua hình học xạ ảnh. Một điểm trong không gian này có tất cả 4 tọa độ. Cách thể hiện các điểm trong không gian bằng 4 tọa độ cho phép xử lý các điểm vô tận một cách tổng quát. Vì vậy mã nguồn các ứng dụng đã được đơn giản hóa đi nhiều. Với giao diện lập trình mạnh mẽ, OpenGL cho phép tạo các ứng dụng 3-D phức tạp với độ tinh vi, chính xác cao, mà người thiết kế không phải đánh vật với các núi công thức toán học và các mã nguồn phức tạp. Và do OpenGL là tiêu chuẩn công nghiệp, các ứng dụng tạo từ nó dùng được trên các phần cứng và hệ điều hành khác nhau. Các mục sau sẽ giới thiệu cách nhìn tổng quát về cách làm việc của OpenGL: - Các phần tử đồ họa cơ bản và lệnh giới thiệu về các phần tử đồ họa cơ bản (primitive) và sự thực hiện lệnh - Cách làm việc của OpenGL cho biết các lọai thao tác đồ họa mà OpenGL kiểm soát - Mô hình hoạt động nói về mô hình client/server cho việc thông dịch lệnh OpenGL - Thao tác OpenGL cơ bản đưa ra một mô tả mức cao về cách OpenGL xử lý dữ liệu và tạo ra hình ảnh tương ứng lên bộ điệm khung. Các phần tử đồ họa cơ bản và lệnh: Primitive được xác định bởi nhóm của một hay nhiều vertex là điểm trong không gian. Mỗi vertex xác định một điểm, một đầu đoạn thẳng hay một đỉnh đa giác. Dữ liệu (bao gồm tọa độ vertex, màu sắc, normal, texture và cờ xác định loại cạnh) kết hợi với vertex. Khi xử lý primitive, mỗi cập vertex và dữ liệu liên kết với nó được sử lý độc lập với các cập khác, theo thứ tự và cùng một phương pháp. Ngoại lệ duy nhất là trong trường hợp khử phần khuất của primirite(clipping). Khi đó, dữ liệu vertex được sửa và các vertex khác được tạo ra. Loại clipping tuỳ thuộc loại primirite mà nhóm vertex biểu diễn. Các lệnh luôn luôn được xử lý theo thứ tự mà nó tiếp nhận, mặt dù có sự trì hoãn không xác định trước khi lệnh có hiệu lực. Nghĩa là mỗi primirite được vẽ trọn vẹn trước khi lệnh tiếp theo có hiệu lực. Cách làm việc của OpenGL: OpenGL là ngôn ngữ đồ họa theo thủ tục chứ không phải ngôn ngữ mô tả.Thay vì tả các cảnh và cách chúng xuất hiện, OpenGL đưa ra các bước cần thiết để có được sự thể hiện hay hiệu quả nhất định. Các “bước”này là các lời gọi đến giao diện lập trình ứng dụng gồm xăp xỉ 120 lệnh và hàm. Chúng được dùng để vẽ các phần tử đồ họa cơ bản như điểm, đường và đa giác trong không gian ba chiều. Ngoài ra, OpenGL còn hổ trợ chiếu sáng, tô bóng, gán cấu trúc, tạo ảo giác chuyển động và các hiệu quả đặc biệt khác. OpenGL không có các chức năng quản lý cửa sổ, tương tác với người dùng hay xuất nhập file. Môi trường chủ (tức hệ điều hành) có các chức năng này và chịu trách nhiệm thực hiện các biện pháp quản lý cho OpenGL. Mô hình hoạt động: Mô hình thông dịch lệnh OpenGL là client-server. Mã ứng dụng(vai trò client) đưa ra các lệnh. Lệnh được thông dịch và sử lý bởi OpenGL (vai trò server). Server và client có thể là trên cùng một máy tính khác nhau. Theo nghĩa này, OpenGL là network-transparent (tạm dịch là mạng trong suốt). Server duy trì nhiều ngữ cảnh OpenGL, mỗi ngữ cảnh là một trạng thái OpenGL. Client có thể nói với bất cứ ngữ cảnh nào. Giao thức mạng được sử dụng có thể là độc lập hóa dựa trên giao thức mạng hiện có (tức OpenGL dùng trên máy độc lập hay trên môi trường mạng). Không có lệnh OpenGL nào tiếp nhận việc nhập dữ liệu trực tiếp từ người dùng. Cuối cùng, hệ thống cửa sổ kiểm soát tác dụng của các lệnh OpenGL trên bộ đệm khung qua các thao tác: - Quyết định các phần của bộ đệm khung mà OpenGL có thể truy xuất tại thời điểm cho phép. - Truyền đạt cho OpenGL thông tin về cấu trúc các phần đó. - Như vậy, không có lệnh OpenGL nào định dạng bộ đệm khung hay khởi tạo OpenGL. Sự định dạng bộ đệm khung được thực hiện bên ngoài OpenGL trong sự liên kết với hệ thống cửa sổ. Sự khởi tạo OpenGL được tiến hành khi hệ thống cấp phát cửa sổ cho việc biểu diễn. OpenGL được thiết kế nhằm thỏa mãn mục đích chính sau: • Che giấu sự tuơng tác phức tạp với các bộ máy xúc tiến 3 chiều bằng cách đưa ra một giao diện lập trình thống nhất. • Che giấu các sự khác biệt giữa các phần cứng 3 chiều bằng cách bắt buộc các phần cứng tương thích OpenGL phải hỗ trợ tất cả các chức năng của giao diện OpenGL. Nếu cần, các chức năng chưa được hỗ trợ đầy đủ bởi phần cứng có thể được hỗ trợ bằng phần mềm. Các thao tác OpenGL cơ bản là nhận các nguyên hàm hình học như điểm, đường thẳng và đa giác rồi chuyển thành các điểm đồ họa (pixel) trên màn hình. Điều này được thực hiện bởi luồng ống dẫn đồ họa (graphics pipeline). Nó còn được gọi là bộ máy trạng thái OpenGL. Đa số các lệnh OpenGL được dùng để tạo ra các hình học cơ bản đã gặp ở trên hoặc là qui định cách chuyển đổi hình học trong bộ máy trạng thái OpenGL. Các trò chơi được viết với OpenGL: * City of Heroes * City of Villains * CounterStrike 1.6 * Doom 3 * ETQW * Half-Life CHƯƠNG I. TÌM HIỂU VỀ CAMERA Các hệ thống sử dụng camera với mục đích giám sát , nhận dạng , an ninh, điều khiển ngày càng phổ biến và được sử dụng rộng rãi. Cấu tạo: Hình 1 - Một mắt nhìn được đặt ở vị trí nào đó trong không gian. -Thể tích nhìn là một phần của hình chóp có đỉnh là mắt nhìn.Độ lớn của góc nhìn này là do góc nhìn Ө quyết đinh. -Hai mặt phẳng vuông góc với trục của camera là mặt phẳng gần và mặt phẳng xa.Hai mặt phẳng này cắt hình chóp với thiết diện là hình chữ nhật ,những cửa sổ hình chữ nhật này có hệ số tỉ lệ nhất định và có thể được thiết lập trong chương trình.OpenGL sẽ cắt xén bất cứ phần nào của khung cảnh nằm ngoài thể tích nhìn.Điểm P nằm trong thể tích nhìn được chiếu lên mặt phẳng nhìn thành điểm P’ giống như trong phần c .Trong phép chiếu phối cảnh ,điểm P’ chính là giao điểm của đường thẳng đi qua mắt nhìn và điểm p với mặt phẳng nhìn.Cuối cùng hình ảnh trên mặt phẳng nhìn đựơc ánh xạ lên khung nhìn và được hiển thị trên màn hình (như trong phần c). Hình2: camera và phép nhìn phối cảnh 1.2 Thiết lập thể tích nhìn: Hình3:Camera khi ở vị trí mặc định của nó Hình trên mô tả camera ở vị trí mặc định của nó với mắt nhìn ở gốc tọa độ ,trục của hình chóp trùng với trục z,mắt nhìn theo hướng âm trục z. Open GL cung cấp một cách làm đơn giản để thiết lập một camera từ chương trình.Thể tích nhìn của camera được chứa trong ma trận phép chiếu của đường ống đồ họa .Ma trận phép chiếu được thiết lập bằng cách dùng hàm gluperspective() với 4 đối số .Đoạn mã thiết lập camera : glMatrixMode(GL_Projection); glLoadIdentity(); gluperspective(viewAngle,aspecRatio,N,F); Đối số viewAngle chính là góc Ө trong hình vẽ được tính bằng độ và là góc giữa mặt trên và mặt dưới của hình chóp . Đối số aspecRatio là hệ số tỷ lệ của cửa sổ song song với mặt phẳng xy. Giá trị N là khoảng cách từ mắt đến mặt phẳng gần. Giá trị F là khoảng cách từ mắt đến mặt phẳng xa. 1.3 Định vị trí và định hướng cho camera. Để có được hình ảnh mong muốn của khung cảnh chúng ta phải di chuyển camera từ vịi trí mặc định như trong hình 3 đến một vị trí mới của một hướng mới .Chúng ta có thể làm được điều này bằng phép quay và phép tịnh tiến và những phép biến đổi này trở thành một phần của ma trận mô hình. Chúng ta thiết lập vị trí và hướng của camera giống như đã làm với camera của phép chiếu song song.(Sự khác biệt giữa camera phép chiếu phối cảnh và phép chiếu song song nằm trong ma trận chiếu , chính ma trận này sẽ quyết định hình dạng của thể tích nhìn). Chúng ta xem lại cách sử dụng glulookat() trong đoạn mã sau: glMatrixMode(GL_Projection); glLoadIdentity(); gluperspective(eye.x ,eye.y ,eye.z ,look.x ,look.y ,look.z ,up.x ,up.y ,up.z); Đoạn mã này di chuyển camera sao cho mắt nhìn ở vị trí eye và nhằm thẳng vào điểm quan tâm look.Hướng “upward” được chỉ định trong vector up thường có giá trị (0,1,0). Camera với vị trí và hướng bất kỳ: Camera có thể có vị trí hoặc hướng bất kỳ trong khung cảnh . Gắn một tọa độ tường minh cho camera như hình 4.Hệ tọa độ này có gốc tọa độ trùng với mắt nhìn và 3 trục tọa độ để định hướng cho camera ,thường dùng là trục u,v,n .các trục tọa độ này có hướng trùng với các hướng của các vector u,v,n như trong hình vẽ .Bởi vì mặc định của camera hướng về phía âm trục z,vì thế chũng ta nói rằng mặc định camera hướng về phía âm của trục n tức là theo hướng –n .Hướng u chỉ về phía phải của camera , hướng v chỉ phía trên của camera .Hãy nghĩ các trục u , v,n, là bản sao của các trục tọa độ x , y, z trong hình 3 được di chuyển và quay khi chúng ta di chuyển camera. n u v Hình4 : Gắn hệ trục tọa độ cho camera. Khi điều chỉnh hướng của camera người ta thường dùng các thuật ngữ của ngành hàng không: pitch, roll, heading, yaw. Hình 5:Hướng của chiếc máy bay so với thế giới. Pitch chính là góc hợp bởi trục dọc của máy bay (chạy từ đuôi đến mũi máy bay tức là theo hướng –n) với mặt phẳng nằm ngang. Máy bay thực hiện động tác roll ( xoay tròn)bằng cách quay xung quanh trục dọc của nó roll chính là góc quay so với phương nằm ngang. Heading của máy bay chính là hướng mà nó hướng đến.Người ta còn dùng một số thuật ngữ khác như azimuth và brearing thay cho heading. Cho trước n chúng ta có thể dễ dàng tìm được thông số pitch và heading bằng cách biểu diễn n trong tọa độ cầu .Kinh độ và vĩ độ của vector –n lần lượt là Ө và ϕ .Heading của máy bay được cho bởi kinh độ Ө của –n , pitch của máy bay cho bởi vĩ độ ϕ của –n . [...]... cùng những điểm còn lại sau phép cắt xén được ánh xạ lên khung nhìn của ứng dụng 2.2.Hình chiếu phối cảnh của một điểm: Thao tác cơ bản nhất của phép chiếu phối cảnh là chiếu một điểm trong không gian 3 chiều thành một điểm trong không gian 2 chiều Hình11: Tìm hình chiếu của điểm P trong tọa độ mắt nhìn Ta thấy điểm (px,py,pz) trong không gian 3d được chiếu trên mặt phẳng gần của camera và trở thành... 3D 2.1 Giới thiệu: - Phép chiếu phối cảnh là phép chiếu mà các tia chiếu không song song với nhau mà xuất phát từ 1 điểm gọi là tâm chiếu .Phép chiếu phối cảnh tạo ra hiệu ứng về luật xa gần tạo cảm giác về độ sâu của đối tượng trong thế giới thực mà phép chiếu song song không lột tả được Sau khi đã có lớp camera trong tay chúng ta có thể tạo dựng khung cảnh 3D và tạo hình ảnh Trong openGL chúng ta... mắt nhìn PHẦN III PHÉP NHÌN LẬP THẾ 3.1 phép nhìn lập thể : Trong hình học phép chiếu lập thể hay phép chiếu nổi là một phép ánh xạ chiếu một hình cầu lên một mặt phẳng Phép chiếu được xác định trên toàn mặt cầu , ngoại trừ một điểm đó là điểm chiếu Ánh xạ là trơn và song ánh Nó cũng là một bảo giác, nghĩa là nó bảo toàn góc Tuy nhiên, nó không bảo toàn diện tích, đặc biệt là ở vùng gần điểm chiếu Về. .. system) (xem hình 6-2) Phép chiếu song song bảo tồn mối quan hệ về chiều của các đối tượng, và đây là kỹ thuật được dùng trong việc phác thảo để tạo ra các bức vẽ tỷ lệ của các đối tượng ba chiều Phương pháp này được dùng để thu các hình ảnh chính xác ở các phía khác nhau của một đối tượng Tuy nhiên, phép chiếu song song không cho một hình ảnh thực tế của các đối tượng ba chiều Ngược lại, phép chiếu phối... trở thành vòng tròn đơn vị, bán cầu Nam trở thành vùng bên trong đường tròn và bán cầu Bắc chiếu đến vùng ở ngoài đường tròn Phép chiếu không xác định với điểm chiếu N = (0, 0, 1) 3.2 Phân loại phép chiếu : Trong đồ họa hai chiều, các thao tác quan sát biến đổi các điểm hai chiều trong mặt phẳng tọa độ thế giới thực thành các điểm hai chiều trong mặt phẳng hệ tọa độ thiết bị Sự định nghĩa đối tượng,... cảnh thường tạo nên hình ảnh chân thực của khung cảnh Nhưng cũng có trường hợp ngoại lệ :chẳng hạn hình chiếu của những đường thẳng dài song song với mặt phẳng chiếu thường không cho chúng ta cảm giác giống như những gì chúng ta nhìn thấy trong thực tế Phép chiếu những đường thẳng song song : Giả sử đường thẳng trong không gian 3 chiều đi qua A = (Ax, Ay, Az) ( trong tọa độ camera) và có vector... hình sau: Hình 10 :Phép chiếu phối cảnh trong hệ tọa độ mắt nhìn Với mắt nhìn trùng với gốc tọa độ ,mặt phẳng gần vuông góc với trục z ở vị trí z= -N Đỉnh nằm ở vị trí P trong tọa độ mắt nhìn sẽ được đưa xuống khâu tiếp theo trong đường ống đồ họa , ở đó nó sẽ được chiếu thành điểm có tọa độ ( x*,y*) trên mặt phẳng gần sau đó phép cắt xén được thực hiện Cuối cùng những điểm còn lại sau phép cắt xén được... các hình ảnh thực nhưng không bảo tồn các chiều liên hệ Các đường ở xa được chiếu sẽ nhỏ hơn các đường ở gần mặt phẳng chiếu, như trong hình 6-3 Các phép chiếu song song Các hình ảnh được hình thành bằng phép chiếu song song có thể được xác định dựa vào góc hợp bởi hướng của phép chiếu hợp với mặt phẳng chiếu Khi hướng của phép chiếu vuông góc với mặt phẳng, ta có phép chiếu trực giao (hay phép chiếu... ở một nữa chiều dài của chúng Các phép chiếu cabinet cho hình ảnh thực hơn phép chiếu cavalier vì sự thu giảm chiều dài của các đường song song Hình 6-9 trình bày phép chiếu cabinet cho hình lập phương Các phép chiếu phối cảnh đạt được phép chiếu phối cảnh của đối tượng ba chiều, chúng ta chiếu các điểm theo đường thẳng chiếu để các đường này gặp nhau ở tâm chiếu Trong hình 6-10, tâm chiếu trên trục... gần điểm chiếu Về mặt trực quan, phép chiếu lập thể là một cách chụp ảnh hình cầu lên mặt phẳng, với một số hạn chế không thể tránh khỏi Vì cả mặt cầu và mặt phẳng đều xuất hiện rất nhiều trong toán học và các ứng dụng của nó, nên phép chiếu lập thể cũng vậy; được sử dụng nhiều trong phân tích phức, vẽ bản đồ, địa lí, và chụp ảnh Trên thực tế, phép chiếu có thể được thực hiện nhờ dùng máy tính hoặc . THÔNG ĐẠI HỌC THÁI NGUYÊN BÁO CÁO THỰC TẬP CHUYÊN NGHÀNH CHỦ ĐỀ:TÌM HIỂU VỀ PHÉP NHÌN TRONG KHÔNG GIAN BA CHIỀU Giáo viên hướng dẫn: Nguyễn Thị Thanh Nhàn Sinh viên thực hiện: Hà Thị Lệ LỜI MỞ. bài thực tập chuyên nghành này là tìm hiểu về phép nhìn trong không gian ba chiều .đồng thời cũng giới thiệu đôi nét về thư viện đồ họa OpenGL trong việc minh họa các giải thuật đồ họa ba chiều. . DUNG Giới thiệu về không gian 3 chiều, Thư viện đồ họa OpenGl 1 .Tìm hiểu về camera 2.Hình chiếu phối cảnh của vật thể 3D 3 .Phép nhìn lập thể GIỚI THIỆU Không gian 3 chiều: Mô hình hóa ba chiều (3D)