NyARToolkit/4.1.1(Java/C#/Unity) & NyAR4psg 1.3.2 Released

NyARToolkit/4.1.1(Java/C#/Unity) と NyAR4psg/1.3.2をリリースします。

更新内容

NyARToolkit/4.1.1

  • 4.1.0の致命的な不具合 #30297 のバグフィクスです。

NyAR4psg/1.3.2

  • NyARToolkitを4.1.1へ更新しました。
  • Processing2.0Betaへ対応しました。(1.5系と2.0系は別のライブラリ・サンプルを用意しました。) 既知の問題点として、2.0Beta版は、文字列表示処理が完全に動作しません。

 

English

NyARToolkit/4.1.1(Java/C#/Unity)  and NyAR4psg/1.3.2 are released.

Update details

NyARToolkit/4.1.1

NyAR4psg/1.3.2

  • Updated NyARToolkit library to 4.1.1.
  • Supported Processing2.0Beta (1.5 and 2.0 libraries and samples are separated.)
    A known issue is text-rendering does not work correctly.

NyARToolkit 4.1.0

NyARToolkit 4.1.0(Java/C#/Unity3D)をリリースします。
http://sourceforge.jp/projects/nyartoolkit/releases/

更新内容は以下の通りです。

新機能

共通

  • ARToolkit Professional Version4のカメラパラメータが使用できるようになります
  • OpenCVスタイルのカメラパラメータを使用できるようになります。
  • MarkerSystemでARプレイカードを使用できるようになります。

Java

  • スケッチシステムに、J2se版を追加しました。
  • NyARBufferedImageIoにNyARRgbRasterをラップするcreateWrappedBufferedImage関数を追加しました。

Unity

  • WebPlayerに対応しました。また、サンプルを追加しました。
  • サンプルの設定ファイルをResourceから読み込むように修正

バグ修正

共通

  • MarkerSystemで複数のARマーカ取り扱い時に検出ミスが発生する不具合の修正しました。(#29287)
  • NyARPointerStack#removeが正常に動作しない不具合を修正しました。(#29917)
  • MarkerSystemが10個以上のマーカを同時に認識できない問題を修正しました。(#30173)
  • その他の不具合修正( #29763 , #28851)

変更

共通

  • NyARParamのコンストラクタを変更しました。初期値設定やファイルから値をロードするときは、static関数をコールします。
  • NyARCodeのコンストラクタを変更しました。初期値設定やファイルから値をロードするときは、static関数をコールします。
  • NyARParam#changeSizeが、x,y独立してスケールするようになりました。
  • NyARTransMatの仕様を変更しました。NyARTransmatResultを廃止し、NyARTransmatResultParamとNyARDoubleMatrix44へ返却するようになりました。
  • NyARMath/NyARDoubleMatrix44/NyARDoubleMatrix33に関数を追加しました。
  • サンプルを変更にあわせて修正しました。

Java

  • GlSketchの起動方法を変更しました。new Sketch().run();のようにコールする必要があります。

C#

  • D3dSketchの起動方法を変更しました。new Sketch().run();のようにコールする必要があります。

 

English

NyARToolkit version 4.1.0 (Java/C#/Unity) released.
http://sourceforge.jp/projects/nyartoolkit/releases/

New function

All

  • NyARParam supports ARToolkit Professional Version4 format.
  • NyARParam supports OpenCV style Matrix.
  • NyARMarkerSystem supports PS AR play card format.

Java

  • Added the J2se version to a sketch system.
  • Added the createWrappedBufferedImage function which wraps NyARRgbRaster to NyARBufferedImageIo.

Unity

  • Supported WebPlayer. And added it’s sample.
  • The configuration files loader was changed. Files are loaded from Resource.

BugFix

  • #29287,#29917,#30173,#29763, #28851

Changes

All

  • The constructor of NyARParam was changed. Call a new static function for loading.
  • The constructor of NyARCode was changed. Call a new static function for loading.
  • NyARParam#changeSize function parameter is changed. it can set scales independently x and y.
  • The specification of NyARTransMat function is changed. it became to  return 2 parameters – NyARTransmatResultParam and NyARDoubleMatrix44.  NyARTransmatResult is removed.
  • The function is added to NyARMath/NyARDoubleMatrix44/NyARDoubleMatrix33.
  • All samples are changed to follow changes.

Java

  • The starting method of GlSketch is changed.  It is necessary to call like “new Sketch().run();” .

C#

  • The starting method of D3dSketch is changed. It is necessary to call like “new Sketch().run();”.

ARプレイカードをNy/FLARToolkitで使う

SCEさんがARマーカを大量印刷してくれるそうなので、NyARToolkitのMarkerSystemからARプレイカードを使えるようにしました。

 

紹介記事→SCEJ、PS Vita「ARプレイ」を6月28日より開始

パッケージ化はしていないので、リポジトリから直接チェックアウトしてください。

使い方

SimpleLiteをARプレイカードで動かすには、次のコードを書きます。
個のサンプルはJavaですが、ActionScriptでも同じAPIが用意されています。


package jp.nyatla.nyartoolkit.jogl.sample.sketch;

import javax.media.opengl.*;
import jp.nyatla.nyartoolkit.core.NyARException;
import jp.nyatla.nyartoolkit.jmf.utils.*;
import jp.nyatla.nyartoolkit.jogl.sketch.GlSketch;
import jp.nyatla.nyartoolkit.jogl.utils.*;
import jp.nyatla.nyartoolkit.markersystem.NyARMarkerSystemConfig;

public class SimpleLite extends GlSketch
{
  private NyARJmfCamera camera;
  private NyARGlMarkerSystem nyar;
  private NyARGlRender render;
  public void setup(GL gl)throws NyARException
  {
    this.size(640,480);
    NyARMarkerSystemConfig config = new NyARMarkerSystemConfig(640,480);
    JmfCaptureDeviceList devlist = new JmfCaptureDeviceList();
    JmfCaptureDevice d = devlist.getDevice(0);
    d.setCaptureFormat(config.getScreenSize(),30.0f);
    this.camera=new NyARJmfCamera(d);//create sensor system
    this.nyar=new NyARGlMarkerSystem(config);   //create MarkerSystem
    this.render=new NyARGlRender(this.nyar);
    this.id=this.nyar.addPsARPlayCard(5,80);
    gl.glEnable(GL.GL_DEPTH_TEST);
    this.camera.start();
  }
  private final static String ARCODE_FILE = "../../Data/patt.hiro";
  private int id;

  public void draw(GL gl)
  {
    synchronized(this.camera){
      try {
        this.render.drawBackground(gl, this.camera.getSourceImage());
        this.render.loadARProjectionMatrix(gl);
        this.nyar.update(this.camera);
        if(this.nyar.isExistMarker(this.id)){
          this.render.loadMarkerMatrix(gl,this.id);
          this.render.colorCube(gl,40,0,0,20);
        }
        Thread.sleep(1);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
  public static void main(String[] args)
  {
    try {
      new SimpleLite();
    } catch (Exception e) {
      e.printStackTrace();
    }
    return;
  }
}

重要なのは次の行で、ARプレイカードの5番を、マーカサイズ8cmで登録しています。(ARプレイカードの標準的な大きさがわからなかったので・・・)
this.id=this.nyar.addPsARPlayCard(5,80);

使えるカードは1番から6番までです。もちろん、従来のARマーカやNyIdマーカと混在して使うことも出来ます。

FLARTK、NyARToolKitCSには順次移植していきます。

MQO file viewer

ForumにMQOの表示方法の質問があったので、スケッチ書きました。MQOファイルをHiroマーカの上に表示します。

Source code

MqoView.java


import javax.media.opengl.*;

import jp.nyatla.kGLModel.KGLException;
import jp.nyatla.kGLModel.KGLExtensionCheck;
import jp.nyatla.kGLModel.KGLModelData;
import jp.nyatla.kGLModel.contentprovider.LocalContentProvider;
import jp.nyatla.nyartoolkit.core.NyARException;
import jp.nyatla.nyartoolkit.jmf.utils.*;
import jp.nyatla.nyartoolkit.jogl.sketch.GlSketch;
import jp.nyatla.nyartoolkit.jogl.utils.*;
import jp.nyatla.nyartoolkit.markersystem.NyARMarkerSystemConfig;
/**
 * This program shows a Mqo model.
 */
public class MqoView extends GlSketch
{
  private NyARJmfCamera camera;
  private NyARGlMarkerSystem nyar;
  private NyARGlRender render;
  private KGLModelData model_data; // kei add
  public void setup(GL gl)throws NyARException
  {
    this.size(640,480);
    NyARMarkerSystemConfig config = new NyARMarkerSystemConfig(640,480);
    JmfCaptureDeviceList devlist = new JmfCaptureDeviceList();
    JmfCaptureDevice d = devlist.getDevice(0);
    d.setCaptureFormat(config.getScreenSize(),30.0f);
    this.camera=new NyARJmfCamera(d);//create sensor system
    this.nyar=new NyARGlMarkerSystem(config);   //create MarkerSystem
    this.render=new NyARGlRender(this.nyar);

    this.id=this.nyar.addARMarker("data/patt.hiro",16,25,80);
    try {
      LocalContentProvider content_provider=new LocalContentProvider("data/miku_xx08/miku.mqo");
      model_data = KGLModelData.createGLModel(gl,null,content_provider,0.015f, KGLExtensionCheck.IsExtensionSupported(gl,"GL_ARB_vertex_buffer_object"));
    } catch (KGLException e) {
      e.printStackTrace();
      throw new NyARException(e);
    }
    gl.glEnable(GL.GL_DEPTH_TEST);
    this.camera.start();
  }
  private int id;

  public void draw(GL gl)
  {
    synchronized(this.camera){
      try {
        this.render.drawBackground(gl, this.camera.getSourceImage());
        this.render.loadARProjectionMatrix(gl);
        this.nyar.update(this.camera);
        if(this.nyar.isExistMarker(this.id)){
          // Viewing transformation.
          gl.glLoadIdentity();
          this.render.loadMarkerMatrix(gl,this.id);
          gl.glTranslatef(0.0f,0.0f,0.0f) ;//position
          gl.glRotatef(90.0f,1.0f, 0.0f, 0.0f); //OpenGL座標系→ARToolkit座標系
          gl.glEnable(GL.GL_CULL_FACE);
          gl.glCullFace(GL.GL_FRONT);
          model_data.enables(10.0f);
          model_data.draw() ;
          model_data.disables() ;
        }
        Thread.sleep(1);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
  public static void main(String[] args)
  {
    try {
      new MqoView();
    } catch (Exception e) {
      e.printStackTrace();
    }
    return;
  }
}

解説

MQOの表示には、keiさん作のKGLを若干改変したものを使用しています。
スケッチの重要な部分は2箇所です。

setupでは、MQOファイルを読み込みます。

  LocalContentProvider content_provider=new LocalContentProvider("data/miku_xx08/miku.mqo");
  model_data = KGLModelData.createGLModel(gl,null,content_provider,0.015f, KGLExtensionCheck.IsExtensionSupported(gl,"GL_ARB_vertex_buffer_object"));

drawでは、読み込んだモデルを表示しています。

        if(this.nyar.isExistMarker(this.id)){
          // Viewing transformation.
          gl.glLoadIdentity();
          this.render.loadMarkerMatrix(gl,this.id);
          gl.glTranslatef(0.0f,0.0f,0.0f) ;//position
          gl.glRotatef(90.0f,1.0f, 0.0f, 0.0f); //OpenGL座標系→ARToolkit座標系
          gl.glEnable(GL.GL_CULL_FACE);
          gl.glCullFace(GL.GL_FRONT);
          model_data.enables(10.0f);
          model_data.draw() ;
          model_data.disables() ;
        }

Setup

projectファイルは MqoModel-20120326.zip からダウンロードできます。実効には、JMF、JOGL、NyARToolkit version 4.xが必要です。あらかじめセットアップして置いてください。

Hiroマーカを撮影すると、プリセットされているミクさんのモデルが表示されます。

3D modelについて

プリセットされている3Dmodelは、三次元CG@七葉 nh0072.zipを編集して使用しています。

English

This sketch shows MQO-model above  “Hiro” marker.

Source code

Main program is MqoView.java

Description of source code

MQO library is KGL by kei-san.
The changed parts are below.

  • setup –  MQO loader codes.
  • draw – MQO drawing codes.

Setup

The eclipse project is MqoModel-20120326.zip . The project requires external libraries, JMF ,JOGL, NyARToolkit version 4.x.  Please set up these libraries.

NyARToolkit4.0.3 released

NyARToolkit4.0.3をリリースします。変更内容は、バグフィクスです。RLEラベリングに存在していた致命的な不具合が解消しています。APIについては、基本的に4.0.0と互換性があります。

修正した不具合

修正した不具合は以下の通りです。

#28546,#28540,#28478,#28477,
#28476,#28475,#28323,#28225,
#28067,#28066,#28014,#24229,
#24228,#24215,#27902

ダウンロード

Java/C#/AS3についてはこちらからダウンロードできます。
http://sourceforge.jp/projects/nyartoolkit/releases/

FLARToolKitのPreReleaseはリポジトリからチェックアウトしてください。
http://www.libspark.org/browser/as3/FLARToolKit/branches/nyatla/v4/tags/pre3

NyARToolkit for AndroidのPreRelease版は、リポジトリからチェックアウトしてください。
http://sourceforge.jp/projects/nyartoolkit-and/scm/git/NyARTK4.nyatla/commits/a4949937cb5a3eb2d1b7d6f6b5cd1be02510fbd6

Android版の4.0.1パッケージは、最適化が不十分で低速です。リポジトリからチェックアウトしたコードを使用してください。4.0.3は、Android2.2の端末で、30-60fps(QVGA)で動作します。

English

NyARToolkit4.0.3 was released. Main changes are bugfix. Critical bug in RLE Labeling is fixed. APIs are compatible with 4.0.0.

Bugfix details

#28546,#28540,#28478,#28477,
#28476,#28475,#28323,#28225,
#28067,#28066,#28014,#24229,
#24228,#24215,#27902

Download

NyARToolkit Java/C#/AS3 packages.
http://sourceforge.jp/projects/nyartoolkit/releases/

FLARToolKit Pre-Release repository
http://www.libspark.org/browser/as3/FLARToolKit/branches/nyatla/v4/tags/pre3

NyARToolkit for Android PreRelease repository
http://sourceforge.jp/projects/nyartoolkit-and/scm/git/NyARTK4.nyatla/commits/a4949937cb5a3eb2d1b7d6f6b5cd1be02510fbd6

Android version 4.0.1 package has not optimization, and are very low speeds.
Please use the code 4.0.3 on repository.
4.0.3 is running on Android2.2 and operates by 30-60fps (QVGA).

Spanish

NyARToolkit4.0.3 fue soltado. Los cambios principales son los bugfix. El bicho crítico en Etiquetado de RLE es fijo. API son compatibles con 4.0.0.

Bugfix detalla

#28546,#28540,#28478,#28477,
#28476,#28475,#28323,#28225,
#28067,#28066,#28014,#24229,
#24228,#24215,#27902

Transmita

NyARToolkit Java/C#/AS3 paquetes.
http://sourceforge.jp/projects/nyartoolkit/releases/

FLARToolKit Pre-Release almacén
http://www.libspark.org/browser/as3/FLARToolKit/branches/nyatla/v4/tags/pre3

NyARToolkit for Android PreRelease almacén
http://sourceforge.jp/projects/nyartoolkit-and/scm/git/NyARTK4.nyatla/commits/a4949937cb5a3eb2d1b7d6f6b5cd1be02510fbd6

Versión del androide 4.0.1 paquete no tiene la optimización y es las velocidades muy bajas.
Use el código 4.0.3 en almacén. 4.0.3 están ejecutando en Android2.2 y operan por 30-60fps (QVGA).