본문 바로가기

카테고리 없음

Papervision3D 2.0을 이용한 ColorCube 예제

package
{
 import flash.events.Event;
 
 import org.papervision3d.lights.PointLight3D;
 import org.papervision3d.materials.ColorMaterial;
 import org.papervision3d.materials.utils.MaterialsList;
 import org.papervision3d.objects.primitives.Cube;
 import org.papervision3d.view.BasicView;
 /* BasicView를 사용하여 큐브를 생성하고 각면에 비트맵이미지를 텍스쳐로 적용한 예
 * 조명을 사용하지 않고 Cube의 각면에 ColorMaterial을 적용하여 모든 면의 색상이 다르게 할 수 있다
 */
 public class ColorCube extends BasicView
 {
  private var cube:Cube;
 
  public function ColorCube(viewportWidth:Number=640, viewportHeight:Number=480, scaleToStage:Boolean=true,
     interactive:Boolean=false, cameraType:String="CAMERA3D")
  {
   super(viewportWidth, viewportHeight, scaleToStage, interactive, cameraType);
   
   var matList:MaterialsList = new MaterialsList();
   
   var matTop:ColorMaterial = new ColorMaterial(0xFF0000);
   var matLeft:ColorMaterial = new ColorMaterial(0x00FF00);
   var matFront:ColorMaterial = new ColorMaterial(0x0000FF);
   var matRight:ColorMaterial = new ColorMaterial(0xFFFF00);
   var matBack:ColorMaterial = new ColorMaterial(0x00FFFF);
   var matBottom:ColorMaterial = new ColorMaterial(0xFF00FF);
   
   matList.addMaterial(matTop, "top");
   matList.addMaterial(matLeft, "left");
   matList.addMaterial(matFront, "front");
   matList.addMaterial(matRight, "right");
   matList.addMaterial(matBack, "back");
   matList.addMaterial(matBottom, "bottom");
   
   cube = new Cube(matList);

   this.scene.addChild(cube);
   this.startRendering();
  }
  // 매 프레임마다 호출되는 함수
  override protected function onRenderTick(event:Event=null):void{
   cube.yaw(2);
   cube.pitch(2);
   cube.roll(2);
   super.onRenderTick(event);
  }
 }
}