Computer graphics/2014-2015/Laborator 1

From Wikiversity
Jump to navigation Jump to search

Linkuri Rapide: Prima Pagină; Laboratoare agenda, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, JOGL template.


Sumar Agendă Laboratoare[edit]

Vă rog să consultați Grafica -- 2014-2015 -- info.uvt.ro/Agenda Laboratoare.

Criterii de Evaluare[edit]

Vă rog să consultați Grafica_si_Interfete - 2014-2015 - info.uvt.ro.

Unelte, Framework-uri și Librării[edit]

Please consult Computer graphics -- 2013-2014 -- info.uvt.ro/Laboratory tools.

Introducere Grafica și Interfețe Utilizator[edit]

Grafica Informatică[edit]

Grafica Informatică - Computer graphics definiții :

  • Este un subdomeniu a Informaticii care studiază metode de sinteză digitală și manipulare a continuturilor vizuale. Deși este deseori confundată cu studiul exclusiv a imaginilor 3D grafica în informatică se referă și la imagini 2D cât și procesarea imaginilor wikipedia:Computer graphics.
  • Este representarea și manipularea de date visuale cu ajutorul unui calculator [1]
  • Este un set de tehnologii care sunt folosite pentru a crea artă digitală folosind un calculator [2]

Studiază :

  • manipularea a informațiilor vizuale și geometrice folosind metode computationale
  • algoritmi ce reproduc sau creează imagini photo-realistice

Grafica are un set sub -diviziuni:

  • Geometry/Geometrie -- studiază metode de a reprezenta și procesa suprafețe (studies methods to represent and process surfaces)
  • Animation/Animație -- studiază metode de reprezentare și manipularea mișcarilor (studies methods to represent and manipulate motion)
  • Rendering -- reprezentarea imaginilor formate cu ajutorul unor modele folosind un program informatic (represents images staring from models by using computer programs)
  • Imaging -- studiază capturarea și editarea imaginilor (studies image acquisition and editing.)

Link-uri utile:

Grafica 2D / 3D[edit]

Grafica 2D
implică generarea unor imagini digitale (sau a secvențelor de imagini -- animații), cu ajutorul unor modele 2D (figuri geometrice, text, imagini digitale) și tehnici de manipulare a acestora (rotație, translatie, scalarea, transparență etc.)
Grafica 3D
(la fel ca si în cazul 2D) implica generarea unor imagini digitale (sau secvențe) cu ajutorul unor modele sau obiecte geometrice 3D


În mod normal acestea implică următorii pași:

  • Modeling/Modelare;
  • Defining/determining the scene layout/Layout-ul scenelor;
  • Rendering the scene (includes objects)/ Randarea scenelor (inclusiv objecte);

Outputul este asemănător, singura diferență este inputul -- imaginir (sau scener) 2D și 3D


Links-uri utile:

Imagini Digitale[edit]

O imagine digitală 
este reprezentarea unei imagini ca și o matrice 2D fiecare valoare dintr-o astfel de matrice este numit un --pixel -- fiecare pixel codifică culoarea dintr-un punctul al imaginii.

Link-uri utile:

Rezoluția Imaginii[edit]

Rezoluția unei imagini digital reperzintă cantitate de informație stocată în aceasta. Acesta se referă și la numărul de pixeli care compun imaginea;


Link-uri utile:

Color depth[edit]

Bits per pixel 
cantitatea de biți alocați pentru codificarea culorilor pentru un pixel.

Cazuri tipice:

Link-uri Utile:

Color spaces[edit]

Color space 
este o metodă matematică pentru a reprezenta o culoare ca și un set (tuple) de numere.

Link-uri Utile:

Extensii de Fișiere[edit]

Imaginile sunt stocate pe disk cu anumite extensii: BMP, PNG, TGA, JPEG, etc. Fiecare format stochează datele legate de imagini (color depth, color space, numere). Datele pot fi stocate cu sau fără compresie.

Link-uri utile:

Graphics Processing Unit (GPU)[edit]

Un tip de procesor special pentru randare grafică. GPU-ul poate fii situat pe placa de bază sau pe o placă dedicată. Acesta incorporează o serie de operații primitive care ajută la randare. Astfel, randarea se face mult mai eficient cu GPU decât cu CPU.

Link-uri utile:

Tehnologii[edit]

OpenGL[edit]

OpenGL -- Open Graphics Library;

  • a fost creată de Silicon Graphics în 1992;
  • cea mai recentă versiune este 4.5 din 11 august 2014;
  • este o specificație pentru cross-platform API (Application Programmable Interface);
  • descire un set de funcții, inputurile și outputurile acestora, cât și comportamentul acestora;
  • este folosit pentru 2D și 3D;

Caracteristici:

  • ascunde detalii hardware și interfața low level de accesarea a acesteia;
  • asigură unified programmable interface;
  • asigură descrierea scenelor într-un mod procedural, programatorul trebuie să descrie toți pașii necesari pentru a randa o scenă - astfel poate fii considerată o librărie low level;
    • este focusat doar pe randare nu și pe windowing, input mouse/tastatură sau netwroking;
      • există un set de librării care sunt destinate pentru a remedia acest lucru:
        • GLU (OpenGL Utility Library ) : rutine de desenare si randare high-level OpenGL
        • GLUT (OpenGL Utility Toolkit) : destinat I/O la nivel de sistem (window definition, window control, monitorizare inputurilor de la tastatura si mouse, etc.)
        • GLUI (OpenGL User Interface Library) : bazat pe GLUT destinat controlului elementelor de UI precum butoane, check-boxes, radio buttons;
        • SDL (Simple DirectMedia Layer) : o interfață simplă pentru diferite platforme de grafică, dunet și dispozitive de input; Acesta este platform independant
        • etc.

Link-uri Utile:

DirectX[edit]

DirectX:

  • creat de Microsoft în 1995
  • versiunea curentă este 11 (suport multi-thread, GPGPU, tesselation etc.)
  • poate fi rulat doar pe platofme Microsoft (WIndows și Xbox)
  • este o colecție de API-uri, fiecare focusat pe un task anume
  • folosit pentru dezvoltarea de jocuri video și programe CAD (Computer Aided Design)
  • nu are o specificație standard, este contra cost și cu sursă închisă (closed source)
  • este compusă din:
    • RT -- runtime -- folosit pentru rularea applicațiilor folosind DirectX
    • SDK -- software development kit -- necesar pentru crearea aplicațiilor folosind DirectX
  • descrierea scenelor este similară cu cea folosită în OpenGL -- immediate mode
  • inițial folosea o implementare scene graph -- retained mode;
  • Printre subAPI-uri amintim:
    • DirectDraw -- pentru grafică 2D;
    • Direct3D -- pentru grafică 3D;
    • XInput (DirectInput pentru versiunile < 10)-- folosit pentru input mouse și tastatură;
    • DirectPlay -- folosit pentru rețelistică (in versiunea 10 dplay.dll a fost înlocuit cu dplayx.dll);
    • XACT (DirectSound pentru versiunile < 10) și DirectMusic -- redare sunete/muzică;
    • DirectShow -- deprecated din 2005 dar încă există pentru compatibilitate

Link-uri Utile:

Java 2D / Java 3D[edit]

Java 2D / Java 3D:

  • Java 2D este un API pentru redarea obiectelor/scenelor 2D
  • Java 3D este un API pentru redarea obiectelor/scenelor 3D
  • Java 3D poate rula peste OpenGL sau DirectX
  • nu este doar un simplu wrapper folosind concepte OOP
  • Java 3D folosește atât graph paradigm cât și immediate mode

Link-uri Utile:

JOGL -- Java OpenGL[edit]

  • ultima veriune este 2.2.4 din 10 October 2014
  • este un wrapperis peste OpenGL , replicând toate funcțiile GL
  • de oare ce OpenGL nu are apeluri specifice interfețelor de utilizator acestea sunt realizate folosind librării specifice Java (AWT, SWING)
  • deleagă apelurile folosind JNI (Java Native Call)
  • din versiunea 1.1.0 încoace se regăsesc toate caracteristicile OpenGL
  • conversia codului din cod Java/JOGL în C este extrem de ușoară (păstrează nomenclatura OpenGL C API)


Link-uri Utile:

XNA[edit]

  • creat de Microsoft în 2004
  • ultima versiune este 4.0 din 2011
  • bazată pe .Net Framework;
  • ansamplu de unelte pentru dezvoltarea jocurilor
  • minimizează cod de tip boilerplate;
  • focus pe crearea de jocuri în loc de elemente low level;
  • se poate folosii din limbaje .Net (precum C#);

Link-uri Utile: