Saqoosha’s “hole” Effect
Friday, April 10th, 2009so after much searching and still not finding what i’m really looking for wich is the recipe to capture bitmapdata off the marker.rect or something along those lines, i tackled “the virtual hole” with the samples from Saqoosha’s site and a little hacking away of useless code i made it work. Woo!
and the code that got me here.
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.display.StageQuality;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.filters.ColorMatrixFilter;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.core.math.Matrix3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.render.*;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.view.stats.StatsView;
import org.papervision3d.materials.MovieAssetMaterial;
import org.papervision3d.materials.*;
import org.papervision3d.materials.BitmapAssetMaterial;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.BitmapMaterial;
import org.papervision3d.materials.special.*;
import org.papervision3d.materials.shaders.*;
import org.papervision3d.materials.shadematerials.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.objects.special.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.objects.parsers.DAE;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.materials.BitmapMaterial;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.utils.BitmapMaterialTools;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.view.BasicView;
[Embed(source='../assets/bg.png')]
var bgTextureClass:Class;
[Embed(source='../assets/cube-side.png')]
var cubeSideTextureClass:Class;
[Embed(source='../assets/cube-bottom.png')]
var cubeBottomTextureClass:Class;
var _green:Cube;
var sp:Sprite = new Sprite();
addChild(sp);
var viewport:Viewport3D = new Viewport3D( 960, 720, true, true, true, true );
sp.addChild(viewport);
viewport.buttonMode = false;
var renderer:BasicRenderEngine = new BasicRenderEngine();
var scene:Scene3D = new Scene3D();
var camera:Camera3D = new Camera3D();
camera.zoom = 11;
camera.focus = 100;
var cmats:BitmapMaterial = BitmapMaterialTools.createBitmapMaterial(cubeSideTextureClass);
var cmatb:BitmapMaterial = BitmapMaterialTools.createBitmapMaterial(cubeBottomTextureClass);
var hole:Cube = this.scene.addChild(new Cube(new MaterialsList({all: cmats, bottom: cmatb}), 300, 300, 300, 1, 1, 1, Cube.ALL, Cube.TOP)) as Cube;
this._green = this.scene.addChild(new Cube(new MaterialsList({all: new ColorMaterial(0x00ff00)}), 300, 300, 300, 1, 1, 1, 0, Cube.TOP)) as Cube;
hole.y = this._green.y = -150;
this.filters = [
new ColorMatrixFilter([
1, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
1, -1, 1, 1, 0
])
];
this.addEventListener(Event.ENTER_FRAME, this._update);
function _update(e:Event):void {
renderer.renderScene(scene, camera, viewport);
camera.orbit(this.stage.mouseY / 600 * 90, this.stage.mouseX / 800 * 180);
}
You’ll need to find the newyears source on saqooshas blog for the .png’s but theyre just a grey-white gradient. could be generated on the spot.
