package
{
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.ByteArray;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.BitmapMaterial;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.parsers.Collada;
import org.papervision3d.objects.parsers.DAE;
import org.papervision3d.view.BasicView;
public class chapter08 extends Sprite
{
[Embed(source="cow.png")] private var CowTexture:Class;
[Embed(source="cow.dae", mimeType="application/octet-stream")] private var CowDAE:Class;
private var view:BasicView;
private var dae:DAE;
private var cowModel:Collada;
public function chapter08()
{
view = new BasicView( 550, 400 );
this.addChild( view );
// Shader를 위한 Light 생성
var light: PointLight3D = new PointLight3D( false );
light.x = 0; light.y = 100; light.z = 0;
/* 포함된 Embed 클래스를 이용하여 Material을 생성한다 */
var mat:BitmapMaterial = new BitmapMaterial(Bitmap(new CowTexture()).bitmapData);
var matList:MaterialsList = new MaterialsList();
matList.addMaterial(mat,"mat0");
/* 포함된 Embed 클래스를 이용하여 DAE 모델을 생성한다 */
var ba:ByteArray = new CowDAE() as ByteArray;
var xml:XML = new XML(ba.readUTFBytes(ba.length));
cowModel = new Collada(xml,matList);
/* SWF파일에 모델을 포함했기 때문에 FileLoadEvent.LOAD_COMPLETE이벤트는 발생하지 않는다.
* 그러므로 아래의 코드는 호출해서는 안된다
* cowModel.addEventListener(FileLoadEvent.LOAD_COMPLETE, onLoadComplete);
*/
cowModel.scale = 2;
view.scene.addChild( cowModel );
view.addEventListener( Event.ENTER_FRAME, onEnter );
}
private function onEnter(event:Event):void
{
cowModel.rotationY += 2;
view.singleRender();
}
}
}