forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
forked from forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3 (diff: 149)
ActionScript3 source code
/**
* Copyright arere ( http://wonderfl.net/user/arere )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/ecbG
*/
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: forked from: RGBCube for AS3
// forked from arere's forked from: forked from: RGBCube for AS3
// forked from kotobuki's forked from: RGBCube for AS3
// forked from kotobuki's RGBCube for AS3
package
{
import flash.display.*;
import flash.events.*;
import flash.filters.ConvolutionFilter;
import org.papervision3d.view.BasicView;
//import org.papervision3d.scenes.Scene3D;
//import org.papervision3d.cameras.Camera3D;
//import org.papervision3d.view.Viewport3D;
//import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.BitmapAssetMaterial;
import funnel.*;
[SWF(width = "640", height = "480", backgroundcolor = "#333333", framerate = "30",alpha = "0")]
/**
* ...
* @author ...
*/
public class globe extends BasicView
{
//private var scene:Scene3D;
//private var camera:Camera3D;
//private var viewport:Viewport3D;
//private var renderer:BasicRenderEngine;
private var cameraType = "Target";
private var stageW:Number;
private var stageH:Number;
private var vpX:Number;
private var vpY:Number;
//fio variables
private var fioSystem:Fio;
private var fio:IOModule;
//acceralator xAxis AnaPin
private var xAxisPin:Pin;
//acceralator yAxis AnaPin
private var yAxisPin:Pin;
public function globe() {
var config:Configuration = fio.FIRMATA;
// 必要ないアナログ入力をすべて出力にセットする
// これによりデータの転送量が少なくなりレスポンスが良くなる
// (ArduinoではA0、A1…はD14、D15に対応する)
config.setDigitalPinMode(17, OUT); //A3
config.setDigitalPinMode(18, OUT); //A4
config.setDigitalPinMode(19, OUT); //A5
config.setDigitalPinMode(20, OUT); //A6
config.setDigitalPinMode(21, OUT); //A7
fioSystem = new Fio([1], config);
fio = fioSystem.ioModule(1);
xAxisPin = fio.analogPin(0);
yAxisPin = fio.analogPin(1);
// 2つの軸のそれぞれにフィルタをセット
// ・細かな変動を取り除くための移動平均フィルタ
// ・-1Gから1Gまでの変化を-1から1までにスケーリングするためのフィルタ
xAxisPin.addFilter(new Convolution(Convolution.MOVING_AVERAGE));
xAxisPin.addFilter(Scaler(0.30, 0.70, -1, 1));
yAxisPin.addFilter(new Convolution(Convolution.MOVING_AVERAGE));
yAxisPin.addFilter(Scaler(0.30, 0.70, -1, 1));
super(0, 0, true, true, cameraType);
//viewportW, viewportH, scaleToStage, interactive, cameraType
init();
}
private function init():void {
setStage();
//setScene();
setCamera();
setDO3D();
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
//stage init
private function setStage():void {
stage.quality = StageQuality.MEDIUM;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stageW = stage.stageWidth;
stageH = stage.stageHeight;
vpX = stageW / 2;
vpY = stageH / 2;
}
//Scene init
/*private function setScene():void {
renderer = new BasicRenderEngine();
scene = new Scene3D();
viewport = new Viewport3D(0, 0, true, true);
//viewportWidth, viewportHeight, autoScaleToStage, interactive,autoClipping, autoCulling
addChild(viewport);
}*/
//Camera init
private function setCamera():void {
//camera = new Camera3D();
camera.x = 0;
camera.y = 100;
camera.z = -600;
camera.zoom = 30;
camera.focus = 30;
camera.target = DisplayObject3D.ZERO;
}
//DisplayObject3D init
private function setDO3D():void {
var material:BitmapAssetMaterial = new BitmapAssetMaterial("Image", true);
material.oneSide = false;
material.smooth = true;
var sphere:Sphere = new Sphere(material, 200, 24, 24);
scene.addChild(sphere);
}
//Mouse Event
private function onEnterFrameHandler(event:Event):void {
var angleX:Number = (mouseX - vpX) * 0.001;
var angleY:Number = (mouseY - vpY) * 0.001;
moveCameraX(angleX);
moveCameraY(angleY);
renderer.renderScene(scene, camera, viewport);
}
private function moveCameraX(angleX:Number):void {
var cosX:Number = Math.cos(angleX);
var sinX:Number = Math.sin(angleX);
camera.x = camera.x * cosX - camera.z * sinX;
}
private function moveCameraY(angleY:Number):void {
var cosY:Number = Math.cos(angleY);
var sinY:Number = Math.sin(angleY);
camera.y = camera.y * cosY - camera.z * sinY;
}
}
}
