HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

  • sdani: @Travis.CG: Nohát, nem is tudtam, hogy ilyen van... bár ahogy elnézem ezek a komponensek fizetősek... (2018.11.01. 10:14) Rossz beidegződések a bionformatikában
  • Csenge Tarnói: Ez érdekes. Most csinálok egy meta-analízist, életemben először, úgyhogy az én tudásom is felszíne... (2018.10.01. 21:39) Ez már nekem sok
  • robertherczeg: Nekem a kedvenc az volt, hogy: "Inkább eleve Mann-Whitney és/vagy Wilcoxon tesztet használjunk, m... (2018.09.04. 07:47) Ezért utálom a Wilcoxon-tesztet
  • Travis.CG: ÉÉÉÉÉs megjelent! (2018.08.24. 23:31) Nehéz szülés 2
  • Szedlák Ádám: Hogy én mennyire köszönöm ezt a posztot, arra nincs szó. A kódoljon mindenki / legyen mindenki olc... (2018.06.25. 03:37) Legyen mindenki programozó

Dr. Scenelove avagy hogyan szerettem meg a Blendert

2011.07.30. 18:39 Travis.CG

A Blendert mindig is egy fekete báránynak tekintettem a 3D programok között, amolyan szegény ember modellezőjének. A különböző demó produkciók elkészítésénél ki is próbáltam néhány programot, hogy megismerjem erősségüket, gyengeségüket. Végül az ízlésemnek leginkább a 3D Studio felelt meg. Ebben kezdtem el tanulgatni a modellezés alapelemeit.

Az eltelt két-három évben ha nem is lettem profi, egyszerűbb modelleket össze tudtam rakni. Aki nagyon kíváncsi, miket is alkottam, az megnézheti az Aeronautism-ban a léghajót, a 2010-ben az Amigát és az EVA pod-ot. Ahogy egyre ügyesebb lettem 3D Studioban, annál inkább mellőztem a Blendert, pedig telepítve van a Linuxos gépemre.

Ahogy a demóink is egyre fejlődnek (még ha ezt a nézők el sem hiszik :-) ) újabb és újabb igényeink lettek, amit alapvetően kétféle módon oldhatunk meg:

  1. A speciális igényeinkhez valamilyen demóeszközt írok
  2. Mások demóeszközeit használjuk saját célunkra
  3. Egy meglévő eszközt ruházunk fel bővítmények segítségével

Demóeszközt eddig is írtam, de mind nagyon speciális volt, főleg különböző formátum konverziókat hajtottak végre. Egy interaktív eszköz elkészítésén is gondolkodtam, de egyrészt sok idő, másrészt olyan egyszerű problémákra sem találtam kielégítő megoldást, mint amilyen a keresztplatformos futtatás.

Mások egyközeivel is kísérleteztünk. Ezek sajnos kevéssé dokumentáltak, főleg saját használatra lettek tervezve, amitől a kezelésük egyéni logikán alapul.

A bővítmény készítés sem volt egyszerű. Először is a legtöbb 3D program Windows alatt fut (1. rossz pont), C++-ban kell hozzájuk fejleszteni (2. rossz pont). Ennek ellenére elkezdtem tanulmányozni a bővítmények dokumentációit.

Így jutottam el ismét a Blenderhez. Python. Ezt a nyelvet sem szeretem jobban, mint a C++-t. Ráadásul még kevésbé ismerem. Viszont amikor négy sorból megkaptam a kamera pozícióját, mindezt a Blenderen belül, akkor úgy döntöttem, hogy érdemes foglalkozni a programmal. A nyelv mélyebb ismerete nélkül pár nap alatt hozzáfértem egy csontváz elemeihez és megkaptam mely csúcspontok tartoznak a csonthoz.

De nézzünk néhány példát! A Blender elindítása után az ablak típusát változtassuk Script Window-ra. A Scripts -> System -> Interactive Python Console menüponttal megkapjuk az konzolt, ahol egyből be is írhatjuk a parancsokat. Arra ügyeljünk, hogy csak akkor tudunk beírni ebbe az ablakba, ha az egérmutató fölötte van. Gyorsan gépelők ne lepődjenek meg: A shift + szóköz billentyű teljes képernyőssé varázsolja az ablakot.

Objektumok:

Az objektumok listája a következő módon érhető el:

for object in bpy.data.scenes.active.objects:
  print object.type

Aki más 3D programban ennél egyszerűbben meg tudja ezt csinálni, az azonnal tudassa velem! Az objektumok helyzetét és forgásszögeit a következő metódusokkal, tagváltozókkal lehet lekérdezni:

object.getLocation() # Az objektum helyzete
object.getEuler()    # A forgásszögek radiánban
object.LocX          # Csak az X pozíció
object.RotX          # X tengely körüli forgatás szöge (fok)
A legszebb az egészben, hogy bármikor segítséget kérhetünk magától a rendszertől!

dir(object)          # Kilistázza a metódusokat és tagváltozókat
help(object)         # Rövid segítség

Az objektumokat is azonnal módosíthatjuk scripteken keresztül. Például forgassuk meg az első alakzatot, ami a kezünk ügyébe kerül:

for o in bpy.data.scenes.active.objects:
   if o.type == 'Mesh':
      mesh = o
      break;
for rad in range(0,360):
   mesh.RotX = rad
   Blender.Redraw()
Az egyik alakzat őrült forgásba fog kezdeni. Remélem sikerült felkeltenem az érdeklődést ez iránt a program iránt. Habár modellezni még jó ideig nem fogok benne, a jelenetek összeállításában biztosan ki fogom használni a képességeit.

Szólj hozzá!

Címkék: programozás demoscene

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr883112470

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.