HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0319
おにたま(管理人)HSP3.5β5版 HSP3Dish先行テストのお願い59解決


おにたま(管理人)

リンク

2017/3/19(Sun) 12:19:00|NO.78594

いつもHSPをお使い頂きありがとうございます。
新しいβテスト版となる、HSP3.5β5のリリースに向けて調整を行なっています。
今回、特にHSP3Dish関連のファイル更新が多いため、先行してテストができればと考えています。
掲示板をご覧の方で、HSP3Dish(HGIMG4も含めて)をお使いの方は、Android,iOS版ともに大きく修正を行なっているため、既存のスクリプトや環境での動作テストができると嬉しいです。

以下のURLから、HSP3.5β5版をダウンロードできますので、互換性の問題や不具合などありましたら掲示板の方でお知らせ頂けると助かります。

HSP3.5β5先行テスト版ダウンロード
http://www.onionsoft.net/hsp/file/hsp35b5.zip

差分アップデートではなく、フルセット版となっていますので、既存のフォルダに上書きではなく別途インストールを行なってください。
HSP3.5βのアップデートガイドはこちらにあります。
http://www.onionsoft.net/hsp/v35/readme.txt

HSP3.5β版のドキュメントはオンラインでもご覧いただけます。
http://www.onionsoft.net/hsp/v35/

β版は、新規の機能や修正を検証するためのテストバージョンです。思わぬ不具合の可能性もあることをご了承下さい。不具合が起こる場合や、動作が安定しない時は、以前のバージョンに戻して使用することを推奨します。



この記事に返信する


しまくろねこ

リンク

2017/3/19(Sun) 20:25:05|NO.78599

こんにちは。

開発お疲れ様です。
gmulcolor命令がWindows上では正常に働いていますが、Android上では機能していませんでした。

また、加速度センサー値とジャイロセンサー値についてです。
#include "hsp3dish.as"
dim ginf, 6 repeat redraw 0 color 0, 0, 0 : boxf color 255, 255, 255 pos 0, 0 repeat 6 ginf(cnt) = ginfo(256 + cnt) mes str(ginf(cnt)) loop redraw 1 await 16 loop
上記ソースをWindowsタブレットで画面の回転をできる状態にしたうえで実行すると、タブレットを傾けてWindows側の画面の回転が行われると実行中のソースのウィンドウがフリーズしてしまうので、画面回転機能をロックした状態でソースを実行しても値が取得できていないようです。値はすべて「0」が返ってきます。
Android上では「0」以外の値が返ってきていますが、端末をどのような傾きや動かし方をするとよいのかよく分かっていないのでこれから調べたいと思います。



hashikemu

リンク

2017/3/19(Sun) 23:27:52|NO.78601

お疲れ様です。

HGIMG4のサンプルをベースに自作モデルをgpbconvで変換させて表示させたところ、ライティング
が正しく反映されていないようでした。
(https://twitter.com/kemuduino/status/843462358336860160)

また、
setreq SYSREQ_LOGWRITE,1

と書いた場合に生成されるhsp3gp.txt(ログ?)内には gameplay::RenderState::applyAutoBinding -- Unsupported auto binding type (SCENE_LIGHT_COLOR). gameplay::RenderState::applyAutoBinding -- Unsupported auto binding type (SCENE_LIGHT_DIRECTION). gameplay::MaterialParameter::bind -- Material parameter for uniform '***' not found in effect: 'res/shaders/colored.vert; res/shaders/colored.frag;'. (***にはu_ambientColor、u_specularExponent、u_cameraPosition、 u_inverseTransposeWorldViewMatrix、 u_lightColor、u_lightDirectionが入ります) の表示がありました。 より簡単なモデルでの表示がどうなるかも検証してみたいと思います。



K-s

リンク

2017/3/20(Mon) 03:47:49|NO.78603

Windows(OpenGL)版HGIMG4ですが今回の更新以前のバージョンにも見られた現象も含めて報告します。

gpobjpool の第2パラメータには説明には「最大割り当て数」と記述されていますが
実際は「 割り当て終了番号+1」になっていると思われます。
gpobjpool 10, 15 だと 10, 11, 12, 13, 14 の5個が割り当て可能IDになる。

gpclone で生成に失敗(割り当て外)すると第1パラメータに -1 が返りますが
マニュアルに記述が無かったです。

findobj の第2パラメータが PRMSET_MYGROUP でなく PRMSET_COLGROUP になっていると思います。
HGIMG3 では PRMSET_MYGROUP でした。

gpgetprm で得られる値が第3パラメータと食い違っているようです。
これはβ4では合ってたと思います。

delobj が上手く機能していないように見えます。削除してもその場に残り続けます。

#include "hgimg4.as" #define rndang 0.01 * rnd(314) gpreset setcls CLSMODE_SOLID, 0 gpbox box, 5 repeat redraw 0 color 255, 255, 255 if (cnt \ 5) == 0 { gpobjpool 3, 13 ; 割り当てられるIDは 3 ~ 12 の 10個 gpclone id, box ; 割り当て外の場合 id に -1 が返る if (id > 0) { setcoli id, 1, 2 setpos id, 1.0 * rnd(100) - 50, 30 setang id, rndang, rndang, rndang setdir id, , -0.4 setobjmode id, OBJ_MOVE } } findobj 0, 2 ; 第2パラメータが衝突対象グループになっている? repeat nextobj id if (id < 0) : break addang id, 0.05, 0.05, 0.05 getpos id, x, y, z pos id * 30, 10 gpgetprm v, id, PRMSET_SHAPE ; PRMSET_SHAPE -> PRMSET_MYGROUP ? mes v pos id * 30, 24 gpgetprm v, id, PRMSET_USEGPMAT ; PRMSET_USEGPMAT -> PRMSET_COLGROUP ? mes v if (y < -30) { delobj id ; 削除しても消えずに残る } loop gpdraw redraw 1 await 15 loop

hsp3dish.js ですが DISH helper で変換してブラウザで実行するとログ表示部分に

Screen 640.000000 480.000000 INIT 640x480 HSPDish ver3.5beta5 8
と表示されスクリーンが黒いまま動作しませんでした。

https://twitter.com/skymonsters_Ks/status/843534052980219904



法貴優雅

リンク

2017/3/20(Mon) 12:30:15|NO.78613

お疲れ様です。

もしかしたら仕様なのかもしれませんが、HGIMG4にてレンダリングバッファを作成して
そこからgmode 2やgmode 4でコピーをした際、透過色が反映せず全体がコピーされてします。

やりたいことは、発光するオブジェクトとそれ以外のオブジェクトをそれぞれのバッファに
レンダリングを行い、メイン画面で合成を行いたいです。



法貴優雅

リンク

2017/3/20(Mon) 16:04:33|NO.78614

お疲れ様です。

hgimg3.asの555行目の

if strsize<0 : dialog "No file:"+fname : end
部分はfnameではなくfnが正しいと思います。



おにたま(管理人)

リンク

2017/3/21(Tue) 00:07:13|NO.78616

皆様、多くのご報告とご意見ありがとうございます。
頂いた不具合や情報などは検証して、今後反映していきたいと思います。
引き続き何かありましたら、お知らせください。



法貴優雅

リンク

2017/3/21(Tue) 19:45:26|NO.78617

お疲れ様です。

hgimg4.txtの物理挙動の設定にて
「gpbモデルノードの場合はモデル全体を包み込むバウンディング球が使用されます。」
と書かれていますが、実際モデルに物理設定を行うと、なんだかよくわからない当たり判定になります。

sample\hgimg4\test11.hspの箱をいろいろなモデルに置き換えて試しているのですが
モデルの中心を(0,0,0)にした球体モデルをテストしても、おかしな動き(当たり判定)になります。

モデルでの動作挙動確認をよろしくお願いいたします。



Drip

リンク

2017/3/22(Wed) 00:28:22|NO.78620

こんにちは。

今回はDishとhgimg4についてということで、殆ど既出のもので、要望に近いかもしれませんが、
どうしても声に出したかったので、恥ずかしながら書かせていただこうと思います^_^;

◆Dishやhgimg4ではhdcに常に0が代入されています。
標準版と同じようにhdcを使うことができませんか?
というのも、Dishで生成されたウィンドウは画面の隅っこに配置されてしまい、
起動時に画面中央に移動するためにはWindowsAPIを用いてウィンドウを検索するなどして
無理やりhdcを取得し、複雑な処理をせざるを得ず、ウィンドウスタイルの変更などにも
かなり難儀しております。hdcさえ取得できればこれらの操作がかなり簡単になるのですが…

◆Dishやhgimg4で生成されたプログラムは起動時のタイトルがHSPDish(あるいはhgimg4)に
なってしまいます。title命令で素早く変更しても、キャプションバーが一瞬点滅してしまい、
少しかっこ悪いです。これを改善する方法はありますか?
(標準版のようにキャプションの文字列をなしにできませんか?
 あるいはhsp3dish.iniでデフォルトを指定できるようにできませんか?)

◆Dishではline命令で点を描けない?
標準版だとline 10,10,11,10で点を打てますが、Dishだと2ドットの線となり、
line 10,10,10,10だとDishでは何も描画されません。
line 10,10,11,10で2ドットになるなら、line 10,10,10,10は1ドットにするか、
標準版と仕様をあわせたほうが良いような気がしました。
boxfも1ライン分、標準版と動作が異なるようです。
些細な事ではありますが、pset命令も実装は難しいのでしょうか。
仕様ということにしても良さそうではありますが、気になってます。

#include "hsp3dish.as" //コメントアウトしたときとの違いをご確認ください。 redraw 0 boxf 10,10,11,11 line 10,20,11,20 boxf 10,30,10,30 line 10,40,10,40 //これは双方動作同じ(描画されない) color 255:line 9,0,9,100 redraw 1

◆hgimg4ではpackfileはサポートされませんか?
resフォルダにデータをそのまま置いておくのは容易にデータを改造されてしまい、
なかなか本腰を入れた製作が行えません。
願わくばフォルダパスやリソースの配置ルールから脱却し、従来(hgimg3)のように
メモリ空間上でデータの推移を完結させることは不可能なのでしょうか。
hgimg4も「スクリプトエディタに書いたらF5ですぐ実行」ができれば敷居は更に
下がると思います。

◆hgimg4のfvface命令で取得される角度の回転順序がsetang命令に準拠していない?
fvfaceの角度はhgimg3のmodelorder 2に準拠した角度で、
setangでそれを設定する際にはmodelorder 1の回転に変換しないといけない気がします。
fvfaceから取得した角度をクォータニオン回転でsetang命令1回で直感的に
設定するのは難しいような気がしました。
setang命令で使用される回転順序を設定できる命令(modelorder)や追加パラメータがあれば
一気に扱いやすくなるような気がするのですがいかがでしょうか。

//以下はgplookatを使えば済む話ではありますが… #include "hgimg4.as" gpreset setcls CLSMODE_SOLID, 0 setpos GPOBJ_CAMERA, 0,0,5 gpbox p, 1 //ターゲットを見つめる者 gpbox t, 0.1 //ターゲット setpos t,-2.5,1.5,-2.5 repeat stick ky,15 if ky&1:addpos t,-0.1 if ky&4:addpos t,0.1 if ky&2:addpos t,0,0,-0.1 if ky&8:addpos t,0,0,0.1 getpos t,x,y,z:getpos p,fv,fv(1),fv(2) fvface fv,x,y,z:setang p,fv,-fv(1),fv(2) //ターゲットをちゃんと見てくれない! redraw 0:gpdraw:redraw 1:await 15 loop

私が色々勘違いしていましたら申し訳ありません。
一先ず以上となりますが、失礼いたします。



Yuuki

リンク

2017/3/24(Fri) 11:35:44|NO.78630

HSPスクリプトエディタで、
改行して、入力しながら、マウスで選択すると、応答なしになります。
修正よろしくお願いいたします。



K-s

リンク

2017/3/25(Sat) 05:05:00|NO.78654

Windows(OpenGL)版HGIMG4でgpusermat命令を使ったプログラムをデバッグウィンドウを表示させて実行すると
プログラム終了時に「hsp3gp.exe は動作を停止しました」ウィンドウ(WerFault.exe)が出ました。

#include "hgimg4.as" gpusermat mat, "vs.vert", "fs.frag", "" gpplate plate, , , , mat repeat redraw 0 : gpdraw : redraw 1 await 16 loop /* vs.vert attribute vec4 a_position; void main(void){ gl_Position = a_position; } */ /* fs.frag void main(void){ gl_FragColor = vec4(0.7, 0.8, 0.9, 1.0); } */
プロセス見ていて気づいたのですが、デバッグウィンドウを表示しない場合でも
ウィンドウ自体は出ないもののWerFaultが一瞬起動しているようです。



おにたま(管理人)

リンク

2017/3/30(Thu) 01:21:52|NO.78718

先行テストのご報告ありがとうございました。
一部の不具合と機能対応を行なったバージョンを再度作成しました。
修正版は引き続き以下のURLか、OneDriveの方からダウンロード頂けます。

HSP3.5β5先行テスト版ダウンロード
http://www.onionsoft.net/hsp/file/hsp35b5.zip

前回のバージョンから以下を修正しています。
-------------------------------------------------------------------------
[HGIMG4] findobj命令の第2パラメータをPRMSET_MYGROUPでなかった不具合を修正(HGIMG3と同一に)
[HGIMG4] gpobjpool命令の第2パラメータが「最大割り当て数」ではなく「終了ID+1」になっている不具合を修正
[HSP3Dish][HGIMG4] Windowsランタイムの実行ファイルで標準のウインドウタイトルを出さないように修正
[HSP3Dish][HGIMG4] Windowsランタイムはシステム変数hwnd,hinstを返すように修正
[HSP3Dish][hsp3js] 正しく動作するように修正

[HGIMG4] Android,iOSでgmulcolor命令が正常に動作していなかった不具合を修正
[HGIMG4] delobj命令でオブジェクトが正しく破棄されない不具合を修正
[HGIMG4] gpgetprm で得られる値がおかしかった不具合を修正
[HGIMG4] gpcloneのマニュアル記述を修正
[HGIMG4] gpusermat命令を使用したスクリプトの終了時にエラーが発生する不具合を修正
[HGIMG4] ライトの指定がモデルに反映されない不具合を修正
[HGIMG4] hgimg4.txtドキュメントにモデルのマテリアルとライティング設定の項目を追加
[HGIMG3] hgimg3.asのdxfload命令でエラー表示が間違っていたのを修正
-------------------------------------------------------------------------



おにたま(管理人)

リンク

2017/3/30(Thu) 01:22:20|NO.78719

>しまくろねこ さん
加速度センサー値は、Windows上での取得にはまだ対応していません。今後対応したいと考えています。
モバイル機で取得される値も、まだセンサーの生の値なので、もう少し使いやすい形にするのが課題ですね。

>hashikemu さん
gpbconvのエラーは新しいバージョンのものでしょうか?
ライティングのパラメーターが、正しく変換されない場合があるので今後コンバーターなどにも手を入れていきたいと思います。
hgimg4.txtの方で、.materialファイルとライティングについての修正方法に触れていますので、参考にして頂ければと思います。

>K-s さん
多くの検証ありがとうございます。
とり急ぎ修正できる部分については対応しました。

>法貴優雅 さん
モデルのあたり判定については、今後のバージョンで細かく検証したいと思います。
レンダリングバッファの透明(アルファ付き)コピーは、ちょっと調べてみますが今のところは対応していません。

>Drip さん
HSP3Dishでは、hdcは使用していませんが、おそらくhwndやhinstanceだと思われるので、そちらはWindows上でのみ取得できるよう修正しました。
Windowsのタイトルバーについても修正してあります。
line命令で1ドットを描画する件やfvface命令については、今後調査してみたいと思います。
packfileサポートは、HGIMG4で扱う拡張子が長いなど、そもそも現行の仕様だと現実的ではないので、
dpmファイルの仕様から対応する必要がありますので、今しばらくお待ち頂ければと思います。

>Yuuki さん
ご報告ありがとうございます。
今後のバージョンで細かく検証していきたいと思います。



法貴優雅

リンク

2017/3/30(Thu) 22:31:40|NO.78737

お疲れ様です。

WindowsでのHGIMG4でginfoの0、1、4、5、6、7、8、9の値が取得できません
(値が0になっている)。

また要望ですがWindowsでのHGIMG4使用時にmouse命令を
使えるようにしていただけませんでしょうか?



Drip

リンク

2017/3/31(Fri) 02:00:04|NO.78754

おにたまさん
ご対応ありがとうございます。

>HDC
失礼しました!hdcではなくhwndでした!
時々素で間違います。ご指摘されるまで全く気付きませんでした…;
ご対応有難うございます。

hgimg4におけるpackfileの文字数問題ですが、
materialファイルの拡張子の長さが原因ですよね?
この拡張子はgameplayエンジンの仕様によるものなのでしょうか。
hgimg4ではmaterialファイルが無ければmatファイルを読み込む、
等の改造で対応できないのでしょうか?
リソースフォルダに縛られてpackfileも使えないことは大変不便に感じています。


◆fvdir命令について

ところで、fvdir命令が仕様と実装状態共に滅茶苦茶な気がするのですが、
ご確認いただけないでしょうか。

まずhgimg3目線ではF1ヘルプの内容が間違っています。F1ヘルプの内容、正しくは
fv=X,Y,Z回転角度が代入されている変数名
(x,y,z)=fvの角度で回転させる三次元線分ベクトル値
がhgimg3上での動作であり正しい仕様ですよね。
線分ベクトルをfvの角度で回転させた結果、
線分ベクトルがどういう状態になったかがfvに代入されるわけですよね。

次にhgimg4上でのfvdir命令の動作ですが、全く動作しません。
何かパラメータを1つでも与えようとすると、
「パラメータの数が多すぎます」とエラーしてしまいます。

更に、hgimg4,hgimg3のマニュアルでは、F1ヘルプと同じ間違った仕様が書かれています。
一度
・fvdir命令のF1ヘルプの内容
・fvdir命令のhgimg3,hgimg4マニュアル上での解説
・hgimg4上での動作
これらを確認されたほうが良いと思います。

◆hgimg4の**quat系命令について

マニュアルでは一切触れられていないようですが、
偶然F1ヘルプ中にselquatという命令を発見し、まさかと思い調べたところ
getquatやsetquat等の命令が予約されています。
特にgetquat命令は角度を取得できないhgimg4ではかなり有意義な命令になるかと思うのですが、
これらの命令はどのように扱われるのでしょうか?
もし利用可能であるならば、仕様やサンプル等を公開していただければ幸いに思います。

◆setang命令の回転行列の件についてはまだコメントできない状態でしょうか^^;
角度の問題は3Dゲームの開発においてかなり重要なものになるかと思いますので、
仕様が整備されることを心待ちにしております。


長文失礼致しました。以上となりますが、宜しくお願いいたします。



HSP最高!!

リンク

2017/3/31(Fri) 09:19:33|NO.78759

>製作者へ
前のバージョンからずっと気になっていたんですが、
Windows10 の Microsoft Edge で参考にしたいソースをコピーにすると
たまに、見えない「?」があります。
エラーメッセージの一部です。

error 4 : パラメーター式の記述が無効です (26行目)
--> aldrawline p_x@m0????????? , p_y@m0 + r@m0????? , p_x@m0????????? , p_y@m0 + p_h@m0 - r@m0

「?」は表示しておらず、いちいち「?」を消さなくてはなりません。
ちなみに FireBox で参考にしたいソースをコピーにすると「?」は表示されず正常に動作しました。
解決策はあるんでしょうか?

長文失礼しました。



HSP最高!!

リンク

2017/3/31(Fri) 09:20:36|NO.78760

ちなみに HSP3.5β5 でも表示されます。



darumasan

リンク

2017/4/7(Fri) 13:33:08|NO.78985

開発ご担当のおにたまさん、ご苦労様です。
#78867に書き込みましたが、V3.5β4、5ともに
#include "hsputf.as"を頭に入れて
#packでjpgやtxtを内蔵させて実行ファイルを作り走らせると
内部エラー13や「動作を停止しました」や立ち上がってこない、
という不具合らしきものがでます。
jpg,txtを全部外出しにすると正常に動きますが
#packとhsputf.asの整合性に問題がありませんでしょうか?



darumasan

リンク

2017/4/8(Sat) 10:35:58|NO.79000

hsputf.asをインクルードした場合もう一件不具合らしきものがあります。
それは、statictextですがutf-8の文字で表示できず化けるものがあります。
例えば「丙酮,尿酮」(中国繁体語)をstatictextで表示すると
丙と尿は表示されますが酮は化けます。
元来、statictextはANSIコードしか扱えないのかも知れません。



砂時 計

リンク

2017/4/9(Sun) 14:01:24|NO.79041

3/30版 HGIMG4 で箱などに PRMSET_TIMER にビット値8をセットすると
なぜかワイヤーフレーム表示になります。


#include "hgimg4.as" gpreset gpbox id, 10, 0xff0000 gpsetprm id, PRMSET_TIMER, 8 repeat redraw 0 gpdraw redraw 1 await 1000/60 loop



tds12

リンク

2017/4/9(Sun) 17:05:42|NO.79047

>それは、statictextですがutf-8の文字で表示できず化けるものがあります。
既定のフォントがその文字を表示できないだけです。
mesで使えなければfont、
buttonで使えなければfontとobjmode、
statictextの場合はsendmsgか何かで、
フォントを指定してください。
msgothicで表示できる場合が多いです。



おにたま(管理人)

リンク

2017/4/10(Mon) 22:56:02|NO.79067

>法貴優雅さん
ご報告ありがとうございます。
HGIMG4でのginfoの値については、今後HSP3Dishと同様にしていきたいと思います。

>Dripさん
ご返信ありがとうございます。
materialファイルの拡張子はgameplay3dの仕様ですが、修正は可能です。
次のバージョンではpackfile対応も含めて検討してみたいと思います。
fvdir命令と、回転系の命令については、もう少しこちらでも検証してみます。
できる限りHGIMG3と互換を取りたいと考えていますが、クォータニオンで管理されている関係で取得に関してはどうしても難しい部分があります。
getquat命令は、現在のバージョンでも回転のためのクォータニオン値(4元数)を取得できますが、自前でx,y,z,wの値をもとに進めなければなりません。
なので、クォータニオンやマトリクスを計算するための命令をHGIMG4に実装してから使用する形にしないと、現実的ではないと思っています。

>HSP最高!!さん
ご報告ありがとうございます。
掲示板のソースということでしょうか。
これは、ブラウザ側の仕様ということもあるので、HSPだけの問題ではないかと思います。

>darumasan さん
>砂時 計 さん
>tds12 さん
ご報告と補足ありがとうございます。
HSP3.5β5を正式に公開する際には修正される予定です。
OneDrive上で修正済みのファイルをご確認頂けます。
https://onedrive.live.com/embed?cid=EC425522ED849DA7&resid=EC425522ED849DA7%211229&authkey=AB-pNztAqBp6BcU



空気

リンク

2017/4/11(Tue) 04:38:07|NO.79071

バグ報告させて頂きます。
hsp3utf.asをインクルードした際、
input命令の変数の内容が特定の文字列の場合に
スクリプトが正常に実行されず、スクリプトが強制終了します。
何故か、まれに正常起動する事もあるようですが・・・。
(OneDrive上の2017/04/11現在の最新版3.5β5を使用)

サンプルスクリプトは下記となります。
(製作中のソフトから切り出したものなので見づらいのはご了承ください。)

//////////命令初期化////////// #include "hsp3utf.as";文字列処理をUnicodeに設定 #include "gdi32.as" #define ctype XSIZE(%1) int(1.0*%1*XDPI/96);HiDPI用マクロ #define ctype YSIZE(%1) int(1.0*%1*YDPI/96);HiDPI用マクロ GetDeviceCaps hdc,$00000058:XDPI=stat;XDPI GetDeviceCaps hdc,$0000005A:YDPI=stat;YDPI ;GUI枠描画命令定義 #module #uselib "user32.dll" #func DrawEdge "DrawEdge" int, int, int, int #deffunc edgebox int p0, int p1, int p2, int p3 qrc = p0, p1, p0 + p2, p1 + p3 DrawEdge hdc, varptr (qrc), $6, $F return #global //////////メインウィンドウの初期化////////// ;「ウィンドウ生成とウィンドウサイズ記憶」 screen 0,XSIZE(512),YSIZE(512),2;非表示ウィンドウ Screen0X_Size = double(ginfo_winx);ウィンドウサイズを代入 Screen0Y_Size = double(ginfo_winy);ウィンドウサイズを代入 ;枠描画 edgebox XSIZE(-100), YSIZE(65)+1, Screen0X_Size+XSIZE(200), Screen0Y_Size edgebox XSIZE(-100), Screen0Y_Size-YSIZE(43)-2, Screen0X_Size+XSIZE(200), Screen0Y_Size nullstr = "" ;" "は問題ない input nullstr ;mesboxは問題無く動作します。 ;mesbox nullstr, X_dirpathbox_SIZE,Y_dirpathbox_SIZE gsel 0,1;ウィンドウアクティブ



Drip

リンク

2017/4/12(Wed) 08:16:46|NO.79086

おにたまさん

packfileの件と角度の問題の件、ご返答感謝いたします。
分かり易い形で整備されることを心待ちにしております。


…ところで以前から気になっていたことなのですが、hgimg3のOBJ_SORTの挙動が不気味です。
以下のコードを実行してみますと、描画順がソートされているはずのプレートが、
ある距離から正しくソートされていないように見えます。
この問題はカメラと物体のY座標が関係しているようなのですが、ご確認いただけないでしょうか。
(表示異常が確認できない場合、この問題はハードウェア関連の可能性も?)

#include "hgimg3.as" hgini Y=8 //★この値がだいたい 6〜12 の範囲だとOBJ_SORTのソートがおかしくなる addeprim m,EPRIM_CIRCLE:seteprim m,0,1 seteprim m,17,0x00ff0000:seteprim m,18,0x80ffffff repeat 16*16 regobj o,m,OBJ_SORT|OBJ_TREE setpos o,cnt\16-8,Y,cnt/16-8 //Yの高さにオブジェクト生成 loop cammode CAM_MODE_LOOKAT:setdir HGOBJ_CAMERA,0,Y+1,0 repeat setpos HGOBJ_CAMERA,1,Y-8,9.0+sin(0.1*cnt)/2 hgdraw hgsync 16 loop
これに関連することかはわかりませんが、
以下のスレッドで論議されているように一部環境でOBJ_SORTが正常に動作しないようです。
http://hsp.tv/play/pforum.php?mode=pastwch&num=71717
inoviaさんの検証が非常に詳細なのですが、表示が崩れた状態のスクリーンショットを見ますと、
モデル形状がぐちゃぐちゃに壊れ、かなりマズい問題な気がします。

これらの問題に関する公式情報はまだないようで、OBJ_SORTはどのように使用すれば
安全に利用できるのか、上記描画順の問題との関連も含め、
おにたまさんからもご意見をいただければ大変心強いのですが…

お忙しいところ恐縮ですが、宜しくお願いいたします。



砂時 計

リンク

2017/4/15(Sat) 14:03:12|NO.79110

ありがとうございます。4/15にOneDriveから取得した版で
ワイヤーフレームにならなくなりました。


別件ですが以下2点ございます。

getobjnameで取得すると変数は文字列になっていますが
内容がおかしいです。

#include "hgimg4.as" gpreset gpload id,"res/duck" setobjname id,"ahiru" repeat redraw 0 gpdraw getobjname s,id pos 8,8 mes "type," + vartype(s) + ",name," + s redraw 1 await 1000/60 loop


箱の衝突を取得しようとすると
座標が一致したものしか得られません。
モデルの場合は半径指定ではなく倍数指定のようにみえます。

#include "hgimg4.as" gpreset gpbox id1, 2,0xff0000 // gpload id1, "res/duck" setcoli id1, 1,2 setpos id1, 0,0,0 gpbox id2, 2,0x00ff00 setcoli id2, 2,1 setpos id2, 5,0,0 repeat redraw 0 gpdraw pos 8,8 getcoli var, id1, 1234567.0 mes "result, " + var redraw 1 await 1000/60 loop

確認よろしくお願いいたします。



darumasan

リンク

2017/4/21(Fri) 12:52:54|NO.79173

おにたまさん
その後のテスト中にたまに「xxxx.exeは動作を停止しました」のエラーが出ます。
hsp3utf.asのincludeを文字化け承知で外すと全くエラーしません。
プログラムはUSB経由のCOMポートにcomput/getでFTDI社のchipにinoutしています。
inoutをバイパスするとエラーしません。
副次的なトラブルかも知れませんがhsp3utfと関連しているのは確かだと思います。
複数のPC環境で再現します(32 & 64bit,Win10)
以下長くなりますが表示例を参考にしてください。
- - - - - - - - - - - - - -
エラー時の表示:
「xxxx.exeは動作を停止しました
問題が発生したためプログラムが正しく動作しなくなりました。〜〜」

デバッグに入れた時の表示:
「ハンドルされない例外が0x775B8501(ntdll.dll)で発生しました。
0xC0000005:場所0xFFAE12B7の読み取り中にアクセス違反が発生しました。」

イベントビューワー、WindowsログのApplicationの内容:
ソース=Application Error、イベントID=1000
全般タブ内の内容:
障害が発生しているアプリケーション名: xxxx.exe、バージョン: 0.0.0.0、タイム スタンプ: 0x57f61bc5
障害が発生しているモジュール名: ntdll.dll、バージョン: 10.0.14393.479、タイム スタンプ: 0x58256ca0
例外コード: 0xc0000005
障害オフセット: 0x00048501
障害が発生しているプロセス ID: 0x257c
障害が発生しているアプリケーションの開始時刻: 0x01d2b974e506c853
障害が発生しているアプリケーション パス: C:\Users\(以下略)
障害が発生しているモジュール パス: C:\WINDOWS\SYSTEM32\ntdll.dll
レポート ID: 6fbc2b3f-d903-4c56-989b-61f917435756
障害が発生しているパッケージの完全な名前:
障害が発生しているパッケージに関連するアプリケーション ID:
- - - - - - - - - - - - - - - - - - - - - - - - - -
ご多忙と思いますが、この件についてもご検討を宜しくお願いいたします。



tds12

リンク

2017/4/23(Sun) 17:25:48|NO.79241

hsp3utfの問題を見つけた方はこちらをお試しください。
いくつかの問題が修正されています。
https://www.dropbox.com/s/j0c6f2zj3sqy114/hsp3utf_20170423.zip?dl=0



tds12

リンク

2017/4/23(Sun) 17:35:55|NO.79242

hsp3utfを使う場合、
computなどの拡張プラグインの命令へは
文字列をSJISに変換してから渡しています。
UTF8である必要がある場合やバイナリが重要である場合、
computbを使うなどほかの方法をご利用ください。

SJISへ変換される対象となる命令は、
#funcで数値を指定しているもの、
#cmdでutf8対応でないプラグインを使用するもの、
#funcでUnicodeにしていないもの、
が含まれます。

いままでのプラグインはSJIS文字列に変換して渡すことで
これまでどおり使えるものと考えていますが、
バイナリが重要な場合やUTF8で受け取らせたい場合は問題となります。
現在UTF8対応の拡張プラグインはないものと考えています。



tds12

リンク

2017/4/23(Sun) 17:55:10|NO.79245

すみません、先ほどのはミスが残っていたのでこちらをお試しください。
https://www.dropbox.com/s/bq18otmech5j4mf/hsp3utf_20170423b.zip?dl=0



tds12

リンク

2017/4/23(Sun) 17:57:53|NO.79247

連投すみません。

>input命令の変数の内容が特定の文字列の場合に
>スクリプトが正常に実行されず、スクリプトが強制終了します。
17:25分版では問題のままで
17:55分版では修正されたと思いますが、
いかがでしょうか?



darumasan

リンク

2017/4/24(Mon) 13:21:16|NO.79273

改訂版作成ありがとうございます。早速テストしました結果を報告します。
1.#packは正常になりました。内部エラー13は発生しません。
2.computに伴うと思われる「xxxx.exeは動作を停止しました」も
  現在の処では発生せずOKになりました。
3.statictextで化けるのは治っていませんが代替方法で回避します。
これで開発続行できます。ありがとうございました。
なお、ベータ版の動作不可解が出てきましたらまたこのスレッドに
報告致しますので宜しくお願いいたします。  【感謝】



リンク

2017/4/29(Sat) 12:15:29|NO.79357

バグ報告です。

*m
sdim a,,100000
await 0
goto *m

という風なスクリプトを書いてしばらくすると、「メモリの確保が出来ませんでした」というエラーが出ます。
(恐らく sdimの際にメモリが解放されないのだと思います。
hsp3.4では このスクリプトは正常に動き、プロセスを確認しても 消費メモリが増えることはありませんでした)



darumasan

リンク

2017/5/2(Tue) 15:13:53|NO.79467

変な症状が次の例で発生します。
画面表示文字とdialogの文章がダブって画面に表示されます。

#include "hsp3utf.as" pos 10,10 : mes "Print Test" sdim buff,200 buff="Kutasta-Chaitanya 聖靈,集體意識" ;中国語含んだ例文。次のDialog文面も中国語。 dialog "列印轉寫代碼清單。 \n\n顯示代碼名稱列印→按“是”。 \n\n僅列印代碼→按“否”。",2 ; dialog "列印轉寫代碼清單。 \n\n顯示代碼名稱列印→按“是”。 \n\n",2 ;<--ここまでの長さだとダブらない。 px=50:py=70 repeat 5 pos px,py mes strmid(buff,0,36);画面レイアウト上、36byteでカットする必要あり。 py+=20 loop bmpsave "test-print.bmp";Print用jpeg。画面表示にDialog文面が重なって出てくる。 stop
#include "hsp3utf.as"をはずすとOKです。
また、dialogの文章を上のコメント例のように短くしてもOKになります。
表示文章を36byteで切ると途中でぶち切られた端数byteが文字化けを起こし、これが要因のようです。
しかしdialogの文章がなぜ画面表示されるのでしょうか?
ご検討宜しくお願いします。



法貴優雅

リンク

2017/5/5(Fri) 13:14:05|NO.79560

いつもお世話になっております。
バグ報告というか、質問なのですが

i = 1 mes (i + 1) + ":" + i
これを実行した時に画面に「3」と表示されるのですが
この仕様でよいのでしょうか?
「2:1」または「エラー」ではないでしょうか?
過去のバージョンも調べましたがHSP3.0のころから、この状態のようです。



tds12

リンク

2017/5/5(Fri) 13:48:30|NO.79561

>これを実行した時に画面に「3」と表示されるのですが
横からですが仕様だと思います。
「i+1」は「1+1」で「2」、
「2+":"」は int型+str型であり 左側の型に右側の方が合わせられるので
「2+int(":")」 このときint関数は整数に変換できるところまで変換するので
「int(":")」は「0」 「2+0」が「2」、
「2+1」で「3」となり、
mesの引数として全体が文字列に変換されて「"3"」となっています。



掘木

リンク

2017/5/5(Fri) 14:06:44|NO.79562

>NO.79560 法貴優雅さん
プログラミングマニュアル3.6.式の項に

整数値、実数値、文字列、関数を混在した式を書くことも可能です。 その場合は、計算する最初の項に合わせて、後の項が型変換されます。
と明記されています。リテラルの型変換方法に関する記載は厳密には見つかりませんでしたが、
str型からint型への変換を行う関数"int"のヘルプに

値が文字列の場合は、数値文字列の場合はその数値に、 それ以外は0になります。
と記載されているので、":"が0に値変換されるのは正規の仕様と考えられます。
ということで、言語仕様上それが正常です。

…と言いつつ、必死に仕様書漁った。これらはランタイム依存でなく言語仕様、やったー。
それならコンパイル時に数値定数畳み込みが仕様上合格を得られそう。



法貴優雅

リンク

2017/5/5(Fri) 15:37:36|NO.79563

tds12さん
掘木さん
返信ありがとうございます。

なるほど、そういう仕様だったんですね。理解できました。



darumasan

リンク

2017/5/9(Tue) 11:32:17|NO.79618

お世話になっています。
私のプログラムミス、理解不足なのかも知れませんが以下の状況がみつかりました。
utf-8コードを含む文字をテキストファイルにnoteaddを使い書き出すと文字化けします。
必ずそうなるのではなくて、OKな時もあります。
OKな時のTextの文字コードはutf-8になっていますがNGな時はANSIになっています。
なおレコードをあらかじめバッファに組み立てておいてnotesaveだけで書き出すと問題ありません。
以下は例題です。但し大きくなるので一部は割愛しており、2方法の差が分かるように書いています。

#include "hsp3utf.as" #include "hspext.as" sdim sample,2000,6 ;この次に配列sample(n)に中国語含むutf-8文字コードの ;例文を入れるのですがここでは省略します。 ;なお、sample(0)="5硼Boron,4Beryllium,59鐠Praseodymium,41鈮Niobium,69銩Thulium" ;のように入れると化ける漢字が出てきます。 ;"5硼Boron,4Beryllium,59鐠Praseodymium,41鈮Niobium,69銩Thulium"をあらかじめ ;utf-8文字コードのtext fileに保存してそこからnoteloadで読み込みsample(n)に ;入れると、この例題では化けませんが実際のプログラムではそれでも化ける場合があります。 *type1_save ;noteaddをするファイル保存 -->>化ける sdim type1_buf , 200 rcd_cnt =0 notesel type1_buf repeat 6 noteadd sample(cnt) , rcd_cnt : rcd_cnt +=1 loop dialog "txt",17 : if stat=0 : goto *type2_save notesave getpath(refstr,1) +".txt" *type2_save ;noteaddせずファイル保存 -->>化けない sdim type2_buf , 1200 repeat 6 type2_buf += sample(cnt) +"\n" loop dialog "txt",17 : if stat=0 : end notesel type2_buf notesave getpath(refstr,1) +".txt" stop
お手数ですがこの件もご検討いただければと思います。宜しくお願いいたします。



darumasan

リンク

2017/5/10(Wed) 21:43:57|NO.79666

No.79618のtext file書き出しで文字化けする件はNo.79467と同じ原因でした。
レコード途中の36byte目までを指定してstrmidで切り出すと最後の文字の途中の
Byteで切られてしまい、このレコードをnoteaddして行き最後にnotesaveすると
全体が化けるという状況になることが分かりました。
対応としてはstrmidで途中で切らずに、とにかく1レコードの全文字を扱うようにすると
OKになりました。
しかし文字途中のbyteで切るとなぜdialog文が描画画面や印刷にでてくるのか、
またtext全体が文字化けしてしまうのか、釈然としないものがありますが
一応コーディング上の対応策が出来ましたのでご報告いたします。



名無し

リンク

2017/5/13(Sat) 08:56:01|NO.79718

デバッグウインドウを表示する設定で以下のスクリプトを実行して
inputに何かを入力して終了するとデバッグウインドウが応答なしになります。
その後1分くらい放置してるとやっと消えます。

sdim s
input s

修正お願いします。



3k

リンク

2017/5/25(Thu) 00:01:11|NO.79968

開発お疲れ様です。
新しいHGIMG4を手元で弄りながら、一点気づいたことがあるのでご報告させていただきます。

■selquat、setquatについて
OpenHSPのソースコードからオブジェクトにクオータニオンが設定できる命令としてselquatやsetquatが存在し、値が設定できることも確認しているのですが、これらの命令で扱われるFV値が3次元までしか考慮されておらず、クオータニオンの4次元目が1で固定されており、これらクオータニオンの設定命令を通してしまうと正規化されていないクオータニオンになってしまうことがあるため、どう頑張っても正しい回転姿勢を設定できないことに気付きました。
確認したのはselquat+objsetfvまたはobjset3、setquatです。
objset3は名前の通り3要素なのでこの挙動に関しては特に気になりませんが、objsetfvはFV値というベクトルをとりつつ、PosやAngに最適化されているせいか3次元までしか扱わないようになっているようです。
この話題自体はDripさんも触れておられますが、クオータニオンはオイラー角による制御に比べ適切に扱えば任意の姿勢が表現でき、かつジンバルロックなどの問題もないため、私の方からも是非整備して頂ければと思い報告させていただきました。

お忙しいところ恐縮ですがご対応頂けると幸いです。



おにたま(管理人)

リンク

2017/5/25(Thu) 21:51:30|NO.79976

こちらで公開していたHSP3.5β5先行テスト版に、
一部修正を行なったバージョンをHSP3.5β5aとして公開する予定です。
HSP3Dishに関する機能は(hsp3jsを除いて)大きく変更ありませんが、64bit版、UTF-8版などの修正を行なっています。
色々なご報告とご意見ありがとうございます。
引き続き宜しくお願い致します。

以下のダウンロードか、OneDrive上で修正済みのファイルをご確認頂けます。
http://www.onionsoft.net/hsp/file/hsp35b5a.zip
https://onedrive.live.com/embed?cid=EC425522ED849DA7&resid=EC425522ED849DA7%211229&authkey=AB-pNztAqBp6BcU


>Drip さん

HGIMG3のOBJ_SORTの挙動につきまして、ご報告ありがとうございます。
これは、HGIMG3の計算に起因するバグでした。すみません。HSP3.5β5aでは修正しています。
環境によってモデル形状が崩れる件は、これとは関係ないと思いますが、引き続き調査していきたいと思います。

>砂時 計 さん

ご指摘ありがとうございます。
getobjname/setobjname命令は動作がおかしいですね。調査してみたいと思います。
あと、getcoli命令のパラメーターは、2Dの場合は半径で、3Dの場合は倍率指定でした。
3Dモデルの場合は、モデル全体を包む球体(BoundingSphere)同士で衝突を検出するようになっていて、それに対する倍率になっていました。
次のバージョンで、修正を行なってHGIMG3と同様の仕様に戻します。
その際に、サイズ指定にマイナス値を指定した場合に、従来の仕様で倍率指定できるような形にしたいと思います。

>darumasan さん
>tds12 さん

ご報告ありがとうございます。
お手数おかけしました。OneDriveの最新版で更新を反映しています。

>名無し さん

ご報告ありがとうございます。
デバッグウインドウが応答なしになる不具合、こちらでは確認できませんでした。
通常のランタイムでしょうか? 詳細な再現方法を教えて頂けると助かります。

>オ さん
>3k さん
ご報告ありがとうございます。
今後のバージョンで、修正を行なっていきたいと思います。



別の名無し

リンク

2017/5/25(Thu) 21:59:59|NO.79977

NO.79718さんの現象とは異なりますが、私の環境では"hsp3utf.as"をインクルードした状態でデバッグウィンドゥの「ソート」と「モジュール」の両方にチェックを入れると応答なしになります。



別の名無し

リンク

2017/5/25(Thu) 22:08:14|NO.79978

モジュール内を含むいくつかの変数が定義されているときに起こるみたいです。

↓以下で発生。
#include "hsp3utf.as
#module #deffunc setup a="あ return #global setup i="い u="う e="え o="お



Makoto

リンク

2017/5/26(Fri) 15:05:41|NO.79982

>デバッグウインドウが閉じない
http://hsp.tv/play/pforum.php?mode=pastwch&num=78104
上記のスレッドでも書いたのですが、私の環境での発生状況です。
OS はWindows 10 Home 64 bit、バージョン 1607・1703 両方とも発生します。

1.何も入力されていないスクリプトエディタを起動
2.F5 キーを押す → HSP のウインドウとデバッグウインドウが開く
3.スペースキーを押す
4.HSP のウインドウを閉じる
5.デバッグウインドウが残る → 20〜30 秒経過すると閉じる

といった具合です。
デバッグウインドウを使わなければ影響はないのですが、ちょっと不便ですね。

スクリプトの実行そのものには問題ないので、
エディタ側に何らかの問題があるのではという気がしますが。



darumasan

リンク

2017/5/27(Sat) 10:28:10|NO.79995

いろいろとお世話様です。β5aでNo.79467でお知らせした
Dialog文面が画面に出てきてしまう件はまだ直っていないようです。
元々utf-8の文字コードの途中Byteでstrmidで切り出す事はProgram不備かも
知れませんが文字数で切り出せないので止む無くこのようにしています。
例題を簡単にしてみました。

#include "hsp3utf.as" buff="12345ABCDEこれは画面表示文字例です。" dialog "HSPV3.5β5aのバグテスト用プログラム。\n画面にDialog文面が表示されてしまいます。",0 px=50:py=70 repeat 3 pos px,py mes strmid(buff,0,44);utf8文字コードの途中Byteで切り出す py+=25 loop stop
今は文字の途中Byteで切り出さないようにしていますがDialog文面が画面に出てくるのは
釈然としませんので解決できるようであれば宜しくお願い致します。



tds12

リンク

2017/5/27(Sat) 16:08:23|NO.79999

>Dialog文面が画面に出てきてしまう件はまだ直っていないようです。
修正しました。
http://dev.onionsoft.net/trac/openhsp/changeset/889

>文字数で切り出せないので止む無くこのようにしています。
http://hsp.tv/play/pforum.php?mode=all&num=79036
こちらはつかえませんか?



Yuuki

リンク

2017/5/29(Mon) 09:28:38|NO.80032

終了ボタンを押すとランタイムエラーが出ます。

onerror gosub *error mes 9/0 stop *error end//ここで終了できない return
よろしくお願いします。



darumasan

リンク

2017/5/29(Mon) 09:52:43|NO.80033

tds12さん
newcom VB...をやってみました。文字数で切り出せるので重宝です。
ありがとうございました。
修正版の方は後日正式なVersionが出てきてから全体で取り込みたいと思っています。
取り急ぎ御礼まで。



おにたま(管理人)

リンク

2017/5/29(Mon) 22:35:25|NO.80043

多くのご報告やご意見ありがとうございます。
現在の最新版をHSP3.5β5aとして正式に公開しました。
こちらで報告された既知の問題については、今後のバージョンで引き続き修正を行なっていきたいと思います。
引き続き宜しくお願い致します。
http://www.onionsoft.net/wp/archives/2024



砂時 計

リンク

2017/6/21(Wed) 21:26:18|NO.80343

遅ればせながら HSP3.5β5b HGIMG4 getcoli()に
正の値を指定するとその半径で判定できることを確認しました。
ありがとうございます。

gpboxは負のときは一致しないと衝突しないので
自分の元のサイズが0.0のようですね。



3k

リンク

2017/7/18(Tue) 00:58:31|NO.80651

開発お疲れ様です。
hgimg4を更に使ってみていくつか自分の中で要望とバグ報告(仕様かもですが)が出てきたので、度々のお願いになってしまい恐縮ですがこちらに書かせて頂きます。

■バグかも系
○gpcloneしたモデルに対してアニメーション再生が出来ない
gploadで読み込み、gpactでアニメーション可能なモデルをgpcloneした場合、クローンされたモデルへgpactを行ってもアニメーションが再生されません。
ヘルプにはアニメーションについては触れられていなかったためこの挙動が正しいのか判断できませんでした、こちら仕様でしょうか?
後述しますが現在一体ロードするのに 3〜 5秒程度かかるモデルを扱っており、クローンが使えない場合ロード時間が見過ごせないレベルにまで増えてしまうため、可能であればアニメーションも含めクローンしていただける仕様だと有り難いのですが…。

○複数マテリアルを持つモデルに対してgpgetmatが出来ない
gploadした複数マテリアルを持つモデルに対して、gpgetmatを行ってもただしくマテリアルIDが取得できません。(-1が返ってきます)
ただ、これに関しては”例え値が返ってきたとして、モデル内のどのマテリアルのIDなのか”という問題があるのである種正しいような気がしてますが…。
ここで問題としたいのは、複数マテリアルを持ったモデルに対して後からパラメータ設定も何もできない気がするのですが、これは仕様でしょうか?
個人的には”モデルが持つマテリアルの数”が取得できたり、”各マテリアルのマテリアルID”が取得できる方が自然に思えますし、特殊な表現をする場合には欠かせないように思います。

■要望系

○モデルのロード時間について
現在頂点数15000、ポリゴン数35000ほどのモデルを扱っています。(ちなみに、マテリアルも23個ほど、ボーンも190個ほどでまあまあ重いモデルです)
とりあえず試験用で作ったものなのでアニメーションも20Fほど(IKが扱えないためFK化して1Fごとにベイクしてあります)で出力し、gpbファイル化した後hgimg4で読み込めるところまではいったのですが、読み込みに 3〜 5秒ほどかかってしまいます。
アニメーションをなくしてもこれぐらいの速度なので問題は頂点かマテリアルかと思っていますが、そもそもランタイムでのロード時間をもう少し短くすることは可能でしょうか?
もしコンバート時に時間がかかる代わりにランタイムでの読み込みが早くなるオプション等あればご教授いただければと思います。
また、そもそもハイポリモデルなので頂点を減らしてローポリ化するべきかなとも思っていますが、hgimg4の想定しているコンバート周りでローポリ化はサポートされるでしょうか?(ついでなので、LODについてもお聞きしたいです)
実行環境によってポリゴン数が変えるといったことも検討したいので、プログラムの都合もありますが一つのgpbにハイポリとローポリが入っており、読み込み時に選択できればかなり有用な選択肢になると思っています。

○モデルのシェーダーのバリエーションについて
一部のモデルの一部の挙動の時のみ、特殊な表現(分かりやすい例えとしては、自機プレイヤーがダメージを受けた時の赤点滅、とかでしょうか)をするためにシェーダも独自にカスマイズしたものを用いようと考えていますが、現状のhgimg4ではそれを行うためには、
1. 通常のモデル
2. 特殊表現用のモデル
の2つを用意し、必要に応じて可視不可視を切り替えることになります。
描画が走らないのでGPU的には問題は少ないですが、ただでさえ実行速度が厳しいCPUで可視不可視を毎フレーム判定するのは少し気が引けますし、またこのモデルにアニメーションがついていた場合、アニメーションも同期させる必要があり有り体に言うと大変です。
そこで、この時だけはこのモデルのシェーダーの別にする、といった挙動ができると有り難いです。
また、シェーダー以外にもテクスチャなども後から変更できるような仕組みがあると、非常に多彩な表現に繋がると思いますので、こちらもご検討いただければと思います。

○全モデルで共通に扱えるシェーダー内パラメータを増やしてほしい
上記シェーダのバリエーションとも関連しますが、全モデルで共通で使えるシェーダー内パラメータを増やしていただくことは可能でしょうか?
現状ではディレクショナルライトのカラー・ディレクション(u_directionalLightColor、u_directionalLightDirection)、gameplay3dに入っているSCENE_AMBIENT_COLORが使えることは知っているのですが、逆にいうとこれら以外のパラメータはすべて自分で各モデルに設定する必要があります。
例えばフォグを表現として加えたいとなると、現状では自前のシェーダにフォグ機能をつける+プログラム側で、全てのモデルの全てのマテリアルでフォグのパラメータを設定する、という処理を書くことになります。
ここで、最初からhgimg4側に例えば”vec4 uShaderParameter0”のような、ユーザーが自由に使えるシェーダー内パラメータがあるだけでそれをフォグのパラメータと解釈して気軽にシェーダーの表現を拡張していけるのではないでしょうか。
また、この問題は現状複数マテリアルを持つモデルのマテリアルIDが取得できない件もあるため、あるとかなり有り難い機能だと思いますので、前向きに検討いただけると大変助かります。

○フレーム単位でアニメーションしてほしい
作っている最初の方は気づかなかったのですが、hgimg4でのモデルのアニメーションはフレーム時間ではなくどうやら実時間と連動しているらしいことに気付きました。
(これはタマネ珠音のサンプルでも再現でき、awaitの時間を変えるとFPSは下がるがアニメーション時間が変わりません)
ゲームとして作っているとフレーム単位で当たり判定の処理を書くことになるのですが、それはモデルのアニメーションと一致していないとバグのように見えてしまうので、モデルのアニメーションを固定フレーム単位(1回の更新で16msだけ進む、など)に切り替えることは可能でしょうか?

○ポストエフェクト用のシェーダを動的に切り替えたい
現状hgimg4で描画したレンダーターゲットのテクスチャを使って何かをする場合、描画対象のbufferを作る際に予めシェーダを指定して初期化し、bufferからcelputなどで描画する際に指定したシェーダが走る、という動作になっていると思います。
bufferは内部的にテクスチャの生成し直しなので重い処理であると思いなるべくリアルタイムでの使用は避けるように処理を書いているのですが、そうすると”特定の描画時にしか使わない特殊なエフェクト”系のバッファが大量に出来てしまいます。

例えばブルーム(川瀬式MGF)をしようとすると、描画パス的には
1. 3Dをフル解像度で描画
2. 1を高輝度部分を抽出しながら1/2解像度のバッファに描画 ←高輝度部分を抽出するので、独自シェーダ必要、1 buffer消費
3. 2をぼかす ←ぼかすため独自シェーダが必要、1 buffer消費
4. 2を更に高輝度部分を抽出しながら1/2(フル解像度から換算すると1/4)のバッファに描画 ←2とほぼおなじ処理だが、解像度が違うので 1 buffer消費
5. 4をぼかす ←3と同じシェーダだとしても、解像度が違うので 1 buffer消費
6. 3を1にブレンド
7. 5を1にブレンド
となります、ぼかし領域を広くしたかったらこれでもまだ段数が足りないと思ってます。

単純にプログラム内の見通しも悪くなりがちで(buffer用の定数が無用に増える)、またテクスチャも大量に生成するためメモリも心配しています。
今はまだPC版をターゲットとしているのでテクスチャリソースに関してはそこまでクリティカルでもないですが、スマートフォン環境を考えるとなるべくテクスチャ領域は解像度でグループ化して使いまわしたいと考えています。
この件、非常に困っているという訳ではないですが、将来的には何らかの形で要望に応えていただけると助かります。

個人的には
 A. celputの直前で使うシェーダを指定する
 B. シェーダーのバリエーションを切り替えらえられるようにする
あたりが有効策かなと思っています。

○マルチレンダーターゲット、レンダーターゲットのテクスチャフォーマット、デプステクスチャについて
hgimg4になりシェーダーが使えるようになったため非常に柔軟な描画表現を探索できるようになったため私個人としてはワクワクしていますが、一方で多様な表現を支えるための技術としてマルチレンダーターゲットや、テクスチャフォーマットが指定できないといった点は残念に思っています。
マルチレンダーターゲットが使える場合GBufferによる遅延シェーディングといった手法も開けてくるでしょうし、テクスチャフォーマットが変えられればHDR表現も扱えるようになります。
更にデプステクスチャも扱えるようになればデプスシャドウなど基本的な描画テクニックにも道が拓けてくるように思います。
プラットフォーム毎にサポートされる機能が異なるため一概に手を出しやすい機能ではありませんが、これらも視野に入れた機能があると大変有り難いです。


以上、大変長くなってしまいましたが、使ってみての要望でした。
それぞれのカテゴリで上から順に個人的な優先順で書かせて頂きました。
全部が全部というのは無理と勿論承知しておりますが、少しでも前向きに検討いただければ幸いです。



おにたま(管理人)

リンク

2017/7/19(Wed) 21:25:28|NO.80666

>3k さん

HGIMG4についてご報告ありがとうございます。
色々なご提案、参考にさせて頂きます。
マテリアルの設定や、シェーダーの切り替えに関しては、今後さらに機能を拡充していきたいと考えています。



Drip

リンク

2017/7/20(Thu) 19:11:44|NO.80674

こんにちは。度々失礼します。

これもよくわからない動作なのですが、hgimg3のevent_add系の命令が怪しいです。
event_add系の命令の位置によってほかのイベントが正常に動作しなくなるようです。
(下記2つのコメント行を全て解除したときの動作結果と解除しなかったときの動作結果を見比べてください。)

#include "hgimg3.as" hgini newevent e ;event_setefx e,256 //この行を消すと物体の座標が変わる(左) event_addpos e,0,-20,0 event_pos e,30,0,20,0,3 event_efx e,30,256 event_wait e,30 newevent f ;event_setefx f,256 //この行を消すと物体の角度が変わる(右) event_addang f,0,-1,0 event_ang f,30,0,1,0,3 event_efx f,30,256 event_wait f,30 addbox b,10,10 regobj a,b,0,e:setpos a,-5 regobj a,b,0,f:setpos a,5 repeat hgdraw hgsync 15 loop
event_add系の命令は上限・下限が設定できない関係上
滅多なことでは使うシーンがなく最近まで気付かなかったのですが、
いざ使ってみたらおかしなことになって困っています。
もし修正が可能であればevent_set系の命令同様に上限値・下限値の設定に対応されれば最高なのですが…

お忙しいところ失礼しました…



おにたま(管理人)

リンク

2017/7/21(Fri) 21:10:50|NO.80682

>Drip さん

HGIMG3についてのご報告ありがとうございます。
確かにちょっと動作がおかしいですね。
event_addposのように、イベントが実行されるたびに加算される系列のものは
event_waitのある場所に依存していて、event_setefxのような直接書き換えを行なうイベントと整合性が取れない場合があります。
ちょっと面倒ですが、


newevent e event_setefx e,256 //この行を消すと物体の座標が変わる(左) event_wait e,0 event_addpos e,0,-20,0 event_pos e,30,0,20,0,3 event_efx e,30,256 event_wait e,30

のように0フレームのevent_waitを入れることで、動作自体は正しくなると思います。
これを修正すると、過去のスクリプトとの互換性が取れなくなってしまう可能性があるため、どうするかは考える必要がありそうです。
上限値・下限値の設定は、1つの命令内では冗長になってしまうので、
最大値・最小値に丸めるための、event_maxpos、event_minposなどを追加する…ということであれば可能な気がします。



Drip

リンク

2017/7/24(Mon) 01:03:27|NO.80695

おにたまさん、ご返信有難うございます。

すみません!私はF1ヘルプの内容を鵜呑みにしていました。
私はてっきりF1ヘルプどおり、event_add系の命令は実行されたタイミングで
event_set系同様に1回だけ処理されるものとばかり思っていました。
(hgimg3のドキュメント内には毎フレーム処理の旨が後述されていましたがF1ヘルプにはありません。)
event_add系はevent_waitで1フレーム経過するたびに1回実行されていたのですね…

とすると、今回の問題も何となく納得が行きます。
event_waitの待機フレーム数が指定した値と若干異なっている時点で、
event_add系の移動量が数フレーム過剰に動作する可能性
(setposのように1フレームで完結するような処理を想定していない)を理解して
使えば問題なさそうです。F1ヘルプの方で毎フレーム影響受ける旨の記述が必要だと思います。
(逆に1フレームで完結する上限・下限が設定できるevent_add系が欲しい…;)

生成時に位置や角度をランダムにずらしたい…というようなイベント処理を書く場合は
event_dir命令で1フレームだけランダムに移動処理させるという面倒なことを
せざるを得ないのは大変面倒な部分です。(OBJ_MOVE値を与え、一旦非表示にし、
 dirで移動させ、OBJ_MOVE値を消し、表示する…という手間がかかります。)
hgimg3のevent_系の命令は処理速度にネックをかかえるHSPの弱点を見事に克服し
豊かな3Dエフェクト表現を可能にする素晴らしいシステムだと思います。
今後の3Dゲーム用の拡張機能にも是非取り入れていってもらいたい部分です。
ありがとうございました。



けもの

リンク

2017/7/29(Sat) 11:54:03|NO.80733

おにたま様

http://hsp.tv/play/pforum.php?mode=all&num=80731

上記URLのバグや、わけのわからない現象が出てますが非常に困ります。
特殊なことではなく、誰もが普通に組み込むことだと思いますので、
現象確認と対策をお願いしたいと思います。



MillkeySoftw

リンク

2017/8/15(Tue) 02:08:01|NO.80957

バグ・不具合ではなく要望なのですが、screen / buffer / bgscr での色情報を 32 bit にできるような設定がほしいです。

こちらは不具合なのか不明な昔からある現象なのですが hsed でファイルを開くときに前回開いたファイル情報が残った状態でファイルを開くダイアログ内にてディレクトリを移動すると、「このファイルはありません。作成しますか?」というダイアログが表示されてしまう。



Drip

リンク

2017/8/23(Wed) 03:10:02|NO.81075

こんにちは。

最新版のHSP3.5b5のDishと標準機能の互換性において気になっていることがあるのですが、
gfilter命令やgmulcolor命令等の仕様に問題がある気がします。
具体的には標準命令でサポートされていないのにエディタ上で表示が水色に変わる命令郡です。
従来では

#ifndef gfilter #define gfilter(%1) dummy=%1 //標準HSP用ダミー命令 #endif gfilter 1
などと書くことでDish,標準版の互換性を取って書くことができましたが、
HSP3.5bX以降ではこの方法が使えなくなり、これまでのソースコードとの互換性が完全に失われています。
(上記のソースコードはHSP3.4までならエラーしませんが、3.5ではエラーします。)
Dishと互換性を取って記述したい場合、このような命令郡は今後どのように扱えば良いのでしょうか。

追伸:
gmulcolorと言えば、3.5のHSP3Dish仕様ガイドにはgmulcolorの説明にて
>gcopy,celputなどでコピーされる画像に対して
と書かれているのに設定がgrotate命令でも反映されていたり、
gsquare命令では反映されていないなど、双方gmodeは反映されるのに
対応状況があやふやな部分がある気がします。



おにたま(管理人)

リンク

2017/9/8(Fri) 21:45:48|NO.81269

>MillkeySoftw さん

ご意見とご報告ありがとうございます。
色情報の32bit化は、確かにやりたいところですが、既存の(24bit)でvramにアクセスするスクリプトとの互換を取るようにするのがちょっと大変そうだと考えています。
24bitと32bitでそれぞれ画像アクセスのコードを作るのも冗長になってしまうので。


>Drip さん

ご意見ありがとうございます。
HSP3.5ではHSP3Dishで標準的に定義されているキーワードを予約キーワードとして扱っています。
これにより以下のキーワードは、標準のスクリプトであっても変数名・ラベル名として使用できなくなっています。

gfilter setreq getreq mmvol mmpan mtlist mtinfo devinfo devinfoi devprm
devcontrol httpload httpinfo gmulcolor setcls celputm

現在は少し標準命令とHSP3Dish命令の区別がつきにくく、不自由をおかけしますが、
将来のバージョンでは、これらの命令の一部を標準のスクリプトでも使用できるようにしたいと考えています。
標準命令をダミーで置き換える場合は、以下のような定義を追加して頂ければと思います。

#ifndef _HSP3DISH #undef gfilter #define gfilter(%1) dummy=%1 //標準HSP用ダミー命令 #endif gfilter 1

>gmulcolorと言えば、3.5のHSP3Dish仕様ガイドにはgmulcolorの説明にて
>>gcopy,celputなどでコピーされる画像に対して
>と書かれているのに設定がgrotate命令でも反映されていたり、
>gsquare命令では反映されていないなど、双方gmodeは反映されるのに
>対応状況があやふやな部分がある気がします。

ご指摘ありがとうございます。
マニュアルの方で補足していきたいと思います。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.78594への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2017(c) All rights reserved.