hgimg3.txt

doclib\hgimg3.txt » Plain Format

------------------------------------------------------------------------------
HGIMG ver3.0   REFERENCE MANUAL        High Performance Graphic Image Plugin  
HSP拡張DLLリファレンス             copyright 2001-2005 (c) onion software  
------------------------------------------------------------------------------

・はじめに

	HGIMG3は、Hot Soup Processor ver3.0以降とともに使用することで、
	画面の描画に関する様々な機能拡張を提供します。
	HGIMG3は、Windows98、Me、2000、XP以降のDirectX8以上がインストール
	された環境で動作します。


・インストール

	HGIMG3は、以下のようなファイル構成になっています。

		hgimg3.txt (このファイル)
		hsp3hg.exe (実行用ランタイム)

		commonフォルダ (HGIMG3ヘッダファイル)
		hsphelpフォルダ (HGIMG3ヘルプファイル)
		runtimeフォルダ (HGIMG3カスタムランタイム)
		sampleフォルダ (HGIMG3サンプルスクリプト & データ)

	圧縮ファイル、hgimg3.lzhを解凍したものをHSP3のインストールフォルダ
	(HSED3.EXEおよび、HSP3.EXEのあるディレクトリ)にコピーしてください。

	common、hsphelp、runtime、sampleフォルダなどが上書きされますが、
	重複ファイルを上書きすることはないので、そのままコピーして頂いて
	構いません。

	HGIMG3を使用したスクリプトを作成する場合には、スクリプトの先頭に
	必ず「#include "hgimg3.as"」という行を追加してください。
	以上で、HSPの機能が拡張され、このリファレンスで説明をしている命令を
	使用することができるようになります。
	まず最初に、付属のサンプルスクリプトを実行してみてください。
	拡張された機能の簡単な使用例を見ることができるはずです。
	サンプルスクリプトは、HSPインストールフォルダ以下のsample/hgimg3
	にコピーされているはずです。


・注意点

	HGIMG3は、外部DLLファイルによる拡張プラグインではありません。
	HSP3.0の機能を内包したランタイムファイルとして提供されています。
	必ず、HGIMG3のランタイムに対応したバージョンのコンパイラ
	(hspcmp.dll)やスクリプトエディタをご使用下さい。
	また、HSP3.0は実行ランタイムの切り替えが可能なバージョン
	(HSP3.0β4以降)をお使い下さい。


・著作権および連絡先

	著作権および、使用の規定についてはHot Soup Processor ver3.0と同様です。
	HSPによって作成したEXEファイルと同様にHGIMG3ランタイムを自由に配布して
	頂いて構いません。
	また、付属のサンプルスクリプトも自由に改変、公開していただいて構いません。
	onion softwareは本プログラムによって生じた、いかなる損害についても
	保証いたしません。自己の責任の範囲で使用してください。


・HGIMG3の概要

	HGIMG3は、高度な2D、3Dグラフィックを使ったアプリケーションをHSPから
	作成するための拡張プラグインです。
	スプライトを使用した2Dゲームから、3Dモデルを使った本格的なソフトまで幅広く
	利用することができます。

	HGIMG3でサポートされる主な機能は以下の通りです。

	・DirectX、フルカラーモードを対象とした高度な描画システム
	・2Dスプライト、3Dポリゴンなどを共通の命令で設定可能な描画エンジン
	・2Dスプライトの回転拡大縮小、α合成、透明色抜き処理、タイリング(BG表示)
	・3D座標上の2Dスプライトと3Dポリゴンを混在可能なワールド管理
	・3Dの階層構造を持ったポリゴンモデルの管理が可能
	・ボーンを用いた3Dワンスキンモデルのアニメーション表示が可能
	・アニメ風のレンダリング(トゥーンシェーディング)表示が可能
	・BMP、JPG、GIF、PNG、DDS、TGA、TIFF形式のテクスチャサポート
	・アンチエイリアスを含めた日本語フォントのテクスチャレンダリング機能
	・アルファチャンネルを含むテクスチャ画像のサポート
	・スプライトの表示、移動の管理および衝突判定機能
	・HSP3に対応した浮動小数によるジオメトリ演算
	・イベントリスト登録機能により自由度の高い自律処理を実現可能
	・独自フォーマット(mx)による3Dモデルの読み込み
	・単位時間あたりの移動量から動きの計算を行なうタイムスケールモードを搭載
	・DXF形式の3Dデータ読み込みをサポート
	・使いやすい直接描画命令を装備

	主要な命令はVer2.61添付のバージョン(HGIMG2)と互換で動作しますが、
	機能の整理統合により、一部の命令が非互換または廃止となっています。
	また、フラグやモードなど細かい部分が異なっているため、以前のスクリプトを
	移植して利用する場合には修正が必要です。
	逆に、HSP3.0に合わせてより便利に拡張されている部分も多数あります。
	HGIMG2の考え方や命令の仕組みはそのままで、HGIMG3を習得することが
	できるはずですので、是非ともHGIMG3の新機能をご活用ください。

	Ver2.61添付のバージョン(HGIMG2)と比べて以下の機能が削除されています。

	・独自のアニメーション形式(ma)によるモーション再生
	・ポリゴン情報、および階層情報の参照と変更、mx形式でのセーブ
	・画面上の2D位置から該当するポリゴンを検索するポリゴンスキャン機能
	・objmov系のMOCパラメーター自動変更の仕様が変更されています
	・フォールオフレンダリング機能は削除されタイムスケールモードが搭載されています

	HGIMG3は、以前のバージョン(HGIMG2)に比べて、機能は増えていますが、
	より習得しやすく、通常使用するための命令数やパラメーターは削減されています。
	初心者から、上級者まで手軽に2D・3Dの高度な機能を活用することを目指して
	設計されています。


・現バージョンでの注意点

	以下の機能は未実装です。将来のバージョンでサポートされる予定です。

	・mx形式モデルの読み込み
	・タイムスケールモード
	・追加のライトパラメーター
	・制限のないオブジェクト・モデル登録
	・より高度なコリジョン(当たり判定)システム


・更新履歴

	2005/07/13 ( Ver3.0β8 )

		HSP3.0β12ライブラリでビルド。

	2005/06/23 ( Ver3.0β7 )

		回転アニメーションの補間方法を球面線形に修正。
		ボーンのないモデルの光源計算が間違っていたのを修正。
		getxinfo命令のパラメーター仕様を一部変更。
		getxinfosetxinfo命令によるマテリアル情報の読み書きに対応。

	2005/06/22 ( Ver3.0β6 )

		ライト色、アンビエント色の反映がおかしかった部分を修正。
		1本のボーンに100%依存するメッシュの表示に対応。
		カメラ画角(FOV)、表示範囲(near,far)パラメーターが反映するように修正。
		ウインドゥサイズに合わせてカメラアスペクト比を補正するように修正。
		hggetreq命令でDirectXのCOMポインタを取得できるように修正。
		getxinfosetxinfo命令を追加。

	2005/06/15 ( Ver3.0β5 )

		HSP3.0β10ライブラリでビルド。
		ライト色、アンビエント色が正しく反映されていなかったのを修正。
		アニメーション切り替え時にスピードをデフォルトに戻すように修正。
		reglightobjlight命令を追加。

	2005/05/27 ( Ver3.0β4 )

		HSP3.0β8ライブラリでビルド。
		hglinehgcapture命令を追加。
		ボーンを含む一部のモデルが正しく表示されない不具合を修正。
		addspraddplate命令にテクスチャID指定のパラメーターを追加。
		event_set系の命令でパラメーター省略時に正しく動作しない不具合を修正。

	2005/04/12 ( Ver3.0β3 )

		HSP3.0β7ライブラリでビルド。デバッグウインドゥに対応。
		modelspeed命令を追加。

	2005/03/23 ( Ver3.0β2 )

		xファイル読み込み時の法線再計算を行なわないように修正。
		fvouter,fvsub,fvdiv命令の計算順序が逆になっていた不具合を修正。
		複数アニメーション登録のためのaddxanim命令を追加。
		アニメーション設定のためのobjact,objspeed,getanim命令を追加。

	2005/02/25 ( Ver3.0β1 )

		テスト版として初出。


・命令一覧(メイン)

	hgini mode,yofs,ysize			DLLの初期化
	hgreset							シーン情報の初期化
	hgsrc							ソースバッファ指定
	hgdraw val, timer				描画の実行
	hgbye							DLLの開放
	getsync val,mode				時間待ち情報を取得
	sync val						時間待ちを行なう
	getdebug val					デバッグ情報取得
	hgsetreq type,val				システムリクエスト設定
	hggetreq val,type				システムリクエスト取得

	setborder sx,sy,sz				オブジェクト有効範囲設定
	clscolor sx,sy,cx,cy			背景色設定
	clstex id						背景テクスチャ設定
	setfont cx,cy,sw				オリジナルフォント定義
	fprt "mes",x,y					定義フォント文字列表示

	cammode mode					カメラモードの設定

	objact ObjID, anim				指定アニメーションを開始

	setuv tx0,ty0,tx1,ty1			登録テクスチャUV座標を指定
	setsizef sx,sy					登録モデルの幅、高さを指定
	setbg sx,sy,cx,cy				BGマップ情報設定
	getbg val,modelID				BGマップを取得
	setmap modelID,x,y				BGマップスクロール指定
	addbox val						箱(BOX)モデルを作成
	addplate val, mode				板(PLATE)モデルを作成
	addspr val, mode				2Dスプライトモデルを作成
	addbg val, winx, winy,sw		2DBGマップモデルを作成

	addxfile model,"filename"		モデルファイル読み込み

	regobj val,ModelID, mode		オブジェクトの登録
	delobj ObjID					オブジェクトの削除
	setobjm ObjID, ModelID			オブジェクトのモデル設定
	setobjmode id,mode,sw			オブジェクトのモード設定
	setcoli id,mygroup,enegroup		オブジェクトのコリジョン設定
	getcoli val,id,distance			オブジェクトのコリジョン判定
	findobj exmode,group			オブジェクト検索
	nextobj val						次のオブジェクト検索

	uvanim id, wait, times, sw		モデルのUVアニメ設定
	setmode ModelID, mode			モデルのモード設定
	settimer ModelID, timer			モデルのタイマー設定

	clsblur val						ブラー設定
	setcolor r,g,b					単色ポリゴン作成設定
	falpha val						フォント文字α値を設定


・命令一覧(補助)

	selmoc id, mocofs				MOC情報を設定
	selpos id						移動座標をMOC情報に設定
	selang id						回転角度をMOC情報に設定
	selscale id						スケールをMOC情報に設定
	seldir id						移動量をMOC情報に設定

	selcam ofs						カメラをMOC情報に設定
	selcpos							カメラ座標をMOC情報に設定
	selcang							カメラ角度をMOC情報に設定
	selcint							カメラ注視点をMOC情報に設定

	sellight id,ofs					光源をMOC情報に設定
	sellpos	id						光源座標をMOC情報に設定
	sellang	id						光源角度をMOC情報に設定
	sellcolor id					光源色をMOC情報に設定

	objset1 ofs,x					MOC情報を設定
	objadd1 ofs,x					MOC情報を加算
	objmov1 ofs,times,x				MOC移動情報を設定
	objsetf1 ofs,x					MOC情報を設定
	objaddf1 ofs,x					MOC情報を加算
	objmovf1 ofs,times,x			MOC移動情報を設定
	objset1r ofs,x					MOC情報を設定
	objmov1r ofs,times,x			MOC移動情報を設定

	objset2 ofs,x,y					MOC情報を設定
	objadd2 ofs,x,y					MOC情報を加算
	objmov2 ofs,times,x,y			MOC移動情報を設定
	objsetf2 ofs,x,y				MOC情報を設定
	objaddf2 ofs,x,y				MOC情報を加算
	objmovf2 ofs,times,x,y			MOC移動情報を設定
	objset2r ofs,x,y				MOC情報を設定
	objmov2r ofs,times,x,y			MOC移動情報を設定

	objset3 x,y,z					MOC情報を設定
	objadd3 x,y,z					MOC情報を加算
	objmov3 times,x,y,z				MOC移動情報を設定
	objsetf3 x,y,z					MOC情報を設定
	objaddf3 x,y,z					MOC情報を加算
	objmovf3 times,x,y,z			MOC移動情報を設定
	objset3r x,y,z					MOC情報を設定
	objmov3r times,x,y,z			MOC移動情報を設定

	objgetfv fv						MOC情報を取得
	objsetfv fv						MOC情報を設定
	objaddfv fv						MOC情報を加算
	objmovfv fv,times				MOC移動情報を設定
	objgetv v						MOC情報を整数値で取得
	objsetv v						MOC情報を整数値で設定
	objgetstr sval					MOC情報を文字列で取得

	fvget							(未使用)
	fvset fv,x,y,z					ベクトル設定
	fvseti fv,x,y,z					整数値からベクトル設定
	fvadd fv,x,y,z					ベクトル加算
	fvsub fv,x,y,z					ベクトル減算
	fvmul fv,x,y,z					ベクトル乗算
	fvdiv fv,x,y,z					ベクトル除算
	fvdir fv,x,y,z					ベクトル回転
	fvmin fv,x,y,z					ベクトル最大値
	fvmax fv,x,y,z					ベクトル最小値
	fvouter fv,x,y,z				ベクトル外積
	fvinner fv,x,y,z				ベクトル内積
	fvface fv,x,y,z					座標から角度を得る
	fvunit fv						ベクトル正規化
	fsin fval,rot					サインを求める
	fcos fval,rot					コサインを求める
	fsqr fval,prm					平方根を求める
	fadd fval,prm					小数値加算
	fsub fval,prm					小数値減算
	fmul fval,prm					小数値乗算
	fdiv fval,prm					小数値除算
	fcmp val,prm1,prm2				小数値比較
	froti fval,prm					整数値角度を小数値に変換

	fv2str fv						ベクトルを文字列に変換
	str2fv fv,"x,y,z"				文字列をベクトルに変換
	str2f fval,"val"				文字列を小数値に変換
	f2str val,fval					小数値を文字列に変換
	f2i v,x,y,z						小数値を整数値に変換

	mxload "filename",sw				モデルファイル読み込み

	setmtex id, nodeid, tex, shade	モデルのテクスチャを設定
	getmtex val, modelid, nodeid	モデルのテクスチャを取得
	getnode val, modelID, nodeID	モデルのノード情報を取得

	evmodel eventID, modelID		イベントモデルID設定

	copybuf mode					指定バッファに画面コピー

	mxsend val						MX形式ファイルをパース
	mxconv val						MX形式ファイルを変換
	mxaconv val						MA形式ファイルを変換
	mxgetpoly val					ポリゴン数を取得
	mxgetname val,id				テクスチャ名を取得
	settex x,y,sw					テクスチャを登録
	gettex val						テクスチャIDを取得

	modelmovef id,x,y,z				モデルの絶対位置を移動
	modelscalef id,x,y,z				モデルの拡大縮小
	modelshade id,mode				モデルシェーディングモードの設定

	dxfload "file"					DXF形式ファイルを読み込み
	dxfconv val						DXF形式ファイルをパース
	dxfgetpoly val					ポリゴン数を取得



・動作の概要

	HGIMG3は、すべてのマシンで同等の表示、最適化された速度を再現できるように
	開発されています。3Dアクセラレーターを搭載しない機種(ノート型やオンボード
	ビデオチップ搭載機種など)、であっても著しくパフォーマンスが落ちることなく
	動作させることができます。また、初期化を手軽に行なえるとともにDirectX
	バージョンの不一致やドライバの相性などによる不具合を最小限に抑えることを
	目指しています。

	HGIMG3では、「モデル」と「オブジェクト」という単位で描画の管理を行なって
	います。HSPの命令の多くは、準備の必要もなく目的の処理を行なっていましたが、
	HGIMG3では、最初の準備段階として使うものを「登録」しておき、後でまとめて
	全部を描画するスタイルを取っています。これは直感的ではない反面、処理の効率化
	と高速化を図ることができます。HGIMG3には、100種類以上の命令があり最初は
	その複雑さに戸惑うかもしれませんが、最低限使うものはわずかですので、少しづつ
	使って覚えていってください。

	何らかの絵を出す場合には、最初に「モデル」を登録する必要があります。
	「モデル」は、

		・2Dスプライト
		・3Dスプライト(板)
		・立方体
		・3Dモデル

	のような種類があり、それぞれの種類に応じて色々な設定項目があります。
	たとえば、2Dの絵を画面に表示したい場合は、種類が「2Dスプライト」の「モデル」
	を最初に登録しなければなりません。
	「2Dスプライト」は、表示に使う絵(テクスチャ)やアニメーションの設定などが
	あり、必要な項目を設定すればOKです。

	「モデル」を登録しただけでは画面には何も表示されません。
	「モデル」は、画面に表示するための材料となります。画面に表示される可能性が
	あるものをあらかじめ材料としてストックしておくものと考えて下さい。

	「モデル」に続いて、「オブジェクト」を登録します。
	「オブジェクト」は「どの場所にどのモデルを出すか」という情報を持った器の
	ようなものです。「オブジェクト」が指す「モデル」を画面に表示します。
	「オブジェクト」は単なる器なので、同じ物体を2つ画面に出す場合には、
	「モデル」を1つ登録して、そのモデルを持った「オブジェクト」を2つ登録すれば
	いいことになります。「モデル」は、その形や色自体の情報を持っておき、
	「オブジェクト」は、「モデル」を画面上に出す場所や動きの設定などを持っている
	と考えておいてください。

	これらの概念をもとに、2D、3D画像をコントロールするための命令が多数用意されて
	います。
	HGIMG3は内部では、すべて32bit浮動小数によりパラメータを管理、演算されて
	います。命令のパラメーターで小数が必要な部分では、HSP3.0の実数指定および
	実数型変数に完全に対応しています。
	たとえば、

			objadd3 1.0, 1.5, 2.0

	のように実数値による指定が可能です。また、

			objadd3 1, 1, 2

	のように整数値でも受け付けます。

	大量の画像や、3Dデータを使用したソフトで問題となるのは描画にかかる負荷、
	つまり絵を描くのに時間がかかってしまう点です。



	HGIMG3では、単位時間あたりの移動量から動きの計算を行なうタイムスケール
	モードを搭載することで、高速なマシンではより高いフレームレートで
	動作させることで、マシンスペックによる画面上の動作速度の違いを吸収
	させることができます。


・初期化と描画の方法

	HGIMG3では、初期化を以下の手順に従って行なって下さい。

	;------------------------------------------------------------------
	screen 0,320,240,0
	hgini						; hgimgの初期化
	;------------------------------------------------------------------

	hgini命令は、プラグインの全初期化を行なう命令です。
	hgini命令が実行された時点でアクティブなウインドゥのサイズと、
	色モードをもとに初期化を行ないます。
	上の例では、320x240ドット、フルカラーモードで描画を行なうことに
	なります。

	初期化を連続して行なうことはできません。
	再初期化する場合は、hgbye命令ですべての終了処理を行なった後に実行
	するようにしてください。

	また、hgbye命令ですべての終了処理が行なわれます。
	hgbye命令自体は、自動クリーンアップ命令でHSPの終了時に自動的に
	呼び出されるため、通常は記述する必要はありません。

	初期化が終わったら、いつでも登録されているオブジェクトを表示可能な
	状態になります。
	HGIMG3では、描画を以下のように行ないます。

	;------------------------------------------------------------------
	*main
		;	描画メイン
		;
		hgdraw				; 描画処理
		hgsync 10			; 時間待ち
		goto *main
	;------------------------------------------------------------------

	hgdraw命令で、HGIMG3が受け持つすべての描画を行ないます。
	この時、描画先のウインドゥをgsel命令などでアクティブにしておくのを
	忘れないでください。
	その後、hgsync命令で時間待ち(ウェイト)をします。「hgsync 10」の場合は、
	10msだけ待ち時間を入れます。
	この2つの命令を必ず入れれば全描画と待ち時間の処理は完結します。
	HSPのwaitawait命令を入れる必要はありません。


・モデル設定命令

	モデルの登録をするためには、種類に応じて命令が異なります。
	主な登録の方法は以下の通りです。

	・2Dスプライト

		setuv tx0,ty0,tx1,ty1		;UV座標の設定
		addspr val, mode			;2Dスプライトモデルを作成

		テクスチャ座標の左上(tx0,ty0)と右下(tx1,ty1)の大きさに
		応じたサイズの2Dスプライトモデルを作成します。
		回転、拡大縮小、合成などを行なうことができます。
		変数valにモデルIDが代入されます。
		これに続いてtexload命令で読み込まれたテクスチャ(画像)を使用します。
		addspr命令のmode値が0の場合は透明色抜き処理を行ないません。
		mode値が1の場合は指定された色を透明色として扱って描画します。

	・2DBGマップ

		setbg sx,sy,cx,cy					;マップサイズ、チップサイズ設定
		addbg val, winsizex, winsizey,sw	;2DBGマップモデルを作成

		マップのサイズが(sx,sy)、チップサイズを(cx,cy)とするBGマップ表示
		モデルを作成します。
		変数valにモデルIDが代入されます。
		これに続いてtexload命令で読み込まれたテクスチャ(画像)を使用します。

	・単色3Dスプライト(板)

		setsizef sx,sy				;板の大きさ設定
		setcolor 0,255,0			;色の設定
		addplate val, mode			;板(PLATE)モデルを作成

		縦横サイズが(sx,sy)の四角ポリゴン(板)のモデルを作成します。
		色は、緑(R=0,G=255,B=0)となります。
		変数valにモデルIDが代入されます。
		mode値が2の場合は光源計算を行ないます。

	・3Dスプライト(板)

		setsizef sx,sy				;板の大きさ設定
		setuv tx0,ty0,tx1,ty1		;UV座標の設定
		addplate val, mode			;板(PLATE)モデルを作成

		テクスチャ座標が左上(tx0,ty0)と右下(tx1,ty1)のもので、
		縦横サイズが(sx,sy)の四角ポリゴン(板)のモデルを作成します。
		変数valにモデルIDが代入されます。
		これに続いてtexload命令で読み込まれたテクスチャ(画像)を使用します。
		addplate命令のmode値が0の場合は透明色抜き処理を行ないません。
		mode値が1の場合は指定された色を透明色として扱って描画します。

	・単色の箱(立方体)

		setsizef sx,sy				;箱の大きさ設定
		setcolor 255,0,0			;色の設定
		addbox val,2				;箱(BOX)モデルを作成

		サイズが(sx,sy)の箱(立方体)モデルを作成します。
		色は赤(R=255,G=0,B=0)で、光源計算を行ないます。
		変数valにモデルIDが代入されます。

	・テクスチャ使用の箱(立方体)

		setsizef sx,sy				;箱の大きさ設定
		setuv tx0,ty0,tx1,ty1		;UV座標の設定
		addbox val					;箱(BOX)モデルを作成

		サイズが(sx,sy)の箱(立方体)モデルを作成します。
		テクスチャ座標は左上(tx0,ty0)と右下(tx1,ty1)が1つの面となり、
		さらに(tx0,(ty1-ty0)+1)と、(tx0,((ty1-ty0)+1)*2)からの3つの面を
		テクスチャとして持つ箱モデルが作られます。
		変数valにモデルIDが代入されます。
		これに続いてtexload命令で読み込まれたテクスチャ(画像)を使用します。

	・3Dモデル

		addxfile model,"filename"		;モデルファイル読み込み

		"filename"で指定されたポリゴンモデルファイル(拡張子x)を読み込み
		モデルとして登録します。また、テクスチャも同時に読み込まれます。
		終了すると指定された変数名にモデルIDが代入されます。

	モデル追加のための命令は、これ以外にもadddxf等の補助命令が存在します。
	詳しくはリファレンスを参照してください。


・オブジェクト設定命令

	オブジェクトを登録する場合は、

		regobj 変数名, モデルID, モード

	の命令を使用します。
	regobjでは、すでに登録されているモデルIDと、モードを指定する必要が
	あります。
	モードは以下の中から選択します。

		ラベル             |        内容
		--------------------------------------------------------------
		OBJ_HIDE             非表示(画面から消す)
		OBJ_TREE             木属性(Y軸のみ正面を向く)
		OBJ_XFRONT           正面属性(常に画面に正面を向く)
		OBJ_UVANIM           UVアニメーションを行なう
		OBJ_UVANIM_1SHOT     UVアニメーション表示後に消滅する
		OBJ_MOVE             XYZ移動量を有効にする
		OBJ_FLIP             ボーダー領域で反転する
		OBJ_BORDER           ボーダー領域を有効にする
		OBJ_2D               2D表示オブジェクトとして扱う
		OBJ_TIMER            消滅タイマーを有効にする
		OBJ_WIPEBOM          ボーダー領域で爆発オブジェクトに変わる
		OBJ_NOSORT           Zソートを無効にする
		OBJ_GRAVITY          重力制御を有効にする
		OBJ_SKY              常に一番奥に描かれる
		OBJ_GROUND           地面オブジェクトとして描かれる
		OBJ_LOOKAT           特定オブジェクトの方向を常に向く

	複数の項目を同時に選択する場合は、「OBJ_SKY|OBJ_MOVE」のように
	「|」で区切って指定してください。何も指定しない場合は、0にするか
	省略して構いません。
	オブジェクトのモードは、あらかじめデフォルトのモードがモデルの種類に応じて
	設定されているので、通常は特に設定する必要はありません。
	また、setmode命令でモデルにモードを指定した場合は、そのモードが
	オブジェクトにも継承されます。

	正常にオブジェクトが登録されると変数にオブジェクトIDが
	返されます。オブジェクトIDは、その後にオブジェクトのパラメータや
	設定を変更する場合に必要になる番号です。

	オブジェクトの設定を後から変更する命令は以下の通りです。

		setobjm ObjID, ModelID			オブジェクトのモデル設定
		setobjmode id,mode,sw			オブジェクトのモード設定
		setcoli id,mygroup,enegroup		オブジェクトのコリジョン設定

	オブジェクトの設定は、MOC設定命令でも行なうことができます。
	詳しくは、MOC設定命令についてを参照してください。
	以下は2Dスプライトのモデルを登録して、さらにそれをオブジェクトとして
	登録するスクリプトの例です。

			例:
				;	スプライトの登録
				;
				setuv 0,0,79,79				; UV座標指定
				addspr pchr					; モデルの登録
				texload "rock2.bmp"			; テクスチャの登録
				regobj mychr,pchr,OBJ_2D	; オブジェクト登録


・オブジェクトパラメーター設定命令について

	HGIMG3では、「オブジェクト」1つ1つが独立したパラメーターを持っており、
	その内容に従って表示および動作が決定されます。
	これら、「オブジェクトパラメーター」は表示位置、回転角度、サイズ、移動量
	など複数の情報を持っており、すべて浮動小数で記憶しています。
	すべてのパラメータは、任意の値に変更、取得が可能なほか、イベントリストを
	使用することで、指定フレーム後に任意の値になるように値を増減させるなど
	様々なコントロールが可能になっています。

	HGIMG3の「オブジェクト」は、以下のようなパラメータを持っています。

	グループ    offset0      offset1     offset2      offset3
	--------------------------------------------------------------
	  pos       [X座標]      [Y座標]     [Z座標]      [未使用]
	  ang       [X回転角]    [Y回転角]   [Z回転角]    [未使用]
	  scale     [X倍率]      [Y倍率]     [Z倍率]      [未使用]
	  dir       [X移動量]    [Y移動量]   [Z移動量]    [未使用]
	  efx       [α合成値]   [未使用]    [未使用]     [未使用]
	  work      [workX]      [workY]     [workZ]      [未使用]

	パラメーターは、4つの値を1つのグループとして扱っています。
	たとえば、「グループpos」は、表示するX,Y,Z座標を保存しています。
	この「グループpos」を変更すれば、画面上の表示位置も変更されます。

	実際にパラメーターを設定する場合には、以下の命令を使います。

		setpos id,x,y,z
		setang id,x,y,z
		setscale id,x,y,z
		setdir id,x,y,z
		setefx id,x,y,z
		setwork id,x,y,z

	それぞれのグループに対して、(x,y,z)の3つのパラメーターを設定
	することができます。idには、個々のオブジェクトを識別するための
	オブジェクトIDを指定します。オブジェクトIDは、regobj命令によって
	オブジェクトが登録された際に返される番号です。
	x,y,zのパラメーターには、整数かまたは実数を指定することができます。
	値の指定を省略した場合には、値0として処理されます。

	オブジェクトの各グループは、以下のような意味を持っています。

		 グループ pos: (初期値:0,0,0)
			オブジェクトのX,Y,Z座標を指定します。
			2Dオブジェクトの場合は、(X,Y)が座標に使用され、
			Zは優先度(0.0〜1.0)として扱われます。
			また、2Dオブジェクトの座標は画面の中心が(0,0)となります。

		 グループ ang: (初期値:0,0,0)
			オブジェクトの向いているX,Y,Z角度を指定します。
			角度の単位はラジアン(1周でπ*2)になります。
			オブジェクトの回転は、常にZ->Y->Xの順番に行なわれます。

		 グループ scale: (初期値:1,1,1)
			オブジェクトの倍率(X,Y,Z軸)を指定します。

		 グループ dir: (初期値:0,0,0)
			オブジェクトのX,Y,Z方向に対する移動量を指定します。
			OBJ_MOVEのモードが設定されている時に参照されます。

		 グループ efx: (初期値:256,0,0,0)
			オブジェクトの特殊効果を設定します。
			4つの値を格納していますが、
			オフセット0 : [α合成値]
			オフセット1 : [EFX1]
			オフセット2 : [EFX2]
			オフセット3 : [EFX3]
			となっています。
			(*現バージョンではグループEはα合成値のみサポートされています)

			α合成値は、背景とオブジェクトを合成する度合いを指定します。

			α合成値 = 0〜255    : 背景とα合成(blend)を行なう
			α合成値 = 256〜511  : 合成を行なわない(通常時)
			α合成値 = 512〜767  : 背景と色加算(modulate)を行なう
			α合成値 = 768〜1023 : 背景と色減算(substract)を行なう

			合成を行なう場合には、α合成値の値が大きいほど、高い%で合成が
			行なわれます。α合成は、シェーディング、2D、3Dの区別なく処理
			されますが、DirectX、フルカラーモード時のみサポートされます。

		 グループ work: (初期値:0,0,0,0)
			イベントリストで使用される汎用的なパラメーターです。


	「オブジェクト」の中には、特殊な動作を行なうものがあり、これらは
	パラメーターを別な用途として使用しているものがあります。

	「カメラオブジェクト」

	画面に表示するための視点を示すものがカメラオブジェクトになります。
	HGOBJ_CAMERAが、カメラオブジェクトのオブジェクトIDとなります。

		例:
			; カメラの座標を(0,0,20)に設定する
			setpos HGOBJ_CAMERA,0,0,20

	カメラオブジェクトの時のみ、グループのパラメーターは以下の意味を
	持つことになります。

	グループ    offset0      offset1     offset2      offset3
	--------------------------------------------------------------
	  pos       [X座標]      [Y座標]     [Z座標]      [未使用]
	  ang       [X回転角]    [Y回転角]   [Z回転角]    [未使用]
	  scale     [X倍率]      [Y倍率]     [Z倍率]      [未使用]
	  dir       [X注視座標]  [Y注視座標] [Z注視座標]  [未使用]
	  efx       [FOV]        [NearZ値]   [FarZ値]     [未使用]

	dirは注視点(カメラが注目する座標)を示します。
	(ただし、cammode命令で注視点モード設定中のみ参照されます。)
	efxの各パラメーターは、カメラの詳細な設定を示します。
	FOVは、画角(パースのかかりぐあいを調整する値)でラジアン単位の
	指定を行ないます。デフォルトで、45度(π/4)が指定されています。
	NearZとFarZは、表示を行なうZ軸の範囲(Zクリッピング範囲)を指定
	を行ないます。NearZは手前(どこまで近い物体を描画するか)、
	FarZは奥(どこまで遠い物体を描画するか)を示します。
	デフォルトで、NearZは0.5、FarZは768.0が設定されています。
	カメラのefxグループパラメーターは、HGIMG2.61のものと互換性が
	ありませんので注意してください。

	「ライトオブジェクト」

	3D空間上のモデルに光をあてるライトを示すものとして、ライトオブジェクト
	が存在しています。
	HGOBJ_LIGHTが、標準のライトオブジェクトのオブジェクトIDとなります。
	ライトオブジェクトは、reglight命令によって任意に追加することが可能です。

		例:
			; ライトの向きを(0,0.4,-0.1)に設定する
			setang HGOBJ_LIGHT,0,0.4,-0.1

	ライトオブジェクトの時のみ、グループのパラメーターは以下の意味を
	持つことになります。

	グループ    offset0      offset1     offset2      offset3
	--------------------------------------------------------------
	  pos       [X座標]      [Y座標]     [Z座標]      [未使用]
	  ang       [X回転角]    [Y回転角]   [Z回転角]    [未使用]
	  scale     [カラーR]    [カラーG]   [カラーB]    [未使用]
	  dir       [ambientR]   [ambientG]  [ambientB]   [未使用]
	  efx       [range]      [falloff]   [theta]      [phi]

	グループscaleがライトの色、グループdirがアンビエント色のパラメーター
	として使用されます。それぞれのパラメーターは、R,G,Bの要素を0.0〜255.0で
	表わした値となります。
	デフォルトで、ライト色は(255,255,255)、アンビエント色は(0,0,0)が
	設定されています。光源の計算は、基本的にRGB輝度が独立で行なわれ、

		輝度 = 光の強さ * ライト色 * マテリアル色 + アンビエント色

	という式が使用されます。輝度が255を越えた場合は、255になります。
	グループefxは、ポイントライト、スポットライトのための拡張設定で、
	現バージョンでは無視されます。
	(ライトのdir,scaleグループパラメーターは、HGIMG2.61のものと互換性が
	ありませんので注意してください。)

	以下は、オブジェクトパラメーターの値を取得するための命令です。

		getpos id,x,y,z
		getang id,x,y,z
		getscale id,x,y,z
		getdir id,x,y,z
		getefx id,x,y,z
		getwork id,x,y,z

	これらの命令では、x,y,zに読み出し先の変数名を指定します。

		例:
			; カメラの座標を変数a,b,cに読み出す
			getpos HGOBJ_CAMERA,a,b,c

	上の例では、変数aにX座標が、変数bにY座標が、変数cにZ座標が
	それぞれ実数型で代入されます。
	整数値でパラメーターを取得する場合は、以下の命令を使用します。

		getposi id,x,y,z
		getangi id,x,y,z
		getscalei id,x,y,z
		getdiri id,x,y,z
		getefxi id,x,y,z
		getworki id,x,y,z

	最後に「i」が付加された命令は、整数値で変数に代入されます。
	座標を整数のみで扱う場合や、高速化を行ないたい場合に使用する
	ことができます。

	また、パラメーターに対して直接加算を行なうための命令が用意
	されています。

		addpos id,x,y,z
		addang id,x,y,z
		addscale id,x,y,z
		adddir id,x,y,z
		addefx id,x,y,z
		addwork id,x,y,z

	それぞれのグループに対して、(x,y,z)の3つのパラメーターを加算
	します。

		例:
			; オブジェクトID5の物体をX+10,Y-20移動させます
			addpos 5, 10, -20, 0

	これらの命令は、パラメーターの値を直接加算、減算するような
	場合に便利です。

	パラメーターの中で、「グループang」は角度を格納するためのもので、
	通常ラジアン単位によって指定します。
	しかし、ラジアンは直感的に利用することが難しい場合があるため、
	「グループang」のみ整数値で操作するための命令が用意されています。

		setangr id,x,y,z
		addangr id,x,y,z
		getangr id,x,y,z

	これらの命令では、回転情報を0〜255までを1周として扱います。
	つまり、0が0度、64が90度、128が180度…となります。
	これは、整数を使った高速で手軽な角度の設定方法です。
	256段階の角度よりも細かい単位での指定を行なう場合には、
	通常のラジアン単位をお使い下さい。

	オブジェクトパラメーターを設定する方法として、もう1つ別な
	やり方が用意されています。これは、「MOC設定命令」と呼ばれる
	命令セットを使用する方法です。「MOC設定命令」は、HGIMG2で使用
	されていた設定方法で、より細かくパラメーターの取得や演算を
	行なうことが可能です。

	「MOC設定命令」についての詳細は、「MOC設定命令について」の項を
	参照してください。


・直接描画命令について

	HGIMG3では、オブジェクトを登録してまとめて描画を行なう従来までの
	方法とともに、直接命令実行時に描画を発行させるための直接描画命令が
	用意されています。
	直接描画命令は、登録されているオブジェクトやモデルとか関係なく
	画面上に任意の矩形やテクスチャを描画することができます。

	直接描画命令は、必ずhgdrawhgsyncの間に描画を行なう必要がありますので
	注意してください。

		例:
			;	描画メイン
			;
		*main
			hgdraw				; 描画処理
			color 255,0,0
			hgrect 320,240,0,100,100
			hgsync 10			; 時間待ち
			goto *main

	以下が直接描画命令になっています。
	hgrecthgrotate命令は、それぞれ標準命令のgrectgrotate命令と同じ動作を
	HGIMG3の画面に対して行なう命令セットになっていますので、標準命令から移植
	するような場面にも有効です。

	hgrect p1,p2,p3,p4,p5,p6		矩形の直接描画

	p1=0〜(0)  : 矩形の中心X座標
	p2=0〜(0)  : 矩形の中心Y座標
	p3=0〜(0.0): 回転角度(単位はラジアン)
	p4=0〜(?)  : Xサイズ
	p5=0〜(?)  : Yサイズ

	(p1,p2)で指定した座標を中心として、(p4,p5)で指定したサイズの矩形(長方形)を
	現在設定されている色で描画します。
	p3で回転角度を実数で指定することができます。
	角度の単位は、ラジアン(0から始まって、2πで一周)となります。
	grect命令は、gmodeで設定されたコピーモードの指定が反映されます。

	gmodeが0,1の場合は、通常の塗りつぶし。
	gmodeが3の場合は、指定されたレートで半透明になります。
	gmodeが5,6の場合は、それぞれ色加算、色減算処理となります。
	また、(p4,p5)のサイズ指定を省略した場合には、gmode命令で設定されている
	コピーサイズが使用されます。


	hgrotate p1,p2,p3,p4,p5,p6		矩形画像の直接描画

	p1=0〜(0)  : テクスチャID
	p2=0〜(0)  : コピー元の左上X座標
	p3=0〜(0)  : コピー元の左上Y座標
	p4=0〜(0.0): 回転角度(単位はラジアン)
	p5=0〜(?)  : Xサイズ
	p6=0〜(?)  : Yサイズ

	hgrotate命令は、指定された矩形範囲に回転を含めたテクスチャ描画処理を
	行ないます。p1で、コピー元のテクスチャIDを指定、(p2,p3)でコピーされる
	元の画像にあたる座標を指定します。(gcopy命令と同様です)
	コピー先は、現在の描画先に指定されているウインドゥIDで、
	pos命令で設定された場所を中心とした座標にコピーを行ないます。
	その際に、p3で回転角度を実数で指定することができます。
	角度の単位は、ラジアン(0から始まって、2πで一周)となります。
	(p5,p6)で、コピーされた後のX,Yサイズを指定します。
	また、コピー元のX,Yサイズはgmode命令で設定されたデフォルトの
	コピーサイズが使用されます。
	つまり、gmode命令で指定されたサイズよりも大きなサイズを(p5,p6)
	で指定した場合には、拡大されることになります。
	(p5,p6)を省略した場合には、コピー元と同じサイズ、つまり等倍で
	コピーが行なわれます。

	hgrotate命令は、gmodeで設定されたコピーモードの指定が反映されます。
	(詳しくはgmode命令のリファレンスを参照してください)



・イベントリストについて

	イベントリストは、決まった流れの処理(イベント)をあらかじめ用意
	しておいて、それを個々のオブジェクトに対して適用させるための
	機能です。

	イベントリストを使用するためには、大きく分けて

		「イベントリストの作成」と「イベントリストの適用」

	という2つの段階があります。
	まず、「イベントリストの作成」であらかじめ特定の処理を決めて
	おきます。たとえば、「○○の座標に移動する」とか「X座標を1足す」
	など各種パラメーターに対して細かい動作を決めることができます。
	こうした処理をイベントと呼び、それを複数まとめたものをイベントリスト
	と呼ぶようにしています。

	イベントリストを作成するには、以下のように記述します。

		例:
			newevent ev1	; 新しいイベントIDを取得
			event_setpos ev1, 10,20,30

	上の例では、座標パラメーターとして(10,20,30)を設定するための
	イベントを作成して、そのIDを変数ev1に代入しています。
	新しくイベントを作成する場合には、必ずnewevent命令でイベントIDを
	取得しておきます。次に、event_setpos等のイベント登録用の命令で、
	指定されたイベントIDにイベントを追加していきます。
	一度取得されたイベントIDは、シーンのリセット(hgreset命令)が
	行なわれるか、またはdelevent命令によってイベントリストが削除
	されるまでは保持されます。

	こうしてできたイベントは、好きな時にオブジェクトに対して適用
	させることができます。

		例:
			newevent ev1	; 新しいイベントIDを取得
			event_setpos ev1, 10,20,30
			; objidのオブジェクトにev1のイベントを適用
			setevent objid, ev1

	この例では、objidが示すオブジェクトに対してev1のイベントリスト、
	つまり(10,20,30)を座標として設定するという処理を適用します。
	このように、イベントではパラメーターに対しての動作をまとめて
	登録することができ、それを特定のオブジェクトに反映させる働きを
	持ちます。
	event_setposでは、座標設定のイベントを登録しますが、それ以外の
	パラメーターを設定するための命令も用意されています。

		event_setpos eventid, x, y, z
		event_setang eventid, x, y, z
		event_setangr eventid, x, y, z
		event_setscale eventid, x, y, z
		event_setdir eventid, x, y, z
		event_setefx eventid, x, y, z
		event_setwork eventid, x, y, z

	それぞれのグループに設定するX,Y,Z値を実数または整数値で指定
	することができます。
	また、

		event_setpos eventid, x1, y1, z1, x2, y2, z2

	のように、X,Y,Zの範囲を指定することにより、乱数で指定された
	範囲内の値を自動的に生成させることもできます。

		例:
			newevent ev1	; 新しいイベントIDを取得
			event_setpos ev1, 10,20,30,30,20,50

	上の例では、XYZ=(10〜30,20,30〜50)までの値が設定されます。
	設定だけでなく、パラメーター値に対して加算を行なうイベントも
	登録することができます。

		event_addpos eventid, x, y, z
		event_addang eventid, x, y, z
		event_addangr eventid, x, y, z
		event_addscale eventid, x, y, z
		event_adddir eventid, x, y, z
		event_addefx eventid, x, y, z
		event_addwork eventid, x, y, z

	これらの命令は、特定グループのパラメーターに対して(X,Y,Z)の
	値を加算します。(マイナス値を指定することで減算になります。)

	イベントでは、パラメーター設定の他にも時間経過に応じた処理を
	追加することができます。

		例:
			newevent ev1	; 新しいイベントIDを取得
			event_pos ev1, 20, 0,10,20

	上の例では、20フレーム後に(0,10,20)の座標に移動するイベントが
	登録されます。このイベントが適用されたオブジェクトは、自動的に
	20フレームの間指定された座標まで移動を行ないます。
	複数のevent_posイベントを登録することにより、移動の経路を
	細かく指定しておくことが可能です。

		例:
			newevent ev1	; 新しいイベントIDを取得
			event_pos ev1, 20, 10,0,0
			event_pos ev1, 20, 10,10,0
			event_pos ev1, 20, 0,10,0
			event_pos ev1, 20, 0,0,0

	上の例では、(10,0,0)→(10,10,0)→(0,10,0)→(0,0,0)の順番に
	移動を行ないます。
	単純な待ち時間を登録するためのevent_wait命令も用意されています。
	event_waitイベントでは、指定されたフレーム数が経過するまで次の
	イベント処理を待ちます。
	パラメーター加算とevent_waitイベントを組み合わせることで、
	相対的なパラメーター変化をさせることができます。

		例:
			newevent ev1	; 新しいイベントIDを取得
			event_addpos ev1, 0,1,0
			event_wait ev1, 10
			event_addpos ev1, -1,0,0
			event_wait ev1, 20

	上の例では、最初の10フレームはYに1を加算し続け、その後
	20フレームは、X座標を-1し続けることになります。
	さらに、イベントを繰り返し処理させるためにevent_jump命令を
	使用することができます。

		例:
			newevent ev1	; 新しいイベントIDを取得
			event_addpos ev1, 0,1,0
			event_wait ev1, 20
			event_addpos ev1, 0,-1,0
			event_wait ev1, 20
			event_jump ev1, 0, 100

	上の例では、20フレームごとにY座標を1だけ加算・減算する
	という処理を繰り返し行なうことになります。
	event_jumpは、登録されているイベントリストの中で指定された
	場所に処理を戻します。これにより、永遠に特定の処理をし続ける
	イベントリストを作成することが可能になります。

	setevent命令によって設定されるイベントは、オブジェクト1つ
	あたり4つまで同時に適用することが可能です。

	これにより、ゲーム等で起きる定型の処理(爆発やミサイルの軌道など)を
	イベントリストとしてスマートに分離して管理することができます。
	イベントリストは、非常に応用範囲が広い反面、命令の種類も多く
	最初は難しく感じるかもしれませんが、1つ1つ使いながら覚えて
	いけばスクリプトで行なう手間を大幅に削減することができるはずです。

	ここで挙げた命令以外にも、モードやフラグなどのパラメーターを
	操作するためのイベントなど様々な応用が可能です。
	それぞれの命令の詳細は、ヘルプを参照してください。


・MOC設定命令について

	MOCとは、MOC(Motion Object Controller)のことで、複数のグループに
	分かれたベクトルパラメーター(x,y,zの値)をまとめて管理する仕組みを
	指しています。

	MOC設定命令は、HGIMG2と互換のある方法でオブジェクトパラメーターの
	操作を行なうための命令セットです。
	通常の利用や、新しくHGIMG3を使い始めるユーザーは、特に覚えなくても
	オブジェクトパラメーターの操作は可能です。

	HGIMG3の「オブジェクト」は、以下のようなパラメータを持っています。
	(「オブジェクトパラメーター設定命令について」のリストと同一です)

		「オブジェクト パラメータ」

		グループ    offset0      offset1     offset2      offset3
		--------------------------------------------------------------
		  A         [X座標]      [Y座標]     [Z座標]      [未使用]
		  B         [X回転角]    [Y回転角]   [Z回転角]    [未使用]
		  C         [X倍率]      [Y倍率]     [Z倍率]      [未使用]
		  D         [X移動量]    [Y移動量]   [Z移動量]    [未使用]
		  E         [α合成値]   [未使用]    [未使用]     [未使用]
		  F         [ワーク値X]  [ワーク値X] [ワーク値X]  [未使用]

	グループA〜Fまでにそれぞれoffset0〜3までのパラメータが存在しています。
	それらのパラメータを更新することで、画面に表示されているオブジェクトにも
	反映されます。
	どのグループを書き換え対象にするかを指定する命令として、

		selpos id		移動座標(グループA)をMOC情報に設定
		selang id		回転角度(グループB)をMOC情報に設定
		selscale id		スケール(グループC)をMOC情報に設定
		seldir id		移動量(グループD)をMOC情報に設定
		selefx id		特殊効果(グループE)をMOC情報に設定
		selwork id		ワーク値(グループF)をMOC情報に設定

	があります。idは、オブジェクトID(番号)になります。
	これらのパラメータを更新するためにMOC設定命令群が用意されています。
	設定するには、まず「どのオブジェクトのどのグループを書き換え対象に
	するか」を指定します。次に、offset0〜3のどの部分を変更するかを指定
	する2段階が必要になります。

	カメラオブジェクトのグループを指定する場合には、

		selcpos			カメラ座標(グループA)をMOC情報に設定
		selcang			カメラ角度(グループB)をMOC情報に設定
		selcint			カメラ注視点(グループC)をMOC情報に設定

	を使用します。

	ライト(光源)オブジェクトのグループを指定する場合には、

		sellpos	id		光源座標(グループA)をMOC情報に設定
		sellang	id		光源角度(グループB)をMOC情報に設定
		sellcolor id		光源色(グループC)をMOC情報に設定

	を使用します。
	また、直接グループを値で設定するための命令として、

		selmoc id, group	オブジェクトのMOCグループ指定
		selcam group		カメラのMOCグループ指定
		sellight id,ofs		光源をMOC情報に設定

	があります。groupは、012…の順番にABC…が割り当てられます。
	グループが指定されたら、次は実際の値を設定します。これには、多様な
	設定方法がありますが、最も単純な方法は、

		objset1 ofs,x					MOC情報を設定

	の命令で、ofsにオフセット番号、xに設定する値を指定することです。
	これで目的のパラメータを任意の値に設定することができます。
	xには、実数または整数値を指定することができます。
	(HGIMG互換のためのobjsetf1も用意されています。)

	さらに、2つのパラメータを同時に設定するための命令、

		objset2 ofs,x,y					MOC情報を設定

	も用意されています。これは、2DスプライトのX,Y座標など2つのパラメータを
	セットで指定する場合に都合のよい命令です。この場合は、指定したオフセット
	とその次のオフセットが設定の対象になります。
	(HGIMG互換のためのobjsetf2も用意されています。)

	そして3つのパラメータを同時に設定するための命令、

		objset3 x,y,z					MOC情報を設定

	も同様に用意されています。ここでは、必ずオフセット0,1,2が設定の対象に
	なります。3D座標などのX,Y,Z値を同時に指定する場合に都合のよい命令です。
	(HGIMG互換のためのobjsetf3も用意されています。)

	これらに加えて、

		objadd1 ofs,x					MOC情報を加算
		objaddf1 ofs,x					MOC情報を加算
		objadd2 ofs,x,y					MOC情報を加算
		objaddf2 ofs,x,y				MOC情報を加算
		objadd3 x,y,z					MOC情報を加算
		objaddf3 x,y,z					MOC情報を加算

	は、対象となるパラメータに記憶されていた値に対して、指定値を加算する
	命令です。加算値にマイナスの値を使うことで、減算をすることも可能です。

	MOC情報を設定するものの中で、パラメーターとして角度を指定する場所で
	使用する専用の命令が用意されています。
	objset1rのように、最後に「r」がついています。
	これは、通常ラジアン単位の角度を指定するべきパラメーターを、整数値で
	指定できるようにしたものです。

		objset1r ofs,x					MOC情報を設定
		objset2r ofs,x,y				MOC情報を設定
		objset3r x,y,z					MOC情報を設定

	これらの命令は、回転情報を0〜255までを1周とする単位で扱うことができます。

	最後にパラメータを変数に取り出したり、逆に変数に後で説明するFV形式
	で格納されている値をパラメータに設定するための命令が用意されています。

		objgetfv fv						MOC情報を取得
		objsetfv fv						MOC情報を設定
		objaddfv fv						MOC情報を加算
		objmovfv fv,times				MOC移動情報を設定
		objgetv v						MOC情報を整数値で取得
		objsetv v						MOC情報を整数値で設定

	これらの命令を使うことで、多くのパラメータを効率よく管理、変更する
	ことができるようになっています。


・浮動小数サポート命令

	浮動小数サポート命令は、小数値、ベクトル値などの情報を扱うための
	命令群です。ベクトルを変数に格納する方法としてFV値という表現が出て
	きますが、これは「変数名=1.0」のように1つの値を代入するのではなく
	「変数名.0=X:変数名.1=Y:変数名.2=Z」のように実数型の配列変数として
	3つの要素(X,Y,Z)を格納しておく形式です。

	FV値を使用することで、3次元座標や角度(ベクトル)などの情報を比較的
	整理して扱うことができます。FV値を演算する命令では、同時に3つの要素に
	対して計算されるため、1つの要素ごとに計算するよりもシンプルで高速に
	処理を行なうことができます。

	fvseti fv,x,y,z					整数値からベクトル設定

		fv      = FV値が代入される変数名
		(x,y,z) = 整数値

		(x,y,z)で指定された整数値をベクトルとしてFV値に代入する。

	fvset fv,x,y,z					ベクトル設定

		fv      = FV値が代入される変数名
		(x,y,z) = 実数値

		(x,y,z)で指定された整数値をベクトルとしてFV値に代入する。

	fvadd fv,x,y,z					ベクトル加算
	fvsub fv,x,y,z					ベクトル減算
	fvmul fv,x,y,z					ベクトル乗算
	fvdiv fv,x,y,z					ベクトル除算

		fv      = FV値が代入される変数名
		(x,y,z) = 計算値(実数値)

		fvで指定された変数に格納されているFV値と、指定された
		小数値(X,Y,Z)の演算を並列で行ないます。

	fvdir fv,x,y,z					ベクトル回転

		fv      = FV値が代入される変数名
		(x,y,z) = 回転角度(実数値)

		fvで指定された変数に格納されているベクトル(FV値)を、
		小数値(X,Y,Z)で指定されたX,Y,Z角度に回転させます。

	fvmin fv,x,y,z					ベクトル最大値

		fv      = FV値が代入される変数名
		(x,y,z) = 比較値(実数値)

		fvで指定された変数に格納されているFV値と、
		小数値(X,Y,Z)を比較して、値の大きいものを代入します。
		FV値の各要素を最小値までに切り詰める場合に使用します。

	fvmax fv,x,y,z					ベクトル最小値

		fv      = FV値が代入される変数名
		(x,y,z) = 比較値(実数値)

		fvで指定された変数に格納されているFV値と、
		小数値(X,Y,Z)を比較して、値の小さいものを代入します。
		FV値の各要素を最大値までに切り詰める場合に使用します。

	fvouter fv,x,y,z				ベクトル外積

		fv      = FV値が代入される変数名
		(x,y,z) = 演算するベクトル値(実数値)

		fvで指定された変数に格納されているFV値と、
		小数値(X,Y,Z)で指定するベクトルの外積を求めて代入します。

	fvinner fv,x,y,z				ベクトル内積

		fv      = FV値が代入される変数名
		(x,y,z) = 演算するベクトル値(実数値)

		fvで指定された変数に格納されているFV値と、
		小数値(X,Y,Z)で指定するベクトルの内積を求めてfv.0に代入します。

	fvface fv,x,y,z					座標から角度を得る

		fv      = FV値が代入される変数名
		(x,y,z) = X,Y,Z座標値(実数値)

		fvで指定された変数に格納されているベクトル(FV値)を基点とする
		X,Y,Z座標から、指定されたX,Y,Z座標を直線で見るための回転角度を求めて
		代入します。

	fvunit fv						ベクトル正規化

		fv      = FV値が代入される変数名

		fvで指定された変数に格納されているベクトル(FV値)を正規化します。

	fsin fval,rot					サインを求める

		fval    = float値が代入される変数名
		rot     = 回転角度(実数)

		rotで指定された角度のサイン値をfvalで指定した変数に代入します。
		角度の単位はラジアンになります。

	fcos fval,rot					コサインを求める

		fval    = float値が代入される変数名
		rot     = 回転角度(実数)

		rotで指定された角度のコサイン値をfvalで指定した変数に代入します。
		角度の単位はラジアンになります。

	fsqr fval,prm					平方根を求める

		fval    = float値が代入される変数名
		prm     = 演算に使われる値(実数)

		prmで指定された値の平方根をfvalで指定した変数に代入します。

	froti fval,prm					整数値角度を小数値に変換

		fval    = float値が代入される変数名
		prm     = 0〜1023の角度値(整数)

		prmで指定された整数値(0〜1023)を角度を示すものとして、
		fvalに-π〜+πのラジアン角度値に変換して代入します。

	fv2str fv						ベクトルを文字列に変換

		fvで指定された変数に格納されているベクトル(FV値)を文字列に
		変換してシステム変数refstrに結果を返します。

	str2fv fv,"x,y,z"				文字列をベクトルに変換

		"x,y,z"で指定された文字列情報を「,」で区切られたX,Y,Z小数値として
		読み出し、fvで指定された変数に格納します。

	str2f fval,"val"				文字列を小数値に変換

		"val"で指定された文字列情報を小数値として読み出し、
		fvalで指定された変数に格納します。

	f2str val,fval					小数値を文字列に変換

		fvalで指定された小数値を文字列に変換して、valで指定された文字列型の
		変数に結果を返します。

	f2i v,x,y,z						小数値を整数値に変換

		小数値(X,Y,Z)を整数値に変換して、vで指定された数値型の変数に代入
		します。結果はそれぞれ「v.0=x:v.1=y:v.2=z」の各要素に格納されます。


・DirectXについて

	DirectX使用時の注意点は以下の通りです。

	・DirectX8以上のランタイムがインストールされている必要があります
	・DirectX使用時は常にフルカラーモードが選択されます
	・テクスチャの縦横サイズは2のn乗(2,4,8,16…)に合わせて読み込まれます

	一部のビデオカードでは、テクスチャフォーマットがサポートされていない場合に
	エラーが出ることがあります。HGIMG3で、サポートしているテクスチャ形式は、
	「A8R8G8B8」「X8R8G8B8」「A1R5G5B5」「X1R5G5B5」です。テクスチャは、この中
	の最適なフォーマットに変換して使用されます。
	将来のバージョンではインデックスカラーのテクスチャもサポートする予定です。

	ワンスキンモデルの描画や、トゥーンシェーディングなどの特殊機能は、
	バーテックスシェーダーが使用されます。ビデオカードが、ハードウェア処理
	によるバーテックスシェーダーに対応している場合は、より高速に処理されます。
	ハードウェア処理によるバーテックスシェーダーに対応していない場合でも、
	ソフトウェア処理により正常に描画されます。


・命令リファレンス


	各命令の詳細は、HSPヘルプマネージャーのヘルプファイル(*.hs)として
	提供されています。
	同梱の、「hgimg3.hs」ファイルをHSPがインストールされているディレクトリ
	にある「hsphelp」フォルダにコピーすることで、ヘルプマネージャー
	による検索やワンキーヘルプによるリファレンスが参照できます。


・DirectXフルスクリーンモードについて

	hgsetreq命令によって、SYSREQ_DXMODEのモードに1を指定することで、
	hgini命令で初期化した際にフルスクリーンモードが選択されます。
	フルスクリーン時の解像度は、SYSREQ_DXWIDTH、SYSREQ_DXHEIGHTで指定します。
	現時点では、フルスクリーンとウインドゥモードの動的な切り替えはサポート
	していません。

		例:

		;	初期設定
		;
		bgscr 0,640,480,0		; フルスクリーンは必ずbgscrで作成
		cls 4
		hgsetreq SYSREQ_DXMODE,1		; フルスクリーンモードを指定
		hgsetreq SYSREQ_DXWIDTH,640		; フルスクリーン解像度X
		hgsetreq SYSREQ_DXHEIGHT,480	; フルスクリーン解像度Y
		hgini


・3Dモデルの形式について

	HGIMG3では、x形式の3Dモデルを読み込んで使用することができます。
	x形式は、DirectXの標準的なファイルフォーマットで、3Dモデル情報、ノード情報、
	マテリアルやアニメーションなどの情報が保存されています。

	HGIMG3が読み込むx形式は、DirectX8以降のスキンメッシュに対応しています。
	ワンスキンモデル及びアニメーションを出力可能な各種ツールで、x形式の出力に
	対応したものを別途ご用意下さい。

	サンプルとして同梱されている、Monster.xは、Lightwave7.5のDirectX Export
	プラグインによって出力されたデータです。

	※LWのDirectX Exportで出力する場合は、text形式を選択してください。
	※頂点ごとの色設定には対応していません。
	※複数アニメーションを格納したx形式には対応していません。
	※マトリックスによるキー指定(Matrix Key)はフレーム補間が行なわれません。

	HGIMG2でサポートされていた、mx形式の3Dモデルデータは、読み込みのみ
	サポートされます。ma形式のアニメーションデータ及び、mx形式の階層情報は、
	HGIMG3では利用することができませんのでご了承下さい。


・日本語フォント描画機能について

	HGIMG3では、フォント描画用のテクスチャを使用して日本語のメッセージを
	表示させることが可能です。DirectXの画面にはmes命令を使用することが
	できず、fprt命令でも英文字のフォントしかサポートされていませんでした。
	フォント描画テクスチャを使用することで、テクスチャを通して日本語を
	自由に描画することができるようになります。
	以下のスクリプトは、実際に日本語フォント描画機能を使用した例です。

	例:

	texmake 256,128		; フォント描画テクスチャの準備
	mest = stat		; テクスチャIDを変数mestに保存
	texcls mest,$004000	; フォント描画テクスチャをクリア
	font "MS ゴシック",22,1	; フォントの選択
	color 255,255,255		; 描画色を設定
	texmes "日本語メッセージです。",mest,0,0	;(0,0)にフォントを描画

	フォント描画テクスチャは、texmake命令により生成させることが可能です。
	texmake命令は、VRAM上に指定されたサイズのテクスチャエリアを確保します。
	この時、テクスチャのフォーマットをオプションで指定することができます。
	作成モードが0か省略された場合は、16bitテクスチャ(A4R4G4B4)が作成されます。
	作成モードが0以外の時は、32bitテクスチャ(A8R8G8B8)となります。
	16bitテクスチャの方が速度的にも互換性の上でも有利になりますが、より
	高精度なメッセージ描画を行なう場合には、32bitテクスチャを指定してください。

	テクスチャへのフォント描画は、texmes命令によって実行されます。
	この時、color命令により設定された色と、font命令によって設定された
	フォントの情報が参照されます。
	テクスチャへフォント描画を行なっただけでは、画面上にメッセージは表示
	されません。フォント描画テクスチャを何らかのモデルに貼り付けるか、
	grotate命令などで直接画面上に表示を行なう必要があります。
	テクスチャへの描画と、実際の画面上への描画の2段階があるので、注意が
	必要です。テクスチャは、一度描画した内容はそのままなので、毎フレーム
	ごとに同じ内容をtexmes命令で描画する必要はありません。


・テクスチャの形式について

	HGIMG3では、テクスチャ読み込みのために2種類の方法を用意しています。
	1つは、HSPのバッファを介してテクスチャを読み込むtexload命令、
	もう1つは、DirectXのAPIを利用してテクスチャを読み込むtexload2命令です。
	この2種類の命令には、以下のような違いがあります。

	・texload命令

	 HSPの画面バッファを介してテクスチャを登録する(settex命令が使われる)。
	 bmp,jpg,gifフォーマットが利用可能。
	 アルファチャンネルには対応していない。
	 (A8R8G8B8)または、(A1R5G5B5)フォーマットに自動的に変換される。
	 テクスチャサイズが不正な場合は、黒ピクセルを自動的に追加して登録する。

	・texload2命令

	 DirectXのAPIによりテクスチャを登録する。
	 bmp,jpg,gif,png,dds,tga,tiffフォーマットが利用可能。
	 アルファチャンネルに対応している。
	 ピクセルフォーマットは最適なものに自動変換される。
	 テクスチャサイズが不正な場合は、拡大縮小を行なって登録する。

	基本的には、アルファチャンネルを含むテクスチャはtexload2命令で、
	テクスチャの拡大縮小を自動で行なわれては困る場合には、texload命令を
	利用すると良いでしょう。
	x形式のモデルデータで使用されているテクスチャについては、texload2命令
	と同等の動作になります。


・トゥーンシェーディングについて

	x形式のモデルデータにアニメ調の描画処理(トゥーンシェーディング)を
	施すことが可能です。トゥーンシェーディングは、単色のポリゴン部分を
	適切な色に置き換え、輪郭を描画することでアニメ調の表現を行なうものです。
	テクスチャが貼られている部分は、アニメ調のシェーディングは行なわれない
	ので注意してください。

	最も簡単にモデルにトゥーンシェーディングを適用する場合には、
	maketoon命令を使用します。

		例:
		addxfile m_xmodel,"monster.x"
		maketoon m_xmodel,1

	これにより、内部で自動作成されたトゥーンテクスチャ(トゥーン
	シェーディング用に最適化されたテクスチャ)がモデルに適用されます。
	トゥーンテクスチャは、光の強さに対してどのような色で描画を行なうかを
	マテリアル色ごとに示しているもので、1つのモデルに対して1枚の
	トゥーンテクスチャが必要になります。

	「maketoon m_xmodel,2」のように作成モードに2を設定すると、
	「toon.bmp」という名前でトゥーンテクスチャがファイルとして保存されます。
	このファイルを自前で加工することで、トゥーンシェーディングの色使いや
	影の比率などを自由に変化させることができます。
	トゥーンテクスチャは、Y軸は1つのマテリアルにつき8ドット単位で構成
	されており、一番上のドットがもとのマテリアル色を示しています。
	下4ドット(Y=4〜7)までが、トゥーンシェーディング時に実際に描画される
	色の情報になります。この時、光の影響が強いほどX軸が大きくなります。
	(X軸は0が最小で127が最大値となります。)
	自前で修正したトゥーンテクスチャは、loadtoon命令により適用させる
	ことができます。

		例:
		addxfile m_xmodel,"monster.x"
		loadtoon m_xmodel,"t_mons.bmp"

	トゥーンシェーディング時の細かい設定をsettoonedge命令によって行なう
	ことができます。settoonedge命令のパラメーターは以下の通りです。

		settoonedge		トゥーンシェーディング時の設定

		settoonedge p1,p2,p3,p4

		p1    : モデルID
		p2(0) : エッジの色(RGBコード)
		p3(0) : XYオフセット
		p4(0) : Zオフセット

		p1で指定したモデルのトゥーンシェーディング時の設定を行ないます。
		p2で、エッジの色コード(RRGGBB)を指定します。
		p3,p4は実数値によりエッジのオフセットを指定することができます。
		エッジのオフセットを変更することにより、輪郭線の太さを調整する
		ことができます。


・複数アニメーションの切り替えについて

	x形式のモデルデータに対して複数のアニメーションデータを切り替えて
	再生することが可能です。
	まず最初に、モデル全体と最初のアニメーションを含んだデータをaddxfile命令に
	より読み込み、さらに追加でアニメーションだけを登録する場合にaddxanim命令を
	必要な数だけ使用してください。
	複数のアニメーションデータを読み込む場合は、必ずモデルやボーンの構成が同一
	のものから出力されている必要があります。
	以下は、「wait.x」「walk.x」「run.x」という3つのファイルを読み込んでいる
	サンプルです。

		例:
		addxfile m_xmodel,"wait.x" ; アニメーションインデックス0
		addxanim m_xmodel,"walk.x" ; アニメーションインデックス1
		addxanim m_xmodel,"run.x" ; アニメーションインデックス2

	複数のアニメーションを読み込んだ場合は、アニメーションインデックス値が
	0から始まり1,2,3…という順に割り振られていきます。
	アニメーションインデックス値は、objact命令でアニメーションを実際に
	切り替える時に、指定することになります。
	objact命令のパラメーターは以下のようになっています。

		objact ObjID,Anim,mode			指定アニメーションを開始

		ObjID   : オブジェクトID
		Anim    : アニメーションインデックス値
		mode(0) : 設定モード(0=即時/1=終了時)

	先のサンプルの場合は、

		例:
		objact obj,0 ; 「wait.x」を再生
		objact obj,1 ; 「walk.x」を再生
		objact obj,2 ; 「run.x」を再生

	というパラメーターになります。
	objact命令によるアニメーション切り替えでは、設定モードを選択する
	ことができます。

		objact obj,0 ; 「wait.x」を再生

	の場合は、命令が実行された時点で即時に切り替えを行ないます。
	設定モード0でアニメーションを再生した場合は、再生スピードはデフォルト値に
	戻され、リピート再生が行なわれる設定になります。

		objact obj,0,1 ; 「wait.x」を再生

	設定モードに1を指定した場合は、現在再生されているアニメーションが
	終了してから、設定されたアニメーションに切り替わります。

	アニメーションの再生速度は、objspeed命令によって個別に変更する
	ことが可能です。また、getanim命令により現在再生されているアニメーション
	に関する情報を取得することができます。
	詳しくは、objspeed,getanim命令のヘルプを参照してください。


・登録の限界数について

	登録するオブジェクト数や、モデル数が足りない場合は、別途
	hgsetreq命令により最大数を設定する必要があります。
	以下の例は、オブジェクト最大数を1024に設定します。

	hgsetreq SYSREQ_MAXOBJ,1024	; オブジェクト最大数を拡張する

	hgsetreqで設定できる主な項目は以下の通りです。

		マクロ名          内容(デフォルト値)
		-----------------------------------------------------
		SYSREQ_MAXMODEL   モデル最大数(4096)
		SYSREQ_MAXOBJ     オブジェクト最大数(512)
		SYSREQ_MAXTEX     テクスチャ最大数(512)
		SYSREQ_DXMODE     フルスクリーンモードスイッチ(0)
		SYSREQ_DXHWND     ウィンドウハンドル(参照のみ)
		SYSREQ_DXWIDTH    フルスクリーンモード時の横サイズ(640)
		SYSREQ_DXHEIGHT   フルスクリーンモード時の縦サイズ(480)
		SYSREQ_COLORKEY   テクスチャ登録時の透明色コード(0)
		SYSREQ_MAXEVENT   イベント最大数(512)

	HGIMG2.61までに存在したパケットサイズは廃止されています。


・DirectXパラメーターの参照について

	hggetreq命令により、いくつかのDirectXに関するパラメーターを
	取得することが可能です。

		マクロ名          内容(デフォルト値)
		-----------------------------------------------------
		SYSREQ_RESULT     エラー発生時の原因コード(参照のみ)
		SYSREQ_RESVMODE   ステータスコード(参照のみ)
		SYSREQ_PTRD3D     DIRECT3D8のCOMポインタ(参照のみ)
		SYSREQ_PTRD3DDEV  DIRECT3DDEVICE8のCOMポインタ(参照のみ)

	SYSREQ_RESULT

		エラー発生時の原因コードが格納されます。
		hgini命令で初期化した場合に、エラーとなった場合に
		参照することで、エラーを特定できる場合があります。

		1 : DIRECT3D8の取得に失敗した
		2 : GetAdapterDisplayModeに失敗した
		3 : DIRECT3DDEVICE8の取得に失敗した

	SYSREQ_RESVMODE

		初期化後にステータスコードが格納されます。
		bit0-7は、D3DFORMAT値(DirectX SDKを参照)を示しています。
		初期化された画面のピクセルフォーマットを知ることができます。
		bit12が1($1000)だった場合は、DirectXがエミュレーション
		モード(D3DDEVTYPE_REF)で動作していることを示しています。

	SYSREQ_PTRD3D
	SYSREQ_PTRD3DDEV

		HGIMG3内部で使用しているDirectXのCOMポインタが格納されます。
		それぞれ、DIRECT3D8と、DIRECT3DDEVICE8のCOMポインタを
		示しています。HSP3のCOM呼び出し機能と組み合わせて
		使用することで、DirectX APIを直接利用することが可能です。


・HGIMG3対応ツールについて

	HGIMG3に対応した3Dツールとして以下のものを推奨しています。
	これ以外にも、x形式、mx形式を扱うツールを利用することが可能です。

	[3DACE の部屋]
	http://hp.vector.co.jp/authors/VA017881/

	直感的に3Dのモデリングを行うことのできるフリーソフト3DACEが公開されて
	います。MX形式、X形式での出力に対応しています。

	[おちっこLAB]
	http://www5d.biglobe.ne.jp/~ochikko/

	ボーンによるモーションを付けるためのツール、RokDeBone2が公開されています。
	Metasequoiaと六角大王のデータを利用することができ、IKにも対応しています。
	フリーでワンスキンモーションの作成が可能になります。
	データは、X形式(DirectX)で出力することが可能です。

	[Cyberdelia.net]
	http://www.cyberdelia.net/

	高機能モーション編集ソフトCyberdeliaを公開しています。
	MX形式での入出力、アニメーションをMA、X形式で出力することが可能です。

	[Mizno Lab.]
	http://www21.ocn.ne.jp/~mizno/

	Metasequoiaは、O.Miznoさんが作られた3Dモデリングツールです。
	フリー版のMetasequoiaLEは、オンラインですぐに入手することができ、
	3Dデータの作成を行ないx形式で出力することが可能です。
	Metasequoia自身や、プラグインでかなり多種のフォーマット読み込みに
	対応しているため既存の3Dファイルからの変換の可能性がぐんと広がります。

	[game space]
	http://www.caligari.com/gamespace/

	ゲーム用のポリゴンモデル、アニメーションに特化したツールです。
	直感的なインターフェースで作業でき、いくつかの制限があるものの、
	フリー版も用意されています。x形式での出力に対応しています。


	また、以下のサイトでMXフォーマットを扱うコンバーターを製作、配布しています。

	[ONION software]
	http://www.onionsoft.net/hsp/

	XtoMXコンバーターを公開しています。DirectX8のX形式から、HGIMGで扱うことが
	できるmx形式に変換します。テクスチャやUV情報なども含めて有効な情報が変換
	されます。

	[よし〜ふ ゲーム開発部屋]
	http://member.nifty.ne.jp/Yoshirf/

	「YJ Studio 2001 モデリング編集」ツールで、ポリゴンのモデリング編集
	およびテクスチャの設定、MXフォーマットの読み書きをサポートしています。
	また、「YJPコンバータ」を使用することで、YJP形式を通して、DXF形式、
	X形式(DirectX)、LWO形式(Lightwave3D)、ROK形式(六角大王)からのモデル
	データ変換を行なうことが可能です。

	[MIA's HomePage]
	http://www.diry.net/mia/

	MQO -> MX コンバータを公開しています。MQO形式は、3Dモデリングツール
	Metasequoia が出力するファイル形式です。テクスチャやUV情報なども含めて
	有効な情報が変換されます。


・MXファイルフォーマットについて

	MXファイルは、HGIMG専用に作成されたポリゴンモデル記述ファイルです。
	MXファイルへの変換や、加工などのサポートは今後順次リリースしていく予定です。
	ver2.0β2からマテリアル情報エリアなどが追加されたMXフォーマットver2.0が
	定められました。以前のバージョンからの上位互換となっています。

	・mxフォーマット詳細(ver2.0)

	ユーザー側でMXファイルを作成する場合は、以下のフォーマットに従って
	ファイルを生成していただくようお願い致します。
	MXファイルフォーマットは今後、拡張改編される可能性があります。
	MXファイルについての技術的なご意見やご質問は、メールかβ版の掲示板へ
	お願い致します。

		MXファイル構造(以下の順に各構造体が記録されています)

			[MXHED]
			[MDINF]  ( SIZE_MDINF のバイト数だけ格納されています )
			[NDINF]  ( SIZE_NDINF のバイト数だけ格納されています )
			[MATINF] ( SIZE_MATINF のバイト数だけ格納されています )
			[EMTINF] ( SIZE_EMTINF のバイト数だけ格納されています )

		[MXHED]はヘッダ情報です。以下の内容を持っています。
		h1〜h4は、$4d,$58,$46,$00固定です。
		現在のバージョンは2.00($0200)です。

		typedef struct
		{
			//		MX file header structure (ver2)
			//
			char	h1;					// magic code1
			char	h2;					// magic code2
			char	h3;					// magic code3
			char	h4;					// magic code4
			int		version;			// version number info

			int		size_mdinf;			// size of Model section
			int		pt_mdinf;			// ptr to Model Segment
			int		size_ndinf;			// size of Node section
			int		pt_ndinf;			// ptr to Node Segment
			int		size_matinf;		// size of Matinf section
			int		pt_matinf;			// ptr to Matinf Segment

			//		Additional information
			int		flags;				// Extra Mode Flags
			short	texoffset;			// global Texture ID offset
			short	matoffset;			// global Material ID offset
	
			int		size_emtinf;		// size of ExMatinf section
			int		pt_emtinf;			// ptr to ExMatinf Segment
		} MXHED2;

		flagsフィールドには、mxファイルに含まれる情報の設定が保存されます。
		以下のフラグによってON/OFFをコントロールすることができます。
		( (*)がついているものは現状でサポートされていません。)

		#define MX_FLAG_GLOBALTEX 1		// グローバルのTextureIDを使用する
		#define MX_FLAG_UV2	2			// UV値を0.0〜1.0で格納する
		#define MX_FLAG_PCOLOR 4		// 法線の替わりにRGB値を格納する(*)
		#define MX_FLAG_WEIGHT 8		// ndinfのvector.wにボーンウェイト情報を格納する(*)
		#define MX_FLAG_BONE 16			// ndinfのnormal.wにブレンド先ボーン情報を格納する(*)
		#define MX_FLAG_BOUND 32		// mdinfのscale.wにバウンディング半径情報を格納する(*)

		続いてモデル情報を示す構造体が続きます。
		階層構造を持つモデル同士の接続を示しています。
		ndinfが示す[NDINF]のインデックスから、num_ndinfの個数がモデルの
		持つポリゴン情報になります。

		typedef struct
		{
			MX_VECTOR pos;			// トランスレート
			MX_VECTOR ang;			// 角度
			MX_VECTOR scale;		// スケール
			short	flag;			// enable flag ( master model )
			short	num_ndinf;		// num of ndinf
			int		ndinf;			// ndinf index
			short	child;			// 子のmodel index
			short	sibling;		// 兄弟のmodel index
		} MDINF;

		それに続いてポリゴン情報が記録されます。
		NDINFには、すべて4角形ポリゴンとして記録されています。
		3角形の場合は最後の2頂点は同じ座標になります。
		UV座標はfloat値ですが、テクスチャ上の座標値(ドット単位)となります。
		ただし、MX_FLAG_UV2が指定されている場合、UV値はテクスチャ上の仮想座標
		(0.0〜1.0)になります。
		MX_VECTOR型のwは、通常は1.0fです。

		typedef struct {
		  float x, y, z, w;
		} MX_VECTOR;

		// 整数AXIS型
		typedef struct {
		float u,v;
		} MX_UVAXIS;

		typedef struct
		{
			MX_VECTOR v[4];			// 頂点座標
			MX_VECTOR n[4];			// 法線
			MX_UVAXIS uv[4];		// UV座標
			int color;				// ディフューズ色(R8G8B8)
			short tex;				// テクスチャID(-1の場合はテクスチャなし)
			short mat;				// マテリアル情報
		} NDINF;

		matフィールド(マテリアル情報)は、以下のフラグが格納されます。

		#define NODE_ATTR_COLKEY 0x8000
		#define NODE_ATTR_USEMATERIAL 0x400	// MaterialID(bit0-10)を参照する
		#define NODE_ATTR_GLOBALMAT 0x800	// グローバルのMaterialIDを使用する
		#define NODE_ATTR_SHADE_NONE 0
		#define NODE_ATTR_SHADE_FLAT 1
		#define NODE_ATTR_SHADE_GOURAUD 2
		#define NODE_ATTR_SHADE_WIREFRAME 4

		通常は、シェーディングモード(0=光源計算なし/1=フラット/2=グーロー)が
		指定されますが、NODE_ATTR_USEMATERIALフラグをONの時は、bit0〜10で指定
		された値はマテリアルID(EMTINFバッファ内の順番を示すID)となり、より
		細かい質感設定が可能になります。
		NODE_ATTR_COLKEYフラグがONの時は、テクスチャマッピングの際にカラーキー
		(透明色)のドットは転送されなくなります。


		次にテクスチャのファイル名(拡張子なし)がascii文字列で
		記録されています。

		typedef struct
		{
			char name[16];			// テクスチャのファイル名
		} MATINF;


		次にマテリアル定義の拡張用バッファが記録されています。

		typedef struct
		{
			//	Extra Material Info
			//
			short	flag;			// Mode Flags
			char	shade;			// Shade Mode (0=no light/1=flat/2=gouraud)
			char	priority;		// Transparent priority
			int		opt1;			// (option)
			int		opt2;			// (option)
			float	alpha;			// 0.0〜1.0 透明 / 1.1〜 加算 / -0.1〜 減算

			float	diffuse;		// diffuse rate値(0.0〜1.0)
			float	fog;			// fog rate値(0.0〜1.0)
			float	specular;		// スペキュラーrate値(0.0〜)
			float	envmap;			// 環境マップrate値(0.0〜1.0)

			float	pad[8];			// (reserved)
		} EMTINF;

		現状では、shadeフィールド以外はサポートされていません。


-------------------------------------------------------------------------------
                                                HSP users manual / end of file 
-------------------------------------------------------------------------------