2012年03月22日

HSP3.3のお勉強partU 1

 HSP教室 入門編(うすあじさんの運営されているHSPCenter内)、ついに終わってしまいました。
 次に何をしようか、色々迷いましたが、HSP3.3には3次元の命令を集めたプラグインが付属していることが分かりました。それは、

 
 HGIMG3
 

というものです。
 2次元でさえままならないのに、3次元などできるのかどうか分かりませんが、3次元の世界は魅力的で早くやってみたい衝動が押さえきれず、この際始めてみることにしました。(無謀かも知れませんが…)

 とは言え、何をどう始めていいのかサッパリ分かりません。が、
 幸い、ネット上に「いなえ」さんとおっしゃる方が

 
 いなえの鉛筆


というサイトを運営されていて、その中に、

 
 HGIMG3講座


というものを掲載してくれておりました。本当にありがたい。
 この講座を中心にHSP3.3付属のサンプルなどを参考にしながら、一歩一歩やっていきたいと思っています。

 

 今日は、hgimg3のお決まり文句だけです。実行結果もありません。実行しても、真っ暗な画面が表示されるだけですので。
 以下、今日打ち込んだプログラムです。


#include "hgimg3.as" ;hgimg3プラグインをこのプログラムに結合する
 screen 0,480,360,0 ;WindowID0、480*360画面をフルカラーモードで初期化
  hgini ;hgimg3の初期化
*main ;メインルーチン
  hgdraw ;描画の実行
  hgsync 10 ;10/1000秒の待ち時間
  goto *main ;メインルーチンに戻る


<新しい命令>
★別ファイルを結合する
 #include "filename"
"filename":結合するファイル名

★プラグインの初期化
 hgini

★描画の実行
 hgdraw

★時間待ち
 hgsync val
val:待ち時間
・hgdraw と必ず対で使い、単位はミリ秒

-----------
ラベル:HGIMG3
posted by Shindo Izo at 21:55| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年03月24日

HSP3.3のお勉強partU 2

 今日も、「いなえ」さんの講座をやっていきます。前回は真っ暗で、何をやっているのかサッパリ分かりませんでしたが、今日は物体が描かれます。
 以下、今日打ち込んだプログラムです。


#include "hgimg3.as" ;hgimg3プラグインをこのプログラムに結合する
screen 0,480,360,0 ;WindowID0、480*360画面をフルカラーモードで初期化
hgini ;hgimg3の初期化

addbox model,20,20 ;モデルID:moderl,10*10の箱作成
regobj object,model ;モデルID:modelのモデルがオブジェクトID:objectに登録

*main ;メインルーチン
hgdraw ;描画の実行
hgsync 10 ;10/1000秒の待ち時間
goto *main ;メインルーチンに戻る


<実行結果>
ObjectHyoji.jpg

<新しい命令>
★箱モデルを作成する
 addbox var,sx,sy
var : 作成されるモデルIDのための変数
sxs,y : X,Yサイズ

★オブジェクトの登録
 regobj var,ModelID
var : オブジェクトIDのための変数
ModelID : モデルID

-----------
 ただの灰色の4角形が描かれただけで、これまた何が何だか分かりませんが、でも、3次元空間に物体を作ることが出来ました。やったぁ〜わーい(嬉しい顔)ぴかぴか(新しい)
-----------
posted by Shindo Izo at 17:11| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年03月26日

HSP3.3のお勉強partU 3

 HSP3.3に付属してくるサンプルは充実していて、それを使わない手はないと思うのですが、いかんせんあまりにも数が多く、簡単に実行したり表示したりできるソフト(HSP assistant)があるとはいえ、どこから手をつけていいのかさっぱり分かりません。
 そこで、一覧表を作っておけばいいんじゃないかと思いました。と言っても、hgimg3のサンプルだけですが…。

 ファイル名とプログラムの上部にある簡単な説明をまとめてみました。


addline.hsp 線分モデル表示サンプル
cnvaxis.hsp 3Dモデルの中心座標を2D画面上の座標に変換する
elastic.hsp waveサンプル(Meshを使って波紋をシミュレートする)

emit_sample1.hsp パーティクルサンプル
emit_sample2.hsp 2Dスプライトのサンプル(カーソルキーで移動、スペースで発射)
emit_sample3.hsp パーティクルサンプル

eprim.hsp エフェクトモデル表示サンプル
fullscr.hsp フルスクリーンサンプル [ESC]キーで終了します。
hgview.hsp 指定エリア内の再描画を行なうサンプル

meshmap.hsp meshサンプル(高さ画像を使用したMesh)
meshmap2.hsp meshサンプル(高さマップ、UV指定マップを使用したMesh)
meshmap3.hsp mesh walkサンプル(Meshの高さに合わせて移動させる)
meshmap4.hsp mesh gravityサンプル(重力を考慮した動きを付加する)(eprimを使用した影の表示を行なう)
meshmap5.hsp static objectサンプル(STATICコリジョンを使った当たり判定)
meshmap6.hsp static objectサンプル(複数オブジェクトの衝突)
meshmap7.hsp 自動追尾カメラサンプル(コリジョンを考慮しながら特定のオブジェクトを追尾します)(カーソルキー左右で回転、上下で前後に移動します)

obaqhg1.hsp OBAQ描画サンプル
obaqhg2.hsp OBAQ描画サンプル
obaqhg3.hsp OBAQ描画サンプル

objshadow.hsp 影モデル描画サンプル 生成モデルを使用してオブジェクトの影を落とします。あくまでも簡易的に作られた平面の影なので複雑な形状の上には不向きです。
objsort.hsp オブジェクトソート・サンプル(スペースキーでソートON/OFFを切り替えられます)
ogg_sndtest.hsp HSPOGG Sound Test
settex.hsp テクスチャを更新するサンプル(HSPの画面バッファを使ってリアルタイムに更新します)
skybox.hsp 空と地面 空のオブジェクト(sky)は通常のクリップ範囲の外に表示されます。独立した背景を3Dモデルで用意する場合のサンプルです。
sndedit.hsp OGGファイルを選択して再生することができます。また、ループのスタートポイントを指定して再生テストを行なう。簡易プレビューツールとして使用することができます。
sndtest.hsp HGIMG3 Sound Test

test1.hsp 立方体をキーで回転させるサンプル
test10.hsp マテリアル書き換え(スペースキーを押すと体のマテリアルを切り替えます)(Enterキーを押すと目のテクスチャが別のものに変わります)
test11.hsp テクスチャアニメーションのサンプル(カーソルキーで移動、スペースで発射)
test12.hsp パーティクルサンプル2(パーティクル生成をイベントで行なう)
test13.hsp meshサンプル(繰り返しテクスチャを使用したMesh)
test2.hsp ダイレクト描画サンプル
test3.hsp 3Dモデル描画サンプル
test4.hsp 日本語フォント描画サンプル
test5.hsp トゥーンシェーディング
test6.hsp 2Dスプライトのサンプル(カーソルキーで移動、スペースで発射)
test7.hsp フェードイン・アウトサンプル
test8.hsp パーティクルサンプル
test9.hsp ライトのコントロールサンプル

volsamp.hsp ●dmmvolで正しい音量を設定するサンプル
wave.hsp waveサンプル(Meshを使って波紋をシミュレートする)


 わー、いっぱいで目が回りそう。どこからやっていいのか、やはり分かりません。がく〜(落胆した顔)
-----------
ラベル:HSP3.3 HGIMG3
posted by Shindo Izo at 11:56| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年03月28日

HSP3.3のお勉強partU 4

 いなえさんのHGIMG3講座を進めてみます。
 今日は、

 ボックス表示と移動、回転、サイズ変更

です。いなえさんのプログラムは高度なものなので、分けて簡単にしてみました。

 まず、移動↓


#include "hgimg3.as" ;hgimg3プラグインをこのプログラムに結合する
;ボックス表示と移動
screen 0,480,360,0 ;WindowID0、480*360画面をフルカラーモードで初期化
hgini ;hgimg3の初期化

addbox modelid,10,10 ;モデルID:moderl,10*10の箱作成
regobj object1,modelid ;モデルID:modelidのモデルがオブジェクトID:object1に登録

x=0 : y=0 ;キー入力用の変数

*main ;メインルーチン
stick ky,15 ;全方向の矢印キー入力情報取得
if ky & 1 : x-=1 ;左矢印キーならxを1減らす
if ky & 2 : y-=1 ;上矢印キーならyを1減らす
if ky & 4 : x+=1 ;右矢印キーならxを1増やす
if ky & 8 : y+=1 ;下矢印キーならyを1増やす

setpos object1,x/10,y/10,0 ;object1の位置移動

hgdraw ;描画の実行
hgsync 10 ;10/1000秒の待ち時間
goto *main ;メインルーチンに戻る

 次に、回転↓


#include "hgimg3.as" ;hgimg3プラグインをこのプログラムに結合する
;ボックス表示と回転
screen 0,480,360,0 ;WindowID0、480*360画面をフルカラーモードで初期化
hgini ;hgimg3の初期化

addbox modelid,10.0,10.0 ;モデルID:moderl,10*10の箱作成
regobj object3,modelid ;モデルID:modelidのモデルがオブジェクトID:object3に登録

x=0 : y=0 ;キー入力用の変数

*main ;メインルーチン
stick ky,15 ;全方向の矢印キー入力情報取得
if ky & 1 : x-=1 ;左矢印キーならxを1減らす
if ky & 2 : y-=1 ;上矢印キーならyを1減らす
if ky & 4 : x+=1 ;右矢印キーならxを1増やす
if ky & 8 : y+=1 ;下矢印キーならyを1増やす

setang object3,x/10,y/10,0 ;object3の回転

hgdraw ;描画の実行
hgsync 10 ;10/1000秒の待ち時間
goto *main ;メインルーチンに戻る


 そして、サイズ変更↓


#include "hgimg3.as" ;hgimg3プラグインをこのプログラムに結合する
;ボックス表示とサイズ変更
screen 0,480,360,0 ;WindowID0、480*360画面をフルカラーモードで初期化
hgini ;hgimg3の初期化

addbox modelid,10.0,10.0 ;モデルID:moderl,10*10の箱作成
regobj object4,modelid ;モデルID:modelidのモデルがオブジェクトID:object4に登録

x=0 : y=0 ;キー入力用の変数

*main ;メインルーチン
stick ky,15 ;全方向の矢印キー入力情報取得
if ky & 1 : x-=1 ;左矢印キーならxを1減らす
if ky & 2 : y-=1 ;上矢印キーならyを1減らす
if ky & 4 : x+=1 ;右矢印キーならxを1増やす
if ky & 8 : y+=1 ;下矢印キーならyを1増やす

setscale object4,1+x/10,1+y/10,1 ;object4のサイズ変更

hgdraw ;描画の実行
hgsync 10 ;10/1000秒の待ち時間
goto *main ;メインルーチンに戻る


 最後に、全部やってしまうプログラム↓


#include "hgimg3.as" ;hgimg3プラグインをこのプログラムに結合する
;ボックス表示と移動、角度変更、サイズ変更
screen 0,480,360,0 ;WindowID0、480*360画面をフルカラーモードで初期化
hgini ;hgimg3の初期化

addbox modelid,10.0,10.0 ;モデルID:moderl,10*10の箱作成
regobj object1,modelid ;モデルID:modelidのモデルがオブジェクトID:object1に登録
regobj object2,modelid ;モデルID:modelidのモデルがオブジェクトID:object2に登録
regobj object3,modelid ;モデルID:modelidのモデルがオブジェクトID:object3に登録
regobj object4,modelid ;モデルID:modelidのモデルがオブジェクトID:object4に登録

setpos object3,10.0,-10.0,0 ;オブジェクトID=3の位置移動
setpos object4,-10,-10,0 ;オブジェクトID=4の位置移動

x=0 : y=0 ;キー入力用変数

*main ;メインルーチン
stick ky,15 ;全方向の矢印キー入力情報取得
if ky & 1 : x-=1 ;左矢印キーならxを1減らす
if ky & 2 : y-=1 ;上矢印キーならyを1減らす
if ky & 4 : x+=1 ;右矢印キーならxを1増やす
if ky & 8 : y+=1 ;下矢印キーならyを1増やす

setpos object1,10.0+x/10,10.0+y/10,0 ;object1の位置移動
setpos object2,-10.0,10.0,(x+y)/10 ;object2の位置移動
setang object3,x/10,y/10,0 ;object3の回転
setscale object4,1.0+sin(x/10),1.0+sin(y/10),1.0 ;object4のサイズ変更

hgdraw ;描画の実行
hgsync 10 ;10/1000秒の待ち時間
goto *main ;メインルーチンに戻る


<実行結果>
idokaitensize.bmp

<新しい命令>
★オブジェクトの位置情報設定
 setpos id,x,y,z
id : オブジェクトID
x,y,z : 座標

★キー入力情報を取得する
 stick p1,p2
p1 : 読み込み用変数
p2 : トリガータイプキー指定
・ボタンには以下のように番号が振られています:

    1 : カーソルキー左(←)
    2 : カーソルキー上(↑)
    4 : カーソルキー右(→)
    8 : カーソルキー下(↓)
   16 : スペースキー
   32 : Enterキー
   64 : Ctrlキー
  128 : ESCキー
  256 : マウスの左ボタン
  512 : マウスの右ボタン
 1024 : TABキー

 調べるキーを足し算していきます。今日のプログラムですと:

 1+2+4+8=15

ですので、

 stick key,15

となるわけです。
・ky&1とky=1の違いは、同時に押されていてキー入力を取得できるかどうかの違いのようです。

★オブジェクトの角度情報設定
 setang id,x,y,z
id : オブジェクトID
x,y,z : 各角度(単位ラジアン)
★オブジェクトのサイズ情報設定
 setscale id,x,y,z
id : オブジェクトID
x,y,z : 各表示倍率

<備考>
・キー入力情報の数値を1以下の実数にすると、何故か全く動きませんでした。何度も見直しましたが原因が分かりませんもうやだ〜(悲しい顔)。やむなく、1とし、後で10で割ると動きましたので、そうしました。下の※参照

 簡単にするつもりが、余計にややこしくなってしまいましたふらふら
-----------
 その後の追記:原因分かりました。xとyの初期値(キー入力用の変数)で、整数を使っていました。従って、

 x=0.0 : y=0.0

 とすれば何ら問題ありませんでした。わーい(嬉しい顔)たらーっ(汗)m(_ _)mすみません。

posted by Shindo Izo at 15:55| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年03月30日

HSP3.3のお勉強partU 5

 今日は、HSP3.3にサンプルとして付属してきた

 テクスチャー付きボックス移動回転プログラム

をやりたいと思います。矢印キーを押すと回転、スペースバーを押しながら矢印キーを押すと移動します。

 まず、ペイントソフトで

mykineko.jpg

のような絵を適当に描いて保存しておきます。(128*128pixel)
 以下打ち込んだプログラムです。(多少いじってます)

#include "hgimg3.as"
;テクスチャー付きボックス回転プログラム
;(HSP.Sample.test1)

screen 0,480,360,0 ;WindowID0,480*360画面,フルカラーで初期化
cls 4 ;黒でクリア

hgini ;hgimg3の初期化

//ボックスオブジェクト登録
setuv 0,0,127,127 ;テクスチャーUV座標指定
addbox boxm,10.0,10.0 ;boxモデル作成
texload "kineko.bmp" ;テクスチャーファイル登録
regobj boxo,boxm ;boxモデルをオブジェクトとして登録

//カメラ位置設定
selcpos ;カメラ座標をMOC情報に設定
objset3 0.0,0.0,25.0 ;MOC情報設定

*main
hgdraw ;描画実行
hgsync 10 ;時間待ち

//キー入力情報処理
stick key,127 ;全矢印、スペース、Enter、Ctrlキーの情報取得
if key&128 : goto *owari ;ESCキーで終了

if key&16 { ;もしスペースバーが押されたら以下処理
 selpos boxo ;移動座標をMOC情報に設定
 if key&1 : objadd3 -0.05,0.0,0.0 ;左矢印で左へ移動
 if key&4 : objadd3 0.05,0.0,0.0 ;右矢印で右へ移動
 if key&2 : objadd3 0.0,-0.05,0.0 ;上矢印で上へ移動
 if key&8 : objadd3 0.0,0.05,0.0 ;下矢印で下へ移動
} else {
 selang boxo ;回転角度ををMOC情報に設定
 if key&1 : objadd3 0.0,-0.05,0.0 ;左矢印で左へ移動
 if key&4 : objadd3 0.0,0.05,0.0 ;右矢印で右へ移動
 if key&2 : objadd3 0.05,0.0,0.0 ;上矢印で上へ移動
 if key&8 : objadd3 -0.05,0.0,0.0 ;下矢印で下へ移動
}
goto *main
*owari
end


<実行結果>
mytest1.jpg

<新しい命令>
★登録するテクスチャーのUV座標指定
 setuv tx0,ty0,tx1,tx1
tx0,ty0,tx1,tx1: テクスチャーの左上と右下座標

★テクスチャーファイルを登録する
 texload "filename"
filename : bmp,jpg,gif画像

★カメラ座標をMOC情報に設定
 selcpos
・MOC情報とは…Motion Object Controler情報、つまり、位置や角度などの情報

★MOC情報を設定する
 objset3 x,y,z
x,y,z : オフセット番号0から3つのパラメータ。(位置情報でいいのかな?)

<備考>
・stick key,127 …1+2+4+8+16+32+64=127 つまり、全矢印、スペース、Enter、Ctrlキー

-----------
posted by Shindo Izo at 11:14| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年04月01日

HSP3.3のお勉強partU 6

 今日も、HSP3.3にサンプルとして付属してきたhgimg3>test2

 画面にダイレクトに描画する(test2)

をやりたいと思います。画面に直接描画し、それを回転するというもの。
 テクスチャーは前回と同じものを使いました。

 以下打ち込んだプログラムです。(多少いじってます)


#include "hgimg3.as" ;hgimg3.as を結合する
//test1 : ダイレクト描画
screen 0,480,360,0 ;WindowID0を480*360画面サイズ、フルカラーで初期化
hgini ;プラグイン初期化

texload "kineko.bmp" ;テクスチャーを登録
mest=stat ;ステータス値(この場合テクスチャーIDのようです)
rot=0.0 ;回転角度

clscolor $000040 ;背景色設定(RGB)
*main
hgdraw ;描画実行

gmode 0,128,128 ;通常コピーモード、128*128の大きさに設定
pos 240,180 ;カレントポジション設定
hgrotate mest,0,0,rot,256,256
;↑テクスチャーID=mest、コピー元の左上x,y座標、回転角度、x,yサイズで直接描画
rot+=0.01 ;rotを0.01増やす

hgsync 10 ;時間待ち

stick key,0 ;キー入力情報取得
if key&128 : goto *finish ;ESCキーを押すと終了へ

goto *main
*finish
end

<実行結果>
nekokaiten.jpg

<新しい命令>
★背景色指定
 clscolor color
color : $rrggbb

★画面コピーモードを設定する
 gmode p1,p2,p3
p1 : 画面コピーモード(7種あり)、0が通常コピー
p2,p3 : コピーする大きさx、y

★矩形画像を直接描画する
 hgrotate p1,p2,p3,p4,p5,p6
p1 : テクスチャーID
p2,p3 : コピー元の左上座標
p4 : 回転角度(単位ラジアン)
p5,p6 : 描画するサイズx,y
・注意点:
 1.命令の実行とともに描画されるので、hgdrawとhgsyncの間に入れる
 2.gmode命令で設定されたコピーモード指定が反映される
 3.コピー先はpos命令で指定された座標を中心としてコピーされる
 4.p5,p6で拡大、縮小が出来る(省略すると元の大きさでコピー)

<備考>
・stat は

 色々な命令を実行した結果(ステータス)が整数値で代入される

とマニュアルにあります。よく分かりません。

-----------
ラベル:HGIMG3
posted by Shindo Izo at 21:29| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年04月04日

HSP3.3のお勉強partU 7

 今日も、HSP3.3にサンプルをやろうと思ったのですが、次のは〜.xというファイルがいるのでやめました。そこでいなえさんの講座に戻ります。
 キーボードの情報を位置情報や角度情報として受け取り、それを足したり引いたりするプログラムです。同じようなプログラムなのですが、情報をダイレクトに加算していくところが違います。プログラムが簡単になりますね。

 以下打ち込んだプログラムです。(多少いじってます)


#include "hgimg3.as"
//情報を加算する
screen 0,320,240,0 ;ウィンドウid0、320*240画面サイズで初期化
hgini ;プラグイン初期化
addbox hako,10.0,10.0 ;箱モデル追加
regobj ob,hako ;オブジェクト登録
*main
stick key,15 ;全方向矢印情報取得
if key&1 : addpos ob,-0.5 ;オブジェクトを0.5左へ移動
if key&2 : addang ob,-0.1 ;オブジェクトを0.1ラジアン後方回転
if key&4 : addpos ob,0.5 ;オブジェクトを0.5右へ移動
if key&8 : addang ob,0.1 ;オブジェクトを0.1ラジアン前方回転

hgdraw ;描画実行
hgsync 15 ;待ち時間
goto *main

<実行結果>
 同じような結果になるので省きます。

<新しい命令>
★情報を加算する
 addpos id,x,y,z … 位置
id : オブジェクトID
x,y,z : 加算する各座標上の数値
 addang id,x,y,z … 角度
id : オブジェクトID
x,y,z : 加算する各座標軸に対する角度数値(ラジアン)
 addscale id,x,y,z … サイズ(倍率)
id : オブジェクトID
x,y,z : 加算する各座標軸に対する表示倍率

-----------
ラベル:HGIMG3
posted by Shindo Izo at 15:19| Comment(2) | HSP3.3入門2 | 更新情報をチェックする

2012年04月07日

HSP3.3のお勉強partU 8

 今日は、オブジェクトの情報を得て、それを他のオブジェクトと連動するプログラムです。
 (多少いじってます)


#include "hgimg3.as"
//オブジェクトの情報を得る
screen 0,320,240,0 ;ウィンドウid0、320*240画面サイズで初期化
hgini ;プラグイン初期化
addbox hako,10.0,10.0 ;箱モデル追加
regobj ob1,hako ;オブジェクト登録
regobj ob2,hako ;オブジェクト登録
setpos ob1,15 ;ob1をx軸方向に15移動
*main
stick key,15 ;全方向矢印情報取得
if key&1 : addpos ob1,-0.5 ;オブジェクトを0.5左へ移動
if key&2 : addang ob1,-0.1 ;オブジェクトを0.1ラジアン後方回転
if key&4 : addpos ob1,0.5 ;オブジェクトを0.5右へ移動
if key&8 : addang ob1,0.1 ;オブジェクトを0.1ラジアン前方回転

getpos ob1,xp,yp,zp ;ob1の位置情報取得
getang ob1,xa,ya,za ;ob1の角度情報取得

setpos ob2,xp-30,yp,zp ;ob1と30離れて平行に移動
setang ob2,xa,ya,za ;ob1と同じ方向に回転

hgdraw ;描画実行
hgsync 15 ;待ち時間
goto *main


<実行結果>



<新しい命令>
★オブジェクトの情報を取得する
 getpos id,x,y,z … 位置
id : オブジェクトID
x,y,z : 取得する各座標上の数値
 getang id,x,y,z … 角度
id : オブジェクトID
x,y,z : 取得する各座標軸に対する角度数値(ラジアン)
 getscale id,x,y,z … サイズ(倍率)
id : オブジェクトID
x,y,z : 取得する各座標軸に対する表示倍率

------------------

ラベル:HGIMG3
posted by Shindo Izo at 11:24| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年04月09日

HSP3.3のお勉強partU 9

 今日は、

 オブジェクトを削除する

プログラムです。
 (多少いじってます。よりつまらなくなってます(汗)';)


#include "hgimg3.as"
//オブジェクトを削除する
screen 0,320,240,0 ;ウィンドウid0、320*240画面サイズで初期化
hgini ;プラグイン初期化
addbox hako,10.0,10.0 ;箱モデル追加
k_flag=0 ;オンオフフラグ用

*main
a ++ ;箱の角度を変える
stick key,0 ;キー情報取得
if key&16 { ;もしスペースバーが押されたら…
if k_flag=0 { ;もし表示オフなら…
regobj ob,hako ;オブジェクト登録
setang ob,a,a,a ;オブジェクト回転
k_flag=1 ;表示フラグオフ
}else {
delobj ob ;オブジェクト削除
k_flag=0 ;表示フラグオン
}
}

hgdraw ;描画実行
hgsync 15 ;待ち時間
goto *main

<実行結果>
 あまりにつまらない(ただ現れたり消えたりするだけ)ので省きます。

<新しい命令>
★オブジェクトを削除する
 delobj id
id : オブジェクトID

 敵を倒した時に、敵を消す必要がありますので、そういう時に使えそうですね。

------------------

ラベル:HGIMG3
posted by Shindo Izo at 09:56| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年04月11日

HSP3.3のお勉強partU 10

 今日は、

 モデルを削除する

プログラムです。
 (多少いじってます)


#include "hgimg3.as"
//モデルを削除する
screen 0,320,240,0 ;ウィンドウid0、320*240画面サイズで初期化
hgini ;プラグイン初期化

gosub *new

*main
a++ ;少しずつ手前に来るための値

repeat 100
setpos ob(cnt),x(cnt),y(cnt),z(cnt)+a ;手前に移動
loop

stick key,0 ;キー情報取得
if key&16 { ;もしスペースバーが押されたら…
repeat 100 ;100回繰り返す
 delobj ob(cnt) ;オブジェクト削除
 delmodel md(cnt) ;モデル削除
loop
gosub *new ;新箱作成ルーチンへ
a=0 ;a初期化
}

hgdraw ;描画実行
hgsync 15 ;待ち時間
goto *main

*new
repeat 100 ;100回繰り返す
 addbox md(cnt),1.0,1.0 ;新箱モデル作成
 regobj ob(cnt),md(cnt) ;新オブジェクト登録
 x(cnt)=rnd(51)-25 ;x座標
 y(cnt)=rnd(51)-25 ;y座標
 z(cnt)=rnd(51)-200 ;z座標
 setpos ob(cnt),x(cnt),y(cnt),z(cnt) ;新座標にセット
loop
  return

<実行結果>



<新しい命令>
★モデルを削除する
 delmodel id
id : オブジェクトID
・マニュアルによりますと、コストの高い(処理に負荷がかかる、という意味かと思われます)命令なので、毎フレーム単位で使うのは止めた方がいいとのことです。

------------------
posted by Shindo Izo at 15:50| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年04月14日

HSP3.3のお勉強partU 11

 いなえさんのHGIMG3講座を進めてます。
 今日は、第1章第2節、7番目の

  xファイル読み込み

をやろう、…と思ったんですが、その肝心のxファイルなるものがありません。xファイルは外部のモデリングツールで作るしかないようです。
 xファイルとは、マイクロソフト社の説明では、(以下サイトからの引用です)

「X ファイル フォーマットとは、ファイル名に .x 拡張子が付いたファイルを指します。X ファイルは DirectX 2.0 で導入されました。その後、DirectX 3.0 ではこのフォーマットのバイナリ バージョンがリリースされました。このドキュメントでは、これについても説明します。DirectX 6.0 では、.x ファイルの読み取りと書き込みのためのインターフェイスおよびメソッドが導入されました。

X ファイルは、メッシュ、テクスチャー、アニメーション、およびユーザーによる定義が可能なオブジェクトの格納を可能にする、テンプレート駆動型フォーマットを提供します。アニメーション セットをサポートしているため、リアルタイムで再生するために事前定義されたパスを格納できます。インスタンスと階層もサポートされています。インスタンスを使うことで、1 ファイルにつきデータを一度しか格納しなくても、メッシュのような、1 つのオブジェクトに対する複数の参照を実行できます。階層は、データ レコードどうしの関係を表現するために使われます。」

とのことです。よく分かりませんが、つまり3Dのモデルが使用できるということなのでしょう、きっと。

 で、そのxファイルなるものを作成するモデリングツールは、いなえさんも使っておられるという、

 MetasequoiaLE R2.4

です。Metasequoiaのサイト に行き、左のダウンロードをクリックして、最新バージョン無償版をダウンロードし、インストールすればOKです。

 で、立ち上げてみたんですが、一体何をすればいいのか分かりません。何でもいいから簡単な物体を作らないと先に進めません。

 これから、一旦HGIMG3を離れてMetasequoiaの勉強をある程度やり、多少まともな物体を作れるようになるまで頑張るか…、それともとりあえず玉か箱でガマンし、なるべく早くHGIMG3プログラミングに戻るか…、今思案中です。
------------------
posted by Shindo Izo at 21:12| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年04月17日

HSP3.3のお勉強partU 12

 考えた末に、MetasequoiaLE R2.4 を少しだけ勉強したいと思います。あまり深入りするときりがありませんので、どんな感じのソフトかだけ見てみることにしました。
 超簡単な物体(てるてる坊主)を作ってみます。

<起動>
 起動したら、入門モードのチェックをはずします
1nyuumon.jpg

<必要なパネルの表示>
2panel.jpg

<オブジェクト作成(円錐)>
3ensui.jpg

<オブジェクト名をつける>
4namaetuke.jpg
 ※訂正↑ … 「1.Object1をクリック」は「1.Object1をダブルクリック」でした、すみません
<オブジェクト作成(球)>
5medamaoki.jpg

<オブジェクトの移動>
 移動の下の、拡大や回転も同じようにできます
6atamaidou.jpg

<備考>
・上の説明には書いていませんが、移動や回転するときは左ボタンでドラッグします。
・視点の移動は、

 1.マウス右ドラッグ…回転
 2.マウスホイールドラッグ…平行移動
 3.マウスホイール回転…拡大、縮小
 4.F1…側面表示
 5.F2…前面表示
 6.F3…上面表示

を憶えておく必要があると思いました。

 次回は、てるてる坊主の完成まで行けるようにしたいと思います。続く…

------------------

ラベル:メタセコイア
posted by Shindo Izo at 18:58| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年04月20日

HSP3.3のお勉強partU 13

 MetasequoiaLE R2.4 で超簡単な物体(てるてる坊主)を作る、第2回目です。

<選択と拡大>
 ちょっと胴が小さいので拡大します。
1kakudai.jpg

<ドーナッツ型の形変更>
 そのままでもいいんですが、分厚くしてみました
2kutitukuri.jpg

<オブジェクトの移動、拡大、回転>
 口を横方向に広げてみました
3kutiidou.jpg

<ミラーリング>
 ミラーリングのチェックを入れると、片方と対照的な位置にもう一つが同じようにできますので便利です。対称軸をまちがえないようにしないといけません。
4omemetukuri.jpg

<オブジェクト移動、拡大>
5omemehaiti.jpg

 完成まで行きませんでした。多分次回には…。続く…
------------------

posted by Shindo Izo at 21:11| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年04月24日

HSP3.3のお勉強partU 14

 MetasequoiaLE R2.4 で超簡単な物体(てるてる坊主)を作る、第3回目です。今日は、オブジェクトに色をつけます。

<色を作る>
 オブジェクト名の横の鍵マークをチェックしておくと誤って編集しても影響を受けませんので便利です。
1irosettei.jpg

色をつけるオブジェクト選択>
 鍵マークを入れているので、「全て選択」でもOKです。
2iroduke.jpg

<色をオブジェクトに設定する>
 これらを繰り返して、色を塗っていきます。
3irotuita.jpg

<完成>
 ちょっとオブジェクトを付け足してみました。
4kanseidaa.jpg

<xファイルでの保存>
5xhozonda.jpg

<保存オプション画面>
 X Export となっているので、このままでもきっと大丈夫だと思います。少し心配なのは、拡大率が0.01になっていることですが、何とかなるでしょう。
6xhozondedeta.jpg

 やっと、xファイルができました。これにてメタセコイアの操作は終了し、再びHGIMG(HSP3.3)に戻ろうと思っています。

 後の追記:上記の X Export の右側にある、Xオプションは全部チェックを入れないとHSPではうまく表示できませんでした。どうしてなのか今のところ私には分かりません。全てのpcでそうなのかも分かりません。
------------------
posted by Shindo Izo at 15:41| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年04月26日

HSP3.3のお勉強partU 15

 MetasequoiaLE R2.4 で超簡単な物体(てるてる坊主)が完成しました。さっそく、それを使ってプログラミングしてみたいと思います。
 サンプルファイルの中のhgimb3フォルダにある

 test3  3Dモデル描画

をやりたいと思います。
 まず、前回作ったてるてる坊主のxファイルと、hgimg3フォルダの中にある、fontchr.bmp をこれから打ち込んで保存するフォルダにコピーしておきます。(xファイルがないとおっしゃる方は、サンプルファイルの中のfont_a.xなどを使用します)

 以下打ち込んだプログラムです。(多少いじってます)


//3Dモデル描画(test3) 2012.4.26
#include "hgimg3.as"
screen 0,640,480,0 ;ID0、640*480大きさ、フルカラーで初期化
cls 4 ; 黒でクリアー
hgini

;テクスチャーフォント表示の準備
setfont 16,16,12,1
;↑16*16のフォント、1文字ごとに右に12ドット移動、透明色抜きでオリジナルフォント登録
texload "fontchr.bmp" ;テクスチャーファイルを登録

;Xモデルの登録
addxfile md,"TeruOjisan.x" ;xモデル読み込み
regobj ob,md ;オブジェクト登録
clscolor $80 ;背景色設定(濃いめのブルー)

*main
stick key,$3ff ;キー入力情報を変数keyに代入
if key&128 : goto *owari ;もしESCキーが押されたら*owariへ

hgdraw ;描画

;定義フォント表示
fprt "Drawing 3D Model test3      TERU OJISAN",8,8 ;ポジション(8,8)に表示
fprt "[ESC]Key => Program Stop",320,450 ;ポジション(320,450)に表示

hgsync 10 ;時間待ち

;カメラをキーで動かす(右左、前後)
if key&1 : addpos HGOBJ_CAMERA,-0.2 ;もし左矢印キーが押されたらカメラを左へ
if key&4 : addpos HGOBJ_CAMERA,0.2 ;もし右矢印キーが押されたらカメラを右へ
if key&2 : addpos HGOBJ_CAMERA,0.0,0.0,-0.2 ;もし上矢印キーが押されたらカメラを前へ
if key&8 : addpos HGOBJ_CAMERA,0.0,0.0,0.2 ;もし下矢印キーが押されたらカメラを後ろへ

;モデルの回転
addang ob,0,0.02,0 ;Y軸を中心に回転

goto *main

*owari
end


<実行結果>



<新しい命令>
★オリジナルフォントを定義する
 setfont cx,cy,px,sw
cx,cy : フォント1つあたりのxyサイズ
px : 1文字表示ごとに右に移動するドット数
sw : 0=透明色抜きなし 1=透明色抜きあり
・この命令のあとにテクスチャーを読み込む
・fprt 命令で表示する

★テクスチャーをファイルから登録する
 texload "filename"
filename : テクスチャーファイル

★定義された文字列を表示する
 fprt "mes",x,y
mes : 表示する文字列
x,y : 表示する座標
・(注)必ずhgdraw命令と、hgsync命令の間に使用すること


★xファイルモデルを作成する
 addxfile var,"filename"
var : 作成されたモデルIDが代入される変数名
filename : 読み込むxファイル

★背景色設定する
 clscolor color
color : RGB($rrggbb)

★ポジション情報を加算する
 addpos id,x,y,z
id : オブジェクトID
x,y,z : 加算する値
・カメラの場合は、オブジェクトIDは

HGOBJ_CAMERA

で表されます。

★回転角度情報を加算する
 addang id,x,y,z
id : オブジェクトID
x,y,z : 加算する値(各軸の回転角度)
 
 何かいっぱい命令が出てきました。
 自分で作ったものが動くのはたとえちゃちなものでも嬉しいものです。
------------------

ラベル:HGIMG3
posted by Shindo Izo at 21:17| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年04月29日

HSP3.3のお勉強partU 16

 せっかくxファイルが読み込めるようになったのですが、今日はサンプルプログラムのtest4で、

 日本語フォント描画サンプル

です。
 以下打ち込んだプログラムです。(多少いじってます)


//日本語フォントを点滅しながら回転して表示するプログラム test4
#include "hgimg3.as"
screen 0,320,240,0 ;ID0,320*240ウィンドウ,フルカラー
cls 4 ;黒でクリアー

hgini

texmake 256,128 ;テクスチャー、xyサイズ作成
mest=stat ;テクスチャーIDをmestに代入
rot=0.0
b=1 ;ブレンド率(文字点滅用)

texcls mest,0 ;テクスチャーIDをクリアー
font "メイリオ",22 ;フォントの名前と大きさ指定
color 255,255,255 ;色が白
texmes "誰か[ESC]押してぇ〜",mest,0,0 ;テクスチャーIDmest,座標(0,0)に文字列表示
color 255,0,255
texmes "目が回るぅ〜(@_@)",mext,0,30 ;テクスチャーIDmest,座標(0,30)に文字列表示

clscolor $40 ;背景色指定
*main
hgdraw

color 255,0,0 ;色が赤(この色指定の意味が分かりません)
gmode 4,256,128,b
;↑透明色付き半透明合成(ブレンド率b)で256*128の大きさのコピーモード
pos 160,120 ;カレントポジション指定
hgrotate mest,0,0,rot
;↑ウィンドウIDmest,コピー元座標(0,0),回転角度rot で直接描画
rot +=0.02 ;角度を0.02増やす
b +=2 ;ブレンド率を2増やす
if b>255 : b=1 ;255を越えたら1に戻す

hgsync 10 ;時間待ち

stick key,127 ;キー入力情報取得(何故127なのか分かりません)
if key&128 : goto *owari ;[ESC]キーを押されたら終了

goto *main
*owari
end


<実行結果>



<新しい命令>
★メッセージテクスチャーの作成
 texmake p1,p2
p1,p2 : テクスチャーのxyサイズ
・stat にテクスチャーIDが入ります

★メッセージテクスチャーのクリア
 texcls p1,p2
p1 :  テクスチャーID
p2 :  カラーコード($rrggbb)

★メッセージテクスチャーへの描画
 texmes "message",p1,p2,p3
message : メッセージ文字列
p1 :  テクスチャーID
p2,p3 : 描画先xy座標

★画面コピーモード設定
 gmode p1,p2,p3,p4
p1 : 画面コピーモード
0 : 標準モード(高速)、2 : 透明色付きコピー
3 : 半透明合成コピー、4〜6は加算減算など
p2,p3 : コピーする大きさx、y
p4 : 半透明時のブレンド率

★矩形画像の直接描画
 hgrotate p1,p2,p3,p4,p5,p6
p1 : テクスチャーID
p2,p3 : コピー元のx、y座標
p4 : 回転角度
p5,p6 : 拡大する場合のx、yサイズ

 今回もいっぱいあって、目が回りそうです。
------------------

ラベル:HGIMG3
posted by Shindo Izo at 21:58| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

2012年05月02日

HSP3.3のお勉強partU 17

 今日はサンプルプログラムのtest5で、

 トゥーンシェーディング

をやりたいと思います。
 プログラムの中に少し説明していますが、最初に maketoon命令でトゥーンテクスチャーを作っておく必要があります。命令を実行すれば勝手に保存してくれます。

 以下打ち込んだプログラムです。(多少いじってます)


//トゥーンシェーディング test5
#include "hgimg3.as"
screen 0,480,360,0
cls 4
hgini

setfont 16,16,12,1 ;16*16フォント、間隔12、透明色抜きあり
texload "fontchr.bmp" ;フォントテクスチャーの登録

clscolor $80 ;背景色設定(濃いブルー)

;Xファイル登録
addxfile md,"TeruOjisan.x" ;xファイル登録
settoonedge md,$000000,0.1,1.0 ;輪郭の色、線の太さ、テクスチャーのX方向原点指定

//maketoon md,2 ;トゥーンテクスチャーを作り、保存
//↑説明:最初に、上の命令を実行し、toon.bmpを保存して、下の命令を実行します

loadtoon md,"toon.bmp" ;トゥーンテクスチャーファイルを登録
regobj ob,md ;オブジェクト登録
setangr ob,0,128,0 ;角度情報設定 単位:整数(255で一周)
setpos ob,0,1.5,40 ;ポジション設定

setang HGOBJ_LIGHT,2.4,0.8,0.0 ;ライトの位置設定 単位:ラジアン
*main
stick key,$3ff ;16*16*3+16*15+15=1023//全矢印キー、スペースバー、Enter、Ctrlキー、ESCキー、マウスの左右ボタン

hgdraw

fprt "HGIMG3 Test",8,8 ;定義フォント文字列表示

hgsync 15 ;待ち

if key&128 : goto *owari ;ESCが押されたら終わりへ

if key&64 { ;Ctrlキーが押されていたら
if key&1 : addang HGOBJ_LIGHT,-0.2,0.0
if key&4 : addang HGOBJ_LIGHT,0.2,0.0
if key&2 : addang HGOBJ_LIGHT,0.0,0.2
if key&8 : addang HGOBJ_LIGHT,0.0,-0.2
;↑Ctrl+各矢印キーでライトの角度が変わる
getang HGOBJ_LIGHT,x,y,z ;ライトの各角度情報を得る
title "<x:"+x+" y:"+y+" z:"+z+">";ウィンドウタイトルに表示
} else {
if key&2 : addang ob,-0.05,0.0
if key&8 : addang ob,0.05,0.0
if key&4 : addang ob,0.0,0.05
if key&1 : addang ob,0.0,-0.05
;↑オブジェクトの回転(x、y軸)
}
goto *main
*owari
hgbye
end


<実行画面>


 これでいいのかどうか…よく分かりませんふらふら

<新しい命令>
★トゥーンシェーディング時の設定
 settoonedge p1,p2,p3,p4
p1 : モデルID
p2 : エッジの色($rrggbb)
p3 : 線の太さ
p4 :テクスチャーのX方向原点指定 (よく分かりません)

★トゥーンテクスチャーを作成
 maketoon p1,p2
p1 : モデルID
p2 : 作成モード(1:適用、2:テクスチャー保存)

★トゥーンテクスチャーをファイルから登録
 loadtoon p1,"filename"
p1 : モデルID
filename : 登録するテクスチャーファイル名

★角度情報を整数で設定
 setangr id,x,y,z
id : オブジェクトID
x,y,z : 各軸に対する回転角度(整数)
・ラジアンの場合は、setang

★ライトの角度(だと思います)
 setang HGOBJ_LIGHT,x,y,z
HGOBJ_LIGHT : ライトオブジェクトID(で合ってるのかな??)
x,y,z : 各軸に対する回転角度(ラジアン)
・マニュアルを見ましたが、説明を見つけられませんでした。
・addang HGOBJ_LIGHT,x,y,z は回転率に変わるだけなので省略します。

 次から次に新しい命令が出てきますね。次から次へと忘れそう…がく〜(落胆した顔)
------------------
ラベル:HGIMG3
posted by Shindo Izo at 20:00| Comment(0) | HSP3.3入門2 | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。