3D szerkesztőprogram alapok, szkriptelési alapok, procedurális modellezési alapok Blender Python.

Slides:



Advertisements
Hasonló előadás
BPS Web 2.0 Felhasználói kézikönyv. A szerkesztő főoldala A bejelentkezett felhasználóA szerkesztő főmenürendszere Stílusformázások Nyelv- és nézetváltás.
Advertisements

A Windows használata Bevezetés.
Visual Basic for Application (VBA)
Mellár János 3. óra Szeptember 16. v
Számítógépes ismeretek 5. óra
Bekezdésformázás Név: Szarvas Nóra 8/a Felkészítő tanár: Salamon Róza
Operációs rendszerek Mappa és file-kezelés.
Számítógépes geometriai leíró nyelvek
Számold meg a fekete pontokat!
2D képszintézis Szirmay-Kalos László. Számítógépes grafika feladata képszintézis Virtuális világ modell modellezés Metafórák: 2D rajzolás világ = sík.
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
Visual Basic for Application (VBA)
Mire jók a tabulátorok? Lehetőséget nyújtanak
Excel: A diagramvarázsló használata
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Grafika a programban Készítette: Pető László. Bevezetés Valójában nem a célobjektumra rajzolunk, hanem annak festővászon területére (canvas). Csak olyan.
A Windows grafikus felülete
Bekezdésformázás.
Transzformációk kucg.korea.ac.kr.
Ellenőrző kérdések a)Auto-indexing enabled b)Auto-indexing disabled c)Nem eldönthető 1.
Audacity.
Kliensoldali Programozás
Zsombori Balázs Neumann János Számítástechnikai SZKI
Képek beillesztése,formázása dokumentumokban Tóth Anita 8
,,Én így tanítanám az informatikát”
Képek beillesztése, formázása dokumentumokban
Egy Nao robot szimulálása a Choregraphe programmal.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
MACROMEDIA FLASH Mire használható? példák. MACROMEDIA FLASH vektor – bitmap.
Alapszint 2.  Készíts makrót, ami a kijelölt cellákat egybenyitja, a tartalmat vízszintesen és függőlegesen középre igazítja és 12 pontos betűméretűre.
Grafikus tervezőrendszerek programozása 11. előadás.
Prezentáció a prezentációról
1.Labor : Modellezés. Blender D:\GameDev\Blender3D\blender.exe D:\GameDev\Blender3D\blender.exe Ismerkedjünk az interface-el!!!
Készítette: Rummel Szabolcs Elérhetőség:
ADATBÁZISKEZELÉS ŰRLAPOK.
ELTE WIFI Beállítási útmutató MS Windows XP-hez
Web-grafika II (SVG) 6. gyakorlat Kereszty Gábor.
Lync 2013 – Rövid összefoglalás
A videoeszköz beállítása A videokép megosztásához kamerára van szükség, de mások videoképét kamera nélkül is láthatja. A kamera beállítása: Kattintson.
Adatbázis rendszerek II
1 Mivel foglalkozunk a laborokon? 7. hét: Do-Loop-Until Do-Until-Looptömbök Function 7. hét: Do-Loop-Until és Do-Until-Loop ciklusok. Egy indexes tömbök,
Turócziné Kiscsatári Nóra
Az operációs rendszerek feladatai, csoportosításuk
Első lépések a szövegszerkesztő használatában
Táblázatok.
SZÖVEGSZERKESZTÉS III. ~ KARAKTERFORMÁZÁS ~
Gazdasági informatikus - Szövegszerkesztés 1 Bekezdések formázása 2.
A 2. géptermi beszámoló VBA anyagának összefoglalása
Weboldalba ágyazott interaktív feladatok GeoGebra módra Papp-Varga Zsuzsanna ELTE IK Média- és Oktatásinformatika Tanszék
1 Függvények használata – az első függvénynél a formulát háromszor be kell írni, rendre az x, x+h, x-h argumentumokkal, – a második függvénynél az új (feltételes.
Az 5,6,7 laborok VBA anyagának összefoglalása
Képszerkesztés magas fokon
PRIMAL PICTURE INTERACTIVE ANATOMY Csajbók Edit Semmelweis Egyetem Központi Könyvtár.
Táblák létrehozása és feltöltése adatokkal Rendezés Szűrés.
Platformer játék Pálya generálás. Új projekt Csináljunk új 2D projektet Neve legyen Platformer Kép asseteket töltsük le, és importáljuk a projektbe Majd.
Lekérdezések Adott tulajdonságú adatok listázásának módja a lekérdezés. A lekérdezések segítségével az adatbázisból megjeleníthetjük, módosíthatjuk, törölhetjük.
06. GYAKORLAT LCD kijelző.
Global Illumination.
Script nyelvek előadás
Óra modell készítése Óralap1.
Unity 3D alapok + gyakorlás.
Grafikus Rendszerek 6. Camera.
Rajzprogramok Bevezetés a Paint program használatába.
03. GYAKORLAT Szervó motor.
A CLIPS keretrendszer
Számítógépes Hálózatok
Unity.
Képszerkesztés magas fokon
Python alapok Vincellér Zoltán.
Függvénysablonok használata
Előadás másolata:

3D szerkesztőprogram alapok, szkriptelési alapok, procedurális modellezési alapok Blender Python

Blender

Ismerkedjünk az interface-el!!! Kamera mozgás: ALT + LMB : forgás ALT + RMB : zoom ALT + MMB : mozgás

Transzformációk, manipulátorok

Próbálgassuk a manipulátorokat, transzformációkat! Cursor Áthelyezése: jobb klikk a 3D nézetben Vagy:

1. Feladat: rács, kockákból (save: 1_CubeGrid.blend) Segítség: CTRL+D: duplicate Kijelölt objektum(ok) duplázása Duplázás után egérrel tudjuk az új helyére mozgatni. Ez 3D nézetben nagyon nehézkes, pontatlan. Esc-et nyomva nem mozgatja el, a 3D nézet bal alsó sarkában megjelenik egy kis ablak, ahol pontosan beállíthatjuk a kívánt eltolást Outliner (jelenet hierarchia) nézetben megjelenik egy új objektum Outliner nézetben az objektum ikonjára kattintva tudjuk azt kijelölni Duplicate után, automatikusan az új objektum lesz kijelölve ! ez fontos lehet ! 4X4X4 kocka, mindegyik 0.8-ra skálázva 2 egységnyi eltolás van közöttük

2. Feladat: kockák körbe elhelyezve (save: 2_CubeCircle.blend) 10 sugarú körben 30 fokonként Segítség: Érdemes a Cursor körül forgatni Forgatás közben a CTRL-t nyomva tartva fix 5 fokos szögenként tudunk forgatni (így pontosabb)

Blender API https://docs.blender.org/api/ https://docs.blender.org/api/blender_python_api_2_78c_release/ BMesh modul: https://docs.blender.org/api/blender_python_api_2_78c_release/bm esh.html

Szkript írása Blenderben Jobb Klikk:

Blender parancsok API dokumentáció Google (pl.: „transform object blender python”) Lessünk a Blendertől! pl. translate manipulátor parancsa a manipulátor alkalmazása után:

Objektum pozíciójának módosítása szkripttel import bpy # Get List of Selected Objects myObjects = bpy.context.selected_objects if(len(myObjects) == 0): print('Please select some objects') #raise RuntimeError('Please select some objects') else: print(myObjects[0]) myObject[0].location[0] = 2 myObjects[0].location[1] = 3 myObjects[0].location[2] = 2

Objektum eltolása szkripttel import bpy # Get List of Selected Objects myObjects = bpy.context.selected_objects if(len(myObjects) == 0): print('Please select some objects') #raise RuntimeError('Please select some objects') else: print(myObjects[0]) bpy.ops.transform.translate(value=(2,3,2))

3. Feladat: rács, kockákból, szkripttel (save:3_CubeGrid_script.blend) 4X4X4 kocka, mindegyik 0.8-ra skálázva 2 egységnyi eltolás van közöttük Segítség: Ciklus: for x in range(0,4): ….. Duplázás: bpy.ops.object.duplicate() Egy objektum felvétele/levétele a kiválasztott elemek listájáról: newObjects[0].select = True/False

Megoldás import bpy # Get List of Selected Objects myObjects = bpy.context.selected_objects if(len(myObjects) == 0): print('Please select some objects') #raise RuntimeError('Please select some objects') else: for x in range(0,4): for y in range(0,4): for z in range(0,4): bpy.ops.object.duplicate() newObjects = bpy.context.selected_objects print(newObjects[0]) newObjects[0].select = False myObjects[0].select = True newObjects[0].location[0] = x*2 newObjects[0].location[1] = y*2 newObjects[0].location[2] = z*2

Objektum forgatása szkripttel import bpy import math # Get List of Selected Objects myObjects = bpy.context.selected_objects if(len(myObjects) == 0): raise RuntimeError('Please select some objects') else: print(myObjects[0]) bpy.ops.transform.rotate(value=math.radians(45), axis=(0,0,1))

Forgatás a kurzor körül Cursor beállítása középpontként: import bpy Import math def areas_tuple(): res = {} count = 0 for area in bpy.context.screen.areas: res[area.type] = count count += 1 return res myObjects = bpy.context.selected_objects … areas = areas_tuple() view3d = bpy.context.screen.areas[areas['VIEW_3D']].spaces[0] view3d.pivot_point='CURSOR' Cursor pozíciójának módosítása: view3d.cursor_location = (0.0, 0.0, 0.0) Rotate használja a view középpont beállításait: def get_override(area_type, region_type): if area.type == area_type: for region in area.regions: if region.type == region_type: override = {'area': area, 'region': region} return override #error message if the area or region wasn't found raise RuntimeError("Wasn't able to find", region_type," in area ", area_type, "\n Make sure it's open while executing script.") override = get_override( 'VIEW_3D', 'WINDOW' ) bpy.ops.transform.rotate(override, value=…) Forgatás a kurzor körül

4. Feladat: kockák körbe elhelyezve szkripttel (save: 4_CubeCircle_script.blend) Szkript feladata: Elhelyezi a kiválasztott objektumot (R,0,0)-ba Elhelyezi a kurzort (0,0,0)-ba Átállítja a középpont módot Cursor-ra Az objektumot másolja és D fokonként körberakja R és D állítható paraméterek legyenek! range([start], stop[, step]) start: Starting number of the sequence. stop: Generate numbers up to, but not including this number. step: Difference between each number in the sequence.

Poligonmodellezés alapjai Videók a honlapon

Poligon alkotóelemek Blenderben vertex/edge/face

Poligon kihúzás Egér mozgatásával tudunk kihúzni Húzás helyett be is gépelhetjük a távolságot

5. Feladat: építsünk házikót (save: 5_House.blend) Kiindulunk egy alap dobozból (w=1,h=1,d=1) Első kihúzás 0 távolságra (Esc) A kihúzott lapot skálázzuk nagyobbra, ez lesz a tető pereme (e=1.1) Második kihúzás r=0.5 távolságra, ez lesz a tetőmagasság A kihúzott lapot skálázzuk kicsire (0.01)

Lap kihúzás szkriptből import bpy import bmesh bpy.ops.object.mode_set( mode = 'OBJECT' ) obj = bpy.context.active_object bm = bmesh.new() bm.from_mesh(obj.data,face_normals=True) bm.faces.ensure_lookup_table() extrude_faces = [bm.faces[0]] extrude_faces = bmesh.ops.extrude_discrete_faces(bm, faces=extrude_faces)['faces'] dr = extrude_faces[0].normal * 1 bmesh.ops.translate(bm, verts=extrude_faces[0].verts, vec=dr) bm.to_mesh(obj.data) bm.free() obj.data.update()

6. Feladat: építsünk házikót (save: 6_House_script.blend) buildHouse(w=2,h=3,d=4,e=1.5,r=2) Kerüljön külön függvénybe w,h,d,e,r függvény paraméterek legyenek Segítség: Kocka létrehozása: bpy.ops.mesh.primitive_cube_add() (a parancs után az új kocka lesz kiválasztva) Felső lap megtalálása: extrude_faces = [f for f in bm.faces if f.normal[2] == 1] v. bm.faces.ensure_lookup_table() extrude_faces = [bm.faces[5]]

7. Feladat: helyezzünk el véletlen házakat egy sin görbe mentén (save: 7_House_sin_script.blend) w,h,d,e,r véletlenszerűen változik az alábbi tartományokban: w, h, d: 0.5-2.0 e: 1.1-1.5 r: 0.5-1.0 Segítség: import random import math random_number = random.uniform(min, max) math.pi math.sin(radian)

8. Feladat: csáposító (save: 8_Tentaclifier.blend) Egy modell minden lapját kihúzzuk többször egymás után Minden kihúzásnál a kihúzott lapot kicsit leskálázzuk (pl. 0.8x) Minden kihúzásnál a lapot véletlenszerűen elforgatjuk (minden tengelyen -10, 10 fok között) Segítség: Kihúzott lapok külön-külön meglátogatása: for f_idx in range(len(extrude_faces)): extrude_faces[f_idx] … Lap középpontjának meghatározása (e körül kellene forgatni, és skálázni) faceCenter = extrude_faces[f_idx].calc_center_median() Forgatási mátrix létrehozása: mathutils.Matrix.Rotation(math.radians(rotX), 4, 'X') Eltolási mátrix létrehozása: mathutils.Matrix.Translation(vector) bmesh API-t nézzük át: forgatás, skálázás függvényeknek milyen paraméterei vannak, amit a középpont megadásához felhasználhatunk

9. Feladat: csápos majom (save: 9_Tentaclified_monkey.blend) A képen látható, kijelölt lapokat húzzuk csak ki Segítség: Kijelölt lapok lekérdezése: [f for f in bm.faces if f.select]

Vége