back to jacobmake.com

Papervision Collada Import

Instructions on how to get a 3d model from Google Sketchup into Papervision

Example

 

Download Source

How to get a useable DAE file from Google Sketchup
  1. Build your model in Google Sketchup (free version is fine)
  2. When your model is ready to go; File > Export, export as Google Earth KMZ file.
  3. Change ".kmz" extension of exported file to ".zip"
  4. Unzip package and find DAE file

Document Class

package {
	import com.toky.BtnCamera;
	
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.events.Event;
	
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.parsers.DAE;
	import org.papervision3d.render.BasicRenderEngine;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.view.Viewport3D;
	
	public class Pulitzer3d extends Sprite
	{
		public var viewport:Viewport3D;
		public var renderer:BasicRenderEngine;
		public var scene:Scene3D;
		public var camera:Camera3D;
		public var dae:DAE;
		public var cm:ColorMaterial;
		public var holder:DisplayObject3D;
		public var cameraBtn:BtnCamera;

		public function Pulitzer3d() {
			init();
		}
		
		private function init() {
			//basic scene stuff
			viewport = new Viewport3D(900, 650, true,false);
			addChild(viewport);
			
			renderer = new BasicRenderEngine();
			scene = new Scene3D();
			camera = new Camera3D(holder, 15, 100);
			camera.z = -50;	
			
			//COLOR MATERIAL
			cm = new ColorMaterial(0xcccccc, .85, true);
			
			//DAE
			dae = new DAE();
			dae.load("pulitzer.dae", new MaterialsList({all:cm}));
			
			holder = new DisplayObject3D();
			holder.addChild(dae);

			holder.rotationX = 90;
			holder.rotationY = 45;
			scene.addChild(holder);
			stage.addEventListener(Event.ENTER_FRAME, renderStuff);
			
			//SETUP BUTTON
			cameraBtn = new BtnCamera(camera);
			addChild(cameraBtn);

		}
		
		private function renderStuff(e:Event) {
			renderer.renderScene(scene,camera,viewport,true);
		}	
	}
}

BtnCamera class

package com.toky
{
	import caurina.transitions.*;
	
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	import org.papervision3d.cameras.Camera3D;
	
	public class BtnCamera extends MovieClip
	{
		public var camera:Camera3D;
		
		public function BtnCamera(camName:Camera3D)
		{
			camera = camName;
			this.x = 25;
			this.y = 25;
			this.buttonMode = true;
			this.addEventListener(MouseEvent.CLICK, cameraMove);
		}
		
		//RANDOM GENERATOR
		private function randSpot(min:Number, max:Number):Number {
			var newLoc:Number = Math.floor(Math.random() * (max - min + 1)) + min;
			return newLoc;
		}
		
		//MOVE CAMERA
		public function cameraMove(e:Event):void {
			//animate to random location
			Tweener.addTween(camera, {x:randSpot(-100, 100), y:randSpot(3, 50), z:randSpot(-100,100), time:2, transition:"EaseIn"});
		}
	}
}