This shows you the differences between two versions of the page.
egc:laboratoare:bonusmodeleproprii [2022/10/11 17:06] bogdan.vasile2211 [Adăugarea de modele 2D] |
egc:laboratoare:bonusmodeleproprii [2023/01/03 00:07] (current) bogdan.vasile2211 [Arta în jocuri] |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Modele proprii în OpenGL ===== | ===== Modele proprii în OpenGL ===== | ||
+ | <note important> | ||
+ | **ATENȚIE!** | ||
+ | |||
+ | Folosirea modelelor proprii în aplicațiile de la teme **NU** poate înlocui geometria creată din cod! | ||
+ | |||
+ | Tehnica explicată aici poate fi folosită **DOAR** unde este specificat în mod special că este permisă această libertate! | ||
+ | </note> | ||
==== Arta în jocuri ==== | ==== Arta în jocuri ==== | ||
Line 10: | Line 17: | ||
{{ :egc:teme:bonus_modele_complexmesh.jpg?500 | }} | {{ :egc:teme:bonus_modele_complexmesh.jpg?500 | }} | ||
- | <note>**Câteva** dintre aceste aplicațiile care există și sunt folosite de profesioniști pentru dezvoltarea de jocuri: | + | <note>**Câteva** dintre aceste aplicații care există și sunt folosite de profesioniști pentru dezvoltarea de jocuri: |
* Modelare ([[https://www.blender.org/|Blender]], [[https://www.autodesk.com/products/maya/overview?term=1-YEAR&tab=subscription&plc=MAYA|Autodesk Maya]], [[https://www.autodesk.com/products/3ds-max/overview?term=1-YEAR&tab=subscription|Autodesk 3ds Max]]) | * Modelare ([[https://www.blender.org/|Blender]], [[https://www.autodesk.com/products/maya/overview?term=1-YEAR&tab=subscription&plc=MAYA|Autodesk Maya]], [[https://www.autodesk.com/products/3ds-max/overview?term=1-YEAR&tab=subscription|Autodesk 3ds Max]]) | ||
- | * Sculptare ([[https://pixologic.com/|ZBrush]]) | + | * Sculptare ([[https://pixologic.com/|ZBrush]], [[https://www.blender.org/|Blender]]) |
* Texturare ([[https://www.adobe.com/products/substance3d-painter.html|Adobe Substance 3D Painter]], [[https://www.adobe.com/ro/products/photoshop.html|Adobe Photoshop]]) | * Texturare ([[https://www.adobe.com/products/substance3d-painter.html|Adobe Substance 3D Painter]], [[https://www.adobe.com/ro/products/photoshop.html|Adobe Photoshop]]) | ||
* Animații ([[https://www.blender.org/|Blender]], [[https://www.autodesk.com/products/maya/overview?term=1-YEAR&tab=subscription&plc=MAYA|Autodesk Maya]]) | * Animații ([[https://www.blender.org/|Blender]], [[https://www.autodesk.com/products/maya/overview?term=1-YEAR&tab=subscription&plc=MAYA|Autodesk Maya]]) | ||
Line 24: | Line 31: | ||
Sunt mai multe formate de mesh-uri pe care framework-ul le poate folosi (precum FBX sau OBJ), iar aici o să folosim o aplicație 3D pentru a obține corect aceste formate, mai exact **Blender**. | Sunt mai multe formate de mesh-uri pe care framework-ul le poate folosi (precum FBX sau OBJ), iar aici o să folosim o aplicație 3D pentru a obține corect aceste formate, mai exact **Blender**. | ||
+ | <note tip> | ||
+ | **Hint:** subiectul mapării texturilor pe geometrie este acoperit în [[https://ocw.cs.pub.ro/courses/egc/laboratoare/09|laboratorul 9]]. | ||
+ | |||
+ | Metoda prezentată mai jos folosește în spate aceleași noțiuni explicate acolo. | ||
+ | </note> | ||
{{ :egc:teme:bonus_modele_blenderlogo.png?300 | }} | {{ :egc:teme:bonus_modele_blenderlogo.png?300 | }} | ||
Line 82: | Line 94: | ||
{{ :egc:teme:blender_move_to_render.png?500 | }} | {{ :egc:teme:blender_move_to_render.png?500 | }} | ||
- | * Ultima etapă până la export este de a seta niște valori pentru rotația și dimensiunea plane-ului (sunt mai mult niște valori orientative, că să nu fie nevoie de prea multe modificări ale modelului în framework). Se selectează obiectul și se apasă pe butonul din dreapta cu un pătrat portocaliu în centru (acesta reprezintă **Transform**-ul obiectului). Se completează apoi cu valorile din imagine. | + | * Ultima etapă până la export este de a seta niște valori pentru rotația și dimensiunea plane-ului (sunt mai mult niște valori orientative, ca să nu fie nevoie de prea multe modificări ale modelului în framework). Se selectează obiectul și se apasă pe butonul din dreapta cu un pătrat portocaliu în centru (acesta reprezintă **Transform**-ul obiectului). Se completează apoi cu valorile din imagine. |
{{ :egc:teme:blender_image_setup_transform.png?500 | }} | {{ :egc:teme:blender_image_setup_transform.png?500 | }} | ||
- | * Pentru export, trebuie selectat în dreaptă în categoria **Collection** obiectul creat, apoi apăsat în stânga sus pe **File/Export/FBX(.fbx)** | + | * Pentru export, trebuie selectat în dreapta în categoria **Collection** obiectul creat, apoi apăsat în stânga sus pe **File/Export/FBX(.fbx)** |
{{ :egc:teme:blender_export_1.gif?direct&500 |}} | {{ :egc:teme:blender_export_1.gif?direct&500 |}} | ||
- | * În panoul de export FBX, trebuie bifate 2 opțiuni în partea dreaptă pentru a putea folosi ușor modelul în framework: **Path Mode**-ul trebuie să fie trecut pe **Copy** (în loc de **Auto** cum este default) și mai jos bifat **Selected Objects**. La final, alegeți calea unde vreți să fie exportat modelul, numele acestuia și apăsați pe butonul de jos de **Export FBX**. Asta o să creeze în acel folder: 1 fișier .fbx (**ghost.fbx** în cazul acestui demo) și un alt folder al cărui nume va fi numele modelului urmat de .fbm (**ghost.fbm** aici). În acest folder o să fie salvată imaginea inițială pe care o folosește modelul. | + | * În panoul de export FBX, trebuie bifate 2 opțiuni în partea dreaptă pentru a putea folosi ușor modelul în framework: **Path Mode**-ul trebuie să fie trecut pe **Copy** (în loc de **Auto** cum este default) și mai jos bifat **Selected Objects**. La final, alegeți calea unde vreți să fie exportat modelul, numele acestuia și apăsați pe butonul de jos de **Export FBX**. Asta o să creeze în acel folder: un fișier .fbx (**ghost.fbx** în cazul acestui demo) și un alt folder al cărui nume va fi numele modelului urmat de .fbm (**ghost.fbm** aici). În acest folder o să fie salvată imaginea inițială pe care o folosește plane-ul pe post de textură. |
{{ :egc:teme:blender_export_2.gif?direct&500 |}} | {{ :egc:teme:blender_export_2.gif?direct&500 |}} | ||
Acum avem modelul gata de folosit în framework-ul de OpenGL deci nu mai este nevoie de Blender pentru pașii următori: | Acum avem modelul gata de folosit în framework-ul de OpenGL deci nu mai este nevoie de Blender pentru pașii următori: | ||
- | * Acum că avem modelul salvat undeva în PC, trebuie să îl aducem în framework ca să îl putem încarcă de la o adresa pe care acesta o poate accesa. În exemplul acesta, am creat un nou folder în **assets/models**, numit "my_models". În **my_models**, am creat folderul "ghost" unde am copiat tot ce am primit la export din Blender (adică **ghost.fbx** și folderul **ghost.fbm**). | + | * Cu avem modelul salvat undeva în PC, trebuie să îl aducem în framework ca să îl putem încarca de la o adresă pe care acesta o poate accesa. În exemplul de mai jos, am creat un nou folder în **assets/models**, numit "my_models". În **my_models**, am creat folderul "ghost" unde am copiat tot ce am primit la export din Blender (adică **ghost.fbx** și folderul **ghost.fbm**). |
{{ :egc:teme:blender_assets_path.png?500 | }} | {{ :egc:teme:blender_assets_path.png?500 | }} | ||
Line 118: | Line 130: | ||
glViewport(0, 0, window->props.resolution.x, window->props.resolution.y); | glViewport(0, 0, window->props.resolution.x, window->props.resolution.y); | ||
- | RenderMesh(meshes["ghost"], glm::vec3(0.f, 0.f, 0.f)); | + | RenderMesh(meshes["ghost"], glm::vec3(0.f)); |
} | } | ||
Line 130: | Line 142: | ||
{{ :egc:teme:blender_tut_final.png?500 | }} | {{ :egc:teme:blender_tut_final.png?500 | }} | ||
- | ==== Adăugarea de modele 3D ==== | + | <note>Dacă apar probleme în afișarea modelului respectiv dar ați urmat exact pașii de mai sus, verificați **Scale**-ul la care se folosește acesta în framework: sunt șanse să fie prea mic sau prea mare. |
- | (TODO) | + | </note> |