新しいNyARToolKitAS3を、早速試してみる。

Papervision3D制御用クラス

Papervision3Dの制御クラスらしい。
サンプルのARTKView.as内に入っていたのをコピーしてきた。
レンダリングと言いながらDisplayObject3Dを毎度毎度addChildしたり
removeChildすると言う全く意味の分からない作りになってるが、
何か意味のあることなのかもしれないので残してある。
この部分は今後改善していこう。
[as3]
package org.tarotaro.flash.ar
{
import org.libspark.flartoolkit.core.transmat.FLARTransMatResult;
import org.libspark.flartoolkit.support.pv3d.FLARCamera3D;
import org.libspark.flartoolkit.core.param.*;
import org.papervision3d.render.LazyRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.objects.*;
import org.papervision3d.cameras.*;

import flash.display.*;
/**
* …
* @author tarotarorg
*/
public class PV3dController
{

protected var _viewport:Viewport3D;
protected var _camera3d:Camera3D;
protected var _scene:Scene3D;
protected var _renderer:LazyRenderEngine;

public var _background:Bitmap;

public function PV3dController(i_camera3d:Camera3D,i_width:int,i_height:int, root_sprite:Sprite)
{
this._background = new Bitmap(new BitmapData(i_width, i_height, false));
this._background.x = 0;
this._background.y = 0;
this._background.width= i_width;
this._background.height = i_height;
root_sprite.addChild(this._background);
this._viewport = new Viewport3D(i_width,i_height);
this._viewport.x = -4; // 4pix ???
root_sprite.addChild(this._viewport);

this._camera3d = i_camera3d;
this._scene = new Scene3D();
this._renderer = new LazyRenderEngine(_scene, _camera3d, _viewport);
}
/**
* DisplayNode配列と背景を、o_bitmapへ出力。
* @param i_background
* @param i_dispray_object
*/
public function render(i_dispray_object:Vector.):void
{
var i:int;
for (i = 0; i < i_dispray_object.length;i++){ this._scene.addChild(i_dispray_object[i]); } this._renderer.render(); for (i = 0; i < i_dispray_object.length;i++){ this._scene.removeChild(i_dispray_object[i]); } } } } [/as3]

タイトルとURLをコピーしました