Papervision 2.0 Effects Tutorial


I just finished uploading a new branch to the Papervision repository.  If you hadn't noticed the slew of new files, take a look in /branches/Effects.  Its an API built into Papervision3D that I have been developing which allows developers to apply filters and other effects to their 3D objects.   I did a class on these techniques recently in NYC with John.  It seemed to go well and teach the main points of the API, so here is an online version of what was taught.

This demo involves a Borg cube collada - the finished source of which you can get here or at the end of this tutorial:

cube_noeffect.png

You will notice that there is absolutely nothing special about this cube to begin with.  It is simply a cube with a borg texture map applied to it.  So, to start with, we will apply generic flash filters to the cube.   To apply filters to the object, we need to create a new EffectLayer.  EffectLayers are simply glorified Sprites giving you the ability to add/remove filters to any objects drawn inside them.  Once we have created our EffectLayer - we add our filters to it and tell our objects which layer we want them to use. 

Creating a regular EffectLayer

To start with, we must first create an effect layer and add it to our viewport: 

Actionscript:
  1. var fx:EffectLayer = new EffectLayer();
  2. viewport.addRenderLayer(fx);

Once you have created the layer and added it to the viewport, you need to add the effects you wish to apply to it.  Regular effect layers are limited to having regular flash filters applied to the them.  You can apply these filters by passing them into the LayerEffect class.  You can add or remove each LayerEffect from the effect layer at anytime - making filter management seamless.  To add some effects to your effect layer:

Actionscript:
  1. fx.addEffect(new LayerEffect(new BlurFilter(12, 12, 2)));
  2. fx.addEffect(new LayerEffect(new GlowFilter()));

Once we have an effect layer with multiple effects passed to it, it still won't do anything to our scene.  We have to tell our objects to use the effect layer to render with.  This brings about a new property on both DisplayObject3D and MaterialObject3D - renderLayerrenderLayer tells the object what effect layer to draw too.   For this example, we simply need to get the material of the Borg cube and set its renderLayer to the new EffectLayer we have created:

Actionscript:
  1. dae.getMaterialByName("shipMaterial").renderLayer = fx;

NOW you can see that the effects attached to the effectlayer are being applied to the object.

cube_effectlayer.png

Although addding regular filters to our objects is fun - it doesn't really give you the ability to create *Effects*.  To create an effect you need access to the pixels within and around the object.  By having access to these pixels, you can apply filters, transforms, displacements - anything you want really - to your objects.  Fortunately Flash 8+ has the BitmapData class - which gives us direct access to pixel data.  To give Papervision developers this access, I created the BitmapEffectLayer.  It is similar in concept of the EffectLayer - but now, all objects which use the layer are drawn to a BitmapData object - and all filters are applied to those pixels.

Creating a BitmapEffectLayer

You add a BitmapEffectLayer to your viewport the same  you would a regular RenderLayer.  However, BitmapEffectLayers do take a few more parameters in their constructor:

  • width:int - width of the BitmapData to draw too
  • height:int - height of the BitmapData to draw too
  • transparent:Boolean - transparency flag of the BitmapData.  Default is true.
  • fillColor:int - ARGB color to fill BitmapData with initially.  Default is 0 - fully transparent/black.
  • clearMode:String - BitmapClearMode variable which specifies when to clear the drawLayer.  The drawLayer holds all rendered content, and is what is drawn to the BitmapData canvas.  Default is clear_pre - meaning you can see the drawLayer.
  • renderAbove:Boolean - Specifies if the drawLayer should above or below the canvas.  Default is true.
  • clearBeforeRender:Boolean - Specifies if the bitmapData should be cleared before each renderloop (reseting any effects applied previously).  Default is false.

For simplicity's sake, all you need to really specify for this example is the width and height:

Actionscript:
  1. var bfx:BitmapEffectLayer = new BitmapEffectLayer(stage.stageWidth, stage.stageHeight);
  2. viewport.addRenderLayer(bfx);

This creates a new BitmapEffectLayer with a BitmapData canvas the size of our stage.  For performance reasons these are not always the best values to use, but in this case it suffices. 

Once we have a BitmapEffectLayer, we need to add effects to it just like a regular EffectLayer.  For BitmapEffectLayers, however, we use the BitmapLayerEffect instead of the LayerEffect class to pass filters into.  For this demo, I simply add a BlurFilter to the layer:

Actionscript:
  1. bfx.addEffect(new BitmapLayerEffect(new BlurFilter(2, 2, 4)));

If you run the demo now, you will notice that there is a very slight blurry look behind our object.

cube_blureffect.png

The reason you can't see the effect at all is because our drawLayer is directly over the BitmapData canvas.  Remember, the drawLayer is the layer in which all our Papervision content is rendered - and it is, by default, above the canvas.  So, we either need to make the effect more pronounced or alter the drawLayer in some way.  I like seeing effects, so I want to make the effect more pronounced.  We can do this by changing how the drawLayer is drawn to the canvas.  BitmapEffectLayers have a property called drawCommand.  By assigning drawCommand a BitmapDrawCommand Object, we can alter how the drawLayer is drawn to our canvas.

BitmapDrawCommand takes a few parameters as well:

  • transMat:Matrix - a transform matrix to apply to our draw operation.  Default is null.
  • colorTransform:ColorTransform - a ColorTransform object which specifies how the color of our drawLayer will be altered when drawn to the canvas.  Default is null.
  • blendMode:BlendMode - the BlendMode applied to the drawLayer pixels as they are drawn onto the canvas.  Default is null.
  • smooth:Boolean - whether or not to smooth the pixels in the draw operation.  Default is null.

For this effect I decided to use BlendMode.ADD - giving a slowly brightining effect to the canvas. 

Actionscript:
  1. bfx.drawCommand = new BitmapDrawCommand(null, new ColorTransform(0.1, 1, 0.1, 0.25),BlendMode.ADD);

You can see in the ColorTransform that 10% of the red , 100% of the Green, 10% of the Blue, and 25% of the Alpha is being drawn to the canvas.  I do this to make sure our effect doesn't get too bright too fast. 

To finish off the effect, I decide to pull the effect off the canvas and blend the drawLayer into the canvas.  To "pull" the effect off the canvas, we can use the clippingPoint parameter of the BitmapEffectLayer.  clippingPoint is a Point object which specifies the top left of the canvas in which to apply the effect on.  By offsetting the clippingPoint, you can actually push or pull your effect across the canvas. 

Actionscript:
  1. bfx.clippingPoint = new Point(0, -4);
  2. bfx.drawLayer.blendMode = BlendMode.OVERLAY;

We now have a Borg cube spewing some sort of... vapor trail?  Maybe not the most practical example, but it does show off a good number of the tools available in the new API.  And now, you can create post-render effects directly onto/into your objects:

This movie requires Flash Player 9

This was just some of the basics of the effect layers API that you can use in your projects.  It is a pretty complex process, and I'm probably not the best writer - so if you have any questions just let me know (either in comments or on the list)! 

Get the source for this tutorial here.

Enjoy!


106 Comments, Comment or Ping

  1. niel

    Wow, thank´s a million…

    December 11th, 2007

  2. Sweet stuff !

    Is the branch in the same state as Greatwhite, and will it be up-to-date ?

    December 11th, 2007

  3. @FlashBookmarks – yes – this should be completely up to date with GreatWhite – and I will be maintaining the branch to stay that way. A few things are different just because in this branch, the effects are fully integrated.

    December 11th, 2007

  4. Caio Caprio

    Muito Bom.

    December 11th, 2007

  5. That is the coolest thing I’ve seen since waking up this morning. Thank you for this!

    December 11th, 2007

  6. sweetness! this is so simplistic its genius! thanx for posting andy… i cant wait to check this out.

    December 11th, 2007

  7. alberto

    that’s really great!!
    this gives PV3D a total new boost to create amzing stuff!!
    thanks for the code, I’ve tried to play a bit with it but I’m suddenly receiving the following error:

    +++OUTPUT+++
    Papervision3D Alpha 2.0 – Great White (21.11.07)

    DisplayObject3D: null
    DisplayObject3D: null
    TypeError: Error #1007: Instantiation attempted on a non-constructor.
    at BorgEffects/init3d()
    at flash.display::DisplayObjectContainer/addChild()
    at BorgEffects/init()
    at BorgEffects$iinit()

    ++++++

    Can’t actually figure out what’s that about since I’m just entering right now into PV3D thing!
    Thanks4the hints!!

    December 11th, 2007

  8. @alberto – I’m not sure what hte problem is – make sure you are using the Effects branch in your code. I just downloaded everything and ran it from scratch and it worked fine for me – so I’m not sure where to go from there. If you made changes to the source, send it my way and i’ll see if i can spot anything.

    December 11th, 2007

  9. Great tutorial, thanks! :D
    I was wondering – is there a way to apply effects to DisplayObject3D (and all its children with different materials)?
    MovieScene3D was removed in GreatWhite so I’m having a trouble with creating a container for each object.

    December 11th, 2007

  10. You can apply the effects using the methods described above. Simply create a new EffectLayer – add the filters you want, then set your renderLayer:

    Do3D.renderLayer = myEffectLayer;

    December 11th, 2007

  11. Excellent work, Andy. I always end up doing this manually. Love the way you have integrated it with PV3D.

    December 11th, 2007

  12. In the class in NYC, you could set the renderLayer to null (I assume for clearing an effect). It looks like with the latest merge with GreatWhite this throws an error.
    Looks like you now have to create a blank RenderLayer, something like:

    var emptyLayer:RenderLayer = new RenderLayer();
    viewport.addRenderLayer(emptyLayer);

    … and replace the null reference with the emptyLayer reference.

    Let me know if there’s another recommended way to do this.

    December 11th, 2007

  13. That’s so cool, thanks a lot Andy!

    @Alberto – probably you are not compiling in Flex. Then these embeds on lines 46-49 won’t work:

    [Embed(source="textures/bbattle.jpg")]
    public var shipImage:Class; [Embed(source="meshes/cube.DAE", mimeType="application/octet-stream")]
    public var shipAsset:Class;

    …so you will need to comment that and embed the files manually in your Flash library.

    December 11th, 2007

  14. @Mark – Download the latest revision – in the last merge with GreatWhite the defaultRenderLayer was no longer being set in the RSD object. You can now use null again :)

    December 11th, 2007

  15. I found a little error that will show errors at compile time on line 25 import org.papervision3d.core.render.BasicRenderEngine;
    it must say
    import org.papervision3d.render.BasicRenderEngine;

    BasicRender its on the render package not on the core.render package.

    December 11th, 2007

  16. genius!

    December 12th, 2007

  17. alberto

    @Bojil – absolutely right! Should have noticed it by the imports too..thanks so much!

    Btw this Effects branch rocks! Planning to develop some sort of xmas card based on it!
    Again u’ve done such a great work Andy!
    Keep rockn’ guys!

    December 12th, 2007

  18. trying to get this to compile with a fresh install of pv3d, i keep getting error 1020: Method marked override must override another method.

    Stems from InteractiveMovieMaterial.as – override public function drawFace3D() ….

    December 12th, 2007

  19. If you are using InteractiveMovieMaterial that means you are using an old revision of Papervision. Make sure you are using the revision of the Effects branch.

    December 12th, 2007

  20. Kenny

    Andy, I just checked out ~trunk/branches/GreatWhite/. It doesn’t have your new files in there. Can you confirm?

    December 12th, 2007

  21. The effects have their own branch in /branches/Effects :)

    December 12th, 2007

  22. Kenny

    Bingo. Thanks Andy. Great stuff on the effects btw.

    December 13th, 2007

  23. Hi guys, i love how good PV2.0 and the new effects branch is going.

    I have 1 question, Im right now building our website using PV2.0 and i wanted to try the effects but it looks like it doesnt recognize de materialList on the collada

    Have anyone ever import succesfully using the Collada() not DAE() with the effects branch? if the answer is yes can you give me some help?

    josecardona@gmail.com

    December 13th, 2007

  24. HI i’m totally new to papervision I started using it less than a month ago, I got a little used to the renderCamera function in version 1.5 but it doesn’t seem to exist in 2.0. Could you please tell me what has replaced it. Thank you

    December 13th, 2007

  25. jadd

    Hi,
    I’m on revision 371 and viewport.addRenderLayer method doesn’t exists. I did something wrong? Ciao.

    December 14th, 2007

  26. @andy – I have a problem with applying effects to objects instead of materials. In your BorgCube demo, both fx and bfx work fine. But when I replace
    dae.getMaterialByName(“shipMaterial”).renderLayer = bfx;
    with
    dae.renderLayer = fx;
    the cube is displayed without any effect.
    Any suggestions, please?

    December 14th, 2007

  27. @jadd – make sure you use the Effects branch – not GreatWhite

    December 14th, 2007

  28. @jarnik – the problem is that you have to apply the renderLayer to the object that is the immediate parent of the material. dae is the parent of the parent, so you will need to call the child of the dae that actually has the material in it.

    December 14th, 2007

  29. jadd

    @andy – Yes now I understand, if I use Effects as a source path it’s ok. But usually I use an SWC file from a Flex library project.
    Thank.

    December 14th, 2007

  30. Hi andy
    Got everything downloaded, am using the right branch, and have all the files in the right folders. However, in the flash CS3 Output window I’m getting this error:

    TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at BorgEffects/init()
    at BorgEffects()
    at BorgCube_fla::MainTimeline/frame1()

    You have anyideas?
    I love this work and would love to use these classes in my work.

    December 15th, 2007

  31. This project was written as a Flex actionscript project. You will need to add the texture into your .fla library and load the .dae using traditional loading methods since CS3 doesn’t embed :) .

    hth!

    December 16th, 2007

  32. For those of us still using the flash IDE, what are the aforementioned traditional loading methods for loading the .dae?

    December 16th, 2007

  33. kay

    thanks for this tut. very simple and hot stuff :)

    December 21st, 2007

  34. Newbies like me. :D

    Put Branches Effects up Branches GreatWhite. control + c and control + v, yes to all. really yes…

    The files you could use to flash is [url="http://orlleite.googlepages.com/borgEffects.zip"]this[/url]

    The big difference between this version and original vesion in post is the xml import.

    This use runtime load (URLResquest), that use compile load ([Embed ...]).

    I don’t know how to do xml compile load in flash.

    Thanks andy! Awesome!

    December 26th, 2007

  35. Raed

    Hello Andy,
    quick question about using the Borg example. i want to replace the DAE cube with a pv3d cube from the primitive objects. thats what i have done

    dae = new Cube(mats,100,100,100);
    var root: DisplayObject3D = new DisplayObject3D(); root.addChild(dae, “Cube”);
    scene.addChild(root);

    root.renderLayer = bfx;

    The borg example works fine for me, but theses changes in the code render NOTHING
    any thoughts? thanks!!!!

    December 29th, 2007

  36. @Raed – Currently, you can set the renderLayer property of the object that directly contains material you want to have the effect applied too. Hopefully I’ll be able to figure out a workaround with little overhead, but haven’t had time up to this point :)

    December 29th, 2007

  37. Hi Andy,

    The new effects are killer, nice job!

    Just wanted to let you know I made a version of your borgEffects for the flash ide and posted it on my site for the people having troubles with Flex to Flash .as files: http://www.jdavidcurry.com/2007/12/29/papervision-20-borgeffects-flash-version/

    Keep up the incredible work. Can’t wait to see what’s next!

    December 29th, 2007

  38. @Dave – That rocks Dave! Thanks alot for doing that – I’ve been doing everything pure actionscript but do realize thats not how everyone (or even most?) do it. Everyone using the IDE be sure to check it out!

    December 29th, 2007

  39. Raed

    Andy,
    does this mean i can effects to primitive objects?

    I think there is a problem, not with rendering the effects, but also with rendering displayobject3d.

    am i talking about the wrong thing?
    we all need to understand the display architecture! :)

    thannks again

    December 30th, 2007

  40. You can add effects to any do3d which is the direct parent of the triangle3d’s (materials) you wish to apply the effect on. So yes, all primitives work with the effects. Dae’s work with the effects if you set the renderLayer of the child object that actually contains the faces. The other alternative is you can set the renderLayer property to the material itself (material.renderLayer = bfx). Then, anything can be rendered to an effect layer.

    December 30th, 2007

  41. I’d like to add for those who are trying to add effects to a regular ColorMaterial or WireframeMaterial that you must use the new BitmapColorMaterial and BitmapWireframeMaterial.

    January 4th, 2008

  42. Raed

    Andy, thanks for your help.
    It works fine. I can add effects to any material, materials in a list, etc…
    what about the BitmapViewport3D class? I am trying to make some Mr Doob shadow examples to work, if you happen to have an idea of what i am referencing.

    any thoughts!
    thanks again

    January 7th, 2008

  43. Andy, thanks for the great work! I’m having some problems with the most recent version of Effect though, every time I compile I get various 1023: Incompatible override errors. I am trying compile Dave Curry’s Flash IDE verison of your borg effect. The output says its in Camera3D.as, Line 130.

    Any Idea what might be happening?
    Thanks again!

    January 10th, 2008

  44. M&T

    Having problems creating a flex library with the Effects branch source code using Flex3. There seems to be so many errors.
    Have tried various versions of the effects branch from the svn repository.
    Is anyone else having probs getting the effects branch to work with Flex 3? GreatWhite works fine but every time I try and build a library with the Effects branch I get package errors and missing classes no swc file and the BorgEffects.as doesn’t build.
    Has anyone got a working version of the Effects branch for Flex3?

    January 21st, 2008

  45. This demo was built using Flex 3 – and the branch should work fine with it (its what i use). Feel free to send me the errors you are getting and i’ll see if i can figure out whats wrong. It sounds like you might be missing the flex SDK swc’s – as those are the only swcs needed.

    azupko@zupko.info

    January 21st, 2008

  46. M&T

    Managed to get it working sent you an email of the issues I had
    Cheers

    January 23rd, 2008

  47. milo

    Wow! I am really impressed. This will help much.

    February 5th, 2008

  48. Xpectral

    Hi andy, i just instaled a new and fresh version of papervision, and i added the class paths to Flash CS3 (in following order, papervision,effects,greatwhite) when i try to compile and run your effect i allways gets the following error from compiler:

    1020: Method marked override must override another method.

    in

    override public function drawTriangle(face3D:Triangle3D, graphics:Graphics, renderSessionData:RenderSessionData, altBitmap:BitmapData = null, altUV:Matrix=null):void

    from the class TriangleMaterial.as

    And i am not able to run it.

    February 20th, 2008

  49. Hi andy, i’m using effects branch, also cos i saw that most svn-updates are related to that branch.

    I got several cubes in space and i’m to use EffectLayer to handle camera-blur, should i use more then one layereffect(one for every object) or i’m on the wrong way ?

    Thank u for nice stuff :)

    February 20th, 2008

  50. @xpectral – i would make sure yo uhave the newest revision of all the code – i’m not sure what would be causing that problem.

    @hierro – You can use as many effect layers as you want. i have a demo running about 90 with blurs and glows applied (about 600 planes total) and it runs fine. To minimize filter use, you could use several planes to represent different thresholds of blur. Alot just depends on what you are wanting to do.

    hth!

    February 20th, 2008

  51. Hello, and thanks for reply, anyway i didn’t get usage of planes, since i’m using dae objects, btw, i’ll add renderlayers.

    I add something, maybe a bug, hope will helps :

    I’m using a DAE smooth cube model, with two materials, but i can’t apply a gouraud or phong material on just one material, i have a crash at this line of material class > drawTriangle function >

    var p0:Number = (face3D.v0.normal.x * lightMatrix.n31 + face3D.v0.normal.y * lightMatrix.n32 + face3D.v0.normal.z * lightMatrix.n33)*255

    :)

    February 20th, 2008

  52. Btw, i’m bulding up a class to manage camera blur on objects, let me understand, if i got the effetcs usage :

    - I can apply effects on materials, not on objects
    - I need to instantiate a different material for every object in order to manage it’s blur value
    - I need to remove and add the same blur filter in order to modify the resulting blur on material ?

    Hope i didn’t get it right :)

    February 21st, 2008

  53. @hierro -

    1) Objects have renderLayer property as well. Material has precedence, so if you set the renderLayer for an object to one layer, and its material to another, the materials layer wins out.

    2)If you use the same material, set the renderLayer property of the object, not the material. Then you should be able to reuse.

    3) You can access the blurX/blurY properties of the filter and change them at runtime without adding/removing. Just do something like:

    BlurFilter(efx.filters[0]).blurX = 20;

    hth.

    February 21st, 2008

  54. you can also use the LayerEffect.getEffect() function to return the filter it is using. ie:

    BlurFilter(myEffect.getEffect()).blurX = 20;

    February 21st, 2008

  55. thank u that’s cleaner :) gonna modify stuff, anyway, i couldn’t get the effects on object yet :)

    Just curiosity , wasn’t previded a system to add cameraBlur ?

    hey tks a lot and compliments.

    February 21st, 2008

  56. btwm using this, i can just read, not write

    BlurFilter(effectLayer.filters[0]).blurX=30

    February 21st, 2008

  57. Andy:

    Do you know why if I set the bfx.clippingPoint to (0,1), (0,2), (0,3) nothing is rendered ? How can I do to show the same effect as the cube in the sample but instead of going up, going down, but with lesser values than 4 ?

    February 21st, 2008

  58. @Martin –

    You can use different values, but alot depends on the amount of fade/blur etc for it to be visible. Also, in the newest rev of effects branch, you dont need to use clipping point – you can just use bfx.setScroll(x,y);

    February 21st, 2008

  59. amazing stuff, really useful, but i’ve been struggling a lot getting effects applied on dae objects instead of on materials – as far as i get it, i need to apply the effect to the geometry, which is a child of a child of the dae object.. i am trying out

    myCollada.getChildByName(“My3DObject”).getChildGeometry(“My3DObject-Geometry”)

    to access the geometry to no avail :( any feedback on applying a filter to a single-child dae object would be truly appreciated! thanx a bunch :)

    February 27th, 2008

  60. got it going, sorry to bother – was trying to access the object before it was created, put it in an Event.COMPLETE listener and it worked ;)

    February 28th, 2008

  61. Ultraniblet

    Hi Andy,
    great work and tutorial, really fun to play with. I was having one problem with effects layer getting z-sorted to back:
    http://internettt.com/monome/test2.swf
    (click drag to move)
    wireframe is at test.swf
    Is there anything I can do?
    Thanks a lot, looking forward to the book :)

    March 4th, 2008

  62. Since your effect never goes behind your cube, you can set it to use index sort:

    viewport.renderLayerManager.sortMode = RenderLayerSortMode.INDEX_SORT;

    bfx.renderLayer.layerIndex = -100; //negative means closer to the camera

    hth!

    March 4th, 2008

  63. emmy

    Hi andy,

    I’m a newcomer, n i dont understand
    that is this done in flash? i downloaded the file, but it’s a action script file. how to play that? plz help!

    March 19th, 2008

  64. Jacob

    hi Andy,
    I have a wall of images. the wall holds images that are planes. When I filter them, I want to blur those that do not belong to the particular category and also move them back in z axie. I created an effectlayer with the blur filter for each image and when I apply the filter, the blurred images are being rendered on top of the normal even though they are supposed to be behind them. is there a way to make sure they are going to stay behind ?

    March 22nd, 2008

  65. @Jacob – You can use index sort to keep the layer behind. Something like:

    viewport.renderLayerManager.sortMode = RenderLayerSortMode.INDEX_SORT;

    blurLayer.layerIndex = 100;

    This will set the viewport to use index sorting of the layers, and then setting the layerIndex of your layer will keep it behind the default layer which has an index of 1.

    hth

    March 22nd, 2008

  66. Pablo

    greate stuff! =D

    March 23rd, 2008

  67. Bok

    Hi andy,

    the effect api is really great stuff! I was trying to render the same scene using a different camera and a different view port to create an alternative view but I realize that I cannot add the same effect layer to both viewports. Basically the viewport that is last to add the effect layer will be able to render the material that has its renderLayer set to the effect layer correctly. Is there a way to ensure that both viewports are able to render the effects correctly?

    March 23rd, 2008

  68. @Bok –

    Currently the effects branch doesn’t support the same layer on multiple viewports. That issue will be resolved when the two branches are merged, which should be relatively soon. There will be some other changes in the API to allow this to happen, but the same feature set will be available to you (plus more). Currently, there isn’t an “easy” way to make sure all viewports render the layer correctly – your best bet would be to create layers relative to each viewport and swap the objects renderLayer before you render the next viewport. Thats a huge hack though, so only do that if you really need both layering and multiple viewports. Stay tuned for the new features though.

    hth!

    March 23rd, 2008

  69. Bok

    Hi andy,

    Thanks for clearing that up for me! I will try out the solution that you have provided and see how it goes :) Can’t wait for the two branches to merge!

    March 25th, 2008

  70. I’m getting an error from papervision’s DAE class, on line 61. (which is the constructor)

    1044: Interface method get fps in namespace org.papervision3d.core.animation:IAnimationDataProvider not implemented by class org.papervision3d.objects.parsers:DAE.

    March 28th, 2008

  71. Fade LayerEffect?

    Great post!
    Is there a way to create an LayerEffect that would be equivalent to reduce the alpha? (I use a plane, it seems i can only change it’s container alpha)

    May 16th, 2008

  72. Nicky

    Hello, Andy, and thousands of thanks.
    I’ve achieved! Again thanks!
    Andy, do you know whether there was any way to beat one of the walls of a cube. Dae a menu located in a MovieClip in the library (for example) and operate with him, or total interactivity?(a .dae or .ase,not primitives)
    Thanks again for the example and good luck!

    June 10th, 2008

  73. Peter

    Since the merge with the GreatWhite branch there seems to be a change in the API. I’m trying to figure out how to add the BitmapEffectLayer to the material but I can’t get it working. Could someone please help me out with an updated version of this example?

    July 17th, 2008

  74. mib

    It’s really cool

    July 22nd, 2008

  75. William

    import org.papervision3d.core.layers.EffectLayer; doesnt exist in the newest integrated GreatWhite – can anyone tell me an alternative for this import?

    August 17th, 2008

  76. aditya

    hi

    i dont find this branch anywhere in googl repository.
    please help

    April 17th, 2009

  77. qwqwq

    Hello, i found a new site full of unique web design templates.

    May 26th, 2009

  78. cool~~THX~~

    June 16th, 2009

  79. John

    The imports are incorrect in the posted code. Does anyone know what the correct paths are?

    August 11th, 2009

  80. John

    Okay, the Effects branch is gone:

    http://mrbinitie.blogspot.com/2008/07/papervision3d-greatwhite-swallows.html

    So this tutorial should be rewritten or taken down.

    August 11th, 2009

  81. Andy,
    Seeing as how there do not seem to be any render layers in the most recent Papervision, is there an equivelent to what you did above? It is really nice.

    September 24th, 2009

  82. Scott

    Great links, thanks!

    September 25th, 2009

  83. Dude you rock. Thanks!

    December 13th, 2009

  84. Ryan W

    is there a way to remove all children do3D’s at the same time.

    July 13th, 2010

  85. John

    Hi Andy, I think many people like me try download your branch GreatWhite but it’s REALLY impossible find anywhere even on google code. You decided to delete it or sell it??

    August 26th, 2010

  86. I really like Papervision, but I’m not quite sure if Away3d might be that much better!?

    December 15th, 2011

  1. josudia — brainoutsourcing - December 16, 2007

Reply to “Papervision 2.0 Effects Tutorial”