OpenGL ортасының анимацияланған кескіндеріндегі синтезделген камераның моделі


Slide 1

20. 02. 2012

1

Slide 2

OpenGL ортасының анимацияланған кескіндеріндегі синтезделген камераның моделі

20. 02. 2012

2

Slide 3

КІРІСПЕ

Ғылыми-техникалық прогресс компьютерлік өнеркәсіптің дамуына үлкен түрткі болды. Компьютерлердің қарқынды дамуы ақпараттық технологияның жаңа бағыты компьютерлік графиканы қолдануға мүмкіндік берді. Компьютерлік графика - бұл компьютерлер көмегімен суреттерді өңдеудің барлық аспектілерін қамтитын информатика облысы. Қазіргі кезде компьютерлік графика программалық қамтамасыз етуде және жалпы компьютерлік жүйелерде стандарт болып табылады.

20. 02. 2012

3

Slide 4

OpenGL графикалық жүйесі - бұл графикалық құрылғыларға арналған программалық интерфейс. Ол қозғалатын объектілерді екі өлшемді және үш өлшемді кеңістікте бейнелейтін интерактивті қосымшаны өңдеуге мүмкіндік береді.

20. 02. 2012

4

Slide 5

Берілген жұмыс компьютерлік графикадағы шыншыл суреттерді жасауға арналған. Графикалық редакторда шыншыл суреттерді жасау үшін сол сурет пішінін құру керек және текстура объектісіне дұрыс жарық түсіруді қамтамасыз ету керек. Динамикалық суреттерді жасау жайындағы объектінің интерактивті режимін және де артқы жағынан объектіні қарағанда қозғалатын камералар сахнасының пішінін жасау керек.

20. 02. 2012

5

Slide 6

OpenGL-дің қысқаша артықшылықтарын атап көрсетуге болады:

Түрлік және модельдік түрлендірулер;

Геометриялық және растрлық примитивтер;

Безье қисықтарын қолдану;

Түспен жұмыс жасау;

Камерамен жұмыс;

Текстура салу;

Жарықтандыру;

Атмосфералық эффектілер;

20. 02. 2012

6

Slide 7

Көп адамдар 3D әлемін камерадан қарайтын кеңістік ретінде танып біледі. Бірақ OpenGLда шынайы камера жоқ болып саналады. Қозғалыс иллюзиясы үшін (0, 0, 0) нүктесіне қатысты кинодағыдай камера емес, объекттер жылжиды.

Бұндай процесс қиын көрінуі мүмкін, бірақ бұл қиын емес. Қосымшадан тәуелді бұл есепті шешудің көптеген жолдары бар. Шынайы үлкен әлемдер үшін оптимизациялар одан да көп.

20. 02. 2012

7

Slide 8

ОБЪЕКТ ЖӘНЕ БАҚЫЛАУШЫ

Компьютермен қалыптастырылған бейне өзіңің табиғаты жағынан жасанды синтезделген болып келеді, сондықтан ол көбінесе физикалық жағынан жоқ болып табылады.

Бейнелерді құру процесінде - физикалық немесе формалдық (математикалық) - екі маңызды тұлға қатысады: объект және бақылаушы.

20. 02. 2012

8

Slide 9

. Объект кеңістікте бейненің жасалу процесінен тәуелсіз бар болады. Компьютерлік графикада біз нақты физикалық объектімен емес, қиялдағы, синтезделген компьютерлік бағдарламамен жұмыс істейміз. Мұндай қиялдағы объект кеңістікте әр түрлі геометриялық примитивтер - нүкте, кесінділер және көпбұрыштардың орналасу спецификациясы арқылы қалыптасады. Көптеген графикалық жүйелерде объекттерді суреттеуге немесе аппроксимациялауға арналған кеңістікте өте көп нүктелердің суреттелуі бар, мысалы, шыңдар (vertices) .

20. 02. 2012

9

Slide 10

Бір сахнаны үш әртүрлі бақылаушының қалай көретіндігі: а - бақылаушы А; б - бақылаушы В; в - бақылаушы С;

20. 02. 2012

10

Slide 11

Мына суретте фотокамера пленкасында ғимарат бейнесінің қалыптасуы көрсетілген. Бірақ бақылаушы және бақыланушы объект сол бір үш өлшемді әлемде болғанымен, пленка жазықтығандағы пайда болған бейне екі өлшемді болып табылады. Бейненің құрылу процесінің мәні: бақылаушының және объекттің орнын (сипаттамасын) біле отырып, пайда болған екі өлшемді бейнені сипаттау.

Фотокамерада бейненің құрылуы

20. 02. 2012

11

Slide 12

Объекттің кез-келген бір нүктесінің бейнесін құру үшін біз осы нүктеден объектив центріне проециалайтын сәуле жүргіземіз. Назар аударыңыз, барлық проециаланатын сәулелер проециалау центріне жинақталады. Біздің синтезделген камерамызда объектив алдына жылжытып орналастырылған светоприемник жазықтығы - суреттік жазықтық немесе проекция жазықтығы (projection plane) деп аталады.

Синтезделген камера

20. 02. 2012

12

Slide 13

Кесу рамкасы: а - рамканың алдыңғы орны; б - рамка жылжыған;

20. 02. 2012

13

Slide 14

Қолданбалы программалар интерфейсі

Қолданбалы программа және графикалық жүйе арасындағы интерфейс бұл - жиынтықта графикалық кітапхананы құрайтын функциялардың жиыны. Бұл функциялардың қызметі біз атайтындай қолданбалы программалар интерфейсі (АРІ- application programmer ' s interface ) .

20. 02. 2012

14

Slide 15

Синтезделген камераның концепция пішініне ерсек, онда АРІ негізінде төмендегілерді сипаттайтын функциялар болу керек:

Объектілер;

Бақылаушы;

Жарық көздері;

Объекті материалдарының қасиеттері;

20. 02. 2012

15

Slide 16

Камерада ол арқылы құрылатын бейнені суреттейтін төрт түрлі параметрлері бар:

1. Камераның орналасуы проекция центрінің орналасуымен беріледі.

2. Бағдарлау. Проекция центрін кеңістіктің айқын нүктесіне орналастырып, камераның бастапқы жергілікті координаталар жүйесімен сәйкестендіріп, осындай жолмен объективтің бағдарын өзгерте отырып айналдыруға болады.

3. Камера объективінің фокустік ара-қашықтығы проекция жазықтығында бейнені нақты анықтайды.

4. Светоприемник жазықтығы. Камераның артқы қабырғасы биіктігінде және енінде ақырғы мөлшерлерге ие. Кейбір АРІ светоприемник жазықтығының бағдарын объектив бағдарынан тәуелсіз дем беруге рұқсат береді.

20. 02. 2012

16

Slide 17

КАМЕРАНЫ ОРНАЛАСТЫРУ

Фрейм (англ. frame - кадр, рамка) -жалпы жағдайда қандайда бір ақпаратты сақтайтын структура.

OpenGL-дың үшөлшемді объектілерді бейнелеуді қолдайтын қандай функциялар бар екенін қарасырайық. Біз сонымен қатар осындай тәсілдердің басқа графикалық жүйелерден қаншалықты айырмашылығы бар екенін көреміз. Бұл бөлімде камера орналасу тәсілдерін пішіндеу туралы айтамыз. OpenGL да түр матрицалары және проециалаулар көбейтіледі және барлық геометриялық объекттердің шыңдарына қолданылатын түрлендіру бірлік матрицасы пайда болады.

20. 02. 2012

17

Slide 18

Камера фреймін жүлдемелеу

Үндеусіз OpenGL камераны әлемдік фреймның координаталар басына орналастырады, және де проециалаушы осі әлемдік фреймнің z осіне қарама-қарсы бағытталады. Көптеген қосымшаларда пішіндеу барысында объекттер координаттар басының төңірегінде орналасады, демек, камера орналасуының бастапқы моментінде сахнаның барлық объектілерін көрмейді. Осылайша, барлық объектілер камераның көру облысына түсу үшін оны қалайда жылжыту керек, немесе объектілерді камераның алдына кеп тұратындай қылып жылжыту. Мұның программалық мәні - эквиваленттік операциялар.

20. 02. 2012

18

Slide 19

Пішіндеу барысында құрылған сахна бірлік түр матрицасына ие деп есептеуге болады, және оның барлық шындарын glVertex() функциясы арқылы беруге болады. Түр матрицасының кейінгі өзгертулері әлемдік фреймді камераға қатысты жылжытады, осылайша ақыр аяғында камерада көрінуіне ықпал етеді, себебі шыңдар өзгертілген әлемдік фреймге қатысты берілген.

Камераның алғащқы орны

20. 02. 2012

19

Slide 20

20. 02. 2012

20

Камера фреймі мен әлемдік фреймнің өзара жылжуы: а - бастапқы конфигурация; б - түр матрицасының өзгеруінен кейінгі конфигурация;

Slide 21

Алдымен түр матрицасында бұрылыс пен жылжулар жанама тізбегі арқылы камера орналасуын береміз.

Центрі координаталар басында орналасатын объектті қарастырайық. Камера бастапқы орнында - координаталар басында орналасқан, ал оның оптикалық осі z теріс жарты осі бойымен бағытталған. Бізге оң х жарты осі жағынан көрінетін объекттің жазықтығын көру керек болсын. Демек, камераны координаталар басынан жылжыту керек. Егер камераның ориентациясын өзгертпейтін болсақ, онда оны оң z жарты осімен жылжыту керек. Сәйкес түрлендірулер glTranslatef (0. 0, 0. 0, - d) функциясы арқылы жүзеге асады. Мұндағы d - оң сан.

20. 02. 2012

21

Slide 22

Компьютерлік графикада басқа әдістеме кең тараған - объект бекітілген фреймде орнатылған деп есептеледі, ал бақылаушы лайық ракурсты іздеп, оның айналасында жүгіреді. Визуализация концептулды былай орындалады: біз объектті аламыз, бізге қалай қажет солай бағдарлаймыз да керекті орынға жылжытып қоямыз.

20. 02. 2012

22

Slide 23

Енді бұл объектке х оң жарты осі жағынан қалай қарау керектігін қарастырайық. Ол үшін камераны объекттен алшақтату ғана жеткіліксіз, оны суретте көрсетілгендей у осі бойынша бұру қажет. Жылжытуды у осі бойынша 90 градусқа айналдырғаннан кейін барып орындаған жөн. Программа кодында мұндай функциялардың шақырылуы кері ретте жүргізілуі қажет. Сондықтан программаның сәйкес бөлігі мынадай болып көрінеді:

glMatrixMode(GL_MODELVIEW) ;

glLoadIdentity() ;

glTranslatef(0. 0, 0. 0, -d) ;

glRotatef(-90. 0, 0. 0, 1. 0, 0. 0) ;

20. 02. 2012

23

Slide 24

20. 02. 2012

24

Камераның орналастырылуы

glMatrixMode(GL_MODELVIEW) ;

glLoadIdentity() ;

glTranslatef(0. 0, 0. 0, -d) ;

glRotatef(-90. 0, 0. 0, 1. 0, 0. 0) ;

Slide 25

ПРОЕЦИАЛАУ

20. 02. 2012

25

OpenGLда проециалаудың бірнеше түрі бар, солардың негізгілері мыналар:

Перспективтік - шыншылға жақын

Ортогональдық - экранға тікелей қатысты, оның шындық өлшемін есептемегенде. Бұл жай чертеждік проекция болуы мүмкін.

Slide 26

Перспективтік проекциялар

20. 02. 2012

26

Суретте объектив пен камера жазықтығының қиылысуының екі түрі көрсетілген. а) суретінде бейне жазықтығы объективтің оптикалық осіне ортогональды. Мұндай жағдай көптеген реалды оптикалық аспаптар үшін орындалады, мысалы, адам көзі үшін. б) суретінде мейлінше жалпы жағдай келтірілген. Мұнда бейне жазықтығының бағдары объективтің оптикалық осімен сәйкес келмейді.

Slide 27

Ортогональдық проекция

Ортогональдық проекция - бұл параллельдік проекцияның дара түрі. Бұл жағдайда проециаланатын сәулелер суреттің жазықтағына ортогональді. Ортогональдік проекция объективінің өте үлкен фокустық аралығы бар камераларда пайда болатынын үлкен дәлдікпен айтуға болады. Бұл жағдайда камераның суреттік жазықтығы оның объективінің оптикалық осіне ортогональді.

20. 02. 2012

27

Slide 28

Суретте z=0 суреттік жазықтығына ортогональдік проекция көрсетілген. Нүктенің бұл жазықтыққа проециалаған кезде оның х және у компоненттерінің мәндері сақталады, ал проециалау теңдеулері енді мынадай түрге келеді:

xp=x, yp=y, zp=0;

Ортогональдік проекциалар

20. 02. 2012

28

Slide 29

Шешімін біртекті координаталардың матрицасы түрінде жазайық:

20. 02. 2012

29

Slide 30

Жай жағдайларға пайда болған нәтижелерді ортақ түрдегі перспективтік және параллельдік проециаларға дейін жылжу мен бұрылу түрлендірулерінің тізбкетерін қосу арқылы кеңейтуге болады.

20. 02. 2012

30

Slide 31

ПРАКТИКАЛЫҚ БӨЛІМ

3D әлемінің басты проблемасы - бұл екі өлшемді экран жазықтығына үшөлшемді объекттерді сәйкес конвертация жасау. Ол үшін келесі басты операциялар орындалады.

1. Transformations - олар multiplication түрінде келтірілген:

modeling, viewing, projection operations, және де rotation, translation, scaling, reflecting, orthographic projection,

2. Клиппинг - яғни, монитор шекарасына түспейтін объекттерді немесе олардың бөліктерін қиып алу.

3. Түрлендірілген 2D координаталар пайда болғаннан кейін оларды экрандық координаталарға сәйкес келтіру керек, яғни viewport transformation жасау керек.

20. 02. 2012

31

Slide 32

Transformation процесі камерадан сурет алу процесіне пара-пар. Камера келесі операцияларды жүзеге асырады:

Камера орнатамыз - viewing transformation.

Сахна жасаймыз - modeling transformation.

Камера линзасын дұрыстаймыз - projection transformation.

Сурет өлшемін таңдаймыз - viewport transformation

Алдымен 4х4 М матрицасын инициализация жасаймыз. Оны кейін сахнаның әр шыңына көбейтеміз. Әр шыңның 4 координатасы бар (x, y, z, w) , мұнда w=1 и z=0 . Әр фреймнен кейін glLoadIdentity() шақырылады.

20. 02. 2012

32

Slide 33

Берілген бөлімде OpenGL проект жасаудың программалық коды кезеңдеп басылған. Басынан бастап Visual C++ жобасын жасаған жөн, ол үшін келесі әрекетті жасайды:

MSVisualC++6. 0 іске қосу.

File-> New-> Win32 Console Application мәзірін басу

Жоба каталогы мен атын таңдау, ОК басу

An Empty Project таңдап, Finish басу.

MSVisualC++ жаңа Win32 қосымшасын жасаған соң, жобаны жинақтау үшін OpenGL кітапханасын қосқан жөн. Project/Settings менюында, LINK белгілемесін тандаңыз. “Object/Library Modules” жолағында “OpenGL32. lib Glu32. lib GLaux. lib” қосыңыз. Кейін ОК басыңыз. OpenGL программасын жасауға бәрі де дайын.

20. 02. 2012

33

Slide 34

Шолу камерасы операцияларын инициализациялау

Шолу камерасының класс анықтамасы екі бөлікке бөлінген, олардың әрбіреуі жеке файлда сақталады: тақырып файлында класс қолдайтын операциялардың сипатталуы болады; ал бағдарлама мәтіні болатын файлда бұл операциялардың жүзеге асырылуы сақталады.

20. 02. 2012

34

Slide 35

Алдымен, файлындағы операцияларды сипаттаймыз. Тақырыптық файл құрамыз, ол үшін келесі әрекеттерді орындау керек:

Project->Add To Project->New . . . мәзірін шерту

Тізімнен С/С++ Header File таңдау

Файл атауын таңдап, ОК басыңыз.

Бұл операциялардың барлығын орындап, жобаға camera. h файлын қосамыз. Қосу кілттерін қосамыз, олар тақырыптық файлдарының қайта қосылуын болдырмау үшін тағайындалған.

#ifndef_CAMERA_H

#define_CAMERA_H

20. 02. 2012

35

Slide 36

Кейін OpenGL-дың стандартты кітапханаларын қосамыз.

#include

#include

#include

#include

Бұл кітапханаларды қосу керек, себебі GL* типтес кітапхана бұл жерде тиімді.

20. 02. 2012

36

Slide 37

Кодтың келесі секциясы typedef көмігімен мәліметтер типінің құрамды жаңа атауын құрады, бірақ бұл мәліметтердің жаңа типінің пайда болуына әкелмейді. Struct кілтті сөзі құрылымның сипаттамасын береді. Құрылым - бұл басқа типтерді қолдана отырып, құрылған мәліметтердің құрамды типтері. SF3dVector идентификаторы - құрылым тегі (белгіленуі, атауы-этикетка) . Құрылым тегі берілген типтің айнымалы құрылымын жариалау кезінде қолданылады.

typedef struct SF3dVector

{

20. 02. 2012

37

Slide 38

Кодтың берілген секциясында GLfloat типінің x, y, z айнымалылары сипатталады, олар үшөлшемді кеңістікте вектор координаттары болып келеді.

GLfloat x, y, z;

};

20. 02. 2012

38

Slide 39

Камера класын жүзеге асыру class кілтті сөзінен басталады, оның артынан класс атауы, оны CCamera деп анықтайық. Классты анықтау, оны хабарлау, және одан кейіңгі класс денесі жақшаға алынып, соңына нүктелі үтір қойылады. Класс денесіндегі public және private кілтті сөздері класс мүшелеріне рұқсатты басқару үшін қолданылады. рublic (жаңалық) сияқты анықталған мүшелер программаның кез-келген жерінен алынады.

20. 02. 2012

39

Slide 40

class CCamera

{

private:

SF3dVector Position;

SF3dVector ViewDir; // камераны беру ұшін қолданылмайды, "moveforwards« үшін //қолданылады. Сондықтан оны әрқашан шақырудың қажеті жоқ. Оны тек ViewDirChanged //ақиқат шақырылған кезде ғана қолдану

bool ViewDirChanged;

GLfloat RotatedX, RotatedY, RotatedZ;

void GetViewDir ( void ) ;

public:

//мәндері (орны (0 0 0) мәні: (0 0 -1) )

//кейбір glRotates және glTranslate командалары орындалады

CCamera() ;

void Render ( void ) ; // бұны шақырғанның алдында glLoadIdientyti() шықыру керек

void Move ( SF3dVector Direction ) ;

void RotateX ( GLfloat Angle ) ;

void RotateY ( GLfloat Angle ) ;

void RotateZ ( GLfloat Angle ) ;

void RotateXYZ ( SF3dVector Angles ) ;

void MoveForwards ( GLfloat Distance ) ;

void StrafeRight ( GLfloat Distance ) ;

};

20. 02. 2012

40

Slide 41

Шолу камерасы операцияларын жүзеге асыру

Класс хабарламасын тақырыптық файлға, классты қолдана алатын кез-келген клиентке оңай тиетін тақырыптық файлға орналастырамыз. Бұл кластың ашық интерфейсін құрастырады. Функция - элементтердің анықтамаларын ағымдағы файлға орналастырамыз, соның нәтижесінде класс жасалуын аламыз. Енді camera. cpp файлындағы класс операцияларының жасалуын сипаттаймыз. Класс анықтамасымен берілген тақырыптық файлды қосамыз.

#include “camera. h”

#include

#include

#include

20. 02. 2012

41

Slide 42
Ұқсас жұмыстар
Нүкте бұлтын құру
Теллурдың жаңа туындыларының синтезі және қасиеттері
Мемлекеттік стандарт талаптарына сай жұмыртқа өнімдерін ВСС
Компьютерлік графика. Компьютерлік графиканың түрлері
Мультимедиялық құралдардың түрлері
Интернет желісі арқылы әрі қарай жіберуге арналған суреттерді нақты уақыт режимінде түсіруге қабілетті сандық бейне немесе фотокамера
ВЕБ ДИЗАЙНҒА ҚОЙЫЛАТЫН ТАЛАПТАР
Scorm пакеті мысалы
Бейне карта - компьютер жадында сақталған кескінді мониторға арналған бейне сигналға түрлендіретін құрылғы
Компьютерлік графика негіздері
Пәндер



Реферат Курстық жұмыс Диплом Материал Диссертация Практика Презентация Сабақ жоспары Мақал-мәтелдер 1‑10 бет 11‑20 бет 21‑30 бет 31‑60 бет 61+ бет Негізгі Бет саны Қосымша Іздеу Ештеңе табылмады :( Соңғы қаралған жұмыстар Қаралған жұмыстар табылмады Тапсырыс Антиплагиат Қаралған жұмыстар kz