Archive for July 3rd, 2009

MorphController – Mighty Morphing Papervision3D

Friday, July 3rd, 2009 | examples | Comments

I’ll do an in-depth tutorial on the MorphController later. I just wanted to get this up before I go to sleep.


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
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
102
package {
	import flash.events.Event;
 
	import gs.TweenMax;
	import gs.easing.Elastic;
 
	import org.papervision3d.core.controller.MorphController;
	import org.papervision3d.core.geom.TriangleMesh3D;
	import org.papervision3d.events.FileLoadEvent;
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.shadematerials.EnvMapMaterial;
	import org.papervision3d.objects.parsers.DAE;
	import org.papervision3d.view.BasicView;
 
	[SWF(width="900", height="480", backgroundColor="#000000", frameRate="31")]
	public class MightyMorphingPapervision3D extends BasicView
	{
		[Embed(source="assets/cached.dae", mimeType="application/octet-stream")]
		private var cachedAsset:Class; 
 
		[Embed(source="assets/twisty.dae", mimeType="application/octet-stream")]
		private var twistyAsset:Class; 
 
		[Embed(source="assets/235.jpg")]
		private var textureAsset:Class; 
 
 
		private var cached:DAE = new DAE(); 
		private var twisty:DAE = new DAE(); 
 
		private var dummyMorph:TriangleMesh3D;
		private var cachedChild:TriangleMesh3D;
		private var twistyChild:TriangleMesh3D;
 
		private var morphController:MorphController;
 
		private var light:PointLight3D;
		private var tweenDummy:Object;
 
		public function MightyMorphingPapervision3D()
		{
			super(900, 480);
 
			cached.addEventListener(FileLoadEvent.LOAD_COMPLETE, cached_loadCompleteHandler);
			cached.load(new cachedAsset());
		}
 
		protected function cached_loadCompleteHandler(event:Event):void
		{
			twisty.addEventListener(FileLoadEvent.LOAD_COMPLETE, twisty_loadCompleteHandler);
			twisty.load(new twistyAsset());
		} 
 
		protected function twisty_loadCompleteHandler(event:Event):void
		{
			cached.scale = 50;
			twisty.scale = 50;
 
			cachedChild = cached.getChildByName("pSphere1", true) as TriangleMesh3D;
			twistyChild = twisty.getChildByName("pSphere1", true) as TriangleMesh3D;
 
			dummyMorph = cachedChild.clone() as TriangleMesh3D;
			dummyMorph.scale = 50;
 
			light = new PointLight3D();
			light.x = -1000;
			light.y = 1000;
			var material:EnvMapMaterial = new EnvMapMaterial(light, new textureAsset().bitmapData);
 
			cachedChild.material = material;
			twistyChild.material = material;
			dummyMorph.material = material;
 
			morphController = new MorphController(dummyMorph);
			morphController.addMorphTarget(cachedChild, 0);
			morphController.addMorphTarget(twistyChild, 1);
 
			scene.addChild(dummyMorph);
 
			startRendering();	
 
			tweenDummy = {};
			tweenDummy.dummyProp = 0;
			TweenMax.to(tweenDummy, 1, {dummyProp:1, ease:Elastic.easeInOut, loop:true, yoyo:true});
		}
 
		override protected function onRenderTick(event:Event=null):void
		{
			dummyMorph.rotationX += 1;
			dummyMorph.rotationY += .5;
 
			morphController.weights[0] = 1- tweenDummy.dummyProp;
			morphController.weights[1] = tweenDummy.dummyProp;
 
			morphController.update();
 
			light.x = Math.cos(dummyMorph.rotationY / 10) * 1000;
 
			super.onRenderTick(event);
		}
	}
}

Tags: , ,

Search

Recommended Books

Speaking at FITC Toronto

 

July 2009
M T W T F S S
« Jun   Aug »
 12345
6789101112
13141516171819
20212223242526
2728293031  

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 ...