Dripです。
としあきさん、こんにちは。
hgimg3とhgimgは内部処理が根本的に異なるものです。
不如帰さんの説明はほぼ全て間違っています。
>小数について
HSP2から使用できるHGIMG、HGIMGXでは、浮動小数が使用可能です。
但し、HSP2シリーズにはfloat型、double型等の変数の型がないため、
HSP2で使用する場合は、hgimgプラグイン内で整数型変数を内部的に小数として処理します。
この場合、変数を小数として認識させるために、数値の後にfを指定します。(0.25f 等)
但し、HSP3からhgimgを呼び出す場合、fの指定はいりません。普通に小数を記述できます。
//HSP3でhgimgを使用するサンプル
#include "hgimg.as"
hgini:setsizef 1.5,1.5:addbox b:modelshade b,1
regobj b,b:selcpos:objset3 0,0,3:selang b
repeat
objaddf3 0.01,0.01 //fの小数識別子は不要
hgdraw:hgsync 16
loop
>MOC値について
hgimg3では、オブジェクトの座標、拡大率、アングル等は、全てMOC値により
管理しています。hgimg3から使用可能になったset〜系の命令(setang,setpos等)では、
selang等で操作先MOC値をあらかじめ指定しなくても、1つの命令でMOC値を設定することも
できるようになりました。
(例えばselposで位置設定状態にしておきながら、setangでアングルを操作したりできます。)
hsp2でもhsp3でもhgimgでもhgimg3でもMOC値の仕様に変化はありません。
なのでset〜系の命令はMOC以外の値を指定するわけではありません。
//hgimg3のset〜系の命令でmoc値を設定する
#include "hgimg3.as"
hgini:addbox b,1,1:regobj b,b
setang b,1,1:selang b:objgetfv fv
mes "setangでmoc値を指定し、角度のmoc値を表示"
mes fv(0)
mes fv(1)
mes fv(2)
■hgimg3とhgimgの違いについて
hgimg3は過去のhgimgとhgimgxの後継プラグインです。
描画能力や扱い易さ、機能面から見て、非常に強化されたものになっています。
しかしその進化の過程上、命令の記述の仕方や仕様がところどころ変化し、プログラムの
互換性が失われつつあります。そのためhgimgの参考書の記載されているプログラムは、
hgimg3上では動作しないものが多いかと思います。
ですが、そのスクリプトをhgimg3用に改変すれば、より簡潔でわかりやすいプログラムが
書けます。そのためには、プログラムの応用力と仕様を理解する学力が必要です。
hgimgの後継バージョンなので、仕様さえ理解すれば改変そのものは苦労しないはずです。
■hgimgの強み
hgimg3とhgimgの根本的な違いは、hgimg3はDirectXを使用して描画するプラグインになった
ことです。これにより高速かつ美しい画面がDirect3Dにより描画されるのですが、
hgimgが持っていた「プラグインを一切使用しない独自描画」という最大の利点が
失われてしまいました。つまりhgimgでは、Windows95ピュアインストール状態から、
マシン環境に左右されず、正常に3Dが描画できるという素晴らしい能力を持っていたのですが、
hgimg3ではDirectX8以上がインストールされたマシン上、ハードウェアがDirect3Dをサポートし、
正常に動作する環境でしか動作できなくなってしまいました。
画質や描画速度より互換性を重視するならばhgimgを、互換性を犠牲にして描画速度、美しさを
重視するならばhgimg3を使用するようにしてみてください。
hgimg3がどんどんバージョンアップされる裏腹、現在hgimgのバージョンアップは全く
されておらず、完全に単独で3D描画を可能にする素晴らしいこのプラグインが、
いつHSPから外されてしまうか考えると不安でなりません。
余談でした。