Sliced Plane

Sunday, April 5th, 2009 | examples


source

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
package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.events.Event;
	import flash.geom.Point;
	import flash.geom.Rectangle;
 
	import org.papervision3d.core.proto.MaterialObject3D;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;
 
	[SWF(width="900", height="480", backgroundColor="#000000", frameRate="31")]
	public class SlicedPlane 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 static const NUM_SLICES:int = 30;
 
		private var planeContainer:DisplayObject3D = new DisplayObject3D();
 
		public function SlicedPlane()
		{
			super(900, 480);
			opaqueBackground = 0x000000;
			camera.focus = 100;
			camera.zoom = 10;
 
			var bannerBitmap:Bitmap = new bannerAsset() as Bitmap;
 
			for(var i:int = 0; i < NUM_SLICES; i++)
			{
				var slice:BitmapData = new BitmapData(IMAGE_WIDTH / NUM_SLICES, IMAGE_HEIGHT);
				var sourceRectangle:Rectangle = new Rectangle(i * IMAGE_WIDTH / NUM_SLICES, 0, IMAGE_WIDTH / NUM_SLICES, IMAGE_HEIGHT);
				slice.copyPixels(bannerBitmap.bitmapData, sourceRectangle, new Point(0, 0));
 
				var material:MaterialObject3D = new BitmapMaterial(slice);
				material.doubleSided = true;
				var plane:Plane = new Plane(material);
				plane.x = i * IMAGE_WIDTH / NUM_SLICES - IMAGE_WIDTH / 2;
				plane.rotationX = 360 / NUM_SLICES * i;
 
				planeContainer.addChild(plane);
			}
 
			scene.addChild(planeContainer);
 
			startRendering();
		}
 
		override protected function onRenderTick(event:Event=null):void
		{
			planeContainer.rotationX += 2;
			super.onRenderTick(event);
		}
	}
}

Tags: , ,

  • http://www.efflex.org/orgefflexmxviewstackeffec...

    might be of interest if your using Flex
  • joe
    Why is every papervision example or source code only works in flex. I mean really.
  • andre bouchard
    nice ... it remind me of an experimentation i did a few months ago.
    http://generationflash.com/lab/wiw/

    Maybe i should go back to it and try to correct the framerate drop issue!
  • sungo
    cool 3q
    song.yin ha~you say chinese they can't understand^_^
  • Hendrik
    Cool effect. Thnx for sharing!
  • 很好的例子,谢谢!
  • I like
  • JB
    Arrrg and there was me messing with UVs to do the same. Nice one.
  • Thanks for sharing JL, in fact it’s a pretty neat and clever technique, instead of animating the planes 1 by 1, you group them together and rotate the bigger container, giving an illusion of all of it are moving on its own. Kudos
  • Jim
    Wow! Is there any other word for it?
blog comments powered by Disqus

Search

Recommended Books

Speaking at FITC Toronto

Recent Comments

 

April 2009
M T W T F S S
« Mar   May »
 12345
6789101112
13141516171819
20212223242526
27282930  

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

Loading ... Loading ...