d3setlocal

ローカル座標系設定

d3setlocal px,py,pz, m00,m01,m02, m10,m11,m12, m20,m21,m22

px,  py,  pz   : 原点からの移動位置
m00, m01, m02
m10, m11, m12  : 3x3 座標変換マトリクス
m20, m21, m22

(プラグイン / モジュール : d3module)

解説

ローカル座標系を設定します。ローカル座標系は、d3setcam 以外のすべての d3module 命令に適用されます。

この命令を使用することで、d3setcam だけでは実現できなかったさまざまな座標変換設定を行うことができます。ローカル座標系は、d3setcam でカメラ位置を初期化した後に何度でも変更可能で、複数の飛行物体が飛び回る画面の描画などが簡単に行えるようになります。また、ローカル座標系の設定を行っても、d3module の座標変換処理の速度は低下しません。

座標系基準を元のグローバル座標系に戻すには、d3setlocal 0,0,0, 1,0,0, 0,1,0, 0,0,1 としてください。(パラメータを省略した場合、自動的にこの値が入ります。) d3setcam 命令でカメラ位置を設定した後は、ローカル座標系はグローバル座標系と同じ空間としてリセットされます。

・応用例 1 : モデルの位置・姿勢制御
回転したり移動したりする物体 (飛行物体モデルなど) を、自前で回転・移動演算を行うことなく、自由な位置・姿勢で描画できます。px, py, pz は物体の位置、m00~m22 は物体の姿勢を表現します。座標変換マトリクスの意味合いは下記のようになります。

px,  py,  pz  : 原点からの移動位置
m00, m01, m02 : ローカル座標の +x 方向の単位ベクトル (x, y, z)
m10, m11, m12 : ローカル座標の +y 方向の単位ベクトル (x, y, z)
m20, m21, m22 : ローカル座標の +z 方向の単位ベクトル (x, y, z)

ベクトル m00, m01, m02 と m10, m11, m12 と m20, m21, m22 は、互いに直交する単位ベクトルとなります。

姿勢マトリクスを回転させる場合は、d3vrotate 命令を使うと便利です。
	(例) x, y 方向のベクトルを z ベクトル軸で角度 ang だけ回転 (yow 回転)
	d3vrotate pm00,pm01,pm02,  pm00,pm01,pm02,  pm20,pm21,pm22,  ang
	d3vrotate pm10,pm11,pm12,  pm10,pm11,pm12,  pm20,pm21,pm22,  ang

・応用例 2 : ローカル座標のスケール変更
ローカル座標系のオブジェクトを、グローバル座標系での描画時よりも大きくしたり小さくしたり出来ます。

	; オブジェクトの大きさを x, y, z とも 2 倍に設定
	d3setlocal 0,0,0, 2,0,0, 0,2,0, 0,0,2

	; オブジェクトの大きさを x, y, z とも 0.5 倍に設定
	d3setlocal 0,0,0, 0.5,0,0, 0,0.5,0, 0,0,0.5

・応用例 3 : 座標系変更
d3module のデフォルトの座標系は、右手系で +z 方向を天頂とするものとなっていますが、これを仮想的に変更することが出来ます。たとえば、座標系を左手系の +y 方向を天頂とするものに変更する場合、下記のようにローカル座標系を設定します。

	; 座標系を左手系に変更
	d3setlocal 0,0,0, 1,0,0, 0,0,1, 0,1,0

・応用例 4 : その他の座標変換
その他、オブジェクトを扁平にしたり歪めたりなど、3x3 マトリクスを用いた線形の空間座標変換を自由に行うことが出来ます。

px,  py,  pz  : 原点からの移動位置
m00, m01, m02 : 変換後の x が持つ、変換前の (x, y, z) 成分
m10, m11, m12 : 変換後の y が持つ、変換前の (x, y, z) 成分
m20, m21, m22 : 変換後の z が持つ、変換前の (x, y, z) 成分

	; 描画物体の頂点の z 位置をすべて 0 にする
	d3setlocal 0,0,0, 1,0,0, 0,1,0, 0,0,0

関連項目

d3setcamカメラ位置設定(d3module)

サンプル逆引き (7)

d3m_techdemo.hsp
sample_16_d3setlocal.hsp
sample_17_d3setlocal_shadow.hsp
xsample_Astro.hsp
xsample_gcube.hsp
xsample_gcube.hsp
xsample_Rocket.hsp

情報

プラグイン / モジュールd3module
バージョン1.68
作成日2018/06/01
著作者s.programs
URLhttp://spn.php.xdomain.jp/
http://spn.php.xdomain.jp/hsp_d3m.htm
備考d3m.hsp をインクルードする。
タイプユーザー拡張命令
グループ3D 制御命令
hs ファイルdoclib\d3module\d3mhelp.hs