Hi everyone.
First of all, I am new to Papervision and I just got the sources from
svn. I found different links for the svn repository:
http://svn1.cvsdude.com/osflash/papervision3dhttp://papervision3d.googlecode.com/svn/trunkThe second one contains many dirs that seem to be the good one for my classpaths:
as3\trunk\src\
branches\Effects\src\
branches\GreatWhite\src\
I'm a bit confused... :(
Now I'm using the "branches\GreatWhite\src\" classpath, which seems to work for simple tests. I've been able to create a sphere with a collada object as a child, but I can't figure out how to make the collada interactive to mouse click.
Look at the following code...
package {
import flash.display.InteractiveObject;
import flash.events.MouseEvent;
import flash.filters.GlowFilter;
import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.objects.primitives.Cone;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.parsers.Collada;
public class Main extends PaperBase {
// vars
public var cone:Cone = new Cone();
public var sphere:Sphere = new Sphere(
new BitmapFileMaterial("library/earth2.jpg"),
200,
30,
30
);
public var cow:DisplayObject3D;
// const
// events
// getter setter
// constructor
public function Main() {
init();
}
// public
// override
override protected function init3d():void {
sphere.scale = 1; // Make the cone bigger
default_scene.addChild(sphere); // Add it to the scene
viewport.filters = [new GlowFilter(0x000000, 1, 10, 10, 4, 5)];
sphere.material.smooth = true;
sphere.scaleY = .93;
sphere.pitch( -15);
default_camera.zoom = 12;
__createCow();
}
private function __createCow():void {
cow = new
Collada("
http://papervision2.com/wp-content/downloads/dae/cow.dae");
cow.scale = .2;
cow.x = 128;
cow.y = 153;
cow.lookAt(sphere);
cow.addEventListener(FileLoadEvent.COLLADA_MATERIALS_DONE,
__cowLoaded);
cow.pitch(-90);
sphere.addChild(cow);
}
private function __cowLoaded(evt:FileLoadEvent):void {
trace( "Main.__cowLoaded > evt : " + evt.target );
}
private function __cowClicked(evt:InteractiveScene3DEvent):void {
trace( "Main.__cowClicked > evt : " + evt.target );
cow.scale *= 1.5;
}
override protected function processFrame():void {
//cone.yaw(5); // Rotate it a bit
///* sphere rotation
var _newYaw:Number = (stage.mouseX - (stage.width / 2)) / 20;
sphere.yaw(_newYaw); // Rotate it a bit
//*/
}
// private
}
}
package {
// These lines make differant 'pieces' available in your code.
import flash.display.Sprite; // To extend this class
import flash.events.Event; // To work out when a frame is entered.
import org.papervision3d.view.Viewport3D; // We need a viewport
import org.papervision3d.cameras.*; // Import all types of camera
import org.papervision3d.scenes.Scene3D; // We'll need at least one
scene
import org.papervision3d.render.BasicRenderEngine; // And we need a
renderer
public class PaperBase extends Sprite { //Must be "extends Sprite"
public var viewport:Viewport3D; // The Viewport
public var renderer:BasicRenderEngine; // Rendering engine
// -- Scenes -- //
public var default_scene:Scene3D; // A Scene
// -- Cameras --//
public var default_camera:Camera3D; // A Camera
public function init(vpWidth:Number = 800, vpHeight:Number =
600):void {
initPapervision(vpWidth, vpHeight); // Initialise papervision
init3d(); // Initialise the 3d stuff..
init2d(); // Initialise the interface..
initEvents(); // Set up any event listeners..
}
protected function initPapervision(vpWidth:Number,
vpHeight:Number):void {
// Here is where we initialise everything we need to
// render a papervision scene.
viewport = new Viewport3D(vpWidth, vpHeight, false, true);
// The viewport is the object added to the flash scene.
// You 'look at' the papervision scene through the viewport
// window, which is placed on the flash stage.
addChild(viewport); // Add the viewport to the stage.
// Initialise the rendering engine.
renderer = new BasicRenderEngine();
// -- Initialise the Scenes -- //
default_scene = new Scene3D();
// -- Initialise the Cameras -- //
default_camera = new Camera3D(); // The argument passed to the
camera
// is the object that it should look at. I've passed the scene
object
// so that the camera is always pointing at the centre of the
scene.
}
protected function init3d():void {
// This function should hold all of the stages needed
// to initialise everything used for papervision.
// Models, materials, cameras etc.
}
protected function init2d():void {
// This function should create all of the 2d items
// that will be overlayed on your papervision project.
// User interfaces, Heads up displays etc.
}
protected function initEvents():void {
// This function makes the onFrame function get called for
// every frame.
addEventListener(Event.ENTER_FRAME, onEnterFrame);
// This line of code makes the onEnterFrame function get
// called when every frame is entered.
}
protected function processFrame():void {
// Process any movement or animation here.
}
protected function onEnterFrame( ThisEvent:Event ):void {
//We need to render the scene and update anything here.
processFrame();
renderer.renderScene(default_scene, default_camera, viewport);
}
}
}
_______________________________________________
Papervision3D mailing list
Papervision3D@...
http://osflash.org/mailman/listinfo/papervision3d_osflash.org