2008.12 Monthly archives

[Away3D] VideoMaterial

2008.12.03

引き続き、Away3D 2.2.5 の新要素を調査中であります。

動画テクスチャのためのマテリアル VideoMaterial が追加されてた。PV3Dの VideoStreamMaterial と同じような感じだけど、ループの指定ができるのは楽でイイ。

import away3d.materials.VideoMaterial;

- 中略 -

var vmat:VideoMaterial = new VideoMaterial( { file:"fuga.flv", loop:true });
var objPlane:Plane = new Plane({ material:vmat, width:320, height:240 });

file:String で動画ファイルのパスを指定
loop:Boolean でループ再生の有効無効を指定

んで、以前作った CurlingPlane のテクスチャを動画に置き換えてみたのが以下のデモ。

VideoMaterial Test(要:FlashPlayer9)
※動画部分をドラッグでページめくりができます。

これを作るにあたって、View3D にバグを見つけたのでメモっとく。
現象としては MouseEvent3D イベントの判定がまともに機能しなくなるという、わりと迷惑度の高いもの。これまで away3d.core.render パッケージに存在してた FindHit クラスが削除となり、同様の機能が View3D の findHitメソッドとして実装されるという仕様変更に誘発されたみたいで、マウスイベントが発生したスクリーン座標と、描画されている3Dオブジェクトとの位置関係が一致しなくなる。対処として

View3D.as 582〜583行を

_hitPointX = stage.mouseX;
_hitPointY = stage.mouseY;

↓

_hitPointX = mouseX;
_hitPointY = mouseY;

と、修正することで解決できたけども若干不安。

前回のエントリで「Away3D 2.2.5の主なバージョンアップ内容はバグフィックス」みたいなこと書いたけど、細かく見てくとかなり地味な部分での仕様変更がいっぱいあるっぽい。たとえば BaseMesh が Object3Dに統合されてたり、PV3Dみたいに vertices と faces が Geometryオブジェクトに束ねられたり、Mesh と WireMesh が Meshに一本化されたり、イベント系クラスが大幅に増えてたりと、挙げ始めたら自分でも把握しきれなさげ。メジャーバージョンアップの際には、これまでの情報が通用しなくなるのを覚悟せねばなるまい。はぅ。