2015年04月13日

ルート探索

以前もつくったけどもう一度つくりなおしました。
前のは格子状のマップ用でしたが今度作ったのはツリー(木構造)のルートを探索できるものです
WS000620.JPG
ルート探索サンプル.zip
ルートとなるポイントを配置していき、ポイントによる線分とマップで当たり判定を行い壁に貫通しないルートを成形していきます
探索のアルゴリズムは昔の記事参照
http://oirahakobito.seesaa.net/article/251226805.html
自分は熱より臭いと考えてつくりました
posted by 26℃ at 03:28| 福岡 ☔| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2015年04月08日

hgimg3でモーション再生

完全に使い方わすれてる
これも去年にブログに印しといたのが役だった、ことのきは1年後はhgimg4使えるもんになってると思ってたw
hgimg3モーション再生の考察
hgimg3の仕様でモーションがループ再生しかできないもんだから単発モーションさせにくい
でも去年の記事みてるとまだ物足りない感じだなバグりそう
posted by 26℃ at 23:29| 福岡 ☁| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2015年04月01日

引数のマクロ

HSPのちょっとした小技
#module
#define Argument array p1,array p2
#deffunc test Argument
mes p1.0
mes p1.1
mes p2.0
mes p2.1
return
#global

a=1,2
b=3,4
test a,b

#defineを使って引数をまとめることができます
posted by 26℃ at 14:14| 福岡 ☁| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2015年03月31日

ラベル配列

hspでは関数ポインタの配列とかできないんだけど
ラベル配列を駆使したら似た感じのができるっぽい
max=10;てきとう
ldim ラベル配列,max
ラベル配列.0=*a0_
ラベル配列.1=*a1_
ラベル配列.2=*a2_
ラベル配列.3=*a3_

*a0_
何かの処理1
return
*a1_
何かの処理2
return
*a2_
何かの処理3
return
*a3_
何かの処理4
return

id=実行したい処理の番号
gosub ラベル配列.id

こんな感じにすると条件式とかいらないで一発でやりたい処理をさせれます
条件文だけでことたりるだろと思われるかもしれませんが、規模がでかくなるとかなり便利だとおもう
posted by 26℃ at 23:57| 福岡 ☔| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2015年03月20日

スクロールバーモジュール

自作してみました、モジュール変数を使っているので複数スクロールバーを利用した画面をつくれます
WS000585.JPG
ScrollBar.as

なんか画像の画質がわるいな、キャプチャーソフトの設定しらべてみるか
posted by 26℃ at 19:52| 福岡 ☁| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2015年03月13日

アイコン取得

リストビューの表示にアイコンを表示させたかったのですが手軽にアイコンを表示させるほうほうがわからなかったので調べてみました
SHGetFileInfo使えばファイルに関連したアイコンのイメージハンドルを取得できるようで
SHGFI_USEFILEATTRIBUTES (0x000000010)
のフラグをせっていするとファイルのフルパスを設定しなくても.txtなど拡張子を入力するだけで
アイコンを取得できます

これめちゃくちゃ便利な命令ですわ
posted by 26℃ at 19:10| 福岡 ☀| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2015年03月11日

hspのメッセージボックスでオートインデントさせる

ソースコード貼りにくいなシーサーは ソース貼ろうとおもったがソースコードが途中までしか表示されない謎の不具合で断念 続きを読む
posted by 26℃ at 03:07| 福岡 ☁| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2014年10月07日

a

モジュール変数にモジュール変数を持たせるなど、複雑なことさせてたのですが
クローンモジュールでメイン処理させたらだめですね、なんかバグる…
このまま作ってても原因不明のエラーが出てきそうな予感
posted by 26℃ at 01:50| 福岡 ☀| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2014年10月05日

モジュールのコピー

モジュールのコピー・クローンのほうほうは
=とdupの2つの方法があります
初めはdupを使っていたのですが、varuseが機能しない、クローン変数を弄っていくと原因不明のエラーが発生する(深刻)
というわけで=の代入をつかっていたのですが
delmodでコピーを消しても、本元もコピーも消えないんですね。気づいたときはびっくりしたわあ
本元をdelmodしたとしても、コピーのほうは生き残ってるので。コピーのほうは=でモジュールとは別の形に上書きなどするひつようがあるようです
posted by 26℃ at 18:33| 福岡 ☁| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2014年10月03日

配列

配列の中身をmemcpyでずらそうとしたら上手くいかない
dim a,10,2
 0123456789, 0123456789
dim a,2,10
 01, 01, 01, 01, 01, 01, 01, 01
次元と要素の書き方で意味合いが大きく異なるんですね…すごい初歩的なミスしたなあ
posted by 26℃ at 17:38| 福岡 ☁| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2014年03月14日

hgimg3で補間

lerp_sample.zip
取り合えず公開
posted by 26℃ at 15:47| 福岡 ☁| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2014年03月03日

hgimg3とkyenote

hgimg3においてメタセコプラグインkyenoteを利用する方法

keynoteのx出力はx軸が左右反転となっており、本来の作ったポリゴンとは違ったものになってしまいます
なのでhgimg3で読み込むときにx軸を左右反転し元に戻すひつようがあります

まずメタセコイアで表示するポリゴンを全て選択し反転させます
xファイルを保存したあと、xファイルに書かれている行列のxの値をを-1にかえます
するとhgimg3で表示はされるのですが、ライトの当たり方が外のポリゴンと真逆となります
xファイルの法線の設定も変える必要もあるんですね

まとめ
1 メタセコでポリゴンを反転させる
2 メタセコでファイルの種類DirectX with Animationを選び保存
  設定のバイナリ形式チェック外す(LR左右はバグってる)
3 xファイルの、行列(FrameTransformMatrix)のxに-1かける
4 xファイルのMeshNormalsの法線の配列のyとzに-1かける
5 全てのモーションデータがはいっているので
  ひとつずつモーションデータを分離、ポリゴンデータに足し合わせ出力させる

この5つを行う必要があります
わかるとおり、keynoteつかうのは手間かかりますね変換ツールつくったのでいちお公開


書いてる途中に別のほうほう思い浮かんだ
xファイル編集でポリゴンを反転させたら
メタセコで反転させる処理と法線編集の必要がないはず

別の方法

1 上記の2
2 上記の3
3 xファイルのMesh面の配列を逆に並べ直す
4 上記の5

参考:xファイルフォーマット、xファイルテンプレート
http://msdn.microsoft.com/ja-jp/library/cc372043.aspx
posted by 26℃ at 20:23| 福岡 | Comment(2) | hspメモ | このブログの読者になる | 更新情報をチェックする

2014年03月02日

日本語

メタセコのプラグイン、keynoteでアニメーションXファイルを作成し、hgimg3で読み込ませたら
エラーはでないけど、表示されず。
前ためしたデータではうまくいったのになんで?と原因を探ってみたらデータに日本語つかってたのが原因っぽい。
2バイト文字つかったらだめですね、つい癖で。。

あとはテクスチャが読み込まれない、2バイト文字かんけいなく
出力したデータみてみるとテクスチャデータすら書かれてないのはなんでだろ。

追記
テクスチャは、材質削除して新たにつくってそれを適用したら書きだされるようになりました
たぶん読み取る順番にバグでもひそんでるんだろう

追記
データの2バイト文字を半角に直した後、オブジェクトをついかしたらモーションが動かなくなる現象がおこったので
モーションデータの中をみると、ボーンの名前が2バイト文字のままになってる不思議
手動でモーションデータのほうも名前かえとかないといけないっぽい
WS000255.JPG
posted by 26℃ at 09:11| 福岡 ☀| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2014年03月01日

se・bgm

魔王魂さんのとこからサウンドダウンロードしてきてさっそく鳴らそうとしたら
dmmplay関係の命令わけわかんねえ
dmmload でwavとoggの読み方でかってが違うようですね
dmmload "a.wav",-1 : id=stat
-1でIDがstatで返されるってヘルプにのってるのに
dmmload "bgm.ogg",-1 : id=stat
oggだとstatでid返ってこないんですよ、ハハ
oggの場合は直にID入力しなきゃいけないようです

BGMを切り替えるためににのoggが再生中か調べたくてこういうソース書くとします
dmmstat state,0,16
if state=1 : dmmstop 11
ID0のBGMが鳴っていないときにID0を再生させたくても
ID1が鳴っていたらstateに1が返ってくるんですよ
oggだとIDの区別ができないようです

ちょっとくせつよすぎたわ
posted by 26℃ at 19:19| 福岡 ☁| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2014年02月24日

画像データのサイズ寸法

hgimg3のテクスチャの登録にはサイズの設定が必須なのですが、ひとつずつに記述して設定するのは面倒なので
画像のサイズを調べる方法を検索とかしていたのですが
まったく良い答えがみつからず。。
昔作った姫騎士のソースみたら、普通にでてきました。昔の私はどこからこの情報もってきたんだろ!?
pngとBMPの2つの方法を載せます

;pngのサイズの求め方
bload "PNGファイル", buf
repeat 4
w = (w << 8 & $FFFFFF00) + peek(buf, 8 + 8 + cnt)
h = (h << 8 & $FFFFFF00) + peek(buf, 8 + 12 + cnt)
loop
mes ""+w+" x "+h+"

;BMPのサイズの求め方
w = lpeek(dstbuffer, 18)
h = lpeek(dstbuffer, 22)
mes ""+w+" x "+h+"

BMPの求め方はじつに単純ですね、肝心のPNGはやってることさっぱりです
JPGの求め方もしりたかったのですが、これについてはわからず。
知ってるかたがもしいたら情報おまちしてます。
posted by 26℃ at 20:39| 福岡 | Comment(2) | hspメモ | このブログの読者になる | 更新情報をチェックする

2014年02月22日

似た処理

エフェクトファイル
イベントファイル
モデルファイル
この3つファイルを纏めるリストがそれぞれあるとして
リストを読みこみ、そのファイルをロードする処理をつくるとします

リストを読み込むまでは3つのファイルとも同じ処理ですが
ファイルの種類がちがうので
ファイルをロードする命令文がそれぞれ違ってきます
それゆえリストを読み込むスクリプトをモジュール化できなかったわけですけど
define命令使うと引数に命令文いれることができることに気付きました

#define FileList(%1,%2) exist %1 : if strsize!-1{ : sdim list : notesel list : noteload %1 : repeat notemax : noteget name,cnt : name = strmid(name,3,strlen(name)-3) : if name="noname" : continue %c : %2=cnt :loop : noteunsel}
/*
FileList(リストの場所, 命令文) リストを解読
exist dir
if strsize!-1{
sdim list : notesel list : noteload dir
repeat notemax
noteget name,cnt
name = strmid(name,3,strlen(name)-3)
if name="noname" : continue
命令文(ファイルの読み込み等に使用)
loop
noteunsel
}
*/

リストファイルの構造は2桁の番号とコロンで区切りファイル名
00:test.x
01:test2.x
02:test3.x
03:test4.x
04:test5.x

FileListにリストのパスを指定すると、ファイル名がnameに代入されます
FileList ”リストのパス”,addxfile model_ID.cnt, "モデルフォルダのパス"+name
とこんな感じで利用することができます


例としてaddxfile 書いてますがこれだとエラーでます…
引数が2つ以上のばあいは関数で()で囲まないとだめです
posted by 26℃ at 18:04| 福岡 ☀| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2014年02月19日

無駄を省く

無駄なスペース・タブ・改行・コメント文をなくすモジュール
TextEdit.as

命令文をメッセージボックスに直接入力してエフェクトを生成させようと考えたため
命令文に記述することのあるスペース・タブ・コメント・改行などを省くモジュールを作成してみました

hgimg3のevent関係の命令は以前は理解できなかったのですが、昨日再度
触れてみるとかなり使いやすいことがわかってきました
event_addefx ev1, $2ff, 0, 0
event_setdir ev1, -0.5,-1.0,-0.5, 0.5,-1.2,0.5
event_prmon ev1,0,36
event_adddir ev1, 0, 0.1, 0
event_wait ev1,10
event_efx ev1, 16, $200, 0, 0
event_adddir ev1, 0, 0.1, 0
event_wait ev1,16
event_delobj ev1
こういう命令文でevent_waitとありますが、これを理解できてなかったんですね
event_wait 10など入力し、その次にevent_adddir ev1, 0, 0.1, 0と入力しておくと
イベントを開始して10フレーム目に移動速度が0.1になるということです

以前の自分は
event_wait 10
event_wait 10
event_wait 10
と続けて書くと、30フレーム分処理が停止するのではないかとか思ってました…
posted by 26℃ at 11:19| 福岡 ☁| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2014年02月18日

hgini

hgimg3を使ったツールをつくっていたら、screen 3(ID3のウィンドウ)が消える現象がありました
hgimg3.asのhgini命令を見てみると、こんなスクリプトが入ってるのを発見
#define global WORKSCR 3
buffer WORKSCR,128,128,hgmode
ってわけでID3は使うのやめましょう
posted by 26℃ at 17:48| 福岡 ☁| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

hgimg3 ツール用カメラ

メタセコ風な処理を行うカメラのモジュールです
ToolCamera.as
カメラの向きに合わせ平行移動させる処理などは、FPSゲームなどに応用できます
posted by 26℃ at 03:02| 福岡 ☔| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

2013年10月25日

HSP モジュール変数の出力、読み出し

hspのモジュール変数の保存や書き出しを簡単にできないか探したら、普通に情報が出てきたw
目から鱗がでるような便利な命令です
*load_
vload_start"hoge.var"
vload_get mTest
vload_end
return

*load_
vsave_start
vsave_put mTest
vsave_end "vtest_data2.var"
return

mTestというモジュールを作っていたら、上記のようにすれば丸ごと出力、読み出しができるわけです
テキストファイルで出力したいばあいは使えませんが、非常に便利だとおもいました。
posted by 26℃ at 01:09| 福岡 ☔| Comment(0) | hspメモ | このブログの読者になる | 更新情報をチェックする

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。