Title: Torus Tweener
Tweening to position of planes set using vertices of a Torus. Uses BasicView - revision 702 - also uses Tweener and Torus - idea of tweening between vertices positions of different objects came from a mrdoob example.
Actionscript:
-
/**
-
* v0.1 code by dehash.com 2008
-
* Released as open source under the BSD License
-
* http://www.opensource.org/licenses/bsd-license.php
-
*/
-
-
package com.dehash.pv3d.examples.positioning {
-
import org.papervision3d.objects.DisplayObject3D;
-
import org.papervision3d.objects.primitives.Plane;
-
import org.papervision3d.materials.BitmapMaterial;
-
import org.papervision3d.view.BasicView;
-
import flash.display.Bitmap;
-
import flash.events.Event;
-
// from http://code.google.com/p/tweener/
-
import caurina.transitions.Tweener;
-
// from http://www.topflashers.com/torus/src/pv3d.torus.zip
-
import com.topflashers.ext.pv3d.objects.primitives.Torus;
-
-
[SWF(width="800", height="600", backgroundColor="0x000000")]
-
-
public class TorusTweener extends BasicView {
-
[Embed(source = '../assets/sphere.png')]
-
private var SphereImage:Class;
-
private var world:DisplayObject3D;
-
-
public function TorusTweener(viewportWidth:Number = 800,
-
viewportHeight:Number = 600, scaleToStage:Boolean=true,
-
interactive:Boolean=false, cameraType:String="CAMERA3D") {
-
super(viewportWidth, viewportHeight, scaleToStage,
-
interactive, cameraType);
-
-
world = new DisplayObject3D();
-
camera.target = world;
-
-
var bitmapMaterial:BitmapMaterial =
-
new BitmapMaterial(Bitmap(new SphereImage()).bitmapData);
-
bitmapMaterial.doubleSided = true;
-
-
var t:Torus = new Torus(null, 450, 250, 12, 12);
-
var p:Plane = new Plane(null, 700, 10, 14, 14);
-
-
for ( var i:int = 0; i <t.geometry.vertices.length; i++) {
-
var plane:Plane = new Plane( bitmapMaterial, 50, 50 );
-
plane.lookAt(camera);
-
plane.x = p.geometry.vertices[i].x;
-
plane.y = p.geometry.vertices[i].y;
-
plane.z = p.geometry.vertices[i].z;
-
-
Tweener.addTween(plane, {
-
x: t.geometry.vertices[i].x,
-
y: t.geometry.vertices[i].y,
-
z: t.geometry.vertices[i].z,
-
rotationX: 360*6,
-
rotationY: 360*6,
-
rotationZ: 360*6,
-
time: 2*((i + 1)/10),
-
delay: 3,
-
transition: "easeInOutElastic"
-
});
-
-
world.addChild(plane);
-
}
-
-
scene.addChild(world);
-
startRendering();
-
}
-
-
protected override function onRenderTick(event:Event = null):void {
-
camera.x -= (camera.x - Math.sin(mouseX*0.01)*1200) /8;
-
camera.z -= (camera.z - Math.cos(mouseX*0.01)*1200) /8;
-
camera.y -= (camera.y - viewport.containerSprite.mouseY * 5) / 8;
-
renderer.renderScene(scene, camera, viewport);
-
}
-
-
}
-
}