forked from: Away3D Material
forked from Away3D Material (diff: 137)
Away3DでBitmapMaterialにワイヤーフレームを表示すりにはどうすればいいか、ソースコード覗いてたら、 materialのdebugをtrueにするのが一番手っ取り早いのね。 ライブラリの中身書き換えてもできるだろうけど、すこしめんどくさい。
ActionScript3 source code
/**
* Copyright aaharu ( http://wonderfl.net/user/aaharu )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/rCAg
*/
// forked from aaharu's Away3D Material
/*
Away3DでBitmapMaterialにワイヤーフレームを表示すりにはどうすればいいか、ソースコード覗いてたら、
materialのdebugをtrueにするのが一番手っ取り早いのね。
ライブラリの中身書き換えてもできるだろうけど、すこしめんどくさい。
*/
package {
import flash.display.BitmapData;
import flash.display.Bitmap;
import away3d.cameras.HoverCamera3D;
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import away3d.events.MouseEvent3D;
import away3d.lights.DirectionalLight3D;
import away3d.materials.BitmapMaterial;
import away3d.primitives.Sphere;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends Sprite {
private var scene:Scene3D;
private var camera:HoverCamera3D;
private var view:View3D;
// ライト
private var light:DirectionalLight3D;
private var isMouseDown:Boolean = false;
// カメラ移動用変数
private var lastPanAngle:Number;
private var lastTiltAngle:Number;
private var lastMouseX:Number;
private var lastMouseY:Number;
private var sphere:Sphere;
/**
* constructor
*/
public function Main() {
if(stage) {
initEngine();
} else {
addEventListener(Event.ADDED_TO_STAGE, onAdded);
}
}
private function onAdded(e:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, onAdded);
initEngine();
}
private function initEngine():void {
addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
stage.addEventListener(Event.RESIZE, onResize);
scene = new Scene3D();
// カメラ初期設定
camera = new HoverCamera3D();
camera.zoom = 2;
camera.focus = 200;
camera.distance = 150;
camera.minTiltAngle = -90;
camera.panAngle = -10;
camera.tiltAngle = 20;
view = new View3D({camera: camera, scene: scene, stats: true, x: stage.stageWidth / 2, y: stage.stageHeight / 2});
addChild(view);
LoadModel();
}
private function LoadModel():void {
sphere = new Sphere();
var material:BitmapMaterial = new BitmapMaterial(new BitmapData(100, 100, true, 0xffff00ff));
material.debug = true;
sphere.material = material;
scene.addChild(sphere);
}
private function onEnterFrame(e:Event):void {
if(isMouseDown) {
camera.panAngle = 0.35 * (stage.mouseX - lastMouseX) + lastPanAngle;
camera.tiltAngle = 0.35 * (stage.mouseY - lastMouseY) + lastTiltAngle;
}
camera.hover();
view.render();
}
private function onResize(event:Event = null):void {
view.x = stage.stageWidth / 2;
view.y = stage.stageHeight / 2;
}
private function onMouseDown(e:MouseEvent):void {
lastPanAngle = camera.panAngle;
lastTiltAngle = camera.tiltAngle;
lastMouseX = stage.mouseX;
lastMouseY = stage.mouseY;
isMouseDown = true;
}
private function onMouseUp(e:MouseEvent):void {
isMouseDown = false;
}
}
}
