Skip to content

Commit

Permalink
Issueの対応策として、ファイルIO関数にInputStreamを引数とする関数を追加
Browse files Browse the repository at this point in the history
NyARToolkit.jarを更新
  • Loading branch information
nyatla committed Jun 24, 2016
1 parent a964f27 commit abe4869
Show file tree
Hide file tree
Showing 7 changed files with 134 additions and 33 deletions.
Binary file modified examples/nftFilesGen/code/NftFileGenerator.jar
Binary file not shown.
Binary file modified lib/NyARToolkit.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion resources/build.properties
Expand Up @@ -135,7 +135,7 @@ library.version=2

# The version as the user will see it.

library.prettyVersion=3.0.4
library.prettyVersion=3.0.5


# The min and max revision of Processing compatible with your library.
Expand Down
2 changes: 1 addition & 1 deletion resources/library.properties
Expand Up @@ -45,7 +45,7 @@ version = 2 # This must be parsable as an int

# The version as the user will see it. If blank, the version attribute will be
# used here.
prettyVersion = 3.0.4 # This is treated as a String
prettyVersion = 3.0.5 # This is treated as a String

# The min and max revision of Processing compatible with your library.
# Note that these fields use the revision and not the version of Processing,
Expand Down
52 changes: 45 additions & 7 deletions src/src/jp/nyatla/nyar4psg/MultiMarker.java
Expand Up @@ -26,6 +26,7 @@
*/
package jp.nyatla.nyar4psg;

import java.io.InputStream;
import java.util.ArrayList;

import jp.nyatla.nyar4psg.utils.NyARPsgBaseClass;
Expand Down Expand Up @@ -128,7 +129,27 @@ private MultiMarker(PApplet i_applet,SingleCameraView i_view,NyAR4PsgConfig i_co
this._ms=new NyARMarkerSystem(new NyARMarkerSystemConfig(i_view._view,i_config.env_transmat_mode));
this._coordinate_system=i_config._coordinate_system;
}

/**
* コンストラクタです。
* スクリーンサイズ、カメラパラメータ、コンフィギュレーションを指定してインスタンスを生成します。
* @param i_applet
* 親となるAppletオブジェクトを指定します。
* @param i_width
* 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。
* @param i_height
* 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。
* @param i_cparam_is
* ARToolKitフォーマットのカメラパラメータファイルを読み出す{@link InputStream}です。
* @param i_config
* コンフィギュレーションオブジェクトを指定します。
*/
public MultiMarker(PApplet i_applet, int i_width,int i_height,InputStream i_cparam_is,NyAR4PsgConfig i_config)
{
this(i_applet,new SingleCameraView(i_applet,
NyARParam.loadFromARParamFile(i_cparam_is, i_width, i_height),i_config._ps_patch_version),
i_config);
return;
}
/**
* コンストラクタです。
* スクリーンサイズ、カメラパラメータ、コンフィギュレーションを指定してインスタンスを生成します。
Expand All @@ -142,7 +163,6 @@ private MultiMarker(PApplet i_applet,SingleCameraView i_view,NyAR4PsgConfig i_co
* 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。
* @param i_config
* コンフィギュレーションオブジェクトを指定します。
* @throws NyARException
*/
public MultiMarker(PApplet i_applet, int i_width,int i_height,String i_cparam_file,NyAR4PsgConfig i_config)
{
Expand Down Expand Up @@ -335,10 +355,10 @@ public void detect(PImageSensor i_source_image)
this._ms.update(i_source_image);
}
/**
* この関数は、ARToolKitスタイルのマーカーをファイルから読みだして、登録します。
* この関数は、ARToolKitスタイルのマーカーを{@link InputStream}から読みだして、登録します。
* 同じパターンを複数回登録した場合には、最後に登録したものを優先して認識します。
* @param i_file_name
* マーカパターンファイル名を指定します
* @param i_file_is
* マーカパターンファイルを読み出す{@link InputStream}オブジェクト
* @param i_patt_resolution
* マーカパターンの解像度を指定します。
* @param i_edge_percentage
Expand All @@ -353,18 +373,36 @@ public void detect(PImageSensor i_source_image)
* {@link #screen2ObjectCoordSystem},{@link #pickupImage},{@link #pickupRectImage}
* のid値に使います。
*/
public int addARMarker(String i_file_name,int i_patt_resolution,int i_edge_percentage,float i_width)
public int addARMarker(InputStream i_file_is,int i_patt_resolution,int i_edge_percentage,float i_width)
{
//初期化済みのアイテムを生成
int psid=-1;
try{
this._id_map.add(this._ms.addARMarker(this._ref_papplet.createInput(i_file_name), i_patt_resolution, i_edge_percentage, i_width));
this._id_map.add(this._ms.addARMarker(i_file_is, i_patt_resolution, i_edge_percentage, i_width));
psid=this._id_map.size()-1;
}catch(Exception e){
e.printStackTrace();
this._ref_papplet.die("Catch an exception!");
}
return psid;
}
/**
* この関数は、ARToolKitスタイルのマーカーをファイルから読みだして登録します。
* ファイルは{@link PApplet#createInput(String)}関数で作成したストリームから読み出します。
* @param i_file_name
* {@link #addARMarker(InputStream, int, int, float)}を参照
* @param i_patt_resolution
* {@link #addARMarker(InputStream, int, int, float)}を参照
* @param i_edge_percentage
* {@link #addARMarker(InputStream, int, int, float)}を参照
* @param i_width
* マーカの物理サイズをmm単位で指定します。
* @return
* {@link #addARMarker(InputStream, int, int, float)}を参照
*/
public int addARMarker(String i_file_name,int i_patt_resolution,int i_edge_percentage,float i_width)
{
return this.addARMarker(this._ref_papplet.createInput(i_file_name), i_patt_resolution, i_edge_percentage, i_width);
}
/**
* この関数は、ARToolKitスタイルのマーカーをファイルから読みだして登録します。
Expand Down
109 changes: 86 additions & 23 deletions src/src/jp/nyatla/nyar4psg/MultiNft.java
Expand Up @@ -28,6 +28,7 @@



import java.io.InputStream;
import java.util.ArrayList;

import jp.nyatla.nyar4psg.utils.NyARPsgBaseClass;
Expand Down Expand Up @@ -86,6 +87,22 @@ private MultiNft(PApplet i_applet,NyARParam i_param,NyAR4PsgConfig i_config)
new SingleCameraView(i_applet,i_param,i_config._ps_patch_version),
i_config._coordinate_system);
}
/**
* コンストラクタです。カメラパラメータを{@link InputStream}から読みだしてインスタンスを生成します。
* @param parent
* 親となるAppletオブジェクトを指定します。
* @param i_width
* 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。
* @param i_height
* 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。
* @param i_cparam_is
* ARToolKitフォーマットのカメラパラメータファイルを読み出す{@link InputStream}です。
* @param i_config
*/
public MultiNft(PApplet parent, int i_width,int i_height,InputStream i_cparam_is,NyAR4PsgConfig i_config)
{
this(parent,NyARParam.loadFromARParamFile(i_cparam_is,i_width,i_height),i_config);
}

/**
* コンストラクタです。
Expand All @@ -99,27 +116,22 @@ private MultiNft(PApplet i_applet,NyARParam i_param,NyAR4PsgConfig i_config)
* 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。
* @param i_config
* コンフィギュレーションオブジェクトを指定します。
* @throws NyARRuntimeException
*/
public MultiNft(PApplet parent, int i_width,int i_height,String i_cparam_file,NyAR4PsgConfig i_config)
{
this(
parent,
NyARParam.loadFromARParamFile(parent.createInput(i_cparam_file),
i_width,i_height),i_config);
this(parent,i_width,i_height,parent.createInput(i_cparam_file),i_config);
}
/**
* コンストラクタです。
* {@link MultiNft#MultiNft(PApplet, int, int, String, NyAR4PsgConfig)}のコンフィギュレーションに、{@link NyAR4PsgConfig#CONFIG_DEFAULT}を指定した物と同じです。
* @param parent
* {@link MultiNft#MultiNft(PApplet, int, int, String, NyAR4PsgConfig)}を参照
* 親となるAppletオブジェクトを指定します
* @param i_width
* 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。
* @param i_height
* 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。
* @param i_cparam_file
* {@link MultiNft#MultiNft(PApplet, int, int, String, NyAR4PsgConfig)}を参照。
* @throws NyARRuntimeException
* ARToolKitフォーマットのカメラパラメータファイルの名前を指定します。
*/
public MultiNft(PApplet parent,int i_width,int i_height,String i_cparam_file)
{
Expand Down Expand Up @@ -267,6 +279,49 @@ public void detect(PImageSensor i_source_image)
{
this._ns.update(i_source_image);
}
private int addNftTarget(NyARNftDataSet i_dataset)
{
//初期化済みのアイテムを生成
int psid=-1;
try{
this._id_map.add(this._ns.addNftTarget(i_dataset));
psid=this._id_map.size()-1;
}catch(Exception e){
e.printStackTrace();
this._ref_papplet.die("Catch an exception!");
}
return psid;
}

/**
* この関数は、NFTファイルセットを{@link InputStream}から読みだして、NFTターゲットを生成して登録します。
* 同じターゲットを複数個登録することはできません。
* @param i_iset_is
* isetファイルを読み出す{@link InputStream}
* @param i_fset_is
* fsetファイルを読み出す{@link InputStream}
* @param i_fset3_is
* fset3ファイルを読み出す{@link InputStream}
* @param i_page_no
* fset3のページ番号を指定します。
* @param i_target_width
* NFTパターンの横幅をmm単位で指定します。
* @return
* 0から始まるマーカーIDを返します。
* この数値は、マーカを区別するためのId値です。0から始まり、{@link #addNftTarget}関数を呼ぶたびにインクリメントされます。
* {@link #getMatrix},{@link #isExistTarget},{@link #addNftTarget},
* {@link #screen2CoordSystem},{@link #pickupTargetImage},{@link #pickupRectTargetImage}
* のid値に使います。
*/
public int addNftTarget(InputStream i_iset_is,InputStream i_fset_is,InputStream i_fset3_is,int i_page_no,float i_target_width)
{
return this.addNftTarget(
NyARNftDataSet.loadFromNftFiles(
i_iset_is,i_fset_is,i_fset3_is,i_page_no,
Float.isNaN(i_target_width)?Double.NaN:i_target_width));
}


/**
* この関数は、NFTファイルセットからNFTターゲットを生成して登録します。
* 同じターゲットを複数個登録することはできません。
Expand All @@ -286,20 +341,11 @@ public void detect(PImageSensor i_source_image)
*/
public int addNftTarget(String i_file_name_prefix,int i_page_no,float i_target_width)
{
//初期化済みのアイテムを生成
int psid=-1;
try{
this._id_map.add(this._ns.addNftTarget(NyARNftDataSet.loadFromNftFiles(
this._ref_papplet.createInput(i_file_name_prefix+".iset"),
this._ref_papplet.createInput(i_file_name_prefix+".fset"),
this._ref_papplet.createInput(i_file_name_prefix+".fset3"),i_page_no,
Float.isNaN(i_target_width)?Double.NaN:i_target_width)));
psid=this._id_map.size()-1;
}catch(Exception e){
e.printStackTrace();
this._ref_papplet.die("Catch an exception!");
}
return psid;
return this.addNftTarget(
this._ref_papplet.createInput(i_file_name_prefix+".iset"),
this._ref_papplet.createInput(i_file_name_prefix+".fset"),
this._ref_papplet.createInput(i_file_name_prefix+".fset3"),i_page_no,
i_target_width);
}


Expand Down Expand Up @@ -329,7 +375,24 @@ public int addNftTarget(String i_file_name_prefix)
{
return this.addNftTarget(i_file_name_prefix,Float.NaN);
}

/**
* この関数は、NFTデータセットを{@link InputStream}から読みだして、NFTターゲットを登録します。
* 同じターゲットを複数個登録することはできません。
* @param i_isetdataset
* nftdatasetファイルを読み出す{@link InputStream}です。
* @param i_target_width
* NFTパターンの横幅をmm単位で指定します。
* @return
* 0から始まるマーカーIDを返します。
* この数値は、マーカを区別するためのId値です。0から始まり、{@link #addNftTarget}関数を呼ぶたびにインクリメントされます。
* {@link #getMatrix},{@link #isExistTarget},{@link #addNftTarget},
* {@link #screen2CoordSystem},{@link #pickupTargetImage},{@link #pickupRectTargetImage}
* のid値に使います。
*/
public int addNftTarget(InputStream i_isetdataset,int i_page_no,float i_target_width)
{
return this.addNftTarget(NyARNftDataSet.loadFromNftDataSet(i_isetdataset, i_target_width));
}

/**
* この関数は、マーカの姿勢行列を返します。
Expand Down
2 changes: 1 addition & 1 deletion src/src/jp/nyatla/nyar4psg/utils/NyARPsgBaseClass.java
Expand Up @@ -59,7 +59,7 @@ public abstract class NyARPsgBaseClass
* バージョン文字列です。
* NyAR4psgのバージョン情報を示します。
*/
final public static String VERSION = "NyAR4psg/3.0.4;"+NyARVersion.VERSION_STRING;
final public static String VERSION = "NyAR4psg/3.0.5;"+NyARVersion.VERSION_STRING;
/** 参照するAppletのインスタンスです。*/
final protected PApplet _ref_papplet;

Expand Down

0 comments on commit abe4869

Please sign in to comment.