67workshop Spark02

67workshop Spark02にmonoq氏に誘われたので一緒に行ってきました。
Spark67 Part2 Edge ActionScript Libraries | ロクナナワークショップ イベント企画
(時間的な都合や観客の多さで単純に比較するのもいけないのですが)
AdobeMaxより満足しました。

【JSFL】
Javascriptで書ける flashのアクション (Photoshopでいうところの)
(昔PhotoShopをjsで動かすという記事を見かけた気がしたそれは別の話ので あとで)

flashの操作をそのままかけばいいので
昨日の仕事みたいに15個パブリッシュも 人力でしなくていい。
mcの位置合わせとかも 数値触らなくていい
→明日から作業効率があげられそう
ただ、処理速度が遅いので 汎用化できる大量な単純作業などに用いるのがよいらしい
スピードを求めるなら Cで書け。

Adobe Flash CS4 Professional * JavaScript API の操作
AdobeMAXでも Sparkの人が 
「パレットつくれます」とか「便利なもの作りました」と
説明する場面があったけれど 時間がなかったので
JSFLそのものの説明がなくて ポカンっと見ていた。
その辺りの知識が埋まった。

【FLARToolKit】

Papervision3Dにまともに触ったことなかったり、
昨日までこんな勘違いをしていた(正しくは えふえるえーあーるつーるきっと 文字情報だけで知っているからこういうことが起きる)自分でもなんかできたりするくらい説明が詳しかった。
090620_01.png

実際のswfはこちら
(要ウェブカメラ)makerをダウンロード プリント後 カメラにかざしてください。
カメラに何も写らない人は 右クリックして「設定」/一番右側のタブ「カメラ」で使うカメラを選び直してください。

ソースは

package {
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.objects.primitives.Plane;
public class SimpleCube extends PV3DARApp {
private var _plane:Plane;
private var _cube1:Cube;
private var _cube2:Cube;
private var _cube3:Cube;
private var _cube4:Cube;
public function SimpleCube() {
// カメラ補正ファイルとパターン定義ファイルのファイル名を渡して初期化。
this.init('Data/camera_para.dat', 'Data/flarlogo.pat');
}
protected override function onInit():void {
super.onInit(); // 必ず呼ぶアル。
// マーカーと同じサイズを Plane を作ってみる。
var wmat:WireframeMaterial = new WireframeMaterial(0x00ff00, 1, 2); // ワイヤーフレームで。
this._plane = new Plane(wmat, 80, 80); // 80mm x 80mm。
this._plane.rotationX = 180; // 裏向いてるのでこっち向ける。
this._baseNode.addChild(this._plane); // _baseNode に addChild するとマーカーに追従する。
// ライトの設定。手前、上のほう。
var light:PointLight3D = new PointLight3D();
light.x = 0;
light.y = 1000;
light.z = -1000;
// Cube を作る。
var fmat1:FlatShadeMaterial = new FlatShadeMaterial(light, 0xff1a00, 0xab1100); // あか
var fmat2:FlatShadeMaterial = new FlatShadeMaterial(light, 0x009ec5, 0x006a84); // あお
var fmat3:FlatShadeMaterial = new FlatShadeMaterial(light, 0xffe500, 0xab9a00); // きいろ
var fmat4:FlatShadeMaterial = new FlatShadeMaterial(light, 0x69bb38, 0x467d26); // みどり
this._cube1 = new Cube(new MaterialsList({all: fmat1}), 40, 40, 40); // 40mm x 40mm x 40mm。
this._cube1.z = 60; // 立方体の高さの半分、上方向(Z方向)に移動させるとちょうどマーカーにのっかる形になる。
this._baseNode.addChild(this._cube1);
this._cube2 = new Cube(new MaterialsList({all: fmat2}), 40, 40, 40); // 40mm x 40mm x 40mm。
this._cube2.z = 160; // 立方体の高さの半分、上方向(Z方向)に移動させるとちょうどマーカーにのっかる形になる。
this._baseNode.addChild(this._cube2);
this._cube3 = new Cube(new MaterialsList({all: fmat3}), 40, 40, 40); // 40mm x 40mm x 40mm。
this._cube3.z = 260; // 立方体の高さの半分、上方向(Z方向)に移動させるとちょうどマーカーにのっかる形になる。
this._baseNode.addChild(this._cube3);
this._cube4 = new Cube(new MaterialsList({all: fmat4}), 40, 40, 40); // 40mm x 40mm x 40mm。
this._cube4.z = 360; // 立方体の高さの半分、上方向(Z方向)に移動させるとちょうどマーカーにのっかる形になる。
this._baseNode.addChild(this._cube4);
}
}
}

見た通り Saqooshaさんのエントリーにあるスタートアップガイドのを元に
cubeを増やしてそれぞれに色つけただけですが。

モデリングするために3Dモデリングソフトが必要で
説明では フリーの3DソフトBlenderが使われていました
それはそれでやらないといけないくらい難しげな様子。
(3D制作は STRATA Vision3Dあたりで知識が止まっているので… )

これまでCが解らなくて指をくわえて「すごいな」と ARモノの感想エントリーを書くくらいがせいぜい、今回のセミナーでやっと実際地続きなんだという感覚が得られました。

参考リンク
工学ナビ – 「攻殻機動隊」「電脳コイル」の世界を実現! – ARToolKitを使った拡張現実感プログラミング

追記:
公式サイトでのイベントリポートがアップされました。
http://event.67.org/?p=410