MQSceneクラスはレンダリングビューに関する情報を管理するクラスです。
void MQScene::InitSize(int width, int height);
(new in Rev2.10)
レンダリングを行う画像のサイズを指定します。
void MQScene::GetProjMatrix(float *matrix);
(new in Rev2.10)
16の配列長を持つ matrix で指定したバッファに、透視変換用の行列を格納します。
行列のデータ配置は OpenGL の glLoadMatrixf() で用いるものと互換になっています。ただし、将来のバージョンでの透視変換の計算方法の変更に伴い、パラメータの一部は互換性がなくなる可能性があるので注意して下さい。
void MQScene::GetViewMatrix(float *matrix);
(new in Rev2.10)
16の配列長を持つ matrix で指定したバッファに、視野変換用の行列を格納します。
行列のデータ配置は OpenGL の glLoadMatrixf() で用いるものと互換になっています。
MQPoint MQScene::GetCameraPosition();
(new in Rev2.40)
カメラの位置を取得します。
void MQScene::SetCameraPosition(const MQPoint& p);
(new in Rev2.40)
カメラの位置を設定します。
カメラの位置を変更すると、注視点も連動して動くことがあります。そのため、カメラの位置と注視点の両方を設定する場合は SetLookAtPosition() の前に SetCameraPosition() を呼び出す必要があります。
MQAngle MQScene::GetCameraAngle();
(new in Rev2.40)
カメラの向きを取得します。
void MQScene::SetCameraAngle(const MQAngle& angle);
(new in Rev2.40)
カメラの向きを設定します。
MQPoint MQScene::GetLookAtPosition();
(new in Rev2.40)
カメラの注視点を取得します。
void MQScene::SetLookAtPosition(const MQPoint& p);
(new in Rev2.40)
カメラの注視点を設定します。回転中心も注視点と同じ位置に設定されます。
カメラの位置が変更されると注視点の位置も連動して移動します。そのため、カメラの位置と注視点の両方を設定する場合は SetCameraPosition() の後で SetLookAtPosition() を呼び出す必要があります。
MQPoint MQScene::GetRotationCenter();
(new in Rev2.40)
ビューの回転中心位置を取得します。
void MQScene::SetRotationCenter(const MQPoint& p);
(new in Rev2.40)
ビューの回転中心を設定します。
float MQScene::GetFOV();
(new in Rev2.40)
ビューの視野角を取得します。
void MQScene::SetFOV(float fov);
(new in Rev2.40)
ビューの視野角を設定します。
float MQScene::GetZoom();
(new in Rev4.30)
ビューの拡大率を取得します。
void MQScene::SetZoom(float zoom);
(new in Rev4.30)
ビューの拡大率を設定します。
bool MQScene::GetOrtho();
(new in Rev4.02)
ビューを平行投影、透視投影のどちらで表示するを取得します。
void MQScene::SetOrtho(bool 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();
(new in Rev3.11)
平行光源を追加します。
追加されたインデックスの平行光源に対して、SetGlobalDirectionalLightDirection(), SetGlobalDirectionalLightColor()で向き・色を設定する必要があります。
平行光源の上限数を超えて追加しようとすると、光源は追加されずに-1が返ります。
BOOL MQScene::DeleteGlobalDirectionalLight(int index);
(new in Rev3.11)
平行光源を削除します。
平行光源が一つしかないときは削除されずにFALSEが返ります。
int MQScene::GetGlobalDirectionalLightNum();
(new in Rev3.11)
平行光源の数を取得します。
MQPoint MQScene::GetGlobalDirectionalLightDirection(int index);
(new in Rev3.11)
平行光源の向きを取得します。 index は 0 ~ GetGlobalDirectionalLightNum()-1 となります。
MQColor MQScene::GetGlobalDirectionalLightColor(int index);
(new in Rev3.11)
平行光源の色を取得します。 index は 0 ~ GetGlobalDirectionalLightNum()-1 となります。
void MQScene::SetGlobalDirectionalLightDirection(int index, const MQPoint& vec);
(new in Rev3.11)
平行光源の向きを設定します。 index は 0 ~ GetGlobalDirectionalLightNum()-1 となります。
void MQScene::SetGlobalDirectionalLightColor(int index, const MQColor& color);
(new in Rev3.11)
平行光源の色を設定します。 index は 0 ~ GetGlobalDirectionalLightNum()-1 となります。
MQColor MQScene::GetGlobalAmbientColor();
(new in Rev2.40)
シーン全体の環境光の色を取得します。
void MQScene::SetGlobalAmbientColor(const MQColor& amb);
(new in Rev2.40)
シーン全体の環境光の色を設定します。
MQPoint MQScene::Convert3DToScreen(const MQPoint& p, float *out_w);
(new in Rev2.40)
3D空間座標からスクリーン座標への変換を行います。
指定した座標が前面クリッピング平面よりも手前にある場合、戻り値は (0,0,0) となります。
MQPoint MQScene::ConvertScreenTo3D(const MQPoint& p);
(new in Rev2.40)
スクリーン座標から3D空間座標への変換を行います。
BOOL MQScene::GetVisibleFace(MQObject obj, BOOL *visible);
(new in Rev2.41)
指定したオブジェクトの面の表示状態を調べます。
visible は MQObject::GetFaceCount() で取得される面数の配列サイズを持っている必要があります。この関数を呼び出すと、各面の表示状態が TRUE または FALSE として visible にセットされます。
面の表示状態は、面の非表示・前面のみ表示時の表裏・視点より手前などによって、状態が変化します。
float MQScene::GetFrontZ();
(new in Rev4.00)
最前面に表示するオブジェクトに設定するスクリーン座標上のZ値を取得します。
Z=0としてスクリーン座標を処理すると、ライン・頂点に適用されるZバイアスや計算誤差により実際には表示されないことがあります。この関数によって得られたスクリーンZ座標を使用すると、オブジェクトをほぼ最前面として表示することができます。