3D-s számítógépes geometria és alakzatrekonstrukció

Hasonló dokumentumok
3D-s számítógépes geometria és alakzatrekonstrukció

3D-s számítógépes geometria és alakzatrekonstrukció

Elemi alkalmazások fejlesztése III.

3D-s számítógépes geometria és alakzatrekonstrukció

4. gyakorlat: interpolációs és approximációs görbék implementációja

Elemi alkalmazások fejlesztése III.

Grafikus Qt programok írása segédeszközök nélkül

Elemi alkalmazások fejlesztése III

Alkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás Bevezetés I.

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Elemi alkalmazások fejlesztése III. A Qt assistant elindítása. Ajánlott ir odalom. A Qt assistant nyitó ablaka

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

3D számítógépes geometria és alakzatrekonstrukció

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

A jobboldalon a pnlright egy Stacked Widget Állítsuk be az első lapot és nevezzük el pnldraw-ra:

if(_param.antialias) painter.setrenderhint(qpainter::antialiasing, true);

3D-s számítógépes geometria és alakzatrekonstrukció

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

Elemi alkalmazások fejlesztése III.

Qt rajzolás munkafüzet. Elemi Alkalmazások fejlesztése 3.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Érintőképernyős terminálok NB sorozat

Budapest, március. ELTE Informatikai Kar

Bevezetés a programozásba Előadás: Fordítási egység

Grafikus csővezeték és az OpenGL függvénykönyvtár

Grafikus felhasználói felület (GUI) létrehozása A GUI jelentése Egy egyszerű GUI mintaalkalmazás létrehozása

3. Osztályok II. Programozás II

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

OOP és UML Áttekintés

ARM Cortex magú mikrovezérlők

Mobil Telefonon Keresztüli Felügyelet Felhasználói Kézikönyv

Operációs rendszerek. Tanmenet

A LOGSYS GUI. Fehér Béla Raikovich Tamás, Laczkó Péter BME MIT FPGA laboratórium

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás

VBA makrók aláírása Office 2007 esetén

Programozási nyelvek JAVA EA+GY 1. gyakolat

3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás

Tervezőeszközök, fejlesztőeszközök használata Qt alapú alkalmazásoknál. Saját vezérlő használata tervezőben (worldclocks)

A szerzõrõl... xi Bevezetés... xiii

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

1. Bevezetés A C++ nem objektumorientált újdonságai 3

Elemi alkalmazások fejlesztése III

3D számítógépes geometria és alakzatrekonstrukció

Grafikus Felhasználói Felületű (GUI) program készítése a QT Creatorral, illetve a Microsoft Visual Studio-val

Bevezetés a programozásba előadás: Öröklődés

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Java programozási nyelv 6. rész Java a gyakorlatban

Mobil Informatikai Rendszerek

Operációs rendszerek. Tanmenet

A grafika programozás módozatai A képernyő koordinátarendszere A graphics.h header-fájl fontosabb függvényei Mintaprogram

Nokia N9 - MeeGo Harmattan bemutatkozik

Elemi alkalmazások fejlesztése III.

Podoski Péter és Zabb László

WordPress segédlet. Bevezető. Letöltés. Telepítés

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása

Molnár Mátyás. Bevezetés a PowerPoint 2010 használatába. Csak a lényeg érthetően!

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

QGIS tanfolyam (ver.2.0)

3D Számítógépes Geometria II.

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

ECDL képzés tematika. Operáció rendszer ECDL tanfolyam

15.4.2b Laborgyakorlat: Mappa és nyomtató megosztása, a megosztási jogok beállítása

Elemi alkalmazások fejlesztése III.

ReszlAd fájl, kitöltési útmutató:

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

OpenOffice.org irodai programcsomag

Eseményvezérelt alkalmazások

ivms-4200 kliensszoftver

3D Számítógépes Geometria II.

C++ programozási nyelv

Modell megvalósítása. Gregorics Tibor: Eseményvezérelt alkalmazások fejlesztése I.

TERC V.I.P. hardverkulcs regisztráció

Elemi alkalmazások fejlesztése I.

Az operációs rendszer fogalma

Mobil informatika gyakorlat. 2. óra: NFC a gyakorlatban

RIEL Elektronikai Kft v1.0

C programozási nyelv

A Paint program használata

FELHASZNÁLÓI FELÜLET FEJLESZTÉSE AZ EPICS RENDSZERHEZ. Kósa Márk 1, Pánovics János 1, Heinrich du Toit 2 Nyakóné Juhász Katalin 1, John Pilcher 2

Bevezető. Mi is az a GeoGebra? Tények

Útmutató az OKM 2007 FIT-jelentés telepítéséhez

Pénzügyi algoritmusok

Java felhasználói felület

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozas 1. Strukturak, mutatok

Alternatív processz állapot és statisztika lekérdezési módszer a Linux kernelben

Tartalomjegyzék. 2.3 A GTK+ telepítése Tennivalók Windows alatt... 21

Samsung Universal Print Driver Felhasználói útmutató

Alkalmazások fejlesztése III. Qt 4 /C++ alapú MDI alkalmazás: Számlakészítő program 1/3

BME MOGI Gépészeti informatika 15.

SZE, Doktori Iskola. Számítógépes grafikai algoritmusok. Összeállította: Dr. Gáspár Csaba. Felületmegjelenítés

QLabel *label = new Qlabel("Hello Qt!",0);

Átírás:

3D-s számítógépes geometria és alakzatrekonstrukció Tesztkörnyezet I http://cg.iit.bme.hu/portal/node/312 https://portal.vik.bme.hu/kepzes/targyak/viiima01 Dr. Várady Tamás, Dr. Salvi Péter BME, Villamosmérnöki és Informatikai Kar Irányítástechnika és Informatika Tanszék

Tartalom Bevezetés Qt alapismeretek Minimális program felépítése QMainWindow (menük, status bar stb.) QProgressBar libqglviewer/opengl Alapvető OpenGL rajzolás OpenGL ablak beillesztése

Áttekintés Cél: tesztkörnyezet felépítése Segítség az önálló feladatokhoz Sokrétű ismeret szükséges: C++ OpenGL Qt / libqglviewer OpenMesh Kevés elmélet, sok gyakorlat Házifeladat

A tesztkörnyezet Alapvető felhasználói eszközök Ablak- és menühasználat, progress bar stb. 3D tér forgatása, kameraállapot/kép mentése, háromszöghálós és kitöltött megjelenítés Pontok mozgatása a térben Alapvető programozói eszközök Pontok, vektorok, háromszöghálók kezelése Pontok, szakaszok és sokszögek megjelenítése Színezés, textúrázás Néhány algoritmus (pl. görbületszámítás, simítás, Bézier felület kiértékelés)

Demó Forráskód: [Mercurial repo] https://bitbucket.org/salvipeter/sample-framework/ Órai feldolgozás több fázisban Platform-független Tesztelve: Linux, Windows (régen) Linux virtuális gépen ajánlott BME Cloud: http://cloud.bme.hu/ Probléma esetén: salvi@iit.bme.hu Bugok, javítási javaslatok ugyanide

Első fázis Mit tud? Menük, status bar Négyzet kirajzolása Forgatás, nagyítás, mozgatás Help, teljes képernyő, kamera/kép mentése 'p' megnyomására progress bar teszt Ehhez: Qt QGLViewer OpenGL

Qt Bevezető Honlap: http://www.qt.io/ Trolltech Nokia Digia Qt Company Nem kereskedelmi célra ingyenes Platform-független GUI Szuper dokumentáció (http://doc.qt.io/) Saját IDE: Qt Creator De összekapcsolható a Visual Studióval is Tud Makefile-t generálni [qmake] Online help, tutorialok, demók GUI szerkesztő

Saját STL könyvtár Qt és C++ std::string QString Saját konténerek (QList, QVector, QMap stb.) Smart pointerek (weak/strong) QObject ősosztály Signal-Slot kommunikáció [ld. később] Automatikus fába rendeződés (parent-child) A szülők halálukkor megölik a gyerekeiket tr("...") a szövegek fordításához Ehhez: Q_OBJECT makró (előfeldolgozás: moc) Project fájl (.pro)

Project fájl Benne: Beállítások (pl. Release/Debug) Forrásfájlok nevei Könyvtárak neve, elérési útja Resource-ok Programozható (!) Ebből készülhet: Visual Studio projekt fájl (.vcproj) Makefile moc lefut a megfelelő fájlokra

Osztályok: Qt elnevezési séma QSomeClass ( #include <QSomeClass> ) Konstansok: QSomeClass::EnumType ValueOne, ValueTwo; Qt::EnumType Qt::ValueOne, Qt::ValueTwo; Metódusok: QSomeClass::someMethod(...) Tulajdonságok: QSomeClass::someProperty() QSomeClass::setSomeProperty(...)

A Signal-Slot kommunikáció (1) Események (event): Minden GUI mozgató rugója Felhasználói események (egér mozgatása, klikkelés, gépelés, gomb megnyomása stb.) Független események (időzítés, egy widget állapotának megváltozása stb.) Cél: Reagálás az eseményre Reakció lehet független widgetben Hagyományos megoldás: Callback függvény (paraméterátadás problémás, nem type-safe)

A Signal-Slot kommunikáció (2) Signal: Valamilyen eseményt jelez Osztály deklarálásánál signals: Jelzés az emit paranccsal Paraméterezhető Slot: Osztály deklarálásánál slots: Összekapcsoláshoz connect makró Paramétertípusoknak egyezni kell Mindkét oldalon lehet többszörös (egy signalhoz több slot, egy slothoz több signal)

Fő ablak osztály Programozás Qt-val Egy Qt osztályból származtatva Q_OBJECT Kibővítve (új signalok, slotok) Testreszabva (virtuális metódusok újraírása) Főprogram QApplication meghívása Ez felelős a GUI vezérléséért Projekt fájl készítés Fordítás

A program main.cpp: MyWindow.h:

MyWindow.cpp

Progress Bar hozzáadása A program eddig: Progress Bar kezelés: Csak a folyamat alatt jelenik meg Három slot: start, mid, end Nem kell mindegyiket használni (pl. gomb megnyomása / számolás vége) Időt kell szakítani a grafika frissítésére (QApplication::processEvents(...))

MyWindow.h: Változások

MyWindow.cpp: Változások

libqglviewer Honlap: http://www.libqglviewer.com/ Kiegészítő könyvtár Qt-hez OpenGL ablakkezelés Qt környezetben Vektor osztály (egyben pont osztály is) Kamera osztály (mátrixtranszformációk) Sok hasznos funkció Kameramozgatás 3D kiválasztás Teljes képernyőre váltás Stb. (ld. Help)

Származtatás a QGLViewerből MyViewer.h:

void init(): Virtuális függvények OpenGL beállítások inicializáláskor, pl.: gllightmodeli(gl_light_model_two_side, 1); [mindkét oldal legyen megvilágítva] void draw(): OpenGL kirajzolás void keypressevent(qkeyevent *): Eseménykezelő billentyű leütésekor QString helpstring() const: A helpben megjelenítendő szöveg

OpenGL rajzolás Nézet (camera) kezelése libqglviewer Alapból [-1,1]x[-1,1] XY síkra néz Általános struktúra: glbegin(objektum_típus); glvertex3f(float, float, float);... glend(); GL_POINTS, GL_LINES, GL_POLYGON stb....[234][sifd]v? 2/3/4: dimenzió (4: homogén koordináták) s/i/f/d: short, int, float, double v: vektor, pl. 2fv float[2]-t adunk át

MyViewer.cpp

Az OpenGL ablak beillesztése MyWindow.h: MyWindow.cpp: