チェンジセット 4753: as3/FLARToolKit/branches
- コミット日時:
- 2012/06/28 01:24:56 (1 年前)
- ファイル:
-
- as3/FLARToolKit/branches/nyatla/v4/trunk/flashdevelop.project/away3d4/obj/Away3d4sampleConfig.old (削除)
- as3/FLARToolKit/branches/nyatla/v4/trunk/flashdevelop.project/away3d4/obj/Away3d4sampleConfig.xml (削除)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/FLARMarkerSystem_BaseClass_.as (更新) (22 diffs)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/ARMarkerList.as (更新) (4 diffs)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/ARMarkerList_Item.as (追加)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/ARMarkerSortList_Item.as (更新) (1 diff)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/ARPlayCardList.as (追加)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/ARPlayCardList_Item.as (追加)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/MarkerInfoARMarker.as (削除)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/MarkerInfoNyId.as (削除)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/MultiResolutionPattProvider.as (更新) (1 diff)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/NyIdList.as (更新) (3 diffs)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/NyIdList_Item.as (追加)
- as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/nyidmarker/NyIdMarkerPickup.as (更新) (6 diffs)
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/FLARMarkerSystem_BaseClass_.as
r4737 r4753 40 40 import org.libspark.flartoolkit.core.types.matrix.*; 41 41 import org.libspark.flartoolkit.markersystem.utils.*; 42 import jp.nyatla.as3utils.*; 42 43 43 44 … … 67 68 private const IDTYPE_ARTK:int=0x00000000; 68 69 private const IDTYPE_NYID:int=0x00001000; 70 private const IDTYPE_PSID:int=0x00002000; 69 71 70 72 protected var _sqdetect:IFLARMarkerSystemSquareDetect; … … 77 79 private var _armk_list:ARMarkerList; 78 80 private var _idmk_list:NyIdList; 81 private var _psmk_list:ARPlayCardList; 79 82 80 83 private var lost_th:int=5; … … 96 99 97 100 this._armk_list=new ARMarkerList(); 98 this._idmk_list=new NyIdList(); 101 this._idmk_list = new NyIdList(); 102 this._psmk_list=new ARPlayCardList(); 99 103 this._tracking_list = new TrackingList(); 100 104 … … 102 106 //同時に判定待ちにできる矩形の数 103 107 this._sq_stack=new SquareStack(INITIAL_MARKER_STACK_SIZE); 104 this._on_sq_handler=new OnSquareDetect(i_config,this._armk_list,this._idmk_list,this._ tracking_list,this._sq_stack);108 this._on_sq_handler=new OnSquareDetect(i_config,this._armk_list,this._idmk_list,this._psmk_list,this._tracking_list,this._sq_stack); 105 109 } 106 110 protected function initInstance(i_ref_config:IFLARMarkerSystemConfig):void … … 152 156 public function addNyIdMarker(i_id:Number,i_marker_size:Number):int 153 157 { 154 var target:MarkerInfoNyId=new MarkerInfoNyId(i_id,i_id,i_marker_size); 155 if(!this._idmk_list.add(target)){ 156 throw new FLARException(); 157 } 158 if(!this._tracking_list.add(target)){ 159 throw new FLARException(); 160 } 161 return (this._idmk_list.size()-1)|IDTYPE_NYID; 158 return this.addNyIdMarker_2(i_id,i_id, i_marker_size); 162 159 } 163 160 /** … … 178 175 public function addNyIdMarker_2(i_id_s:Number,i_id_e:Number,i_marker_size:Number):int 179 176 { 180 var target: MarkerInfoNyId=new MarkerInfoNyId(i_id_s,i_id_e,i_marker_size);177 var target:NyIdList_Item=new NyIdList_Item(i_id_s,i_id_e,i_marker_size); 181 178 if(!this._idmk_list.add(target)){ 182 179 throw new FLARException(); … … 184 181 this._tracking_list.add(target); 185 182 return (this._idmk_list.size()-1)|IDTYPE_NYID; 183 } 184 /** 185 * この関数は、1個の範囲を持つARプレイマーカをシステムに登録して、検出可能にします。 186 * インスタンスは、i_id_s<=n<=i_id_eの範囲にあるマーカを検出します。 187 * 例えば、1番から5番までのマーカを検出する場合に使います。 188 * 関数はマーカに対応したID値(ハンドル値)を返します。 189 * @param i_id_s 190 * Id範囲の開始値 (1<=n<=6) 191 * @param i_id_e 192 * Id範囲の終了値 (1<=n<=6) 193 * @param i_marker_size 194 * マーカの四方サイズ[mm] 195 * @return 196 * マーカID(ハンドル)値。この値はIDの値ではなく、マーカのハンドル値です。 197 * @throws FLARException 198 */ 199 public function addPsARPlayCard_2(i_id_s:int,i_id_e:int,i_marker_size:Number):int 200 { 201 NyAS3Utils.assert(i_id_s>0 && i_id_s<=6); 202 NyAS3Utils.assert(i_id_e>0 && i_id_e<=6); 203 var target:ARPlayCardList_Item=new ARPlayCardList_Item(i_id_s,i_id_e,i_marker_size); 204 if(!this._psmk_list.add(target)){ 205 throw new FLARException(); 206 } 207 this._tracking_list.add(target); 208 return (this._psmk_list.size()-1)|IDTYPE_PSID; 209 } 210 /** 211 * この関数は、1個のARプレイマーカをシステムに登録して、検出可能にします。 212 * 関数はマーカに対応したID値(ハンドル値)を返します。 213 * @param i_id 214 * PSARプレイマーカのID。1-6までの数値です。 215 * @param i_marker_size 216 * マーカの四方サイズ[mm] 217 * @return 218 * マーカID(ハンドル)値。この値はIDの値ではなく、マーカのハンドル値です。 219 * @throws FLARException 220 */ 221 public function addPsARPlayCard(i_id:int,i_marker_size:Number):int 222 { 223 return this.addPsARPlayCard_2(i_id,i_id,i_marker_size); 186 224 } 187 225 /** … … 199 237 public function addARMarker(i_code:FLARCode,i_patt_edge_percentage:int,i_marker_size:Number):int 200 238 { 201 var target: MarkerInfoARMarker=new MarkerInfoARMarker(i_code,i_patt_edge_percentage,i_marker_size);239 var target:ARMarkerList_Item=new ARMarkerList_Item(i_code,i_patt_edge_percentage,i_marker_size); 202 240 if(!this._armk_list.add(target)){ 203 241 throw new FLARException(); … … 280 318 if((i_id & MASK_IDTYPE)==IDTYPE_ARTK){ 281 319 //ARマーカ 282 return MarkerInfoARMarker(this._armk_list.getItem(i_id &MASK_IDNUM)).cf;320 return ARMarkerList_Item(this._armk_list.getItem(i_id &MASK_IDNUM)).cf; 283 321 } 284 322 //Idマーカ? … … 298 336 if((i_id & MASK_IDTYPE)==IDTYPE_NYID){ 299 337 //Idマーカ 300 return MarkerInfoNyId(this._idmk_list.getItem(i_id &MASK_IDNUM)).nyid;338 return NyIdList_Item(this._idmk_list.getItem(i_id &MASK_IDNUM)).nyid; 301 339 } 302 340 //ARマーカ? … … 323 361 public function getLife(i_id:int):int 324 362 { 325 if((i_id & MASK_IDTYPE)==IDTYPE_ARTK){ 326 //ARマーカ 327 return MarkerInfoARMarker(this._armk_list.getItem(i_id & MASK_IDNUM)).life; 328 }else{ 329 //Idマーカ 330 return MarkerInfoNyId(this._idmk_list.getItem(i_id & MASK_IDNUM)).life; 363 switch(i_id & MASK_IDTYPE) 364 { 365 case IDTYPE_ARTK: 366 return ARMarkerList_Item(this._armk_list.getItem(i_id & MASK_IDNUM)).life; 367 case IDTYPE_NYID: 368 return NyIdList_Item(this._idmk_list.getItem(i_id & MASK_IDNUM)).life; 369 case IDTYPE_PSID: 370 return ARPlayCardList_Item(this._psmk_list.getItem(i_id & MASK_IDNUM)).life; 371 default: 372 throw new FLARException(); 331 373 } 332 374 } … … 341 383 public function getLostCount(i_id:int):int 342 384 { 343 if((i_id & MASK_IDTYPE)==IDTYPE_ARTK){ 344 //ARマーカ 345 return MarkerInfoARMarker(this._armk_list.getItem(i_id & MASK_IDNUM)).lost_count; 346 }else{ 347 //Idマーカ 348 return MarkerInfoNyId(this._idmk_list.getItem(i_id & MASK_IDNUM)).lost_count; 385 switch(i_id & MASK_IDTYPE) 386 { 387 case IDTYPE_ARTK: 388 return ARMarkerList_Item(this._armk_list.getItem(i_id & MASK_IDNUM)).lost_count; 389 case IDTYPE_NYID: 390 return NyIdList_Item(this._idmk_list.getItem(i_id & MASK_IDNUM)).lost_count; 391 case IDTYPE_PSID: 392 return ARPlayCardList_Item(this._psmk_list.getItem(i_id & MASK_IDNUM)).lost_count; 393 default: 394 throw new FLARException(); 395 349 396 } 350 397 } … … 485 532 public function getMarkerMatrix(i_id:int):FLARDoubleMatrix44 486 533 { 487 if((i_id & MASK_IDTYPE)==IDTYPE_ARTK){ 488 //ARマーカ 489 return MarkerInfoARMarker(this._armk_list.getItem(i_id &MASK_IDNUM)).tmat; 490 }else{ 491 //Idマーカ 492 return MarkerInfoNyId(this._idmk_list.getItem(i_id &MASK_IDNUM)).tmat; 534 switch(i_id & MASK_IDTYPE) 535 { 536 case IDTYPE_ARTK: 537 return ARMarkerList_Item(this._armk_list.getItem(i_id &MASK_IDNUM)).tmat; 538 case IDTYPE_NYID: 539 return NyIdList_Item(this._idmk_list.getItem(i_id &MASK_IDNUM)).tmat; 540 case IDTYPE_PSID: 541 return ARPlayCardList_Item(this._psmk_list.getItem(i_id &MASK_IDNUM)).tmat; 542 default: 543 throw new FLARException(); 493 544 } 494 545 } … … 502 553 public function getMarkerVertex2D(i_id:int):Vector.<FLARIntPoint2d> 503 554 { 504 if((i_id & MASK_IDTYPE)==IDTYPE_ARTK){ 505 //ARマーカ 506 return MarkerInfoARMarker(this._armk_list.getItem(i_id &MASK_IDNUM)).tl_vertex; 507 }else{ 508 //Idマーカ 509 return MarkerInfoNyId(this._idmk_list.getItem(i_id &MASK_IDNUM)).tl_vertex; 555 switch(i_id & MASK_IDTYPE) 556 { 557 case IDTYPE_ARTK: 558 return ARMarkerList_Item(this._armk_list.getItem(i_id &MASK_IDNUM)).tl_vertex; 559 case IDTYPE_NYID: 560 return NyIdList_Item(this._idmk_list.getItem(i_id &MASK_IDNUM)).tl_vertex; 561 case IDTYPE_PSID: 562 return ARPlayCardList_Item(this._psmk_list.getItem(i_id &MASK_IDNUM)).tl_vertex; 563 default: 564 throw new FLARException(); 510 565 } 511 566 } … … 564 619 this._idmk_list.prepare(); 565 620 this._armk_list.prepare(); 621 this._psmk_list.prepare(); 566 622 //検出処理 567 623 this._on_sq_handler._ref_input_rfb=i_sensor.getPerspectiveCopy(); 568 this._on_sq_handler._ref_input_gs =i_sensor.getGsImage();624 this._on_sq_handler._ref_input_gs = i_sensor.getGsImage(); 569 625 //検出 570 626 this._sqdetect.detectMarkerCb(i_sensor,th,this._on_sq_handler); … … 574 630 this._armk_list.finish(); 575 631 this._idmk_list.finish(); 632 this._psmk_list.finish(); 576 633 //期限切れチェック 577 634 var i:int; … … 584 641 //各ターゲットの更新 585 642 for(i=this._armk_list.size()-1;i>=0;i--){ 586 var target1: MarkerInfoARMarker=MarkerInfoARMarker(this._armk_list.getItem(i));643 var target1:TMarkerData=TMarkerData(this._armk_list.getItem(i)); 587 644 if(target1.lost_count==0){ 588 645 target1.time_stamp=time_stamp; … … 591 648 } 592 649 for(i=this._idmk_list.size()-1;i>=0;i--){ 593 var target2: MarkerInfoNyId=MarkerInfoNyId(this._idmk_list.getItem(i));650 var target2:TMarkerData=TMarkerData(this._idmk_list.getItem(i)); 594 651 if(target2.lost_count==0){ 595 652 target2.time_stamp=time_stamp; 596 653 this._transmat.transMatContinue(target2.sq,target2.marker_offset,target2.tmat,target2.tmat); 654 } 655 } 656 for(i=this._psmk_list.size()-1;i>=0;i--){ 657 var target3:TMarkerData =TMarkerData(this._psmk_list.getItem(i)); 658 if(target3.lost_count==0){ 659 target3.time_stamp=time_stamp; 660 this._transmat.transMatContinue(target3.sq,target3.marker_offset,target3.tmat,target3.tmat); 597 661 } 598 662 } … … 629 693 private var _ref_armk_list:ARMarkerList; 630 694 private var _ref_idmk_list:NyIdList; 695 private var _ref_psmk_list:ARPlayCardList; 631 696 private var _ref_sq_stack:SquareStack; 632 697 public var _ref_input_rfb:IFLARPerspectiveCopy; … … 634 699 635 700 private var _coordline:FLARCoord2Linear; 636 public function OnSquareDetect(i_config:IFLARMarkerSystemConfig,i_armk_list:ARMarkerList,i_idmk_list:NyIdList,i_tracking_list:TrackingList ,i_ref_sq_stack:SquareStack) 701 public function OnSquareDetect(i_config:IFLARMarkerSystemConfig, 702 i_armk_list:ARMarkerList, i_idmk_list:NyIdList, i_psmk_list:ARPlayCardList, 703 i_tracking_list:TrackingList ,i_ref_sq_stack:SquareStack) 637 704 { 638 705 this._coordline=new FLARCoord2Linear(i_config.getFLARParam().getScreenSize(),i_config.getFLARParam().getDistortionFactor()); 639 706 this._ref_armk_list=i_armk_list; 640 this._ref_idmk_list=i_idmk_list; 707 this._ref_idmk_list = i_idmk_list; 708 this._ref_psmk_list=i_psmk_list; 641 709 this._ref_tracking_list=i_tracking_list; 642 710 //同時に判定待ちにできる矩形の数 … … 676 744 } 677 745 } 746 //PSARマーカの特定(IDマーカの特定はここで完結する。) 747 if(this._ref_psmk_list.size()>0){ 748 if(this._ref_psmk_list.update(this._ref_input_gs,sq_tmp)){ 749 is_target_marker=true; 750 break;//idマーカを特定 751 } 752 } 678 753 //ARマーカの特定 679 if(this._ref_armk_list.size()>0){ 754 if (this._ref_armk_list.size() > 0) { 755 //敷居値により1個のマーカに対して複数の候補が見つかることもある。 680 756 if(this._ref_armk_list.update(this._ref_input_rfb,sq_tmp)){ 681 757 is_target_marker=true; as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/ARMarkerList.as
r4700 r4753 55 55 * このAdd以外使わないでね。 56 56 */ 57 public function add_2(i_e: MarkerInfoARMarker):Boolean57 public function add_2(i_e:ARMarkerList_Item):Boolean 58 58 { 59 59 //マッチテーブルのサイズを調整 … … 84 84 var is_ganalated_sq:Boolean=false; 85 85 for(var i:int=this.size()-1;i>=0;i--){ 86 var target: MarkerInfoARMarker=MarkerInfoARMarker(this.getItem(i));86 var target:ARMarkerList_Item=ARMarkerList_Item(this.getItem(i)); 87 87 //解像度に一致する画像を取得 88 88 var diff:FLARMatchPattDeviationColorData=this._mpickup.getDeviationColorData(target, i_pix_drv,i_sq.ob_vertex); … … 122 122 //検出のために初期値設定 123 123 for(var i:int=this.size()-1;i>=0;i--){ 124 var target: MarkerInfoARMarker=MarkerInfoARMarker(this.getItem(i));124 var target:ARMarkerList_Item=ARMarkerList_Item(this.getItem(i)); 125 125 if(target.life>0){ 126 126 target.lost_count++; … … 135 135 while(top_item!=null){ 136 136 //検出したアイテムのARmarkerIndexのデータをセット 137 var target: MarkerInfoARMarker=top_item.marker;137 var target:ARMarkerList_Item=top_item.marker; 138 138 if(target.lost_count>0){ 139 139 //未割当のマーカのみ検出操作を実行。 as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/ARMarkerSortList_Item.as
r4700 r4753 36 36 public class ARMarkerSortList_Item extends FLARLinkList_Item 37 37 { 38 public var marker: MarkerInfoARMarker;38 public var marker:ARMarkerList_Item; 39 39 public var cf:Number; 40 40 public var dir:int; as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/MultiResolutionPattProvider.as
r4700 r4753 52 52 * @throws FLARException 53 53 */ 54 public function getDeviationColorData(i_marker: MarkerInfoARMarker,i_pix_drv:IFLARPerspectiveCopy,i_vertex:Vector.<FLARIntPoint2d>):FLARMatchPattDeviationColorData54 public function getDeviationColorData(i_marker:ARMarkerList_Item,i_pix_drv:IFLARPerspectiveCopy,i_vertex:Vector.<FLARIntPoint2d>):FLARMatchPattDeviationColorData 55 55 { 56 56 var mk_edge:int=i_marker.patt_edge_percentage; as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/markersystem/utils/NyIdList.as
r4700 r4753 54 54 { 55 55 for(var i:int=this.size()-1;i>=0;i--){ 56 var target: MarkerInfoNyId=MarkerInfoNyId(this.getItem(i));//get(i);56 var target:NyIdList_Item=NyIdList_Item(this.getItem(i));//get(i); 57 57 if(target.life>0){ 58 58 target.lost_count++; … … 73 73 var s:Number=this._id_data.marker_id; 74 74 for(var i:int=this.size()-1;i>=0;i--){ 75 var target: MarkerInfoNyId=MarkerInfoNyId(this.getItem(i));75 var target:NyIdList_Item=NyIdList_Item(this.getItem(i)); 76 76 if(target.nyid_range_s>s || s>target.nyid_range_e) 77 77 { … … 94 94 for(var i:int=this.size()-1;i>=0;i--) 95 95 { 96 var target: MarkerInfoNyId=MarkerInfoNyId(this.getItem(i));96 var target:NyIdList_Item=NyIdList_Item(this.getItem(i)); 97 97 if(target.sq==null){ 98 98 continue; as3/FLARToolKit/branches/nyatla/v4/trunk/src/org/libspark/flartoolkit/nyidmarker/NyIdMarkerPickup.as
r4700 r4753 1 1 /* 2 * PROJECT: FLARTool Kit2 * PROJECT: FLARToolkitAS3 3 3 * -------------------------------------------------------------------------------- 4 * This work is based on the FLARToolKit developed by 5 * R.Iizuka (nyatla) 6 * http://nyatla.jp/nyatoolkit/ 4 * This work is based on the original ARToolKit developed by 5 * Hirokazu Kato 6 * Mark Billinghurst 7 * HITLab, University of Washington, Seattle 8 * http://www.hitl.washington.edu/artoolkit/ 7 9 * 8 * The FLARTool Kit is ActionScript 3.0 version ARToolkit class library.9 * Copyright (C)20 08 Saqoosha10 * The FLARToolkitAS3 is AS3 edition ARToolKit class library. 11 * Copyright (C)2010 Ryo Iizuka 10 12 * 11 13 * This program is free software: you can redistribute it and/or modify … … 23 25 * 24 26 * For further information please contact. 25 * http:// www.libspark.org/wiki/saqoosha/FLARToolKit26 * < saq(at)saqoosha.net>27 * http://nyatla.jp/nyatoolkit/ 28 * <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp> 27 29 * 28 30 */ … … 782 784 if(xx<0 || xx>=raster_width || yy<0 || yy>=raster_height) 783 785 { 784 ref_x[pt]=xx<0?0:(xx>=raster_width?raster_width-1: raster_width);785 ref_y[pt]=yy<0?0:(yy>=raster_height?raster_height-1: raster_height);786 ref_x[pt]=xx<0?0:(xx>=raster_width?raster_width-1:xx); 787 ref_y[pt]=yy<0?0:(yy>=raster_height?raster_height-1:yy); 786 788 } 787 789 pt++; … … 792 794 if(xx<0 || xx>=raster_width || yy<0 || yy>=raster_height) 793 795 { 794 ref_x[pt]=xx<0?0:(xx>=raster_width?raster_width-1: raster_width);795 ref_y[pt]=yy<0?0:(yy>=raster_height?raster_height-1: raster_height);796 ref_x[pt]=xx<0?0:(xx>=raster_width?raster_width-1:xx); 797 ref_y[pt]=yy<0?0:(yy>=raster_height?raster_height-1:yy); 796 798 } 797 799 pt++; … … 802 804 if(xx<0 || xx>=raster_width || yy<0 || yy>=raster_height) 803 805 { 804 ref_x[pt]=xx<0?0:(xx>=raster_width?raster_width-1: raster_width);805 ref_y[pt]=yy<0?0:(yy>=raster_height?raster_height-1: raster_height);806 ref_x[pt]=xx<0?0:(xx>=raster_width?raster_width-1:xx); 807 ref_y[pt]=yy<0?0:(yy>=raster_height?raster_height-1:yy); 806 808 } 807 809 pt++; … … 812 814 if(xx<0 || xx>=raster_width || yy<0 || yy>=raster_height) 813 815 { 814 ref_x[pt]=xx<0?0:(xx>=raster_width?raster_width-1: raster_width);815 ref_y[pt]=yy<0?0:(yy>=raster_height?raster_height-1: raster_height);816 ref_x[pt]=xx<0?0:(xx>=raster_width?raster_width-1:xx); 817 ref_y[pt]=yy<0?0:(yy>=raster_height?raster_height-1:yy); 816 818 } 817 819 pt++;

