HGIMG3入門 BOX表示


 


さてさて、3Dですよ!3D!
ワォ!
英語で書くとWow!
僕はフライトシュミレーターが好きで 3Dで飛行機のゲームとか作りたいな〜と思ってて・・・
なんとなんと な・な・なんと!HSPではできちゃうんですね〜3Dが!Wow!
箱だろうが飛行機だろうが地形だろうが表示できちゃいます。

と!いうことで早速始めよう3D!とはいえ いきなりロボットを表示させるのも難しいので
いつものように一歩づつ、まず立体の箱を表示させるところからはじめましょう。順番にね 順番に

〜じゅーんび〜

3Dの命令は 拡張命令です。初めから使える命令ではないのでその準備が必要ですね。
3Dの拡張プラグインはHGIMG3やEasy3D、d3moduleなんかがあって、どれも3Dを表示できるんですけど
飛行機なんかを表示できて、なんとも便利なのはHGIMG3です、今回はこれ。
#include "hgimg3.as"

これでHGIMG3の命令はすべて使えるようになりました
とはいえ、実はすぐには使えないんです、HGIMG3は初期化が必要なようなので 次はHGIMG3の初期化をします

#include "hgimg3.as"

hgini
stop

hgini命令は 今の描画先ウインドウ(ウインドウID0)で HGIMG3を初期化します
これでウインドウID0で3Dが表示されるようになります。
これやらないとHGIMG3の命令は使えるようにはなりません。

〜BOX表示〜

さてさて、これで3Dの準備はOK!
BOX(箱)を表示させてみましょう。

BOXにしろなんにしろ HGIMG3で何かを表示するためには2つのことをしないといけません。
モデルの登録オブジェクトの登録です

モデル登録とは・・・モデル登録っていうのは たとえば「赤い縦と横が4の大きさのBOX」とか「黒の縦と横8の板」のような
            3D表示の材料となるものを登録することです。箱でも飛行機でも全部1度 モデル登録されます。
            シューティングゲームを作る時に 飛行機の絵なんかをbuffer 2に保存しておいて あとで表示したりしましたよね?
            あれと同じです。一度保存しておくんです。
            保存しておけば あとから何度でも使えます。たとえばモデル番号1に「赤い縦と横が4のBOX」を登録すれば
            あとは そのモデル番号1を読み出せばいつでも何回でもそれは使えるわけです
            だから モデルは「3Dの材料の登録」なのです

オブジェクト登録とは・・・モデルは材料だけで、画面には出てきません、モデルを直接表示はできないんです。
               オブジェクトにモデルを登録しなきゃいけません。
               オブジェクトは何かというと オブジェクトにはモデルを登録します、さらにX座標Y座標Z座標や回転角度など
               表示にかかわる情報も登録できるものです。これによって表示されるわけです

日の丸のBOXを作りたいとき
まず日の丸のBOXを作らなくてはいけません、それがモデルです、日の丸の絵を元に 箱を作ってモデル1に登録します。
このまま「モデル1をX,Y,Z=0に表示!」として出るようにすると 割と不便なんです
なんでって、同じものをもう1個表示させたい時 わざわざもう1個モデルを作らないといけなくなりますからね

そこで考え出されたのがオブジェクトです、
たとえば オブジェクト1にモデル1を登録して、オブジェクト1のX,Y,Z座標を全部0にしたら
X,Y,Z=0のところにモデル1がパッっと表示されるわけです。
もう1個出したければオブジェクト2にモデル1を登録すればいい。

・・・長い説明はこのぐらいに、やってみましょうか(^^


〜モデル登録〜


まず赤い箱を作って 材料としてモデル登録をしましょう

#include "hgimg3.as"
hgini ;初期化

setsizef 8.0,8.0 ;サイズは縦横8.0で
setcolor 255,0,0 ;色は赤
addbox a;これでBOXを作成


stop

実行しても何も表示されなかったと思いますが、これでモデルの登録は済んでるんです。
まずsetsizefで縦と横の大きさを決めます、実数なので 2とか3とかだけじゃなくて 2.5のように小数が使えます
次に色を指定します color命令の後でprint をやった時のようにsetcolorで指定するとその色の箱が作られるわけです
次にaddbox命令 これが大事です。これが箱を作る命令です。指定されたサイズと指定された色でBOXを作ってモデル登録してくれます
まるでposとcolorの後のprint命令のようです。
addbox a ってなってますよね addbox命令はBOXを作って、それをモデル登録するわけですがモデル番号は自分では指定できません
あいている番号で自動的に決められます。決められたモデル番号が変数aに入ります。
「このモデル番号○○だから、それ変数aに入れておいたからね〜」ってこと。

これでモデルの登録が終わりました モデル番号aには赤くて 縦横8のBOXが登録されています
あとは これをオブジェクトに登録すれば 表示されます

〜オブジェクト登録〜

#include "hgimg3.as"
hgini ;初期化

setsizef 8.0,8.0 ;サイズは縦横8.0で
setcolor 255,0,0 ;色は赤
addbox a;これでBOXを作成

regobj b,a ;さっきつくったBOXをオブジェクトに登録

hgdraw
hgsync 10

stop

regobjがオブジェクト登録命令です
regobj b,a でaというモデル番号のモデルをオブジェクトに登録します このときも 自動的にオブジェクト番号が決められますから
その番号が変数bに入るわけです

で、後で BOXを右に動かしたいときなどは オブジェクト番号bのX座標やY座標などを変えればいいわけです

表示されましたよね? 赤い箱が真ん中に。
箱には見えないか、正面だもんね

hgdrawhgsync命令が 描画をしてくれます
実際に描画をしてくれるのはhgdrawですがhgsyncとセットで使わないといけないみたいです
HGIMG3では hgdraw命令で初めて描画がされます。redraw 1命令みたいですね。 ずっとロックされてて これで初めて描かれるんです。
hgsync命令は wait命令と同じです。待ちます。hgsync 10なら10ms(0.01秒)待ちます。
必ず2つはセットで使って下さいね 別にエラーにはなりませんけど hgdrawだけでは何も出てきませんよ(試しにやってみるとわかります。)

こんな具合です。どうです?3D
難しそう?そんなことはない!初めはしょうがないけど慣れれば簡単!簡単!
と、いってる僕もまだまだ勉強中 Φ(。。

今回はBOXを表示させましたね。次回はBOXを動かしたり回したりしてみたいと思います

まとめ・・・

1,HGIMG3命令を使うには まずinclude そしてhginiで初期化が必要
2,BOXでも何でも 表示させるにはモデル登録と そのモデルのオブジェクト登録が必要

setsizef x,y   ・・・作るBOXや板のX、Yのサイズを指定
 例)setsizef 10.0,10.0
setcolor r,g,b  ・・・作るBOXなどの色を指定
 例)setcolor 255,0,0
addbox id    ・・・BOXを作る。モデル番号はidに入る
 例)addbox id
regobj id2,id   ・・・モデルidをオブジェクト登録する、オブジェクト番号はid2に入る
 例)addbox id2,id
hgdraw      ・・・描画する(hgsyncをこの後に実行しないとだめ)
 例)hgdraw
hgsync a     ・・・am秒待つ
 例)hgcyn 10

今回はたくさんの命令が出てきましたね
色を変えてみたりサイズを変えてみてありして 遊んでみてください。
ではっ。

 

戻る ホームへ