- 2008-08-06 (水)
- FIVe3D
FIVe3D の Scene3D に「viewDistance」というプロパティがある。いわゆる視点側のZ値の最大値みたいなもの?もしくは、透視投影の処理に関係するもの? viewDistance の初期値はおそらく1000で設定してあると思うのだけども、この値をちょこちょこと触っていたら、不思議な現象が発生した。
で、結果、FIVe3D は視点の後ろ側にある場合も描画してしまうような気がする。バグ?
うーん。なんか説明がトコトン難しい…。
サンプル
見てもらった方が早いということで不思議な現象サンプル。
Flash Player Plug-in はこちらからダウンロードする事が出来ます(無料)。
↑
こんな感じで、オブジェクトが視点の後ろ側にいっている間は見えなくなって欲しいのだが、なんか反転した状態で描画されてしまっている。
ソースはこちら
package {
//クラス読み込み
import flash.display.StageScaleMode;
import flash.display.Sprite;
import flash.events.Event;
//FIVe3D v2.1
import five3D.display.Scene3D;
import five3D.display.Sprite3D;
import five3D.utils.Drawing;
public class Main extends Sprite {
private var sc3D:Scene3D;
private var base3D:Sprite3D;
private var sp3D:Sprite3D;
//コンストラクタ
public function Main() {
//ステージサイズ設定
stage.scaleMode = StageScaleMode.NO_SCALE;
//シーン設定
sc3D = new Scene3D();
sc3D.x = stage.stageWidth / 2;
sc3D.y = stage.stageHeight / 2;
sc3D.viewDistance = 200; //←200に設定
addChild(sc3D);
//ベースオブジェクト生成
base3D = new Sprite3D();
sc3D.addChild(base3D);
//3Dオブジェクト生成
sp3D = new Sprite3D();
with(sp3D) {
graphics3D.beginFill(0xFF9900);
graphics3D.drawRect(-10, -10, 20, 20);
graphics3D.endFill();
z=250; //←250に設定
}
base3D.addChild(sp3D);
//イベント設定
base3D.addEventListener(Event.ENTER_FRAME, base3DEnterFrame);
}
private function base3DEnterFrame(e:Event):void {
e.target.rotationY += 2;
}
}
}
↑
上記ソースには「FIVe3D」が別途必要です。
:
sc3D.viewDistance = 200; //←200に設定
:
:
with(sp3D) {
z=250; //←250に設定
:
↑
viewDistance を 200 で設定して、オブジェクト sp3D の z 値を 250 に配置。そして、親の base3D オブジェクトを回転させる。
sp3D 自体の z 値は変動しないが、その親である base3D が回転することで、位置的には -250 まで移動することになるはず。
z が負の方向に viewDistance の数値を超えると、視点の後ろ側、つまり本来はオブジェクトが見えなくなるはずなのだが、サンプルを見て分かるように、一瞬変な描画になり、反転して回転するアニメーションが描画されてしまう。
バグなのか、僕のスクリプトの記述方法が悪いのか…(汗
FIVe3D の中身を見て、z が viewDistance を超えるような場合は、visible にしてしまおうと試みたが、所詮三流スクリプターなため、解決できずに断念…orz
FIVe3D で、視点の後ろ側にまわるような構成の場合は、ちょっと要注意かも。
PaperVision3D や Away3D だと大丈夫なのかな?
- 次の記事: FlashDevelop が良い感じ
- 前の記事: FIVe3D + Tweener で簡単3Dモーション
コメント:0
トラックバック:0
- この記事のトラックバックURL
- http://god.xsrv.jp/__mt/mt-tb.cgi/1321
- トラックバックを受ける記事
- FIVe3D viewDistance の不思議 from 1ka2ka.com