jp.nyatla.nyar4psg
クラス NyARPsgBaseClass

java.lang.Object
  上位を拡張 jp.nyatla.nyar4psg.NyARPsgBaseClass
直系の既知のサブクラス:
MultiMarker, SingleMarkerBaseClass

 class NyARPsgBaseClass
extends Object

このクラスは、NyARToolkit for Processingのベースクラスです。 ARToolkit座標系の環境定数、環境設定機能を継承クラスに対して提供します。


フィールドの概要
protected  NyARParam _ar_param
          ARToolkitパラメータのインスタンスです。
protected  NyAR4PsgConfig _config
           
protected  NyARFrustum _frustum
           
protected  NyARPerspectiveRasterReader _preader
          画像抽出用のオブジェクトです。
protected  PMatrix3D _ps_background_mv
          バックグラウンド用のModelviewMatrixです。
protected  PMatrix3D _ps_projection
          ProcessingスタイルのProjectionMatrixです。
protected  PApplet _ref_papplet
          参照するAppletのインスタンスです。
protected  PImageRaster _src_raster
          入力画像ラスタです。
 float FRUSTUM_DEFAULT_FAR_CLIP
          farクリップ面のデフォルト値です。
 float FRUSTUM_DEFAULT_NEAR_CLIP
          nearクリップ面のデフォルト値です。
static String VERSION
          バージョン文字列です。
 
コンストラクタの概要
protected NyARPsgBaseClass()
          コンストラクタです。
 
メソッドの概要
 void drawBackground(PImage i_img)
          この関数は、PImageをバックグラウンドへ描画します。
 PMatrix3D getProjectionMatrix()
          この関数は、ProjectionMatrixを複製して返します。
protected  void initInstance(PApplet parent, String i_cparam_file, int i_width, int i_height, NyAR4PsgConfig i_config)
           
protected static void matResult2GLArray(NyARTransMatResult i_src, double[] o_gl_array)
           
protected static void matResult2PMatrix3D(NyARDoubleMatrix44 i_src, int i_mode, PMatrix3D o_pmatrix)
          変換行列をProcessingのMatrixへ変換します。
protected  PImage pickupMarkerImage(NyARDoubleMatrix44 i_mat, int i_x1, int i_y1, int i_x2, int i_y2, int i_x3, int i_y3, int i_x4, int i_y4, int i_out_w_pix, int i_out_h_pix)
          PImageをラップしたラスタから画像を得ます。
protected static void PMatrix2GLProjection(PMatrix3D i_in, double[] o_out)
           
protected static void PMatrix2GLProjection(PMatrix3D i_in, float[] o_out)
           
protected  PVector screen2MarkerCoordSystem(NyARDoubleMatrix44 i_mat, int i_x, int i_y)
          この関数は、i_mat平面から、自由変形した画像を取得します。
 void setARClipping(float i_near, float i_far)
          この関数は、視錐台のクリップ面を設定します。
 void setARPerspective()
          この関数は、ARToolKit準拠のProjectionMatrixをProcessingにセットします。
 void setBackgroundOrtho(int i_width, int i_height)
          この関数は、正射影行列をProcessingへセットします。
 void setPerspective(PMatrix3D i_projection)
          この関数は、ProjectionMatrixをProcessingにセットします。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

FRUSTUM_DEFAULT_NEAR_CLIP

public final float FRUSTUM_DEFAULT_NEAR_CLIP
nearクリップ面のデフォルト値です。

関連項目:
定数フィールド値

FRUSTUM_DEFAULT_FAR_CLIP

public final float FRUSTUM_DEFAULT_FAR_CLIP
farクリップ面のデフォルト値です。

関連項目:
定数フィールド値

VERSION

public static final String VERSION
バージョン文字列です。 NyAR4psgのバージョン情報を示します。

関連項目:
定数フィールド値

_ref_papplet

protected PApplet _ref_papplet
参照するAppletのインスタンスです。


_ps_projection

protected final PMatrix3D _ps_projection
ProcessingスタイルのProjectionMatrixです。


_ps_background_mv

protected final PMatrix3D _ps_background_mv
バックグラウンド用のModelviewMatrixです。


_ar_param

protected final NyARParam _ar_param
ARToolkitパラメータのインスタンスです。


_frustum

protected final NyARFrustum _frustum

_config

protected NyAR4PsgConfig _config

_src_raster

protected PImageRaster _src_raster
入力画像ラスタです。PImageをラップします。継承クラスで入力画像をセットします。


_preader

protected NyARPerspectiveRasterReader _preader
画像抽出用のオブジェクトです。_src_rasterを参照します。

コンストラクタの詳細

NyARPsgBaseClass

protected NyARPsgBaseClass()
コンストラクタです。

メソッドの詳細

initInstance

protected void initInstance(PApplet parent,
                            String i_cparam_file,
                            int i_width,
                            int i_height,
                            NyAR4PsgConfig i_config)
                     throws NyARException
例外:
NyARException

getProjectionMatrix

public PMatrix3D getProjectionMatrix()
この関数は、ProjectionMatrixを複製して返します。

戻り値:
ProjectionMatrixです。

drawBackground

public void drawBackground(PImage i_img)
この関数は、PImageをバックグラウンドへ描画します。PImageはfarclip面+1の部分に描画します。
この関数は、次のコードと等価です。

:
PMatrix3D om=new PMatrix3D(((PGraphics3D)g).projection);
setBackgroundOrtho(img.width,img.height)
pushMatrix();
resetMatrix();
translate(0,0,-(far*0.99f));
image(img,-width/2,-height/2);
popMatrix();
setPerspective(om);
:

この関数は、PrjectionMatrixとModelViewMatrixを復帰するため、若干のオーバヘッドがあります。 高速な処理が必要な場合には、展開してください。

パラメータ:
i_img - 背景画像を指定します。

setARClipping

public void setARClipping(float i_near,
                          float i_far)
この関数は、視錐台のクリップ面を設定します。この値のデフォルト値は、FRUSTUM_DEFAULT_NEAR_CLIPFRUSTUM_DEFAULT_FAR_CLIPです。 設定値は、次回のsetARPerspective()から影響を及ぼします。現在の設定値にただちに影響を及ぼすものではありません。

パラメータ:
i_near - NearPlaneの値を設定します。単位は[mm]です。
i_far - FarPlaneの値を設定します。単位は[mm]です。

setBackgroundOrtho

public void setBackgroundOrtho(int i_width,
                               int i_height)
この関数は、正射影行列をProcessingへセットします。 画面の中心が0,0にセットされます。 nearクリップには、setARClipping(float, float)でセットしたクリップ面を指定します。  farクリップには、setARClipping(float, float)でセットしたクリップ面+1を指定します。
この関数は、次のコードと等価です。

:
ortho(-i_width/2, i_width/2,-i_height/2,i_height/2,near,far+1);
:

パラメータ:
i_width - 幅を指定します。
i_height - 高さを指定します。

setARPerspective

public void setARPerspective()
この関数は、ARToolKit準拠のProjectionMatrixをProcessingにセットします。 関数を実行すると、ProcessingのProjectionMatrixがARToolKitのカメラパラメータのものに変わり、映像にマッチした描画ができるようになります。 ProcessingのデフォルトFrustumに戻すときは、PGraphics3D#perspective()を使います。 Frustumの有効期間は、次にPGraphics3D#perspective()PGraphics3D#perspective()をコールするまでです。

Version 1.1.0より、古いprojection matrixを返さなくなりました。古いprojection matrixが必要な時は、PGraphics3D#projectionを複製して保存して下さい。


setPerspective

public void setPerspective(PMatrix3D i_projection)
この関数は、ProjectionMatrixをProcessingにセットします。

パラメータ:
i_projection - 設定するProjectionMatrixを指定します。

Processing/1.3になったら、PApplet#matrixMode使ってきちんと使えるようになると思う。 今は無理なので、frustum経由

Version 1.1.0より、古いprojection matrixを返さなくなりました。古いprojection matrixが必要な時は、PGraphics3D#projectionを複製して保存して下さい。


PMatrix2GLProjection

protected static void PMatrix2GLProjection(PMatrix3D i_in,
                                           float[] o_out)

PMatrix2GLProjection

protected static void PMatrix2GLProjection(PMatrix3D i_in,
                                           double[] o_out)

matResult2GLArray

protected static void matResult2GLArray(NyARTransMatResult i_src,
                                        double[] o_gl_array)

matResult2PMatrix3D

protected static void matResult2PMatrix3D(NyARDoubleMatrix44 i_src,
                                          int i_mode,
                                          PMatrix3D o_pmatrix)
変換行列をProcessingのMatrixへ変換します。

パラメータ:
i_src -
i_mode -
o_pmatrix -

screen2MarkerCoordSystem

protected PVector screen2MarkerCoordSystem(NyARDoubleMatrix44 i_mat,
                                           int i_x,
                                           int i_y)
この関数は、i_mat平面から、自由変形した画像を取得します。

パラメータ:
i_mat -
i_x -
i_y -
戻り値:

pickupMarkerImage

protected PImage pickupMarkerImage(NyARDoubleMatrix44 i_mat,
                                   int i_x1,
                                   int i_y1,
                                   int i_x2,
                                   int i_y2,
                                   int i_x3,
                                   int i_y3,
                                   int i_x4,
                                   int i_y4,
                                   int i_out_w_pix,
                                   int i_out_h_pix)
PImageをラップしたラスタから画像を得ます。

パラメータ:
i_mat -
i_x1 -
i_y1 -
i_x2 -
i_y2 -
i_x3 -
i_y3 -
i_x4 -
i_y4 -
i_out_w_pix -
i_out_h_pix -
戻り値:


NyAR4psgは、NyARToolkit projectで開発している、NyARToolKitのProcessingフロントエンドです。ソースコードは、sorceforge.jpNyARToolkitからダウンロードできます。
Copyright 2011 NyARToolkit project. All rights reserved.