1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu một số kỹ thuật trong đồ họa 3d và ứng dụng

60 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 60
Dung lượng 8,19 MB

Nội dung

– Trước hết em xin chân thành thầy Ngô Trường Giang giáo viên hướng dẫn em tình thực tập Thầy giúp em nhiều cung cấp cho em nhiều tài liệu quan trọng phục vụ cho trình tìm hiểu đề tài “Tìm hiểu ” Thứ hai, Em xin chân thành cảm ơn thầy cô môn công nghệ thông tin bảo bảo em trình học rèn luyện năm học vừa qua Đồng thời em cảm ơn bạn sinh viên lớp CT901 gắn bó với em q trình rèn luyện trường Cuối em xin chân thành cảm ơn ban giám hiệu trường Đại Học Dân Lập Hải Phòng tạo điều kiện cho em có kiến thức, thư viện trường nơi mà sinh viên trường thu thập tài liệu trợ giúp cho giảng lớp Đồng thời thầy cô trường giảng dạy cho sinh viên kinh nghiệm sống Với kiến thức kinh nghiệm giúp em cho cơng việc sống sau Em xin chân thành cảm ơn! Hải Phòng, tháng 07 năm 2009 Sinh viên Nguyễn Phi Hùng - Lớp CT901 – MỤC LỤC Mở đầu CHƯƠNG 1: Tổng quan kỹ thuật đồ họa 1.1 Các khái niệm tổng quan kỹ thuật đồ họa máy tính 1.2 Các kỹ thuật đồ họa 1.2.1 Kỹ thuật đồ họa điểm 1.2.2 Kỹ thuật đồ họa vector 1.2.3 Phân loại đồ họa máy tính 1.2.4 Các ứng dụng tiêu biểu kỹ thuật đồ họa 11 CHƯƠNG 2: Một số kỹ thuật ứng dụng đồ họa 3D 13 2.1 Các phép biến đổi hình học ba chiều 13 2.1.1 Hệ tọa độ 13 2.1.2 Phép tịnh tiến 13 2.1.3 Phép tỷ lệ 14 2.1.4 Phép biến dạng 14 2.1.5 Phép quay chiều 14 2.1.6 Phép đối xứng 15 2.2 Quan sát chiều (Phép chiếu - Projection) 16 2.2.1 Các phép chiếu 16 2.2.2 23 CHƯƠNG 3: Giới thiệu Engine OGRE 29 3.1 Giới thiệu tổng quan OGRE 29 3.1.1 Lịch sử phát triển 29 3.1.2 Một số khái niệm đặc điểm OGRE 30 3.1.3 Cấu trúc quản lý cảnh OGRE 31 3.2 Cấu hình Engine OGRE 34 3.2.1 Yêu cầu phần mềm 34 3.2.2 Các bước cài đặt chạy thử nghiệm 34 Nguyễn Phi Hùng - Lớp CT901 – 3.3 Một số học câu lệnh đồ họa 3D 36 CHƯƠNG 4: Thực nghiệm 39 4.1 Phát biểu toán ứng dụng 39 4.2 40 4.2.1 40 4.2.2 (Select) 44 4.2.3 45 4.2.4 47 4.3 53 4.3.1 53 4.3.2 54 4.4 Kết luận 58 59 Tài liệu tham khảo 60 Nguyễn Phi Hùng - Lớp CT901 – Mở đầu n – chương: Chương 1: Đ Chương 3D Chương 3: T Chương 4: Nguyễn Phi Hùng - Lớp CT901 – CHƯƠNG 1: Tổng quan kỹ thuật đồ họa 1.1 Các khái niệm tổng quan kỹ thuật đồ họa máy tính Definition (ISO): Phương pháp công nghệ chuyển đổi liệu từ thiết bị đồ hoạ sang máy tính Computer Graphics phương tiện đa mạnh giao tiếp người máy tính Computer Graphics (Kỹ thuật đồ hoạ máy tính) thơng tin mà ng tập hợp cơng cụ (mơ hình lý thuyết phần mềm) khác nhau: kiến tạo, xây dựng, luu trữ, xử lý mơ hình (model) hình ảnh (image) đối tượng Các mơ hình (model) hình ảnh kết thu từ lĩnh vực khác nhiều ngành khoa học (vật lý, toán học, thiên văn học…) Computer graphics xử lý tất vấn đề tạo ảnh nhờ máy tính 1.2 Các kỹ thuật đồ họa 1.2.1 Kỹ thuật đồ họa điểm Các mơ hình , hình ảnh đối tượng hiển thị thông qua pixel (từng mẫu rời rạc) Đặc điểm: thay đổi thuộc tính Xố pixel mơ hình hình ảnh đối tượng Các mơ hình hình ảnh hiển thị lưới điểm (grid) pixel rời rạc Từng pixel có vị trí xác định, hiển thị với giá trị rời rạc (số nguyên) thông số hiển thị (màu sắc độ sáng) Nguyễn Phi Hùng - Lớp CT901 – Tập hợp tất pixel grid cho mô hinh, hình ảnh đối tượng mà muốn hiển thị Hình 1.1 Ảnh đồ họa điểm Phương pháp để tạo pixel Phương pháp dùng phần mềm để vẽ trực tiếp pixel Dựa lý thuyết mô (lý thuyết Fractal, v.v) để xây dựng nên hình ảnh mơ vật Phương pháp rời rạc hóa (số hóa) hình ảnh thực đối tượng Có thể sửa đổi (image editing) xử lý (image processing) mảng pixel thu theo phương pháp khác đ thu hình ảnh đặc trưng đối tượng 1.2.2 Kỹ thuật đồ họa vector Hình 1.2 Mơ hình đồ họa vector Nguyễn Phi Hùng - Lớp CT901 – Mơ hình hình học (geometrical model) cho mơ hình hình ảnh đối tượng Xác định thuộc tính mơ hình hình học Q trình tơ trát (rendering) để hiển thị điểm mơ hình, hình ảnh thực đối tượng Có thể định nghĩa đồ họa vector: Đồ họa vector = geometrical model + rendering So sánh đồ họa điểm đồ họa vector Đồ họa điểm(Raster Graphics) Ðồ hoạ vector(Vector Graphics) Hình ảnh mơ hình vật Khơng thay đổi thuộc tính thể biểu diễn tập hợp điểm trực tiếp điểm lưới (grid) Xử lý với th Thay đổi thuộc tính pixel học sở thực thay đổi phần phần hình trình tơ trát hiển thị lại hình ảnh Quan s Copy pixel từ hình hình ảnh vật nhiều ảnh sang hình ảnh khác góc độ khác thay hình ảnh mơ hình đổi điểm nhìn góc nhìn Ví dụ hình ảnh đồ họa vector Nguyễn Phi Hùng - Lớp CT901 – Hình 1.3 Ví dụ đồ họa vector 1.2.3 Phân loại đồ họa máy tính Phân loại theo lĩnh vực hoạt động đồ họa máy tính CAD/CAM System Kiến tạo đồ họa Đồ họa minh họa Đồ họa hoạt hình nghệ thuật Kỹ thuật đồ họa Xử lý ảnh Xử lý đồ họa Kỹ thuật nhận dạng Kỹ thuật phân tích tạo ảnh Nguyễn Phi Hùng - Lớp CT901 – Phân loại theo hệ tọa độ Kỹ thuật đồ họa chiều Kỹ thuật đồ họa Kỹ thuật đồ họa chiều Kỹ thuật đồ họa chiều: kỹ thuật đồ họa máy tính sử dụng hệ tọa độ hai chiều (hệ tọa độ thẳng), sử dụng nhiều kỹ thuật xử lý đồ, đồ thị Kỹ thuật đồ họa chiều: kỹ thuật đồ họa máy tính sử dụng hệ tọa độ ba chiều, địi hỏi rát nhiều tính tốn phức tạp nhiều so với kỹ thuật đồ họa hai chiều Các lĩnh vực đồ họa máy tính: Kỹ thuật xử lý ảnh (Computer Imaging): sau trình xử lý ảnh cho ta ảnh số đối tượng, Trong trình xử lý ảnh sử dụng nhiều kỹ thuạt phức tạp: kỹ thuật khôi phục ảnh, kỹ thuật làm nối ảnh, kỹ thuật xác định biên ảnh Kỹ thuật nhận dạng (Pattern Recognition): từ ảnh mẫu có sẵn ta phân loại theo trúc, theo tiêu trí xác định từ trước thuật tốn chọn lọc để cso thể phân tích hay tổng hợp cá ảnh gốc, ảnh gốc lưu thư viện vào thư viện ta xây dựng thuật giải phân tích tổ hợp ảnh Kỹ thuật tổng hợp ảnh (Image Synthesis): lĩnh vực xây dựng mơ hình hình ảnh vật thể dựa đối tượng mối quan hệ chúng Nguyễn Phi Hùng - Lớp CT901 10 – if (itr->movable) mCurrentObject = itr->movable->getParentSceneNode(); Nguyễn Phi Hùng - Lớp CT901 46 – t if (mLMouseDown && mCurrentObject) { CEGUI::Point mousePos = CEGUI::MouseCursor::getSingleton().getPosition(); Ray mouseRay = mCamera->getCameraToViewportRay( mousePos.d_x/(mWindow->getWidth()), mousePos.d_y/(mWindow->getHeight())); mRaySceneQuery->setRay(mouseRay); mRaySceneQuery->setSortByDistance(false); RaySceneQueryResult &result = mRaySceneQuery->execute(); RaySceneQueryResult::iterator itr; for (itr = result.begin(); itr != result.end(); itr++) if (itr->worldFragment) { mCurrentObject->setPosition(itr->worldFragment->singleIntersection); break; } // if } // if 4.2.4 skeleton mesh Nguyễn Phi Hùng - Lớp CT901 47 – file cfg file cua1.cfg // Create Door SceneNode* mDoorNode = mgr->getRootSceneNode()-> createChildSceneNode("Cua"); // Load cfg file ConfigFile cfg; cfg.load( "cua1.cfg" ); availableMeshes = cfg.getMultiSetting("Mesh"); Entity* mEntity; // Load doi tuong for(int i=0; i < availableMeshes.size(); i++) { mEntity = mgr->createEntity(availableMeshes[i], availableMeshes[i] + ".mesh"); mDoorNode->attachObject(mEntity); } Nguyễn Phi Hùng - Lớp CT901 48 – // Open button CEGUI::WindowManager *winm = CEGUI::WindowManager::getSingletonPtr(); CEGUI::Window *sheet = winm->createWindow("DefaultGUISheet", "CEGUIDemo/Sheet"); CEGUI::Window *quit = winm->createWindow("TaharezLook/Button", "Open"); open->setText("Mo cua"); open->setSize(CEGUI::UVector2(CEGUI::UDim(0.15, 0),CEGUI::UDim(0.05, 0))); open->setPosition(CEGUI::UVector2(CEGUI::UDim(0.5,0),CEGUI::UDim(0.5,0))); open->setVisible(false); sheet->addChildWindow(quit); mSystem->setGUISheet(sheet); Nguyễn Phi Hùng - Lớp CT901 49 – ) lưu ) – ScrollBar ) Nguyễn Phi Hùng - Lớp CT901 50 – CEGUI::Window* radio = winm->createWindow("TaharezLook/RadioButton", "rOn" + StringConverter::toString(i)); radio->setText((CEGUI::utf8*)"Báº-t"); ((CEGUI::RadioButton*)radio)->setSelected(true); ((CEGUI::RadioButton*)radio)->setMaxSize( CEGUI::UVector2(CEGUI::UDim(1, 0), CEGUI::UDim(1, 0))); , Top, Width, Height ((CEGUI::RadioButton*)radio)->setArea( CEGUI::UDim(0.5, 0), CEGUI::UDim(0.2, 0), CEGUI::UDim(0.2, 0), CEGUI::UDim(0.25, 0)); ) ((CEGUI::RadioButton*)radio)->setGroupID(i); n ((CEGUI::RadioButton*)radio)->setID(0); ScrollBar CEGUI::Window* horibar = winm->createWindow( "TaharezLook/HorizontalScrollbar", "cuongdo" + StringConverter::toString(i)); horibar->setMaxSize( CEGUI::UVector2(CEGUI::UDim(1, 0), CEGUI::UDim(1, 0))); horibar->setArea( CEGUI::UDim(0.15, 0), CEGUI::UDim(0.75, 0), CEGUI::UDim(0.8, 0), CEGUI::UDim(0.2, 0)); horibar->setProperty("PageSize","0"); horibar->setProperty("StepSize","1"); horibar->setProperty("OverlapSize","0"); horibar->setProperty("DocumentSize","2"); horibar->setProperty("ScrollPosition","1"); horibar->setProperty("InheritsAlpha","False"); Nguyễn Phi Hùng - Lớp CT901 51 – bool handleLightOnOff(const CEGUI::EventArgs& e) { CEGUI::uint gr = ((CEGUI::RadioButton*)((const CEGUI::WindowEventArgs&)e).window)-> getSelectedButtonInGroup()->getGroupID(); CEGUI::uint id = ((CEGUI::RadioButton*)((const CEGUI::WindowEventArgs&)e).window)-> getSelectedButtonInGroup()->getID(); if (id == 0) mgr->getLight(stLight[gr])->setVisible(true); if (id == 1) mgr->getLight(stLight[gr])->setVisible(false); return true; } ScrollBar bool handleLightChanged(const CEGUI::EventArgs& e) { CEGUI::uint l = ((CEGUI::Scrollbar*)((const CEGUI::WindowEventArgs&)e).window)->getName().length(); CEGUI::String numl = ((CEGUI::Scrollbar*)((const CEGUI::WindowEventArgs&)e).window)->getName(); ::String -> Ogre::String String num; char h[20]; sprintf(h,numl.c_str()); num = h; ::String -> CEGUI::int l = StringConverter::parseInt(num.substr(7,l)); String copyl; copyl = "copyLight" + stLight[l]; float scrollval = ((CEGUI::Scrollbar*)((const CEGUI::WindowEventArgs&)e).window)->getScrollPosition() - 1; mgr->getLight(stLight[l])->setDiffuseColour( mgr->getLight(copyl)->getDiffuseColour() + ColourValue(scrollval, scrollval, scrollval)); mgr->getLight(stLight[l])->setSpecularColour( mgr->getLight(copyl)->getSpecularColour() + ColourValue(scrollval, scrollval, scrollval)); return true; } Nguyễn Phi Hùng - Lớp CT901 52 – 4.3 4.3.1 : 4.7 Nguyễn Phi Hùng - Lớp CT901 53 – 4.3.2 C Nguyễn Phi Hùng - Lớp CT901 54 – 4.9 4.10 Nguyễn Phi Hùng - Lớp CT901 55 – ) Nguyễn Phi Hùng - Lớp CT901 56 – – – – Nguyễn Phi Hùng - Lớp CT901 57 – 4.4 ,g : Nguyễn Phi Hùng - Lớp CT901 58 – Kết luận - Tuy nhiên hạn chế điều kiện thời gian, khố luận khơng thể tránh khỏi thiếu xót Kính mong đóng góp ý kiến thầy bạn để em hồn thiện đề tài nghiên cứu đợt làm khố luận tốt nghiệp ! Nguyễn Phi Hùng - Lớp CT901 59 – Tài liệu tham khảo [1.] James D.Foley, Andrie van Dam, Steven K.Feiner, Jonhn F Hughes, Computer Graphics Principles and Practice, Addison Wesley, 1994 [2.] Hồng Kiếm, Dương Anh Ðức, Lê Ðình Duy, Vu Hải Quân Giáo trình sở Ðồ hoạ Máy tính, NXB Giáo dục, 2000 [3.] Lê Tấn Hùng, Huỳnh Quyết Thắng Kỹ thuật đồ hoạ máy tính, NXB khoa học kỹ thuật, 2002 [4.] Steven Harrington, Computer Graphics A Programming Approach, McGraw Hill International Edition, 1987 [5.] Pro OGRE 3D Programming Nguyễn Phi Hùng - Lớp CT901 60 ... biểu toán ứng dụng Qua tìm hiểu lý thuyết số kỹ thuật đồ họa 3D, vận dụng kiến thức để sử dụng thành thạo kỹ thuật đồ họa 3D thư viện đồ họa 3D mã nguồn mở, qua viết ứng dụng 3D quản lý bất động... đồ họa 3D mã nguồn mở Các thuật tốn xử lý đồ họa Các mơ hình đồ vật chiều, mẫu nhà Một nhà 3D lại bên thay đổi 4.1 Sơ đồ toán 4.2 4.2.1 Nguyễn Phi Hùng - Lớp CT901 40 – mesh plugin: Ogre3DSExporter-1.2.2... giá OGRE engine mở miễn phí tốt Bạn làm game OGRE Khơng số engine 3D khác, định hướng vào loại game, với OGRE bạn làm game “2.5D” 3D thành thạo Thậm chí MMORPG (Massively Multiplayer Online Role-Playing

Ngày đăng: 18/04/2021, 15:17

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w