MQSceneクラス

MQSceneクラスはレンダリングビューに関する情報を管理するクラスです。

レンダリング用
InitSize レンダリングを行う画像のサイズを指定します
GetProjMatrix 透視変換用の行列を格納します
GetViewMatrix 視野変換用の行列を格納します
カメラ
GetCameraPosition カメラの位置を取得します
SetCameraPosition カメラの位置を設定します
GetCameraAngle カメラの向きを取得します
SetCameraAngle カメラの向きを設定します
GetLookAtPosition カメラの注視点を取得します
SetLookAtPosition カメラの注視点を設定します
GetRotationCenter ビューの回転中心位置を取得します
SetRotationCenter ビューの回転中心を設定します
GetFOV ビューの視野角を取得します
SetFOV ビューの視野角を設定します
GetOrtho 平行投影を取得します
SetOrtho 平行投影を設定します
シーン全体情報
GetGlobalDirectionalLight 平行光源の向きを取得します
SetGlobalDirectionalLight 平行光源の向きを設定します
AddGlobalDirectionalLight 平行光源を追加します
DeleteGlobalDirectionalLight 平行光源を削除します
GetGlobalDirectionalLightNum 平行光源の数を取得します
GetGlobalDirectionalLightDirection 平行光源の向きを取得します
GetGlobalDirectionalLightColor 平行光源の色を取得します
SetGlobalDirectionalLightDirection 平行光源の向きを設定します
SetGlobalDirectionalLightColor 平行光源の色を設定します
GetGlobalAmbientColor シーン全体の環境光の色を取得します
SetGlobalAmbientColor シーン全体の環境光の色を設定します
座標変換
Convert3DToScreen 3D空間座標からスクリーン座標への変換を行います
ConvertScreenTo3D スクリーン座標から3D空間座標への変換を行います
GetVisibleFace 面が視野上に表示されるかどうかを取得します
GetFrontZ 最前面のスクリーン座標Z座標を取得します

void MQScene::InitSize(int width, int height);

width
横幅
height
縦幅

(new in Rev2.10)

レンダリングを行う画像のサイズを指定します。


void MQScene::GetProjMatrix(float *matrix);

matrix
4x4行列を格納するバッファ

(new in Rev2.10)

16の配列長を持つ matrix で指定したバッファに、透視変換用の行列を格納します。

行列のデータ配置は OpenGL の glLoadMatrixf() で用いるものと互換になっています。ただし、将来のバージョンでの透視変換の計算方法の変更に伴い、パラメータの一部は互換性がなくなる可能性があるので注意して下さい。


void MQScene::GetViewMatrix(float *matrix);

matrix
4x4行列を格納するバッファ

(new in Rev2.10)

16の配列長を持つ matrix で指定したバッファに、視野変換用の行列を格納します。

行列のデータ配置は OpenGL の glLoadMatrixf() で用いるものと互換になっています。


MQPoint MQScene::GetCameraPosition();

戻り値
カメラの位置

(new in Rev2.40)

カメラの位置を取得します。


void MQScene::SetCameraPosition(const MQPoint& p);

p
カメラの位置

(new in Rev2.40)

カメラの位置を設定します。

カメラの位置を変更すると、注視点も連動して動くことがあります。そのため、カメラの位置と注視点の両方を設定する場合は SetLookAtPosition() の前に SetCameraPosition() を呼び出す必要があります。


MQAngle MQScene::GetCameraAngle();

戻り値
カメラの角度

(new in Rev2.40)

カメラの向きを取得します。


void MQScene::SetCameraAngle(const MQAngle& angle);

angle
カメラの角度

(new in Rev2.40)

カメラの向きを設定します。


MQPoint MQScene::GetLookAtPosition();

戻り値
注視点の位置

(new in Rev2.40)

カメラの注視点を取得します。


void MQScene::SetLookAtPosition(const MQPoint& p);

p
カメラの注視点

(new in Rev2.40)

カメラの注視点を設定します。回転中心も注視点と同じ位置に設定されます。

カメラの位置が変更されると注視点の位置も連動して移動します。そのため、カメラの位置と注視点の両方を設定する場合は SetCameraPosition() の後で SetLookAtPosition() を呼び出す必要があります。


MQPoint MQScene::GetRotationCenter();

戻り値
回転中心

(new in Rev2.40)

ビューの回転中心位置を取得します。


void MQScene::SetRotationCenter(const MQPoint& p);

p
回転中心

(new in Rev2.40)

ビューの回転中心を設定します。


float MQScene::GetFOV();

戻り値
視野角(ラジアン単位)

(new in Rev2.40)

ビューの視野角を取得します。


void MQScene::SetFOV(float fov);

fov
視野角(ラジアン単位)

(new in Rev2.40)

ビューの視野角を設定します。


bool MQScene::GetOrtho();

戻り値
平行投影

(new in Rev4.02)

ビューを平行投影、透視投影のどちらで表示するを取得します。


void MQScene::SetOrtho(bool ortho);

ortho
平行投影

(new in Rev4.02)

ビューを平行投影、透視投影のどちらで表示するを設定します。


MQPoint MQScene::GetGlobalDirectionalLight();

(in Rev3.11)

この関数は廃止されました。GetGlobalDirectionalLightDirection()に置換する必要があります。


void MQScene::SetGlobalDirectionalLight(const MQPoint& vec);

(in Rev3.11)

この関数は廃止されました。SetGlobalDirectionalLightDirection()に置換する必要があります。


int MQScene::AddGlobalDirectionalLight();

戻り値
[0以上] 平行光源のインデックス
[-1] 失敗

(new in Rev3.11)

平行光源を追加します。

追加されたインデックスの平行光源に対して、SetGlobalDirectionalLightDirection(), SetGlobalDirectionalLightColor()で向き・色を設定する必要があります。

平行光源の上限数を超えて追加しようとすると、光源は追加されずに-1が返ります。


BOOL MQScene::DeleteGlobalDirectionalLight(int index);

index
平行光源のインデックス
戻り値
[TRUE] 成功
[FALSE] 失敗

(new in Rev3.11)

平行光源を削除します。

平行光源が一つしかないときは削除されずにFALSEが返ります。


int MQScene::GetGlobalDirectionalLightNum();

戻り値
平行光源の数

(new in Rev3.11)

平行光源の数を取得します。


MQPoint MQScene::GetGlobalDirectionalLightDirection(int index);

index
光源のインデックス
Return value
光源の方向ベクトル

(new in Rev3.11)

平行光源の向きを取得します。 index は 0 ~ GetGlobalDirectionalLightNum()-1 となります。


MQColor MQScene::GetGlobalDirectionalLightColor(int index);

index
光源のインデックス
Return value
光源の色

(new in Rev3.11)

平行光源の色を取得します。 index は 0 ~ GetGlobalDirectionalLightNum()-1 となります。


void MQScene::SetGlobalDirectionalLightDirection(int index, const MQPoint& vec);

index
光源のインデックス
vec
光源の方向ベクトル

(new in Rev3.11)

平行光源の向きを設定します。 index は 0 ~ GetGlobalDirectionalLightNum()-1 となります。


void MQScene::SetGlobalDirectionalLightColor(int index, const MQColor& color);

index
光源のインデックス
color
光源の色

(new in Rev3.11)

平行光源の色を設定します。 index は 0 ~ GetGlobalDirectionalLightNum()-1 となります。


MQColor MQScene::GetGlobalAmbientColor();

戻り値
環境光の色

(new in Rev2.40)

シーン全体の環境光の色を取得します。


void MQScene::SetGlobalAmbientColor(const MQColor& amb);

amb
環境光の色

(new in Rev2.40)

シーン全体の環境光の色を設定します。


MQPoint MQScene::Convert3DToScreen(const MQPoint& p, float *out_w);

p
3D空間上の絶対座標
out_w
[OUT] 同次座標
戻り値
スクリーン空間上の座標

(new in Rev2.40)

3D空間座標からスクリーン座標への変換を行います。

指定した座標が前面クリッピング平面よりも手前にある場合、戻り値は (0,0,0) となります。


MQPoint MQScene::ConvertScreenTo3D(const MQPoint& p);

p
スクリーン空間上の座標
戻り値
3D空間上の絶対座標

(new in Rev2.40)

スクリーン座標から3D空間座標への変換を行います。


BOOL MQScene::GetVisibleFace(MQObject obj, BOOL *visible);

obj
オブジェクト
visible
面の表示状態
戻り値
取得に成功したかどうか

(new in Rev2.41)

指定したオブジェクトの面の表示状態を調べます。

visible は MQObject::GetFaceCount() で取得される面数の配列サイズを持っている必要があります。この関数を呼び出すと、各面の表示状態が TRUE または FALSE として visible にセットされます。

面の表示状態は、面の非表示・前面のみ表示時の表裏・視点より手前などによって、状態が変化します。


float MQScene::GetFrontZ();

戻り値
前面のZ値

(new in Rev4.00)

最前面に表示するオブジェクトに設定するスクリーン座標上のZ値を取得します。

Z=0としてスクリーン座標を処理すると、ライン・頂点に適用されるZバイアスや計算誤差により実際には表示されないことがあります。この関数によって得られたスクリーンZ座標を使用すると、オブジェクトをほぼ最前面として表示することができます。