Archive for May, 2009
Moving a Texture inside of a Plane
This examples shows how to update the uvs on a plane which results in an image scrolling vertically on the plane. As you can see from the code, we’re only updating the v’s. If you want the image to move hortizontally, try swapping the v’s with u’s
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | package { import flash.display.Bitmap; import flash.events.Event; import org.papervision3d.core.geom.renderables.Triangle3D; import org.papervision3d.core.proto.MaterialObject3D; import org.papervision3d.materials.BitmapMaterial; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.view.BasicView; [SWF(width="900", height="480", backgroundColor="#000000", frameRate="31")] public class MovingATexture extends BasicView { [Embed(source="assets/image.jpg")] private var bannerAsset:Class; private static const IMAGE_WIDTH:Number = 900; private static const IMAGE_HEIGHT:Number = 480; private var plane:Plane; public function MovingATexture() { super(900, 480); opaqueBackground = 0x000000; var bitmap:Bitmap = new bannerAsset() as Bitmap; var bitmapMaterial:MaterialObject3D = new BitmapMaterial(bitmap.bitmapData, true); bitmapMaterial.doubleSided = true; bitmapMaterial.tiled = true; plane = new Plane(bitmapMaterial); scene.addChild(plane); startRendering(); } override protected function onRenderTick(event:Event=null):void { plane.yaw(1); for each(var triangle3D:Triangle3D in plane.geometry.faces) { triangle3D.uv0.v += .01; triangle3D.uv1.v += .01; triangle3D.uv2.v += .01; } BitmapMaterial(plane.material).resetUVS(); super.onRenderTick(event); } } } |
The Spotlight Effect (Dimming the unselected)
Sorry for the long bout of blogging silence. I’m still trying to get used to my new traveling schedule.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.utils.Dictionary; import gs.TweenMax; import gs.plugins.ColorMatrixFilterPlugin; import gs.plugins.RemoveTintPlugin; import gs.plugins.TintPlugin; import gs.plugins.TweenPlugin; [SWF(width="400", height="400", backgroundColor="0x000000", frameRate="30")] public class Spotlight extends Sprite { private static const CIRCLE_RADIUS:Number = 10; private static const COLUMN_MAX:uint = 10; private static const ROW_MAX:uint = 10; private static const COLUMN_SPACING:Number = 20; private static const ROW_SPACING:Number = 20; private static const PADDING_X:Number = 110; private static const PADDING_Y:Number = 110; private var spotlightDict:Dictionary = new Dictionary(); private var sprites:Array = []; private var isSpotlit:Boolean = false; public function Spotlight() { //@see http://blog.greensock.com/v11Beta/ TweenPlugin.activate([ColorMatrixFilterPlugin]); var total:uint = COLUMN_MAX * ROW_MAX; for(var i:int = 0; i < total; i++) { var sprite:Sprite = new Sprite(); with(sprite.graphics) { beginFill(0xcc0000); drawCircle(0, 0, CIRCLE_RADIUS); endFill(); } sprite.x = COLUMN_SPACING * (i % COLUMN_MAX) + PADDING_X; sprite.y = ROW_SPACING * Math.floor(i / ROW_MAX) + PADDING_Y; addChild(sprite); sprites.push(sprite); sprite.addEventListener(MouseEvent.MOUSE_OVER, sprite_mouseOverHandler); } stage.addEventListener(MouseEvent.CLICK, stage_clickHandler); } protected function sprite_mouseOverHandler(event:MouseEvent):void { var sprite:Sprite = event.target as Sprite; var highlight:TweenMax = new TweenMax(sprite, 0, {colorMatrixFilter:{colorize:0xffffff, brightness: 5}}); spotlightDict[sprite] = true; } protected function stage_clickHandler(event:MouseEvent):void { if(isSpotlit) { clear(); } else { dimUnselected(); } isSpotlit = !isSpotlit; } protected function clear():void { for each(var sprite:Sprite in sprites) { TweenMax.to(sprite, 0, {colorMatrixFilter:{colorize:0x000000, amount:0}}); delete spotlightDict[sprite]; } } protected function dimUnselected():void { for each(var sprite:Sprite in sprites) { if(!spotlightDict[sprite]) { TweenMax.to(sprite, .5, {colorMatrixFilter:{colorize:0x000000, amount:0.7}}); } } } } } |
Search
Recommended Books
Speaking at FITC Toronto
Recent Posts
- Moving to johnlindquist.com
- AsyncCommand with Robotlegs, Signals, Flight, MinimalComps
- Search Widget – Robotlegs, Signals, Flight, Minimal Comps, Yahoo Astra
- FDT Super Awesome March Deal
- haXe Tutorial
- AS3 Signals Tutorial
- Preferred Video Tutorial Resolution?
- TweenMax – Tweening a timeline (Advanced Tweening)
- Robotlegs + Flight + Union Platform
- Back in the saddle
- Eclipse Theme Designer Preview
- RobotLegs Hello World Video Tutorial
- 10 Things Every Senior Flash Developer Should Know
- Efflex – 3D Effects for Flex
- MorphController – Mighty Morphing Papervision3D
Recent Comments
- شقق للبيع في الاردن on Moving to johnlindquist.com
- Annakhan006 on Augmented Reality – Recursive Webcam
- Yarout on Augmented Reality – Recursive Webcam
- Vivon on about
- Josh @ Wall Stickers on Moving to johnlindquist.com
- list of lpn courses on SpringCamera3D and Driving a Car
- rn to bsn in montgomery al on archive
- PowerPoint Recovery on Eclipse Theme Designer Preview
- cheat mw3 on Test if a plane is within the view of the camera (aka testing if culled)
- Goa Hotels on Looking around the inside of a Sphere
Categories
Archives
Preferred Video Tutorial Resolution
- 1024x768 (53%, 85 Votes)
- 1280x1024 (15%, 24 Votes)
- 1920x1080 (15%, 24 Votes)
- 800x600 (13%, 20 Votes)
- 480x320 (4%, 6 Votes)
- 640x480 (0%, 2 Votes)
Total Voters: 160



