Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 44
  1. #1

    papervision2.0a effetto blur su primitiva (Cube)

    FlashCs3 + As3 + Papervision 2.0a
    ------------------------------------

    Il mio obbiettivo è quello di applicare ad un cubo un effetto blur, a dirsi facile a farlo non ci cavo un ragno da un buco
    vedo di spiegarmi a pezzi di codice per focalizzare il problema.

    Allora: ho un cubo , lo istanzio con una lista di materiali (tutti moviematerial) e lo aggiungo alla scena
    codice:
    mioCubo = new Cube(listaMateriali, 100, 100, 100, 5, 5, 5);
    viewport.scene.addChild(mioCubo);
    ok ora ho il mio cubo nella mia scena tridimensionale.

    creo l'effetto blur:
    codice:
    var mioBlur = new BlurFilter(10, 10, 2);
    var filters:Array = new Array(mioBlur);
    ora vorrei applicare al SOLO cubo un effetto blur e non all'intera viewport.

    cioè, se faccio così:
    codice:
    viewport.filters = filters;
    ok viene applicata la sfuocatura, ma all'intera viewport, ciò significa che se ho altri oggetti nella mia scena 3d vengono sfuocati anche quelli

    in teoria si dovrebbe fare qualcosa tipo:
    codice:
    mioCubo.filters=filters
    ma così non mi fa nulla... vorrei poter capire come gestire gli effetti sugli oggetti 3D invece che sull'intera viewport, così da poter simulare una profondità di campo
    ho trovato qualche esempio ma nessuno chiarisce... alcuni mi danno errore in fase di compilazione probabilmente non usa p3d2.0a ...boh...qualcuno mi può dare una mano o accendere una luce nel mio buio?
    grazie.
    Steve Austin, Astronaut - A man barely alive . . . Gentlemen, we can rebuild him . . . we have the technology. We have the capability to make the world's first bionic man. Steve Austin will be that man. Better than he was before, Stronger, Faster . .

  2. #2
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Ciao,

    ti serve la versione effects di papervision.

    Una volta che te la procuri in pratica non è molto complesso applicare degli effetti, allo stato attuale dei miei test passo un effetto alla viewport e come risultato tutti gli oggetti renderizzati acquisiscono gli effetti applicati.

    Occhio che se gli oggetti si muovono permangono le scie dei blur e glow e simili...

    In pratica tu ti istanzi un BitmapEffectLayer:

    bfx = new BitmapEffectLayer(stage.stageWidth, stage.stageHeight);

    applichi gli effetti

    bfx.drawLayer.filters = [new GlowFilter(0xFFFFFF, 0.5, 10, 10, 1, 1)];
    bfx.drawLayer.filters = [new BlurFilter(2,2,3)];

    e aggiungi alla viewport un render layer passandogli il BitmapEffectLayer come unico parametro:

    viewport.addRenderLayer(bfx);

    In questo modo come ti dicevo gli effetti vengono applicati a tutti gli oggetti renderizzati dalla viewport, adesso inizierò a capire come associare singoli effetti a singoli oggetti, appena so qualcosa in più aggiorno...

    PS

    Anche tu se hai novità posta che mi interessa...



  3. #3
    Originariamente inviato da nep036
    Ciao,

    ti serve la versione effects di papervision.

    Una volta che te la procuri in pratica non è molto complesso applicare degli effetti, allo stato attuale dei miei test passo un effetto alla viewport e come risultato tutti gli oggetti renderizzati acquisiscono gli effetti applicati.

    Occhio che se gli oggetti si muovono permangono le scie dei blur e glow e simili...

    In pratica tu ti istanzi un BitmapEffectLayer:

    bfx = new BitmapEffectLayer(stage.stageWidth, stage.stageHeight);

    applichi gli effetti

    bfx.drawLayer.filters = [new GlowFilter(0xFFFFFF, 0.5, 10, 10, 1, 1)];
    bfx.drawLayer.filters = [new BlurFilter(2,2,3)];

    e aggiungi alla viewport un render layer passandogli il BitmapEffectLayer come unico parametro:

    viewport.addRenderLayer(bfx);

    In questo modo come ti dicevo gli effetti vengono applicati a tutti gli oggetti renderizzati dalla viewport, adesso inizierò a capire come associare singoli effetti a singoli oggetti, appena so qualcosa in più aggiorno...

    PS

    Anche tu se hai novità posta che mi interessa...


    Perfetto mi hai dato un'informazione in più... la versione effect di papervision... ma esattamente qual'è. Cioè pensavo che fosse tutto incluso nelle librerie che scarichi in svn, io ho scaricato la papervision 2.0a Great White, cosa devo scaricare invece?
    in effetti avevo visto dei tutorial che gestivano i livelli di effetti come mi hai spiegato ma effettivamente mi dava errore nel rendering perchè mancavano delle librerie.
    Riesci a postarmi le librerie che usi te? Così posso fare un po' di prove.

    Grazie, ti terrò informato.
    Steve Austin, Astronaut - A man barely alive . . . Gentlemen, we can rebuild him . . . we have the technology. We have the capability to make the world's first bionic man. Steve Austin will be that man. Better than he was before, Stronger, Faster . .

  4. #4
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    LINK

    Se guardi questo esempio ho disposto 200 cubi su una superfice sferica. Alla viewport ho applicato gli effetti però essendoci la camera che entra ed esce dalla sfera tutte le scie permangono... refreshando la bitmap si perderebbero gli effetti in questo caso...

    ...cosi viene fuori un quadro surrealista

    Bisogna smanettare un po con questo papervision mi sa, eh!

  5. #5
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Le librerie le trovi nel svn, sotto branches trovi effects allo stesso livello della great white...

  6. #6
    ok adesso ci sono anch'io, grazie

    Ma il problema di dare del blur ad un solo oggetto 3d rimane.
    io al massimo la riesco a dare al materiale, ma non è che serva molto.

    mi sembra strano che in nessun tutorial ci sia qualcosa di chiaro.
    Steve Austin, Astronaut - A man barely alive . . . Gentlemen, we can rebuild him . . . we have the technology. We have the capability to make the world's first bionic man. Steve Austin will be that man. Better than he was before, Stronger, Faster . .

  7. #7

    versioni...

    sono andato avanti...e ho capito che a seconda delle versioni di papervision si possono usare non solo sintassi ma anche concetti diversi.

    ad esempio se usi papervision 3d 1.7b (!?!?) si riesce ad applicare con semplicità effetti di blur, glow, ecc...ai singoli oggetti con la sintassi
    codice:
    oggetto.contenti.filters = arraydifiltri;
    ad esempio questo:

    codice:
    package {
     import flash.display.*;
     import flash.events.*;
     import flash.filters.*;
     import flash.text.*;
     import flash.media.Sound;
     import flash.media.SoundMixer;
     import flash.net.URLRequest;
     import flash.utils.ByteArray;
     import org.papervision3d.components.as3.collections.MaterialsListItem;
     import org.papervision3d.core.components.as3.collections.MaterialsListItem;
    
     import org.papervision3d.core.proto.*;
     import org.papervision3d.scenes.*;
     import org.papervision3d.cameras.*;
     import org.papervision3d.objects.*;
     import org.papervision3d.materials.*;
     import caurina.transitions.Tweener;
     import org.papervision3d.core.Number3D;
    
     [SWF(backgroundColor="0x000000", frameRate="300")]
    
     public class testFilters extends MovieClip {
    
    // _______________________________________________________________________
    //                                                                    vars
     public var container : Sprite;
     public var scene  : MovieScene3D;
     public var camera  : FreeCamera3D;
     public var cubeObj : DisplayObject3D;
    // _______________________________________________________________________
    //                                                             Constructor
     public function testFilters(){
         this.addEventListener(Event.ENTER_FRAME,loop3D);
         init();
     }
    // _______________________________________________________________________
    //                                                                    Init
     public function init():void{
         container = new Sprite();
         addChild(container);
         container.x = this.stage.stageWidth  / 2;
         container.y = this.stage.stageHeight / 2;
         scene = new MovieScene3D( container );
         camera = new FreeCamera3D(1, 1000);
    	 
    	 var cm:ColorMaterial = new ColorMaterial(0xFFFF33, 1, false)
    	 var cml:MaterialsList = new MaterialsList( { all:cm } );
    	 
    	 var cm2:ColorMaterial=new ColorMaterial(0x99FF33,1,false)
    
         cubeObj = new Cube(cml,100,100,100,2,2,2);
         scene.addChild(cubeObj);
    	 
    	 var sphereObj2:Sphere = new Sphere(cm2, 100, 16, 16);
    	 sphereObj2.x = 300;
         scene.addChild(sphereObj2);
    	 
    
     }
    // _______________________________________________________________________
    //                                                               loop3D
     public function loop3D(event:Event):void {
      //influence camera with mouse
         cubeObj.rotationY+=container.mouseX/200;
         cubeObj.rotationX+=container.mouseY/200;
    
      //create filters
      var filter:Array = new Array();
      //outer blend glow
      filter.push(new GlowFilter(0xCCCC00, 1, 10, 10, 2, 1, false, false));
      //inner face glow
      filter.push(new GlowFilter(0x00FF00, 1, 50, 50, 2, 1, true, false));
      //shadow glow
      filter.push(new GlowFilter(0x00AA00, 1, 90, 90, 1, 1, false, false));
      //drop shadow
      filter.push(new DropShadowFilter(4, 45, 0xcc0000, 1, 4, 4, 1, 1, false,
    false));
      //apply filters
      //this.container.filters = filter;
      cubeObj.container.filters = filter;
    
      //render the scene
      this.scene.renderCamera( camera );
     }
      }
    }

    qui si crea un cubo e una sfera e gli effetti si applicano solo al cubo...che è un po' quello che vogliamo.

    Ma la stessa sintassi non va con Papervision3d 2.0a filter.

    Idee? considerazioni?
    lascio lo zip dell'esempio sopra con le librerie.
    http://www.rossionline.net/tmp/effetti/effetti.zip

    rimango un po' perplesso con sto casino di sintassi e concetti tra differenti librerie.

    o sbaglio io qualcosa?
    Steve Austin, Astronaut - A man barely alive . . . Gentlemen, we can rebuild him . . . we have the technology. We have the capability to make the world's first bionic man. Steve Austin will be that man. Better than he was before, Stronger, Faster . .

  8. #8
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Ti svelo l'arcano.

    Iniziamo con la considerazione che le due branches versione 2 utilizzano una sola Scene3D, come puoi vedere la MovieScene3D non c'è più nei packaging.

    Tutti questi cambiamenti sono stati fatti per aumentare le prestazioni dell'engine. Anche per questo motivo, i progetti sviluppati con versioni precedenti la 2 non possono essere pubblicati con le nuove release, non c'è retrocompatibilità.

    Adesso nel tuo esempio con la 1.7 tu istanzi una MovieScene3D, che ha, a differenza della Scene3D, la peculiarità di renderizzare come singole sprite ogni singolo oggetto, percui è possibile, come hai visto, associare un effetto agli oggetti che vengono renderizzati singolarmente.
    Con la Scene3D questo non sarebbe stato possibile, perchè renderizza una sprite complessiva per tutto.

    Le due versioni nuove, che non sono neanche beta e quindi c'è da valutare questo aspetto, partono da una strutturazione del mondo 3d completamente diversa.

    Infatti mantengono entrambe la nuova architettura, però hanno separato lo sviluppo degli effetti nella versione Effects, per poi probabilmente fondere le due release quando saranno pronte per il rilascio.

    A quanto ho visto con la Great White non si possono applicare filtri, anche se sono previsti nella base class DisplayObject3D, proprio perchè i layers per renderizzare gli effetti secondo il nuovo meccanismo sono stati messi solo nella versione Effects... (sicuramente poi queste due versioni si fonderanno in una sola quando verrà rilasciata ufficialmente la versione 2, che sarà unica penso).

    Percui volendo utilizzare adesso gli effetti bisogna utilizzare la Effect, perchè la GW è mutilata da questo punto di vista.

    Comunque dal tuo spunto ho visto che con la Effects si possono applicare i filtri ai singoli oggetti esattamente come hai fatto tu:

    var cube:Cube = new Cube(...);
    cube.flters = [new BlurFilter(2,2,2)];

    però per essere renderizzati hanno bisogno del BitmapEffectLayer.

    Quindi cosa succede con questa nuova versione:

    possiamo mettere filtri ai singoli oggetti e sovrapporre altri filtri all'intera scena. Quindi si aprono molte possibilità, come per la composizione dei materiali... ovviamente il tutto è più complesso proprio per la mole di possibilità a disposizione.

    A questo punto direi che conviene concentrarsi comunque su queste due versioni, proprio perchè come vedi è cambiato tutto dal profondo.

    Adesso per conferma, se invece della MovieScene3D istanzi unaScene3D normale i tuoi effetti al cubo e alla sfera non saranno più renderizzati.

    Perdonami se sono stato poco chiaro, ma essendo argomenti nuovi si va anche un po per supposizioni.




  9. #9
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Inoltre, io contestualmente a papervision mi sto guardando anche away3d, che anch'esso è a una versione 2 alfa, ma è unica. Fatta benissimo e forse anche più completa di papervision, mi sembra meritare attenzione. Papervision vive solo di una maggiore sponsorizzazione.

    Sicuramente avere a che fare con una release piuttosto che 2 è un vantaggio.

    Ovviamente conoscere sia PV3D che away3d è un vantaggio...

  10. #10
    Away3D me lo sono messo in queue ma passare ora mi suona da sconfitta quindi vado a denti stretti contro questa maledetta alpha version di papervision.

    Cmq grazie mi hai spiegato tutto chiaramente... procedo con gli studi.

    Steve Austin, Astronaut - A man barely alive . . . Gentlemen, we can rebuild him . . . we have the technology. We have the capability to make the world's first bionic man. Steve Austin will be that man. Better than he was before, Stronger, Faster . .

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.