/** * Eclipseで動かない?そんな時は… * * 1.パッケージエクスプローラで、.swfのプロパティを見てみよう。UseHtmlTemplateは使っちゃダメだよ。 * 2.FlashPlayerのローカルファイルアクセスのセキュリティ解除してみよう。場所は、 * C:\WINDOWS\system32\Macromed\Flash\FlashPlayerTrust * * * */ package{ import flash.net.*; import jp.nyatla.as3utils.*; import jp.nyatla.alchemymaster.*; import jp.nyatla.nyartoolkit.as3.proxy.*; import jp.nyatla.nyartoolkit.as3.*; import flash.display.Sprite; import flash.text.*; import flash.events.*; import flash.utils.*; public class rawtest extends Sprite { private var myTextBox:TextField = new TextField(); private var myTextBox2:TextField = new TextField(); public function msg(i_msg:String):void { myTextBox.text =myTextBox.text+","+i_msg; } //private var cpara:ByteArray; private var code:NyARCode; private var param:NyARParam; private var raster_bgra:NyARRgbRaster_BGRA; private var id_bgra:NyARRgbRaster_BGRA; // private var raster_xrgb:NyARRgbRaster_XRGB32; public function rawtest() { myTextBox.y=0; myTextBox2.y=30; addChild(myTextBox); addChild(myTextBox2); //ファイルをメンバ変数にロードする。 var mf:NyMultiFileLoader=new NyMultiFileLoader(); mf.addTarget( "camera_para.dat",URLLoaderDataFormat.BINARY, function(data:ByteArray):void { param=new NyARParam(); param.loadARParamFile(data); param.changeScreenSize(320,240); }); mf.addTarget( "patt.hiro",URLLoaderDataFormat.TEXT, function(data:String):void { code=new NyARCode(16, 16); code.loadARPattFromFile(data); } ); mf.addTarget( "320x240ABGR.raw",URLLoaderDataFormat.BINARY, function(data:ByteArray):void { var r:NyARRgbRaster_BGRA=new NyARRgbRaster_BGRA(320,240); r.setFromByteArray(data); raster_bgra=r; }); mf.addTarget( "320x240NyId.raw",URLLoaderDataFormat.BINARY, function(data:ByteArray):void { var r:NyARRgbRaster_BGRA=new NyARRgbRaster_BGRA(320,240); r.setFromByteArray(data); id_bgra=r; }); //終了後mainに遷移するよ―に設定 mf.addEventListener(Event.COMPLETE,main); mf.multiLoad();//ロード開始 return;//dispatch event*/ } private function testNyARIntSize():void { var ma:Marshal=new Marshal(); msg(""); var result:NyARIntSize=new NyARIntSize(); msg("create"); ma.prepareWrite(); ma.writeInt(999); ma.writeInt(998); result.setValue(ma); result.getValue(ma); ma.prepareRead(); msg("(setVale,getValue):"+(ma.readInt()==999 && ma.readInt()==998)?"OK":"NG"); result.dispose(); msg(""); } private function testNyARCode():void { msg(""); var test:NyARCode=new NyARCode(16,16); msg("create"); msg("w,h:"+test.getWidth()+","+test.getHeight()); test.dispose(); msg(""); } private function testNyARPerspectiveProjectionMatrix():void { var ma:Marshal=new Marshal(); msg(""); var t2:NyARPerspectiveProjectionMatrix=new NyARPerspectiveProjectionMatrix(); msg("create"); t2.getValue(ma); ma.prepareRead(); t2.dispose(); msg(""); } private function testNyARParam():void { msg(""); var t2:NyARParam=new NyARParam(); msg("create"); t2.getPerspectiveProjectionMatrix(); msg("getPerspectiveProjectionMatrix"); t2.getScreenSize(); msg("getScreenSize"); t2.dispose(); msg(""); } private function testNyARMatchPatt_Color_WITHOUT_PCA():void { var code:NyARCode=new NyARCode(16,16); msg(""); var t:NyARMatchPatt_Color_WITHOUT_PCA=new NyARMatchPatt_Color_WITHOUT_PCA(code); msg("create"); t.dispose(); msg(""); code.dispose(); } private function testNyARSquareDetector_Rle():void {/* var code:NyARCode=new NyARCode(16,16); msg(""); var t:NyARSquareDetector_Rle=new NyARSquareDetector_Rle(dist,size); msg("create"); t.getValue(new Array()); t.dispose(); msg(""); code.dispose(); */ } private function testIdMarkerProcessor():void { msg(""); var t:IdMarkerProcessor=new IdMarkerProcessor(param,INyARBufferReader.BUFFERFORMAT_BYTE1D_B8G8R8X8_32,this); t.detectMarker(id_bgra); t.dispose(); msg(""); } private function testNyARSingleDetectMarkerAS():void { var mret:NyARTransMatResult=new NyARTransMatResult(); msg(""); var d:NyARSingleDetectMarkerAS=new NyARSingleDetectMarkerAS(param,code,80.0,INyARBufferReader.BUFFERFORMAT_BYTE1D_B8G8R8X8_32); var ma:Marshal=new Marshal(); param.getPerspectiveProjectionMatrix().getValue(ma); ma.prepareRead(); for(var i:int=0;i<12;i++){ msg(String(ma.readDouble())); } d.detectMarkerLite(raster_bgra,100); msg("cf="+d.getConfidence()); mret.getValue(ma); d.getTransformMatrix(mret); mret.getValue(ma); ma.prepareRead(); for(var i2:int=0;i2<12;i2++){ msg(String(ma.readDouble())); } msg("zxy="+d.getConfidence()); mret.getZXYAngle(ma); ma.prepareRead(); for(i2=0;i2<3;i2++){ msg(String(ma.readDouble())); } msg("pickup image"); var patt_data:ByteArray=new ByteArray(); patt_data.endian=Endian.LITTLE_ENDIAN; NyARColorPatt_Perspective_O2(d._patt).getData(patt_data); //Pixel format XRGB(int) for(i2=0;i2<16*16;i2++){ msg(String(patt_data.readInt())); } msg("performance test..."+d.getConfidence()); var date : Date = new Date(); for(i2=0;i2<1000;i2++){ d.detectMarkerLite(raster_bgra,100); d.getTransformMatrix(mret); } var date2 : Date = new Date(); msg((date2.valueOf()-date.valueOf()).toString()); d.dispose(); msg(""); mret.dispose(); } private function testNyARDetectMarkerAS():void { var mret:NyARTransMatResult=new NyARTransMatResult(); msg(""); var codes:Vector.=new Vector.(); var codes_width:Vector.=new Vector.(); codes[0]=code; codes_width[0]=80.0; var t:NyARDetectMarkerAS=new NyARDetectMarkerAS(param,codes,codes_width,1,INyARBufferReader.BUFFERFORMAT_BYTE1D_B8G8R8X8_32); var num_of_detect:int=t.detectMarkerLite(raster_bgra,100); msg("found="+num_of_detect); var ma:Marshal=new Marshal(); for(var i:int=0;i"); mret.dispose(); } private function testSingleProcessorAS():void { var mret:NyARTransMatResult=new NyARTransMatResult(); msg(""); var codes:Vector.=new Vector.(); var codes_width:Vector.=new Vector.(); codes[0]=code; codes_width[0]=80.0; var t:SingleProcessor=new SingleProcessor(param,INyARBufferReader.BUFFERFORMAT_BYTE1D_B8G8R8X8_32,this); t.setARCodeTable(codes,16,80.0); t.detectMarker(raster_bgra); t.dispose(); msg(""); mret.dispose(); } private function main(e:Event):void { msg("ready!"); // testNyARIntSize(); // testNyARCode(); // testNyARPerspectiveProjectionMatrix(); // testNyARParam(); // testNyARMatchPatt_Color_WITHOUT_PCA(); // testNyARSquareDetector_Rle(); testIdMarkerProcessor(); testNyARSingleDetectMarkerAS(); testNyARDetectMarkerAS(); testSingleProcessorAS(); //Test NyARIntSize class msg("end"); return; } } } import jp.nyatla.alchemymaster.*; import jp.nyatla.nyartoolkit.as3.proxy.*; import jp.nyatla.nyartoolkit.as3.*; class SingleProcessor extends SingleARMarkerProcesserAS { public var transmat:NyARTransMatResult=null; public var current_code:int=-1; private var _parent:rawtest; private var _ma:Marshal=new Marshal(); public function SingleProcessor(i_cparam:NyARParam,i_raster_format:int,i_parent:rawtest) { super(); this._parent=i_parent; initInstance(i_cparam,i_raster_format); } protected override function onEnterHandler(i_code:int):void { current_code=i_code; _parent.msg("onEnterHandler:"+i_code); } protected override function onLeaveHandler():void { } protected override function onUpdateHandler(i_square:NyARSquare,result:NyARTransMatResult):void { _parent.msg("onUpdateHandler:"+current_code); result.getValue(_ma); _ma.prepareRead(); for(var i2:int=0;i2<12;i2++){ _parent.msg(String(_ma.readDouble())); } this.transmat=result; } } class IdMarkerProcessor extends SingleNyIdMarkerProcesserAS { public var transmat:NyARTransMatResult=null; public var current_id:int=-1; private var _parent:rawtest; private var _encoder:NyIdMarkerDataEncoder_RawBit; public function IdMarkerProcessor(i_cparam:NyARParam,i_raster_format:int,i_parent:rawtest) { //アプリケーションフレームワークの初期化 super(); this._parent=i_parent; this._encoder=new NyIdMarkerDataEncoder_RawBit(); initInstance(i_cparam,this._encoder,i_raster_format); return; } public override function dispose():void { super.dispose(); this._encoder.dispose(); return; } private var _ma:Marshal=new Marshal(); /** * アプリケーションフレームワークのハンドラ(マーカ出現) */ protected override function onEnterHandler(i_code:INyIdMarkerData):void { var code:NyIdMarkerData_RawBit=i_code as NyIdMarkerData_RawBit; //read data from i_code via Marsial--Marshal経由で読み出す code.getValue(this._ma); this._ma.prepareRead(); var len:int =this._ma.readInt(); var data:Array=new Array(); var i:int; for(i=0;i4){ //4バイト以上の時はint変換しない。 this.current_id=-1;//undefined_id }else{ this.current_id=0; //最大4バイト繋げて1個のint値に変換 for(i=0;i