halaszlo.blog.hu

Nagy divat lett ez a blog írás mostanában, hát gondoltam, én is elkezdem...

FlashSandy 01

2009.02.11. 16:09 halaszlo

Irány a 3. dimenzió

És máris szeretnék rátérni arra, ami az egész ingyenes fejlesztésnek értelmet ad.
Az Adobe fejlesztőeszközeinek van egy nagy hátránya. Hiányoznak belőle a 3D-s lehetőségek. Mondjuk a CS4-ben már kezd valami kibontakozni, de ez még korántsem tavasz...

A FlashSandy egy ingyenes, "nyílt forráskódú" Flash 3D fejlesztő osztály csomag. Én azért ezt használom, mert könnyen kezelhető és logikus felépítésű.
Kezdjük is el:
Innen letöltve, tömörítsük ki, majd a FlashDevelopment-ben a Project - Properties - Classpaths - Add Classpath ...  menüpontok után keressük meg és válasszuk ki a kitömörített sandy könyvtárat (jelenleg sandy_3_0_2_src). A Project ablak így változik:


 

 

 

 

 

Egy minimális FlashSandy 3D programhoz szükségünk lesz a következő osztályok importálására:
import sandy.core.Scene3D;
import sandy.core.scenegraph.*;
import sandy.primitive.*;

Az első, a "Scene" lesz az a színpad, ahol a 3D összeállítás "szereplőit" felállítjuk. Szükségünk lesz egy kamerára, ami "nézi" a szereplőket, egy képernyőre, amire kivetítjük és legalább egy szereplőre aki játszik. A Scene3D ennek ad teret és ezeket mind összefogja: a kamerát, a képernyőt, és a szereplőket.

Fordított sorrendben fogunk dolgozni. Először létrehozunk egy szereplőt. Ez legyen egy "doboz". Más szóval egy kocka. Ez a primitive csomagban található és azért úgy hívjuk meg, hogy primitive.*, hogy a többi szereplőt is könnyen elő tudjuk hívni később. Szóval létre hozzuk a boxot:

public var box:Box = new Box("box");

Ezt a Main Function elé teszem, és azért public előtaggal, hogy amennyiben több eljárást írunk, mindegyikből látható és kezelhető legyen.
Létrehozok egy kamerát, ami felveszi Mr. Box műsorát:

public var camera3D:Camera3D = new Camera3D(800, 600);

A kamera konstruktorának (ez az az eljárás, ami a kamera létrehozásakor lefut és kezdőértékekekt ad neki) megadjuk a kamera felbontását. Ezt érdemes akkorának venni, mint a projektunk felbontása, illetve akkorára, mint amilyen felületre majd ki fogjuk vetíteni a képet (ez esetünkben a Flash projektünknek otthont adó Main Sprite).

Szükségünk van egy "csoportra", ami a színtársulatot összefogja. Ez lesz a helyi színjátszó kör. :)

public var g:Group = new Group("g");

És végül szükségünk lesz egy színpadra, ahol helyet adunk a játékra.

public var scene:Scene3D;

Ezt csak deklaráljuk, de létre még nem hozzuk, mivel ennek a konstruktorának meg kell adnunk paraméterként a képernyőt, amire "kivetítjük" majd a képet és a programunknak ebben a fázisában (még a Main konstruktor lefutása előtt" még nem  áll készen. Éppen ezért, ezt csak a main konstruktoron belül tesszük meg, így:

public function Main():void
{
        scene = new Scene3D("scene", this, camera3D, g);

...

Tehát, sorrendben, a Scene3D konstruktorának a paraméterei:
- a neve
- a második paraméter az a Sprite, amire ki akarjuk vetíteni a 3D képet. Mivel mi a projektünk Main Sprite-ját fogjuk erre használni, elég úgy hivatkozni rá, hogy this.
- a harmadik paraméter maga a kamera
-  a negyedik pedig a színjátszó csoport, ami összefogja a szereplőket. Ez jelenleg még üres, de mindjárt hozzárendeljük Mr. Box-ot. Így:

g.addChild(box);

Ezzel adjuk hozzá a szereplőket a csoporthoz. Casting. :)

És felvétel indul!

scene.render();

Ezzer rendereljük a kamera képét a vászonra.

A teljes program így néz ki:

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import caurina.transitions.Tweener;
    import sandy.core.Scene3D;
    import sandy.core.scenegraph.*;
    import sandy.primitive.*;

   
    public class Main extends Sprite
    {
        public var box:Box = new Box("box");
        public var camera3D:Camera3D = new Camera3D(800, 600);
        public var g:Group = new Group("g");
        public var scene:Scene3D;
       
        public function Main():void
        {
            scene = new Scene3D("scene", this, camera3D, g);
            g.addChild(box);
            scene.render();
        }
    }
}

Ha minden jól ment, valami ilyesmit látunk:

Szólj hozzá!

Címkék: flash tutorial programozás 3d sandy actionscript flashsandy

A bejegyzés trackback címe:

https://halaszlo.blog.hu/api/trackback/id/tr75937132

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.
süti beállítások módosítása