HGIMG3におけるオブジェクトの回転にはangグループの値が用いられます。
その際の法則については、リファレンスの
「・オブジェクトの回転順序設定について」
に記述があります。
addang命令等はangグループの値を変化させますが、
その変化の履歴は保存されません。
HGIMG3は各オブジェクトの今現在のangグループの値を用い、
法則に従って回転させたオブジェクトを表示します。
この法則はカメラオブジェクトについても適用されます。
カメラオブジェクトは他のモデルのデフォルト同様、
Z→Y→Xの順に回転が行われます。
カメラにはモデルの指定方法がないので、
この回転順序を変更する方法はないものと思われます。
試しに次のスクリプトでZ→Y→Xの順に回転角を変更すると
全く違和感のない回転を体験することができます。
#include "hgimg3.as"
screen 0,640,480
hgini
//ランダムにBOXオブジェクトを配置
setcolor $CC,$FF,$CC
addbox boxModel,1,1
repeat 500
regobj box,boxModel
setpos box,rnd(200)-100,rnd(200)-100,rnd(200)-100
loop
//カメラの位置を原点に変更
setpos HGOBJ_CAMERA
*main
//キー入力取得
stick ky,15,0
getkey xKey,88
getkey zKey,90
//スペースキーで回転角を初期化
if ky&16:setang HGOBJ_CAMERA
//[X][Z]でZ回転角変更
if xKey:addang HGOBJ_CAMERA, 0.00, 0.00, 0.05
if zKey:addang HGOBJ_CAMERA, 0.00, 0.00,-0.05
//矢印キー左右でY回転角変更
if ky&1:addang HGOBJ_CAMERA, 0.00, 0.05, 0.00
if ky&4:addang HGOBJ_CAMERA, 0.00,-0.05, 0.00
//矢印キー上下でX回転角変更
if ky&2:addang HGOBJ_CAMERA, 0.05, 0.00, 0.00
if ky&8:addang HGOBJ_CAMERA,-0.05, 0.00, 0.00
//描画
hgdraw
hgsync 20
goto *main
ちなみにこの回転について少し考察すると、
各回転段階でのローカル座標系で次の回転を行うものとなっています。
つまりワールド座標系で考えるならば、
逆の順序、すなわちX→Y→Zの順で回転が行われることになります。