Arhitectura unui motor [611217]

Arhitectura unui motor
grafic 3D modern
Coordonator științific:
Sl. Dr. Ing. Victor Asavei

CUPRINSUL PREZENTARII
1.Scopul proiectului
•Proiectul anterior (MorcoEngine3D)
•Viziunea asupra proiectului
•Obiectivele principale
2.Aspecte arhitecturale
•C++ / OOP / Project management
•Sisteme vs algoritmi
•API vs Non -API
•Modularizare si interconectare
•Template de obiect
•Workflow si UX3.Motorul grafic modern
•Idee vs prototip vs produs
•User feedback
•Arhitectura evolutiva
4.Rezultate si concluzii
•Rezultate
•Probleme / limitari
•Concluzii

1.
SCOPUL
PROIECTULUI
1. Proiectul anterior (MorcoEngine3D)
2. Viziunea asupra proiectului
3. Obiectivele principale

PROIECTUL
ANTERIOR
•este un alt motor grafic, MorcoEngine3D
•avea ca scop integrarea a cat mai multe
elemente grafice
•a fost ok, cel putin la suprafata
•arhitectura interna cam haotica

VIZIUNEA ASUPRA
PROIECTULUI
•a pornit de la dorinta de a reface proiectul
anterior
•a presupus analiza si regandirea arhitecturii
•a pornit cu un scop practic, restrans si focusat
•s-a transformat intr -o privire de ansamblu
•asupra arhitecturii generale
•a intregului process de dezvoltare si utilizare
•a relatiei scop -produs -feedback
•s-a finalizat printr -o serie de concluzii generale
referitoare la ce inseamna dezvoltarea unui
motor grafic modern

OBIECTIVELE
PRINCIPALE
•refacerea completa a modulelor principale
motorului grafic
•crearea unei arhitecturi mai flexibile, mai usor
de inteles si dezvoltat
•adaugarea de elemente noi
•analiza si crearea worlkflow -ului d.p.d.v. al
experientei utilizatorului
•evaluarea rezultatului din punct de vedere al
standardelor pietei si tehnologiei curente
•analiza dezvoltarii unui motor grafic modern

2.
ASPECTE
ARHITECTURALE
1. C++ / OOP / Project management
2. Sisteme vs algoritmi
3. API vs Non -API
4. Modularizare si interconectare
5. Template de obiect
6. Workflow si UX

C++
OOP
PROJECT MANAGEMENT
•C++ pros:
•performanta
•cross -platform
•macros
•separarea clara interfata -implementare
•C++ cons:
•destul de rigid
•ingreuneaza privirea de ansamblu
•object -oriented este absolut necesar
•gruparea codului / fisierelor pe modul /
functionalitate este de preferat

SISTEME VS ALGORITMI
VS

API VS NON -API
•partea centrala a motorului grafic a fost
gandita sa functioneze ca o librarie
•util in structurarea proiectului
•irelevant in cadrul unui motor grafic modern
•separarea interfata -implementare este critica
•exemple:
•bridge pattern
•scripting
•event -based system

MODULARIZARE,
INTERCONECTARE
•este nevoie de delimitarea entitatilor in functie
de scopul lor pentru proiecte complexe
•de preferat fara dependinte intre ele
•am incercat si am esuat –pare imposibil
•event -based system ajuta, dar nu elimina
complet problema (modulul de eventuri devine
o dependinta)
•apare un trade -off intre modularizarea si
performanta motorului grafic
•elementele comune trebuiesc alese atent

TEMPLATE DE OBIECT
•un exemplu de multi -functionalitate
•folosit atat extern (de utilizator) cat si intern
(pentru sistemul de gizmo)
•prototype pattern
•o alternativa la derivarea de clasa
•elemente de baza solide duc la o arhitectura
flexibila

WORKFLOW,
USER EXPERIENCE
•trebuie redus numarul momentelor in care
utilizatorul este confuz legat de pasul urmator
•solutii:
•o interfata clara
•o interfata customizabila
•separarea API -ului pe nivele de complexitate
•tool-uri aditionale
•ghiduri, tutoriale, documentatie
•workflow -ul variaza in functie de utilizator
•workflow flexibil + best practices

3.
MOTORUL GRAFIC
MODERN
1.Idee vs prototip vs produs
2.User feedback
3.Arhitectura evolutiva

IDEE
PROTOTIP
PRODUS
•un motor grafic nou:
1.ar trebui sa adreseze o problema clara
nerezolvata de alte produse (Unity, Unreal)
2.nu ar fi suficient sa fie doar un tool, ci un intreg
mod de rezolvare a problemei identificate
3.ar fi complex, capabil sa faca multe lucruri
4.ar integra o varietate de elemente externe
5.ar fi creat in colaborare cu o comunitate de
utilizatori si dezvoltarori
6.ar fi in competitie cu alte motoare grafice pe
piata, dar nu chiar
7.ar atrage o comunitate noua

USER FEEDBACK
•este critic si indispensabil
•ar trebui sa fie:
•masiv
•constant
•variat
•ar trebui sa vina de la:
•artisti
•dezvoltatori
•oameni de business
•ar fi parte a procesului de dezvoltare

ARHITECTURA
EVOLUTIVA
•aspecte ale dezvoltarii unei noi arhitecturi:
•perspectiva initiala (planul)
•feedback -ul asupra produsului
•limitarile intampinate
•noile tehnologii
•exemple si solutii externe
•crearea unei arhitecturi evolutive ar fi o
necesitate pentru un motor grafic modern
•elementele si sistemele de baza sunt critice, dar
si ele vor trebui sa evolueze
•eficienta motorului grafic ar fi determinata de
flexibilitatea sa interna

4.
REZULTATE SI
CONCLUZII
•Rezultate
•Probleme / limitari
•Concluzii

REZULTATE
•o perspectiva diferita fata de cea de la inceput
•un prototip de motor grafic
•un exemplu de arhitectura si elemente
arhitecturale reutilizabile

PROBLEME,
LIMITARI
•lipsa un scop bine definit d.p.d.v. al produsului
•performanta necesara unui motor grafic duce
la scaderea flexibilitatii acestuia
•crearea modulelor si interconectarea lor
necesita o analiza detaliata atat al structurii lor
cat si al scopului
•interfata unui modul se modifica in functie de
noi module sau functionalitati
•crearea unui editor pentru motorului grafic
poate deveni mai complicata decat acesta

CONCLUZII
•sunt mult mai multe elemente care
influenteaza arhitectura unui motor grafic
decat modul de implementare
•dezvoltarea unei arhitecturi flexibile si eficiente
necesita timp, o analiza atenta si mult feedback
•atingerea pragului de “modern” pentru un
motor grafic presupune mult mai mult decat o
fereastra de randare si un API

Multumesc .

Similar Posts