Интеграција графичких информација Анес Топчић 836/2014 Факултет техничких наука, Чачак Рачунарско инжењерство, 2014/2015 anes.topcic91@gmail.com Ментор рада: проф. др Синиша Ранђић Апстракт Циљ овог рада је решавање проблематике начина интеграције независних графичких информација у јединствени приказ на монитору рачунара тј. омогућавање суперпонирања графичких садржаја статичког који се приказује на монитору рачунара, а затим пројектује помоћу видео пројектора и динамичког графичког приказа који се жели додати на пројектовану слику. Кључне речи суперпонирање, транспарентност, интеракција, интерактивна рачунарска графика 1 УВОД Интеракција човека и рачунара бави се разумевањем, обликовањем, вредновањем и имплементацијом интерактивних рачунарских система намењених човековој употреби, а све због обезбеђивања употребљивих и функционалних рачунарских система. У савременој настави се сусрећемо са мноштвом различитих мултимедијалних садржаја који доприносе квалитету наставе, повећању мотивације, бољој реализацији предмета и бољем индивидуалном напредовању појединаца у складу са њиховим интелектуалним способностима. Уз употребу информационо-комуникационих технологија, посебно алата и технологија у настави, учесници могу своја већ стечена знања проширити и конкретно применити, јер савремени приступи у настави имају за циљ да се стечено теоријско знање примени у пракси. Интерактивни садржаји у настави су посебан вид наставе помоћу рачунара који су примењиви у свим дисциплинама а посебно у природним и техничким научним областима у којима постоји реална потреба за визуализацијом процеса. У оквиру овог рада биће приказан систем који омогућава кориснику да уз помоћ једноставног уређаја симулира контолу миша и тастатуре рачунара. Функција система је да корисник природним потезима руке систем користи за цртање по транспарентној позадини преко било ког садржаја који се приказује на екрану, чиме се истиче или допуњује приказани садржај па се самим тим добија на интеракцији. 2 ГРАФИЧКЕ ИНФОРМАЦИЈЕ Развој рачунарске технике омогућио је рад са новим врстама информација. У том погледу посебан значај имају графичке информације. Њихова специфичност захтевала је развој посебних софтверских апликација намењених за њихову обраду. 2.1 Подела графичких апликација Подела графичких апликација се може извршити на основу следећих критеријума: Опис модел слике, Број димензија слике, Променљивост модела, Врсте реалистичних слика и учешће боја у њиховом приказивању, Тип интеракције, Степен постизања коначаног изгледа слике -слика представља финални производ. Применом критеријума модела слике графичке апликације делимо на: Векторску графику и Растерску графику Код векторске графике слика се у апликацији описује карактеристичним тачкама објеката. С друге стране код растерске графике, слика се описује ћелијама (пикселима) матрице (растер) [2].
2.2 Концепт интерактивне рачунарске графике Концепт интерактивне рачунарске графике подразумева два дела: хардверски и програмски (софтверски) део концепта. Хардверски део концепта интерактивне рачунарске графике може се описати на следећи начин: Рачунар прима улазне информације од интерактивних улазних уређаја и преноси слике уређају за приказ [5]. Сваки интерактивни графички софтвер може се приказати као општи концепт. На слици 1. приказан је општи модел интерактивне графике. Слика 1. Општи модел интерактивне графике Упрошћен графички систем приказан у општом моделу интерактивне графике, садржи три компонете [5]: апликативни модел (представља податке или објекте који се приказују на екрану); апликативни програм (прима и обрађује информације од апликативног модела и корисника, генерише скуп графичких излазних наредби које садрже детаљан геометријски опис онога што треба приказати као и начине приказивања појединих објекта; графички систем (производи слику на основу детаљног описа у облику графичких наредби, које генерише апликативни програм, и преноси улазну информацију од корисника апликативном програму на обраду. ) 2.2.1 Апликативни модел Апликативни модел репрезентује објекте који се приказују на екрану, садржи податке о објектима, њихове функције и релације. Обухвата описе објеката релевантне за [5]: приказ (геометрију објекта, боју) интеракцију (стање селекције или стање промене) неграфичке модуле (функцију објекта која се рачуна у симулацији) Модел смешта [5]: примитиве (тачке, линије, полигони) које дефинишу облик компонената објекта атрибуте примитива као што су стил линије, боја или текстура површине релације конективности које описују како се компоненте међусобно односе Апликативни модел може да садржи геометријске или негеметријске податке (текстуални и нумерички подаци). Подаци у овом моделу могу бити организовани као [5]: једноставан низ података о координатама тачка, повезане листе које представљају умрежене структуре података или као релационе базе података. Слика 2. Елементи апликативног система
2.2.2 Апликативни програм Апликативни програм креира апликативни модел као резултат претходног рачунања (инжењерске или научне симулације) и кроз интерактивну сесију. Корисник води процес конструкције корак по корак [5]: бира компоненте из неке палете одређује вредности геометријских и негеометријских својстава одређује релације (геометријске и друге) између компонената тражи да се прикаже изглед модела који је креирао до тог тренутка Апликативни програм конвертује опис дела модела који треба приказати из интерне репрезентације геометрије (било да је она експлицитно смештена у модел или изведена) у процедуралне позиве или команде које графички систем користи да креира слику) [5]. Слика 3. Елементи апликативног програма Апликативни програм претвара опис дела модела који треба приказати у позиве процедура или наредби графичког система који се користи за стварање сликовног приказа и то у два корака: 1. претраживање апликативне базе података која чува модел да би се издвојили делови модела који ће бити приказани, користећи критеријуме избора 2. претварање податке у формат који може бити послат графичком систему 2.2.3 Графички систем Графички систем је међуслој између апликативног програма и хардвера приказивача. Основни задатак пројектанта интерактивног графичког апликативног програма је спецификација података и објеката које треба графички приказати као и начина одвијања интеракције између корисника и апликативног програма с циљем креирања и модификације модела и његове визуалне интерпретације. Остали задаци које графички систем обавља су [5]: излазна трансформација (трансформише објекат из апликативног модела у сликовни приказ модела); улазна трансформација (трансформише корисничке акције у улазну информацију апликативног програма који ће узроковати да апликација направи промене у моделу и/или на слици). Слика 3. Елементи графичког система Графички систем се обично састоји од скупа потпрограма (функција) који одговарају различитим примитивама, атрибутима и другим елементима. Функције се налазе у библиотеци графичких потпрограма или пакету класа које се могу користити из виших програмских језика као што су Pascal, C/C++, Јava, C# или LISP [1].
2.3 Управљање интеракцијом Типична апликативна програмска шема за управљање интеракцијом назива се петља за чекање догађаја (event driven loop). Петља представља секвенцијални аутомат са коначним бројем стања са средишњим стањем чекања. Прелази у друга стања узроковани су корисничким улазним догађајима. Овај модел интеракције ограничен је на секвенцијални дијалог између корисника и система (ping pong модел наизменичних корисничких упита и одговора рачунара). Сложенији концепти интеракције укључују више паралелних комуникација [5]. Петља за чекање догађаја може се окарактерисати следећим псеудокодом [5]: Generisanje početnog ekrana, izvedenog iz aplikativnog modela while (!quit){ omogućavanje izbora komandi; čekanje na izbor korisnika; switch (izbor) { obrada izbora da se kompletira komanda ili obrada kompletirane komande uz ažuriranje modela i/ili prikaza } 2.4 Технологија графичког излаза Технологија излаза битно утиче на архитектуру графичких система. На основу тога разликујемо две основне групе графичких система или дисплеја: векторски графички системи, растерски графички системи. 2.4.1 Векторски графички системи Векторски графички системи настали су средином 60-их година и у употреби били су до средине 80-их година. Појам вектор овде означава црту. Црта која повезује две (произвољно) одабране тачке на екрану основни је елемент уређаја за приказ (графичког приказа). Путања електронског млаза одређена је групом наредби из приказивачке листе или приказивачког програма и повезује крајње тачке појединих црта [2]. Типичан векторски систем се састоји од: дисплеј-процесора повезаног као У/И јединица на централну процесну јединицу (CPU) интрепретира графичке наредбе и прослеђује координате тачака дисплеј бафер меморији, дисплеј бафер меморија (садржи дисплеј листу или графички програм), дисплеј контролор (претвара дигиталне координате у аналогне вредности напона за катодни систем) приказивачки уређај. Векторски графички системи немају могућност приказа испуњених површина, манипулацију битовима и таблицама, али могу остварити веће резолуције од растерских система и приказивати глатке косе црте [2]. 2.4.2 Растерски графички системи Растерски уређаји за приказ чувају примитивне облике (као што су црте, алфанумерички знакови, испуњене површине) у меморији у облику њихових основних саставних визуелних елемената - пиксела. Цела слика приказује се на растеру који представља низ паралелних хоризонталних редова, (или матрицу основних визуелних елемената) који прекривају читаву површину екрана. При креирању приказа млаз пролази преко свих пиксела увек истим редоследом по свим хоризонталним редовима пиксела са лева на десно од горњег до доњег хоризонталног реда пиксела [2]. Предности растерске графике су [2]: Једноставна скенирајућа логика. Једноставније и јефтиније је имплементирати регуларно растерско скенирање које увек истом путањом прелази све активне тачке екрана, него веома прецизног система који мора да обезбеди линеарност и поновљивост отклона млаза. Могућност приказа површина испуњених бојом или текстуром (важан за реалистичне слике 3D објеката). Независност поступка освежавања од сложености слике (број полигона). Већина људи не примећује треперење слике на растерским екранима са фрекфенцијом већом од 70 Hz, док векторски приказивачи почињу да трепере када број примитива у баферу постане превелик. Недостаци растерске графике су [2]: Рачунска сложеност у процесу растеризације (scan конверзија). Примитиве као што су линије и полигони морају да се конвертују у пикселе који представљају примитиве у баферу слике.
Такође се трансформишу и крајње тачке примитива, тако да уколико је CPU одговоран и за ту трансформацију, онда се само мали број примитива може трансформисати у реалном времену. Апроксимативна природа приказа глатких линија. Због тог својства растерски систем може проузроковати познати проблем назупчености или степеничастости приликом приказа косе или искривљене линије. 3 ПРОЈЕКТНИ ЗАДАТАК И ИДЕЈНО РЕШЕЊЕ Савремена мултимедијална наставна средства у данашње време налазе велику примену у настави и учењу. Начин извођења наставе временом је мењан и прилагођаван савременом концепту стицања знања и развијања способности код ученика, при чему је велику улогу имала примена информационих технологија праћена технолошким развојем и иновацијама. За представљање лекција рачунари и пројектори са платном на коме се приказује наставни садржај користе се у школама већ годинама а од недавно је присутна и електронска интерактивна табла. Услед немогућности шире примене интерактивних табли у настави првенствено због њихове високе цене, ми смо дошли на идеју да направимо јединствен систем који ће по функционалности бити исти као интерактивна табла али исто тако јефтинија и мобилнија алтернатива за њих. Уређај треба да се понаша као оловка да би корисник природним потезима руке, као када пише обичном оловком по папиру, могао да дефинише шта ће бити доцртано или допуњено чиме се олакшава презентовање, или допуњавање било каквог садржаја који се приказује на екрану, а да садржај презентације гледаоцима постаје разумљивији и занимљивији захваљујући додатку интерактивности. 3.1 Могућа решења За решење пројектног задатка потребно је направити уређај који ће бежичним путем да комуницира и шаље податке рачунару као и да региструје покрете које начини корисник, а на рачунару се уз помоћ одговарајућег програма региструју покрети и исцртавају на транспарентној позадини преко саржаја који је тренутно приказан на рачунару. Ово је могуће уз одговарајућу софтверску подршку која омогућава повезивање уређаја и рачунара као и цртање, писање, истицање по било ком садржају који се приказује путем рачунара. Програм се састоји из три дела, први део успоставља везу и комуницира са уређајем и служи да прима податке, други део контролише рад уређаја тј. прати покрете, а трећи део је програм за цртање који се учитава као позадински процес. 3.2 Идејно решење Наш основни циљ је био да направимо програм који може да се учита у позадини било ког садржаја који се приказује путем рачунара и да нам омогући цртање, писање или допуњавање истог. Да би смо постигли такво суперпонирање графичких садржаја - статичког (приказ на монитору) и динамичког (приказ који се додаје) морали смо да омогућимо да се наш програм транспарентно учитава као позадински процес на рачунару чиме смо добили површину за цртање или писање било чега, било где и на било ком садржају који се приказује на рачунару. Програм функционише тако што се при његовом покретању он учитава транспарентно у позадини и након тога приступамо повезивању програма и оловке преко бежичне везе. Учитани транспарентни прозор омогућава слободно исцртавање преко њега а затим врши се преклапање транспарентног прозора са садржајем на коме се врши исцртавање након чега се може видети резултат исцртавања. 4 ПРИКАЗ ПРАКТИЧНОГ РЕШЕЊА Комплетан софтвер који омогућава покретање транспарентног прозора за цртање, управљање радом миша рачунара као и пренос података и повезивање уређаја са рачунаром реализован је у програмском језику JAVA. Целокупан софтвер се састоји од шест главних класа, док се део софтвера који користимо за цртање састоји од четири класе као што је приказано на дијаграму на слици 4. Слика 4. Дијаграм класа програма за цртање
Paint.java је класа која служи за реализацију програма за цртање и састоји се од четири класе од којих три класе MouseHandler, SimplePaintPanel, CurveData наслеђују главну класу Paint. Након успешног повезивања уређаја и рачунара позива се програм за цртање. Главна класа Paint садржи методу Paint() која се прва извршава приликом покретања програма након чега се креира прозор са оквиром који ће бити транспарентан и на њему ће бити омогућено цртање. Да би смо постигли да наш прозор буде транспарентан постављамо позадину прозора да буде бела (new Color(255,255,255,1)) где прве три вредности означавају RGB вредност беле боје а четврта вредност је транспарентност прозора коју смо поставили на један да би прозор био што провиднији и неприметан. MAXIMIZED_BOTH ово стање указује да је прозор максимално развучен по хоризонталној и по вертикалној оси тј. да се прозор учитава преко целог екрана. Подкласа CurveData је задужена за податке о линијама које се користе за цртање. У њој је дефинисана метода Color color; у коју се складишти податак о боји линија које се исцртавају, док метода ArrayList<Point> points; креира низ тачака у који се смештају подаци о тачкама на основу којих је реализовано исцртавање линија. Подкласа SimplePaintPanel се састоји од три методе. ArrayList<CurveData> curves; садржи податке о тачкама које се исцртавају, а на основу којих се формира линија, и дефинише низ у коме ће бити смештене линије које се цртају у програму и на основу ове методе ћемо касније да дефинишемо начин брисања исцртаних линија тј. пражњење низа. Color currentcolor; ову методу ћемо употребити да дефинишемо боју линија. Такође дефинише се ослушкивач (listener) који прати све догађаје који су везани за миша (кретање миша или клик одређеним тастером миша) у подкласи MouseHandler. Подкласа MouseHandler имплементира MouseListener и MouseMotionListener који су креирани у претходној SimplePaintPanel методи и служе за праћење догађаја везано за кретање миша и притискање/отпуштање тастера миша. У овој подкласи прво се дефинише променљива dragging koja je по типу boolean која може бити true или false што је врло важно јер ћемо ову променљиву употребити за контролу тастера и кретање миша. Након тога дефинише се метода mousepressed(mouseevent evt) која нам служи да одредимо догађаје који ће се извршавати када је притиснут одређени тастер миша. Метода MouseDragged(MouseEvent evt) врши проверу кретања миша и уколико се миш не креће ова метода се не извршава а уколико је кретање миша присутно ова метода ће се извршити. Потребно је дефинисати још графички део тј. методу у којој дефинишемо да ће линија да буде оне боје коју смо претходно одредили, дебљина линије и тд. У оквиру ове петље потребно је дефинисати вредност почетне тачке од које креће цртање линије и вредност крајње тачке када престаје цртање линије за X и Y осу. 5 ЗАКЉУЧАК Предмет овог рада је био развој софтверске подршке чији је циљ да омогући суперпонирање графичких садржаја тј. да се развије програм који може да се учита на рачунару као позадински процес и да буде транспарентан чиме добијамо површину за цртање или допуњавање било ког садржаја који се приказује путем рачунара. Програм је реализован тако да након повезивања уређаја за цртање и рачунара отвара се транспарентни прозор који се преклапа (merge-ује) са садржајем који је приказан на рачунару и спреман је за рад. Додате су му неке основне функције као што су undo која брише само последњу нацртану линију и clear која брише целокупан исцртани садржај. 6 ЛИТЕРАТУРА [1] H. Henderson, Encyclopedia of Computer Science and Technology, November 2008 [2] James D. Foley, Andries van Dam, Steven K. Feiner, John F. Hughes: "Computer Graphics: Principles and Practice", 2 nd edition in C, Addison-Wesley, 1996. [3] Gary R. Bertoline, Eric N. Wiebe, Craig L. Miller, Leonard O. Nasman: "Technical Graphics Communication", Irwin, USA 1995. [4] Hughes, van Dam, McGuire, Sklar, Foley, Feiner, Akeley: Computer Graphics: Principles and Practice; 3rd edition, Addison-Wesley, 2013. [5] E. Angel: "Interactive Computer Graphics", 5th Edition, Addison-Wesley, 2009