タグ :

3D基本事項(1点/0点透視法) : ActionScript -3D-

投稿日 : 2008年6月14日 | 更新日 : 2010年09月15日 前のページへ戻る

ActionScriptで3Dを表現するための覚書(AS2)。 3DをActionScriptで表現するには3次元である3D空間座標を2次元であるステージ(スクリーン)座標へ変換(投影,射影)する。 以下、変換を投影と呼ぶ。

投影方法の分類

  • 遠近法(本記事では1点透視法) ・・・ 本記事では遠近法を考える
  • 射影関数

投影の流れ

  1. 3次元3D空間座標を求める
  2. 投影(遠近法や射影関数)により2次元ステージ座標を取得して表示

遠近法(1点透視法)

1点遠近法の原則

  • 遠いほど小さく表示
  • 近いものを手前に表示
  • 遠くなるにつれて消失点に収束
3d1.gif 3D空間のz座標を用いて、3D空間を2次元へ投影する際の基準となる拡大率(scale)を求める。
scale = fl / (fl + z)
0 ≤ scale ≤ 1
z = 0 ⇒ scale = 1
z ≤ z' ⇒ scale  ≥ scale'
z → ∞ ⇒ scale = 0
遠近法の3次元空間原点(0, 0, 0)はステージ座標(0, 0, スクリーン位置)になる。 消失点とは3D空間のz座標が無限大になった際の物体の位置(消失点は空間内で共通して1つ)

1点遠近法を用いて投影

焦点 fl 3次元空間座標(x3d, y3d, z3d) 2次元空間座標(x2d, y2d) 消失点 vpx, vpy
// 拡大率
scale = fl / (fl + z3d)
// 2次元ステージ座標の取得
x2d = (x3d - vpx)*scale + vpx
y2d = (y3d - vpy)*scale + vpy
// サイズの変更
_xscale = _yscale = scale * 100;

0点透視法

曲線を投影する場合は消失点がない。そのため、1点透視法が使えない。 この場合は1点透視法の原則の中で「遠くなるにつれて消失点に収束」を考えないで、単に遠くのものを小さく、近いものを手前に表示すれば良い。 (例) 円運動
x3d = 中心X + 半径X×cosθ
y3d  = 中心Y + 半径Y×sinθ
z3d = 半径Z×sin;
var scale = fl/(fl+z3d);
x2d = x3d
y2d = y3d
_xscale = _yscale =  scale;

ActionScript2.0 | 固定リンク | Comments (0)

関連記事

このページの上へ移動

コメント

コメントはまだありません。

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。

 

 

 


トラックバックURL

http://www.findxfine.com/flash/actionscript/504.html/trackback

このページの上へ