3dの基礎知識 papervision3d 3d - x-knowledge(エ...
TRANSCRIPT
042
ch4応用編
ch1イントロダクション
ch2
Paparvision3
D
の
基本
ch3
Paparvision3
D
機能別リファレンス
2-1
3Dの基礎知識
043
Papervision3Dで表現される3D空間そもそもFlashは2Dの表現メディアなので、Flashコンテンツで扱う3Dというのはあくまで概念的なも
のになります。Papervision3Dでこの概念的な3D空間を表現するために、以下のような機能が提供され
ています。
■ シーン(3D空間)
3D空間のルートのことをシーンと呼びます。シーンはXYZの3次元座標で構成されており、直方体や
球体などの3Dオブジェクトやモデリングデータ、カメラなどはすべてシーンの中に配置します。
■ カメラ/ ズーム、遠近感、視野角
3D空間を2Dのスクリーン上に写し出す機能を「カメラ」と呼びます。たとえば、映画などの撮影では、
役者を配置して、カメラを持った人がどこからどのようなアングルで映すか検討すると思います。3D
における「カメラ」もこのような実際のカメラと同様で、3D空間に配置したオブジェクトをどの位置・
どの角度から見るかという「視点」を定義するものです。
さらに、実際のカメラと同じ「ズーム」「遠近感」「視野角」という考え方もあります。ズーム/遠近
感の値は大きいほど遠くのものが大きく見え、また、視野角の値によってカメラからどれだけの範囲を
映し出す(=画面に表示する)かを設定できます。
■ レンダラー
レンダラーとは、シーンを撮影したカメラのデータをFlashのステージに表示できるように変換する
仕組みのことです。Papervision3Dの3D空間(シーン)はFlashのステージに直接表示することができな
いので、2Dのイメージに変換を行う必要があります。この3Dから2Dへの表示データの変換処理を「レ
2Dスクリーン上で表現される3Dの概念は、これまで3Dモデリングソフトなどに触れたことのない方
にとっては、少し親しみづらいかもしれません。しかし、この後の章で実際にコードを記述して
Papervision3Dに取り組む際には、3Dの基礎知識を押さえておいた方がスムーズに学習を進められます。
ここでは、3Dの概念と併せてPapervision3Dによって提供される3D機能の基本用語を解説します。
3D空間の座標2Dは横軸(X軸)と縦軸(Y軸)で表現されますが、3Dではこれに奥行き(Z軸)の概念が加わります。
したがって、3D空間はX座標、Y座標、Z座標の3つの値によって定義されます。
また、3Dの座標系には右手座標系や左手座標系などがあり、Papervision3Dの場合は初期設定で左手
座標系となっています。これは、左手で親指を立てた方向をX軸としたとき、それに対して直角に立て
た人差し指がY軸、手のひらに対して直角に立てた中指がZ軸となり、それぞれの指先が向いているの
が軸の正の方向というもので、原点はXYZ軸が交わる(0,0,0)となります。右手座標系はこれを右手
に当てはめたものになります。左手座標系ではZの値が大きくなるほど奥に進みますが、右手座標系で
はZの値が大きくなるほど手前に進みます。
なお、通常の2DのFlashは画面の左上隅を基点としたXY軸の座標系となっていますが、Y軸の方向は
Papervision3Dと逆になっており、下方向が正の方向となっています。
CHAPTER 2 >> SECTION 1
3Dの基礎知識
「カメラ」によって3D空間をさまざまな視点から映し出すことができる
左手座標系。Zの値が大きくなるほど奥に進む
Y軸
Z軸
X軸
Y軸
044
ch4応用編
ch1イントロダクション
ch2
Paparvision3
D
の
基本
ch3
Paparvision3
D
機能別リファレンス
2-1
3Dの基礎知識
045
ンダリング」といいます。連続してレンダリングを行うことで、リアルタイム3D表現ができるようにな
ります。
■ ビューポート
ビューポートはFlashのステージに配置するSpriteを継承したオブジェクトです。レンダラーで変換し
た2Dの表示データをFlashのステージに表示するモニタのような役割をもっており、ビューポートの大
きさが3Dを表示する領域のサイズとなります。次の2つの図はビューポートの大きさを色のついた枠で
表しています。左はビューポートのサイズが大きい場合で、3Dの直方体の全体を映し出しています。
右はビューポートのサイズが小さい場合で、直方体の一部分しか映し出すことができていません。
これらの機能によって表現される概念的な3D空間のイメージは以下のようになります。
ポリゴンポリゴンとは3Dオブジェクトの形状を表現する
ために使用される多角形の平面データのことです。
3DオブジェクトはXYZの座標データが与えられた
「頂点」の集合体ですが、この座標データにもと
づいてポリゴンの各頂点をつなぐことで形状の表
面が描画されます。なお、Papervision3Dでは計算
のしやすさから三角形のポリゴンが使用されてい
ます。
セグメントPapervision3Dでは3Dの形状の分割数のことを「セグメント」と呼びます。同じ3Dの形状でも、セグ
メントを増やすとポリゴン数が多くなり、表現がより滑らかになります。一方で、ポリゴン数が増える
ほど計算負荷も高くなります。Flashを処理落ちすることなく快適に実行させるためにも、ポリゴン数
の最適化は非常に気を遣うところとなります。
fセグメント数の違いとイメージ
画像 セグメント数 表現 計算負荷
小(ポリゴン数80) より角ばっている 小
大(ポリゴン数876) より滑らか 大
球体の表面が複数の三角形のポリゴンをつなぎ合わせることで表現されている
ビューポートが大きいと3Dの表示エリアが広がる ビューポートが小さいと3Dの表示エリアが狭まる
ビューポートビューポート
3D空間=シーン(Scene)
Flashのステージ(Stage)
ビューポート(Viewport)
X軸
Z軸
Y軸3D空間=シーン(Scene)
Flashのステージ
ビューポート(Viewport)
Papervision3Dにおける3Dの要素は、すべてシーンという概念的な空間のなかに配置される。3D
オブジェクトは、シーンに追加することで表示できるようになる
ビューポートはレンダリングされた結果をFlash
のステージに映し出すための「モニタ」のようなもの
概念的な空間であるシーンの様子をカメラが撮影する
レンダラーがカメラで撮影したものを変換して2Dの表示に落とし込む
レンダラー
カメラ