info

category : Papervision3D
[FLAR]試作  @ FlashAS3 , FLAR , Flash DEMO , Papervision3D 2009年5月22日

今巷でウワサのFLARです。
このpdfを印刷してウェブカムで写せば赤緑青の立方体が現れます。それだけです。
ARはGPLというライセンスでソースコードを公開しなくてはならないらしいので
クソ汚いソースファイルを載せておきます。基本的に動けばいいぐらいで作っているので
中は大変なことになっています。
これを作るにあたってSaqooshaさんのサイトを参考にしました。この方すごいです。
http://saqoosha.net/flartoolkit/start-up-guide/
また、マーカーデータをつくるときはタロタローグさんのサイトを使用しました。
http://flash.tarotaro.org/ar/MarkerGeneratorOnline.html

スクリーンショット1

AR試作

[Papervision3D]triangle3D  @ FlashAS3 , Flash DEMO , Papervision3D 2009年5月20日

久々にPapervision3Dでtriangle3Dです。
三角形ポリゴンにバラバラになって別の形にトランスフォーム!

スクリーンショット1

triangle3D

追記:すこし自分のためにコードのおさらい

Papervision3Dの三角形ポリゴンひとつだけつかうにはTriangleMesh3Dを使う。
毎回使い方わすれるのでメモ。

import org.papervision3d.core.geom.TriangleMesh3D;
import org.papervision3d.core.geom.renderables.Triangle3D;
import org.papervision3d.core.geom.renderables.Vertex3D;
import org.papervision3d.core.math.NumberUV;
var mesh:TriangleMesh3D = new TriangleMesh3D(mat, new Array(), new Array(), null );
var v0:Vertex3D= new Vertex3D( -10, -10, 0 );
var v1:Vertex3D= new Vertex3D( 10, -10, 0 );
var v2:Vertex3D= new Vertex3D( 0, 10, 0 );
mesh.geometry.vertices.push( v0 );
mesh.geometry.vertices.push( v1 );
mesh.geometry.vertices.push( v2 );
var uvA:NumberUV= new NumberUV( 0, 0 );
var uvC:NumberUV= new NumberUV( 1, 0 );
var uvB:NumberUV= new NumberUV( 0, 1 );
mesh.geometry.faces.push( new Triangle3D( mesh, new Array(v0,v1,v2), null, new Array(uvA,uvC,uvB) ));
mesh.geometry.ready = true;
scene.addChild(mesh);

DisplayObject3Dの面はgeometry.facesに格納されている。
アクセスするときはこんな感じ。

var meshface:Triangle3D=item.geometry.faces[0];

そしてこのDisplayObject3Dの面であるTriangle3Dには頂点が定義されている。
その頂点の情報はverticesに格納されておりx,y,zプロパティがある。
アクセスするときはこんな感じ。

var meshface:Triangle3D=item.geometry.faces[0];
var vx:Number=meshface.vertices[0].x;
var vy:Number=meshface.vertices[0].y;
var vz:Number=meshface.vertices[0].z;
//三角形ポリゴンなのでお察しの通りverticesはvertices[2]まである。

DisplayObject3Dの面Triangle3D(以下モデルMesh)に
外部のTriangleMesh3D(以下外部Mesh)及び外部Meshの面Triangle3Dをぴったし合わせるには
・モデルMeshの頂点定義から三角形の中心点の座標を計算して出す。
・その座標に外部Meshを移動させる。
・モデルMeshの頂点座標から外部Meshの座標を引く。
・出てきた値を外部Meshの面の各頂点座標に適応する。
という処理が必要です。
別にむずかしいことではないですね。
足し算して割り算して代入して引き算して代入って感じです。
ただこれだとモデルMeshが座標(0,0,0)にありrotationXYZが0の状態しか
形作ることができないので今後の課題にしておこう。

[Papervision3D]PapervisionX  @ FlashAS3 , Papervision3D 2009年5月8日

PapervisionXという新しいPapervisionが開発中だそうです。
ソース
英語サイトですがわかるところをピックアップすると
・PapervisionXはcs4 branchではない。
・PapervisionXはFlashPlayer10の3D APIをベースとして一から作り直している次期バージョンです。
・FlashPlayer10の3D APIを使うので品質、速度、ファイルサイズがよくなるはず。
・Papervision3D2.0はまだ続くよ!
とゆーことです。
リリースはまだまだ先のようですが一般的にFP10が普及したら使ってみたいですねぇ。

[Papervision3D]リボン2  @ FlashAS3 , Flash DEMO , Papervision3D 2009年1月14日

Papervision3Dでリボン2です。
何か他に良い方法がありました。
※Firefoxだとフリーズしました。何故だ…

追記
直りました。ただのプログラムのミスでした。
裏側もマテリアルを設定できるようにしました。裏側が黒いやつがそうです。

スクリーンショット1

リボン2