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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0909
おにたま(管理人)HSP3.7に向けたβテストについてのお願い(続)126解決


おにたま(管理人)

リンク

2022/9/9(Fri) 22:52:24|NO.97105

現在のβバージョンについて多くのご報告とご要望を頂き感謝致します。
HSP3.7β2でご指摘頂いた問題も含めて、対応できる部分についてβ版で改修を進めていきたいと考えています。

いくつかの不具合を修正したバージョンとしてHSP3.7β3版を近日中に公開する予定です。
以下、プレビュー版を先行して公開しておきますので、もし致命的な問題などあればお知らせください。

HSP3.7β3(フルセットプレビュー版)
https://www.onionsoft.net/hsp/file/hsp37b3.zip

HSP3.7β3(Windows版のみプレビュー版)
https://www.onionsoft.net/hsp/file/hsp37b3le.zip


2022/09/09 3.7 beta3 #packopt命令が編集中のソースにない時にアイコン埋め込みに失敗する不具合を修正 β2版で複数のdpmファイル読み込み時にファイルが正しく検索されない不具合を修正 [HSP3Dish][Windows] デバイスロストからの復帰時に画面クリアされない不具合を修正 β2版でbsave命令のオフセット指定が反映されていなかった不具合を修正 珠音ドットフレームワーク及び16ドットサイズ珠音素材を追加 [HGIMG4] 複数のオブジェクトに同一のイベントを適用した際に正しく動作しないことがある不具合を修正 [HGIMG4] screen命令使用時にテクスチャキャッシュがクリアされない不具合を修正
新規の機能やHGIMG4の改修を今後のバージョンで行っていきたいと考えています。
引き続きどうぞよろしくお願いいたします。



この記事に返信する


おにたま(管理人)

リンク

2022/9/9(Fri) 23:06:10|NO.97107

以前のスレッドへの返信になります。
http://hsp.tv/play/pforum.php?mode=all&num=94865

>zrs90(5さい) さん

hsed3le.exe(簡易エディタ)は、古いバージョンのHSPに付属していたもので余計な機能がなく軽快に使用できます。また音声読み上げを使用するユーザーもいるため敢えて残しています。
レガシーなメニューについては使用もできると思いますが、いずれ整理できればと考えています。

>あかねこ さん

dpmファイルについてのご報告ありがとうございます。
お手数ですが、HSP3.7β3で内容を修正しましたので、そちらで試してみて頂けますでしょうか。



法貴藤五郎

リンク

2022/9/10(Sat) 12:12:11|NO.97110

不具合修正、お疲れ様です。
動作を確認しましたが、β2以降の報告があったもので修正されていないものが多々あります。
気になった報告として
https://hsp.tv/play/pforum.php?mode=all&num=94865#96599
https://hsp.tv/play/pforum.php?mode=all&num=94865#96600
https://hsp.tv/play/pforum.php?mode=all&num=94865#96626
https://hsp.tv/play/pforum.php?mode=all&num=94865#96646
辺りは修正がまだのようです。
まだ見落としがあるかもしれませんので、β2以降の報告を確認した方がよいと思われます。



しまくろねこ

リンク

2022/9/10(Sat) 15:58:17|NO.97115

お疲れ様でございます。しまくろねこです。

修正ありがとうございます。

実行ファイル自動作成のアイコンが変わらない現象はβ3で直りました。
またAndroidでアプリ起動後にホーム画面等に画面をうつしてからアプリ画面に戻ると、バッファ内の画像が表示されない不具合も直っていました。

気になった点が1つあります。
Dish Helperで「リリース」でリリースビルドするとコンソールウィンドウに「BUILD SUCCESSFUL」が表示されないまま途中で、「終了しました。」と表示されてしまいます。
「ビルド」ではちゃんとコンソールに「BUILD SUCCESSFUL」が表示されています。



nennneko5787

リンク

2022/9/12(Mon) 12:11:44|NO.97123

お疲れさまです。
HSP3.7β3(Preview)とVisual Studio Codeを使用して実行ファイル自動生成すると、以下のエラーを吐いてしまいます。

# Execution command failed. Codepage mode : Auto selection ( Shift_JIS ) #HSP script preprocessor ver3.7beta2 / onion software 1997-2022(c) #Use file [hspdef.as] #Use file [dish_enhance.as] #Use file [dish_sysreq.as] #packfile generated. #HSP code generator ver3.7beta2 / onion software 1997-2022(c) #未初期化の変数があります(_device@m0) #未初期化の変数があります(buldver) #Code size (848) String data size (398) param size (16) #Vars (4) Labels (11) Modules (2) Libs (0) Plugins (2) #No error detected. (total 1524 bytes) DPM2 Manager 1.0 #File not found [c:\users\user\onedrive\ドキュメント\chocomint\;!runtime=hsp3dish.hrt]

ちなみに、HSP3.6だと、正常に実行ファイルを作成できます



しまくろねこ

リンク

2022/9/12(Mon) 17:54:34|NO.97124

> 気になった点が1つあります。
> Dish Helperで「リリース」でリリースビルドするとコンソールウィンドウに「BUILD SUCCESSFUL」が表示されないまま途中で、「終了しました。」と表示されてしまいます。
> 「ビルド」ではちゃんとコンソールに「BUILD SUCCESSFUL」が表示されています。

「リリース」で正常に「BUILD SUCCESSFUL」が表示されるようになりました。
この件については無視してください。
早とちりでした。すみません。



GENKI

リンク

2022/9/13(Tue) 23:35:37|NO.97127

マクロ__hspver__によるバージョン取得結果が正しくありません。β2のままになっています。

mes "" + strf("0x%4X", hspver) mes "" + strf("0x%4X", __hspver__)
結果

0x3703 0x3702



窓月らら

リンク

2022/9/14(Wed) 09:53:49|NO.97128

HSP3Dish
過去にAndroid 10-12あたりでダイアログがおかしい件ですが、
なぜかAndroid 13で直ることが判明しました。
またしてもOS側の不具合だったのか? 一先ずご報告です。



猪野

リンク

2022/9/14(Wed) 18:39:07|NO.97130

noteaddの追加するインデックスをnotefindで指定すると、
追加する文字列が無視されてnotefindの検索する文字列で書き込まれてしまいます。

buf="Key=Value" notesel buf noteadd "Key=NewValue",notefind("Key=",notefind_first),1 noteadd "書き込みたい文字列",notefind("検索する文字列",notefind_first),1 mes buf

>GENKIさん
マニュアルに記載はありませんが、
システム変数hspverはランタイムのバージョン番号であるのに対し、
標準定義マクロ__hspver__はコンパイラのバージョン番号であるため、
今回のようなhspcmp.dllが更新されていないバージョンアップでは
__hspver__のみ前回から据え置きになるのが正しいはずです。

HSPのバージョン番号の解釈?
https://hsp.tv/play/pforum.php?mode=pastwch&num=67832



しまくろねこ

リンク

2022/9/15(Thu) 07:30:19|NO.97132

β3公開お疲れ様です。

標準エディタで下記スクリプトをDebugウィドウ非表示で「F5」で何回か実行するとウィンドウがマウスに反応しなくなります。
「コンパイル+実行」で実行、またはDebugウィンドウを表示するようにして「F5」で実行すると現象は起きません。

#include "hsp3dish.as" screen 0, 500, 500 repeat await 16 loop



youdai

リンク

2022/9/15(Thu) 22:00:24|NO.97133

HSP3.6beta3のプレビュー版に関しての不具合の報告と、リクエストについて書きます。

●GPB convert ver 0.8の.material出力の不具合について

HSPスクリプトエディタの「HGIMG4ツールを開く」から「GPB convert ver 0.8」を使用してGPBと.materialファイルを出力する時に、変換元のFBXのマテリアルの表面色に「0.0, 0.0, 0.0」という色があると、.materialファイル内のcoloredのu_diffuseColorが出力されず、無指定のままになってしまっています。

その状態でHGIMG4内でそのオブジェクトをクローンするとそのマテリアル色は正しく「0.0, 0.0, 0.0」で反映されず、異なる色で画面上に出力されてしまいます。

対処方法としてはユーザーが自ら.materialファイルをチェックして、

u_diffuseColor = 0.0, 0.0, 0.0, 1.0

を当該のマテリアルに対して記述すればクローンに対しても正しく反映されます。

FBX出力は、安定版のBlender 2.83.20LTSと最新版のBlender 3.3.0の両方で試してみましたが、結果は同じでした。

以下、その.materialファイルです。

修正前


material colored { u_worldViewProjectionMatrix = WORLD_VIEW_PROJECTION_MATRIX renderState { cullFace = true depthTest = true } technique { pass { vertexShader = res/shaders/colored.vert fragmentShader = res/shaders/colored.frag } } } material mat_0 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_diffuseColor = 0.8, 0.648392, 0.470028, 1 u_specularExponent = 36 } material mat_1 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_specularExponent = 25 technique { pass { defines = SPECULAR } } } material mat_2 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_diffuseColor = 0.8, 0.8, 0.8, 1 u_specularExponent = 25 technique { pass { defines = SPECULAR } } } material mat_3 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_diffuseColor = 0.8, 0.0713375, 0, 1 u_specularExponent = 25 } material mat_4 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_diffuseColor = 0.8, 0.615213, 0.655918, 1 u_specularExponent = 25 } material mat_5 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_cameraPosition = CAMERA_WORLD_POSITION u_diffuseColor = 0.517334, 0.326771, 0.135749, 1 u_inverseTransposeWorldViewMatrix = INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX u_specularExponent = 25 }

上記の通り、本来出力されるはずのmat_1のu_diffuseColor = 0.0, 0.0, 0.0, 1.0がありません。

修正後


material colored { u_worldViewProjectionMatrix = WORLD_VIEW_PROJECTION_MATRIX renderState { cullFace = true depthTest = true } technique { pass { vertexShader = res/shaders/colored.vert fragmentShader = res/shaders/colored.frag } } } material mat_0 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_diffuseColor = 0.8, 0.648392, 0.470028, 1 u_specularExponent = 36 } material mat_1 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_diffuseColor = 0.0, 0.0, 0.0, 1 u_specularExponent = 25 technique { pass { defines = SPECULAR } } } material mat_2 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_diffuseColor = 0.8, 0.8, 0.8, 1 u_specularExponent = 25 technique { pass { defines = SPECULAR } } } material mat_3 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_diffuseColor = 0.8, 0.0713375, 0, 1 u_specularExponent = 25 } material mat_4 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_diffuseColor = 0.8, 0.615213, 0.655918, 1 u_specularExponent = 25 } material mat_5 : colored { u_ambientColor = 0.0508761, 0.0508761, 0.0508761 u_cameraPosition = CAMERA_WORLD_POSITION u_diffuseColor = 0.517334, 0.326771, 0.135749, 1 u_inverseTransposeWorldViewMatrix = INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX u_specularExponent = 25 }

上記のように修正すると正常にクローンされます。

●event_colorとevent_setcolorとevent_addcolorが欲しい

event系にライト系のcolor系のevent_color、event_setcolor、event_addcolorがありませんので、これらが欲しいと思いました。
これがあれば、光源の光源色をイベントで動的に管理できるようになります。

他にもライト専用のノードのパラメータに関するものについては、eventから制御できるものがありません。
例えば、gplightのrange、inner、outerが制御できるeventが欲しいと思いました。



窓月らら

リンク

2022/9/19(Mon) 11:38:39|NO.97139

仕様なのかバグなのかわかりかねますが、
長い文字列をmesで表示しようとすると改行が入るようです。
strmid を使っても同じでした。

こちらのスレをご覧ください。
https://hsp.tv/play/pforum.php?mode=all&num=97134



しまくろねこ

リンク

2022/9/20(Tue) 21:55:14|NO.97146

私個人あてにDishの質問メールが来まして、その過程で不具合なのか仕様なのか分からない現象がでましたので報告しておきます。

通常のWindows用スクリプトで、使用しているPCの解像度以上のウィンドウをscreen命令で表示させることができますが、hsp3dishをインクルードすると、screen命令でPCの解像度以上のウィンドウを表示しようとしても解像度以上のウィンドウが作成されない現象が起こります。

私のPCの解像度は「1920x1080」です。

下記のソースを実行するとタイトルバーに「width=1940」と表示され、解像度一杯の1920(多分)x480のウィンドウが表示されます。
「#include "hsp3dish.as"」をコメントアウトすると「width=3006」と表示され、解像度以上の3000(多分)x480のウィンドウが表示されます。

#include "hsp3dish.as" // コメントアウトすると、3000x480のウィンドウが表示される screen 0, 3000, 480 title "width=" + ginfo_sizex // 「ginfo_sx」だと何故か3000が返ってくるので、あえて「ginfo_sizex」 stop



雪月夜

リンク

2022/9/24(Sat) 17:32:19|NO.97153

不具合報告です。
#defcfuncを引数なしで実行するとエラーが発生してしまいます。

#define order(%1=1) _order %1 #define func(%1=1) _func %1 #module #deffunc _order double id mes"order:"+id return #defcfunc _func double m_id return m_id #global order 2 ;引数あり order ;引数なし mes"func:"+func(2) ;引数あり mes"func:"+func() ;引数なし



Drip

リンク

2022/9/24(Sat) 18:16:33|NO.97155

雪月夜さん

こんにちは。
実際のところこれはエラーすることが問題ではなく
>mes"func:"+func(2) ;引数あり
でエラーしないことのほうが問題に思えるのですが…^^;
#defineで指定するとき、引数をカッコで囲ってはいけないルールですので、

mes "func:"+func 2
と書くのが正解ですがこう書くと当然エラーします。
エラーしないようにするにはリファレンスに従って次のように筆記してください。

#define ctype func(%1=1) _func(%1) #module #defcfunc _func double m_id return m_id #global mes "func:"+func(2) ;引数あり mes "func:"+func() ;引数なし
ctypeを忘れないようにしてください。



雪月夜

リンク

2022/9/24(Sat) 19:45:32|NO.97156

おお、ctypeを付ければ良かったんですね。
Dripさん有難うございます!



GENKI

リンク

2022/9/24(Sat) 21:31:58|NO.97157

dmmstopがHDLの説明通りの挙動になっていません。

> p1を省略するかマイナス値を指定した場合には、再生中のすべてのサウンドを停止します。

と書かれていますが、引数を省略すると0が指定されるようです。サウンドID=0以外の音が停止されません。
確認用にサンプルを書いてみました。


#include "hspogg.as" fname = dir_tv + "se_bom.wav" dmmini id = 10 dmmload fname, id ; 再生ボタン button gosub "PLAY", *l_play button gosub "STOP", *l_stop stop ; 再生ボタン *l_play dmmplay id return ; 停止ボタン *l_stop dmmstop ;引数を省略すると -1(再生中のすべてのサウンドを停止)になるはず return



>> 猪野 さん NO.97130
ご指摘ありがとうございます。
同じようなのが2つあるなーと少し不思議には思ってましたが、そういうことだったんですね。



GENKI

リンク

2022/9/25(Sun) 00:33:04|NO.97159

GPPSET_LINEAR_FACTOR と GPPSET_ANGULAR_FACTORで動きを制限した物体が、他の物理設定を行った物体をすり抜けてしまいます。


#include "hgimg4.as" gpreset setcls CLSMODE_SOLID, $808080 setpos GPOBJ_CAMERA, 0, 3, 10 gplookat GPOBJ_CAMERA, 0, 0.3, 0 ; 床を作成 gpfloor id_floor, 30,30, $404040 setpos id_floor, 0, 0, 0 gppbind id_floor, 0 ; マットを作成 ; 「if 0」を「if 1」に書き換えるとシーソーを支える床が作れます。 if 0 { gpbox id_mat, 0.5, $0055AA setscale id_mat, 30, 0.1, 30 setpos id_mat, 0, 0.05, 0 gppbind id_mat, 1e10 ; gppset id_mat, GPPSET_KINEMATIC, 1 ; すり抜けない ; gppbind id_mat, 0 ; すり抜ける ; gppset id_mat, GPPSET_LINEAR_FACTOR, 0,0,0 ; すり抜ける } ; シーソーを作成 gptexmat id_texmat, "res/qbox.png" gpbox id_s, 1, -1, id_texmat setscale id_s, 10, 0.2, 1 setpos id_s, 0, 1, 0 gppbind id_s, 1 gppset id_s, GPPSET_LINEAR_FACTOR, 0,0,0 ; 移動を固定 gppset id_s, GPPSET_ANGULAR_FACTOR, 0,0,1 ; 回転を固定 ; 箱ノードを追加 gpbox id_box, 0.5, -1, id_texmat setpos id_box, 0, 3, 0 gppbind id_box, 1, 0.5 gppset id_box, GPPSET_LINEAR_FACTOR, 1,1,0 ; 移動を固定 gppset id_box, GPPSET_ANGULAR_FACTOR, 1,0,1 ; 回転を固定 *main stick key,15 if key&128 : end ; カーソルキーで箱を動かす if key&1 : gppapply id_box,GPPAPPLY_IMPULSE, -0.1, 0, 0 if key&4 : gppapply id_box,GPPAPPLY_IMPULSE, 0.1, 0, 0 getpos id_box,dx,dy,dz gplookat GPOBJ_CAMERA, dx,dy,dz ; カメラから指定した座標を見る ; 描画 redraw 0 ; 描画開始 gpdraw ; シーンの描画 redraw 1 ; 描画終了 await 1000/60 ; 待ち時間 goto *main

箱をカーソルキーで動かすと、シーソーを動かせます。
シーソーは床に突き刺さりますが、箱は床の上に乗ります。
シーソーも床の位置で止まるはずですが、すり抜けてしまっています。

「マットを作成」の「if 0」を「if 1」に書き換えて実行すると、想定している本来の動きが確認できます。
シーソーは、Kinematic設定を有効にした床はすり抜けませんが、質量0の静的剛体やGPPSET_LINEAR_FACTORで移動を完全に止めた床はすり抜けてしまいます。



さか

リンク

2022/9/25(Sun) 00:40:59|NO.97160

コンパイルして、webで実行すると以下の不具合があります。もしかしたstrfは未対応?
・最後の文字が切れる
・%02sなのに前ゼロがつかない(空白2文字となる)


#include "hsp3dish.as" objsize ginfo_winx, 100 redraw 0 button "更新", *hyoji redraw 1 stop *hyoji redraw 0 pos 0,150 tm = strf("%4s/%02s/%02s %s %02s:%02s:%02s", gettime(0),gettime(1),gettime(3), gettime(2), gettime(4),gettime(5),gettime(6) ) mes ""+tm redraw 1 stop

html対応のような新しい機能は素晴らしいのですが、皆さんの報告のように不具合の解消を
希望します。おかしな動きしてもhspだから仕方ないかとまず思っちゃいます。



GENKI

リンク

2022/9/25(Sun) 00:41:09|NO.97161

書いてから気が付いたのですが、シーソーの移動を完全に固定しなければすり抜けはなくなるようです。

gppset id_s, GPPSET_LINEAR_FACTOR, 0, 0, 1e-10 ; 移動を固定



はじめ

リンク

2022/9/26(Mon) 02:11:21|NO.97162

2次元配列を使うと、Android スマホ上でアプリがクラッシュ
してしまいます。
HSP3.7β3(フルセットプレビュー版)
を使っています。
何か修正すべき点などあれば、教えて頂きたいです。
よろしくお願いします。


#include "hsp3dish.as" dim g,4,3 // 配列の宣言 x=4 y=3 g(0,0)=0,0, 50,50 g(0,1)=50,50, 100,100 g(0,2)=100,100, 150,150 while(1) redraw 0 color 100,100,100 : boxf // 3つの正方形を描く color 255,0,0 : boxf 0,0, 50,50 color 0,255,0 : boxf 50,50, 100,100 color 0,0,255 : boxf 100,100, 150,150 // for i,0,3 // boxf g(0,i),g(1,i), g(2,i),g(3,i) // next color 0,255,0 // 文字列の色 pos 10,10 // 文字列の位置 mes ""+f redraw 1 f++ await 1000/60 // 60 fps wend



はじめ

リンク

2022/9/27(Tue) 00:18:49|NO.97163

反応がないので、普通の配列っぽく使って対応したいと思います。
お騒がせしました。


#include "hsp3dish.as" dim g,4*3 // 配列の宣言 x=4 y=3 g(0,0)=0,0, 50,50, 50,50, 100,100, 100,100, 150,150 while(1) redraw 0 color 100,100,100 : boxf // 3つの正方形を描く // color 255,0,0 : boxf 0,0, 50,50 // color 0,255,0 : boxf 50,50, 100,100 // color 0,0,255 : boxf 100,100, 150,150 for i,0,3 if(i==0){ color 255,0,0 } else:if(i==1){ color 0,255,0 } else:if(i==2){ color 0,0,255 } // boxf g(0,i),g(1,i), g(2,i),g(3,i) boxf g(0+i*4),g(1+i*4), g(2+i*4),g(3+i*4) next color 0,255,0 // 文字列の色 pos 10,10 // 文字列の位置 mes ""+f redraw 1 f++ await 1000/60 // 60 fps wend



ちゃこ

リンク

2022/9/29(Thu) 00:58:07|NO.97165

不具合修正お疲れ様です。
以前からの不具合ではあるのですが、HGIMG4関連で下記二点、報告させていただきます
(既知かどうか一応の検索はかけたのですが、見落としで重複するものでしたら申し訳ありません)


1.gpmatprm16の挙動について
gpmatprm16で16要素までの配列をシェーダーに渡せるようになっているはずなのですが、
シェーダー側で受け取った値を確認すると、異なる値を持っているようです。
下記は-0.7〜0.8までの配列を、
上段にgpmatprm16で値を送ったもの、下段にgpmatprm4を4つ送ったものです。

[スクリプトファイル]
#include "HGIMG4.as"
screen 0,340,440 gpreset gpusershader "res/shaders/smpl300s.vert","res/shaders/mat16.frag","" ;今回使用する値は-0.7〜0.8の16段階を実数値 m16=-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8 repeat 2,1 buffer cnt,320,200,screen_offscreen+screen_usergcopy gpgetmat mat,cnt,1 gpmatprm4 mat,"v1",m16( 0),m16( 1),m16( 2),m16( 3) gpmatprm4 mat,"v2",m16( 4),m16( 5),m16( 6),m16( 7) gpmatprm4 mat,"v3",m16( 8),m16( 9),m16(10),m16(11) gpmatprm4 mat,"v4",m16(12),m16(13),m16(14),m16(15) gpmatprm16 mat,"m1",m16,16 gpmatprm1 mat,"FLG_Mat4OrVec4",double(cnt-1) loop gsel 0 *main redraw 0 color 0,0,0 pos 0,0:mes "gpmatprm16(上)とgpmatprm4を四つ(下)" pos 10,120 : mes "0" pos 10,320 : mes "0" pos 20, 30 : gcopy 1,0,0,320,200 pos 20,232 : gcopy 2,0,0,320,200 color 100,255,200 line 20,130,340,130 line 20,330,340,330 redraw 1 stick key : if key&128 : end await 1000/60 goto *main

[頂点シェーダ:smpl300s.vert]
#version 300 es
uniform mat4 u_projectionMatrix; in vec4 a_position; in vec2 a_texCoord; out vec2 v_texCoord; void main(){ gl_Position = u_projectionMatrix * a_position; v_texCoord = a_texCoord; }

[フラグメントシェーダ:mat16.frag]
#version 300 es
#if defined(OPENGL_ES) || defined(GL_ES) #ifdef GL_FRAGMENT_PRECISION_HIGH precision highp float; #else precision mediump float; #endif #endif in vec2 v_texCoord; out vec4 color; uniform mat4 m1;//gpmatprm16で直接指定したmat4 uniform vec4 v1;//gpmatprm4で指定したvec4(あとで4つをまとめる) uniform vec4 v2; uniform vec4 v3; uniform vec4 v4; uniform float FLG_Mat4OrVec4; void main(){ mat4 m2=mat4(v1,v2,v3,v4); //gpmatprm4で指定したvec4四つをmat4に格納 vec2 Coord = vec2(v_texCoord.x*16.0,v_texCoord.y*2.0-1.0); //座標を(0.0~16.0,-1.0~1.0)へ引き延ばす float XID = floor(Coord.x); //X座標から参照すべきID(0~15)を算出 float VAL1 = m1[int(floor(XID/4.0))][int(floor(mod(XID,4.0)))]; //m1の参照すべきIDにおける値 float FLG_DRAW1 = step(abs(Coord.y),abs(VAL1)) * max(0.0,sign(VAL1*Coord.y)); //abs(Coord.y)<=abs(VAL1) かつ VAL1*Coord.y>=0.0 float VAL2 = m2[int(floor(XID/4.0))][int(floor(mod(XID,4.0)))]; //m2の参照すべきIDにおける値 float FLG_DRAW2 = step(abs(Coord.y),abs(VAL2)) * max(0.0,sign(VAL2*Coord.y)); //abs(Coord.y)<=abs(VAL2) かつ VAL2*Coord.y>=0.0 color.rgb = vec3(0.0,1.0,1.0) * FLG_DRAW1 * (1.0-FLG_Mat4OrVec4) + vec3(1.0,0.0,1.0) * FLG_DRAW2 * FLG_Mat4OrVec4; color.a = 1.0; }



2.追加のラベル定義と、シェーダのversion directiveの併用について
不具合というか要望なのですが、GLSL ES 3.0でシェーダを記述した際等において、
各シェーダの1行目にバージョンの記述をする必要があるところですが、
追加のラベル定義を行うと別途1行目に定義が組み込まれるためか、エラーが出てしまいます。
gpusermatおよびgpusershaderでの追加のラベル定義に加え、
gpscrmatでtextured.vertやsprite.vertを読み込む際にも同様の事態が起こっているかと思いますので、
version directiveを記述した場合の1行目を1行目としてキープしていただくことはできませんでしょうか。

[スクリプトファイル]
#include "HGIMG4.as"
screen 0,400,400 gpreset ;gpusermat mat1,"res/shaders/smpl300.vert","res/shaders/smpl300.frag","" ;↑こっち(ラベルが無い方)だとエラーが出ない gpusermat mat1,"res/shaders/smpl300.vert","res/shaders/smpl300.frag","testLabel" ;↑ラベルを有効にするとエラーが出る ;[version directive must be first statement and may not be repeated] gpgetlog log dialog log gpplate obj1,80,80,,mat1 *main redraw 0 gpdraw redraw 1 stick key : if key&128 : end await 1000/60 goto *main

[頂点シェーダ:smpl300.vert]
#version 300 es
uniform mat4 u_worldViewProjectionMatrix; in vec4 a_position; in vec2 a_texCoord; out vec2 v_texCoord; void main(){ gl_Position = u_worldViewProjectionMatrix * a_position; v_texCoord = a_texCoord; }

[フラグメントシェーダ:smpl300.frag]
#version 300 es
#if defined(OPENGL_ES) || defined(GL_ES) #ifdef GL_FRAGMENT_PRECISION_HIGH precision highp float; #else precision mediump float; #endif #endif in vec2 v_texCoord; out vec4 color; void main(){ color=vec4(v_texCoord.x,v_texCoord.y,0.5,1.0); }



youdai

リンク

2022/9/29(Thu) 16:31:08|NO.97166

>ちゃこ さんへ

OpenGL版のHGIMG4は、マニュアルには「OpenGLバージョン3.1以上がインストールされた環境で動作する」とありますが、
内部のシェーダー的にはOpenGL2.x系のようです。
なのでinとoutではなく、attributeとvaryingを使う必要があります。
その他、仕様も2.x系なのだと思います。
だと思うのですが、もしかして3.x系の命令も使えるのでしょうか?



ちゃこ

リンク

2022/9/29(Thu) 18:12:26|NO.97167

>youdaiさん

私自身知見が乏しいので穴だらけのお答えとなりますが、
おっしゃる通り、shadersフォルダ内に格納されているシェーダ群は
いずれも2.x系で記述されているのでattributeとvaryingが使用されています。
ですが、GPUさえ対応していれば、自作シェーダを読み込ませたり、
なんなら標準で読み込まれるシェーダも3.0系に書き換えてやれば使用できています
(gl_VertexIDを重宝してます)。



youdai

リンク

2022/9/30(Fri) 12:53:31|NO.97169

>なんなら標準で読み込まれるシェーダも3.0系に書き換えてやれば使用できています
コメントありがとうございます。
質問にお答えできなくてすみません。
自分も3.x系をやってみようと思います。



法貴藤五郎

リンク

2022/10/4(Tue) 19:12:31|NO.97178

.materialファイルのdefinesにDIRECTIONAL_LIGHT_COUNTが定義されているモデルは
レンダリングバッファからコピーする際gmode1だとモデルが切り抜かれます。
バグなら修正、仕様ならドキュメントに記載していただけるとありがたいです。

あとモデルのdefinesに定義するSPOT_LIGHT_COUNTとPOINT_LIGHT_COUNTって隠しパラメータでしょうか?
隠しパラメータでないなら、ドキュメントに記載をお願いします。
(私のドキュメントの見落としならすいません)

確認用コード

// sample/hgimg4に保存して実行してください #include "hgimg4.as" gpreset screen 0, 640, 480, 0 buffer 1, 640, 480, screen_offscreen setcls CLSMODE_SOLID, $00F0F0 gpload id_model,"res/duck" gpfloor id_floor, 80, 80, $808080 setpos id_floor, 0.0, 0.0, 0.0 setpos GPOBJ_CAMERA, 0.0, 2.0, -5.0 gplookat GPOBJ_CAMERA, 0.0, 0.0, 0.0 repeat stick key,15 if key&128 : end addang id_model, 0.0, 0.02, 0.0 gsel 1 redraw 0 gpdraw redraw 1 gsel 0 redraw 0 pos 0, 0 gmode 1, 640, 480, 0 // <=ここ gcopy 1 redraw 1 await 16 loop



おにたま(管理人)

リンク

2022/10/6(Thu) 23:29:52|NO.97180

皆様、色々なご報告ありがとうございます。
今後のβ版などで対応していきたいと思います。
以下、いくつか返信させて頂きます。

>しまくろねこ さん

screen命令で反応がなくなる(フリーズ?)現象は、提示頂いたスクリプトでこちらではまだ確認できていません。
原因などわかったら対応させて頂きます。
また、HSP3DishでPCの解像度以上のウィンドウが生成できない件については、おそらくグラフィックのドライバー上での仕様かと思います。

>猪野 さん

notefind関数使用時にパラメーターが正しく解釈されない不具合は、次回の更新で修正させて頂きます。ご報告ありがとうございます。

>GENKI さん

HGIMG4の物理挙動についてのご報告ありがとうございます。
bulletの仕様かもしれませんが、原因などわかれば対応していきたいと思います。
dmmstop命令についてヘルプの方を修正したいと思います。
細かい部分の検証とても助かります。

>さか さん

ご報告ありがとうございます。
確認して対応していきたいと思います。

>はじめ さん

ご報告ありがとうございます。
お手数おかけして申し訳ありません、確認したいと思います。

>youdai さん

ご指摘ありがとうございます。
GPB converterの方修正していきたいと思います。
eventの要望についても検討させて頂きます。

>ちゃこ さん

ご指摘と要望ありがとうございます。
次回の更新で修正したいと思います。
GLSL ES 3.0の記述はできるように対応させて頂きます。
ただし、androidやiOSでの動作はデバイス依存になるかと思います。

>法貴藤五郎 さん

ご報告ありがとうございます。
レンダリングバッファのコピー時に抜けてしまうのは不具合として修正していきたいと思います。
提示頂いたコードで当面対応する方法としては、「duck.material」ファイルのmaterial textured内のu_worldViewProjectionMatrix定義の下に以下の行を追加することでαチャンネルが抜けなくなるかと思います。

u_modulateAlpha = 1.0
マテリアル内のdefineでSPOT_LIGHT_COUNTとPOINT_LIGHT_COUNTは今後キュメントに記載をさせて頂きます。
基本的には、DIRECTIONAL_LIGHT_COUNTの部分がライトの設定に応じて内部で自動的に書き換えられますので、自身で記述する必要はありません。



よなぷー

リンク

2022/10/8(Sat) 17:53:25|NO.97181

最新バージョン3.7b3でも、メモリストリーム機能(memfile)がおかしいです。
音楽が再生されないのは依然として変わらず、更に今まで再生できた画像が再生されなくなってしまいました。
よろしくお願いします!(ToT)



しまくろねこ(本物)

リンク

2022/10/8(Sat) 20:10:15|NO.97182

> おにたま(管理人)さん

Dish版のscreen命令で反応がなくなる現象についてですが、TOMATOさんが原因を突き止めてくれたみたいです。

https://hsp.tv/play/pforum.php?mode=all&num=96264

> > 以下のソースを「F5」で実行すると「×」ボタン等のクリックが一切効かないときがあります。
> HSP3Dish版のウィンドウ周りの内部管理が通常版HSPと異なっており、
> screen命令でウィンドウを作り直すと、新しく作り直す前に以前のウィンドウを破棄する処理が走ります。
> 破棄するため一時的にプロセスが持つウィンドウが0個になるタイミングが発生します。
> どうやら、この0個の状態になるのがダメっぽいです。
> (通常版HSPだと同じIDのscreenは破棄せず再利用されるため、原理的にウィンドウが0個になることが起きない)
>
> プロセス上のウィンドウの数が0個にならないように、
> DestroyWindowの呼び出し位置を変更すると直るようです。
> http://dev.onionsoft.net/trac/openhsp/browser/trunk/hsp3dish/win32/hsp3dish.cpp#L920

917 hsp3dish_drawoff(); 918 if (m_hWnd != NULL) { 919 hgio_term(); 920 DestroyWindow(m_hWnd); // ★ DestroyWindow() 削除( m_hWnd の値もどこかへ退避しておく) 921 m_hWnd = NULL; 922 } 936 #ifdef USE_OBAQ 937 hsp3typeinit_dw_restart(code_gettypeinfo(TYPE_USERDEF)); 938 #endif // ★ このあたりにでも DestroyWindow() を持ってくる(退避したウィンドウハンドルの値を使う) 939 MsgWaitForMultipleObjects(0, NULL, FALSE, 10, QS_ALLINPUT); 940 //hgio_rebuild(hsp_wx, hsp_wy, hsp_fullscr, m_hWnd); 941 hspctx->runmode = RUNMODE_RUN; 942 break;
> あと、今回の件は関係ないですが、ウィンドウクラスの登録は1回のみで良さそう。
> (screen命令を呼ぶ都度クラス登録し直しますが、2回目以降 RegisterClass() がエラーを返してます)
> http://dev.onionsoft.net/trac/openhsp/browser/trunk/hsp3dish/win32/hsp3dish.cpp#L552



GENKI

リンク

2022/10/8(Sat) 21:52:40|NO.97183

>> おにたまさま
ヘルプの修正ありがとうございます。
挙動については、bulletの仕様ならそのままでいいと思っています。
修正することでどこかにしわ寄せが来るかもしれませんし。



hgimg4のgppraytestについて報告です。
まれにレイがすり抜けてしまうことがあります。

gpfloor、gpplateで作成した面や、薄いgpboxですり抜けが発生します。
厚みがないgpfloorは、そういうこともあるかなとは思うのですが厚さが存在するgpboxでも同様の現象が発生しています。

#include "hgimg4.as" gpreset ; ヌルノード gpnull id_null setang id_null, -M_PI/2.0, 0, 0 setpos id_null, 0, 1.30 ,0 ; 床ノード(物理) ; gpfloorを使用する場合 gpfloor id_floor, 40,40, -1 ; gpplateを使用する場合 ;gpplate id_floor, 40,40,-1 ;setang id_floor, -M_PI/2 ; gpboxを使用する場合 ;gpbox id_floor, 1, -1, id_texmat ; 厚みがある床 ;setscale id_floor, 40, 0.01, 30 ; 検出のための物理設定 gppbind id_floor, 0 redraw 0 color pos 8,8 mes "ヌルノード:" + id_null mes "床ノード :" + id_floor gppraytest objid, id_null mes "衝突したオブジェクト:" + objid ; x方向に移動 repeat 20 setpos id_null, 1.1234567*cnt, 1.30 ,0 gppraytest objid, id_null mes "衝突したオブジェクト:" + objid loop redraw 1
同じ高さで水平移行しているだけなので全ての結果で衝突検出するはずですが、実際には衝突検出したりしなかったりしています。
gpfloorをgpboxのモデルに置き換えても同じ現象が発生します。
gpboxの厚さを厚くすることでこの問題を回避することはできますが、gpfloor、gpplateでの使用結果は信用できない状態です。



祐実

リンク

2022/10/9(Sun) 09:55:09|NO.97184

#deffuncの警告

#deffunc xxx val pr2
警告:古いdeffunc表記があります 行3.[val]

これは今後使用不可なのでしょうか?
プログラミングマニュアル(hspprog.htm)には記載されてないのですが



莉琉

リンク

2022/10/11(Tue) 06:04:22|NO.97187

既に別スレッドで書き込んだことですが、こちらにも書かせていただきます。

現在、HGIMG4を用いてゲーム制作をしているのですが、ある程度の画像をcelloadで読み込んでいると、
「画像ファイルがありません」と明らかにファイル名を間違えていないのにエラーが出てしまいます。
確認をしたところ、


#include "hgimg4dx.as" gpreset repeat 200 celload "画像.png",cnt+1 celdiv cnt+1, 0, 0, 128, 128 loop

上記のプログラムで、cntが128の所でエラー落ちしてしまいます。
HGIMG4をインクルードしない場合はこのエラーは発生しないので、HGIMG4特有の物だと思います。
出来れば上限を無くしていただきたいのですが……。



おにたま(管理人)

リンク

2022/10/11(Tue) 20:33:32|NO.97188

>よなぷー さん

memfileの機能については、次のβ4で修正しています。
現時点での最新の修正内容はこちらで確認頂けます。
https://dev.onionsoft.net/trac/openhsp/browser/trunk/package/win32/doclib/history.txt

正式のバージョンではありませんが、現在進行中の最新版をお試し頂く場合は、
OpenHSP SVNのページ一番下にある「異なるフォーマットでダウンロード:」のZip書庫から取得することができます。
https://dev.onionsoft.net/trac/openhsp/browser/trunk/package/win32

>しまくろねこ さん
>TOMATO さん

調査頂きありがとうございます。
こちら参考にさせて頂きます。

>GENKI さん

ご報告ありがとうございます。
gppraytest命令については、確かにおかしな挙動になることを確認しています。
基本的には、bulletライブラリの機能をそのまま使用しているのですが、今後原因などわかれば対応していきたいと思います。

>祐実 さん

#deffuncパラメーターでのvalという表記は、HSP2時代の古い型指定のため警告が出ます。
現在は使用できますが、できるだけ「var」を使用するようお願い致します。

>莉琉 さん

HGIMG4で使用される画像(テクスチャ)はマテリアルとして管理されています。
https://www.onionsoft.net/hsp/v36/doclib/hgimg4.html#MEMLIMIT
マテリアルの最大数が標準で設定されているのて、こちらを拡張して試して頂けますでしょうか。

setreq SYSREQ_MAXMATERIAL,1024 ; マテリアル登録数を拡張する gpreset ; hgimgの初期化を行う



莉琉

リンク

2022/10/11(Tue) 21:08:14|NO.97189

>おにたま さん

ご回答ありがとうございます。
無事解決いたしました。



kuma

リンク

2022/10/12(Wed) 03:59:01|NO.97191

だいぶ前の更新履歴ですが
>2022/01/17 3.7 beta1
>UTF8ランタイム使用時のコンパイルに_hsputf8ラベルを定義するように修正
これはどういうものなんでしょうか。
マクロが定義されて#ifdefで処理を分けるものかと思ったのですができないです。
これができればuserdef.as内で処理を分ける方法ができると思ったんですが。
userdef.asは一番最初に読み込まれるのでランタイムを区別する方法がないのでプラグインの切り替えができないのです。



アキアキノヒロロ

リンク

2022/10/12(Wed) 07:59:28|NO.97192

[picload] のサンプルを利用しようと、
[sample/basic/memfile.hsp] を開いて実行したところ、

> Error 13 in line 9 (memfile.hsp) -->画像ファイルがありません

のエラーになってしまいました。
[dir_exe+"\\doclib\\hsp3ttl.jpg"] は、存在しており、
	fname=dir_exe+"\\doclib\\hsp3ttl.jpg"
picload fname
ならば、画像は正常に表示されます。
『hsp37beta1』までは、エラーになりません。
『hsp37beta2』で起こります。『beta3』でもそうでした。



よなぷー

リンク

2022/10/12(Wed) 18:25:16|NO.97193

3.7b4でのご対応ありがとうございます。
memfile命令ですが、画像は再生できたのですが、音楽は変わらず再生できません。
手持ちのWindows7、Windows10両PCで試したのですが、どちらも同じ結果でした。
mid、wav、mp3、oggすべて音は出ませんでした。
引き続きよろしくお願いいたします。(ToT)



アキアキノヒロロ

リンク

2022/10/13(Thu) 05:42:52|NO.97194

[NO.97192] で [picload] でのエラーについて書いた者ですが、
[memfile] の問題だったのですね。
もう既に指摘されていることに気づきました。
http://hsp.tv/play/pforum.php?mode=all&num=94865#96645
また、修正も進められているとのこと。
http://hsp.tv/play/pforum.php?mode=all&num=97105#97188

よく調べもせず、書き込みしてしまいました。申し訳ありませんでした。



GENKI

リンク

2022/10/15(Sat) 14:45:05|NO.97201

gploadで読み込んだ3Dモデルは、gpboxで作成した3Dモデルと比較して挙動が異なります。

gpboxの箱モデルに物理挙動設定を行った場合、メインループ内でGPPSET_ENABLEで物理挙動OFFにすればsetposで位置を移動することができます。
しかしgploadで読み込んだ3Dモデルに物理挙動設定を行った場合、メインループ内でGPPSET_ENABLEで物理挙動OFFにしてもsetposで位置を移動することができません。

ファイルが必要になるので、確認用サンプルは以下のアドレスに記載しました。

https://mclab.uunyan.com/lab/hgimg4/hgimg4_025.htm#%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E3%82%B3%E3%83%A9%E3%82%A4%E3%83%80%E3%83%BC%E3%82%92%E5%86%8D%E7%8F%BE%E5%AE%9F%E8%A3%85


tamane2.gpbで試してみると、GPPBIND_MESHを外せば想定通りの動作になりました。上記例の場合、GPPBIND_MESHの有無では挙動に差は出ませんでした。また、GPPBIND_MESHをつけて実行すると頭が消えてしまい、そもそも別の問題が発生してしまいます。gpbファイルによって挙動が異なるようです。



アキアキノヒロロ

リンク

2022/10/21(Fri) 08:50:27|NO.97222

「hsp37b1」からは、[sample] に [new37] が加わってますが、
「hsp37b3」でも空のままですね。

新たな機能説明としてのサンプルファイルを
早く試してみたいです。
お待ちしています。



Y_repeat

リンク

2022/10/21(Fri) 22:34:50|NO.97227

昔、Velgailさんにここで教えてもらったスクリプトがあるんですが


#include "hspinet.as" #runtime "hsp3cl" t=dir_cmdline split t,"?",d key=d(1) tgt="" if(getpath(d(0),2)==".cpt"){ tgt=getpath(d(0),1) }else{ tgt=d(0)+".cpt" } exist d(0) fs=strsize sdim buf,fs bload d(0),buf,fs rc4encode buf,key,fs bsave tgt,buf,fs end
というスクリプトで、bload するファイルとbsaveするファイルが違うくて、
#落ちるのでわざと違うfileを対象にしてると思われます。
同じfileにbloadしてbsaveするとHSPが落ちます。
そしてランタイムが壊れますw
同じfileにbloadしてbsaveした方が暗号かけるのが楽なので、
なんとか落ちないように出来ませんか?
解決策としてはfileを二つ使えばなんとかなりました。

再現スクリプトも載せた方がいいっすかね?

pack命令が上手くいかなくて、ググったらfile名は15byte以下らしく、
わかりにくいので、もっと長いfile名でOKになりませんかね?
それか忘れるかもなので、ヘルプブラウザに注意書きして欲しいです。



よなぷー

リンク

2022/10/22(Sat) 22:52:48|NO.97242

memfileの件ですが、さっき試してみたところ、ogg.dllをつけてdmmloadならwavファイルが再生できました。
oggファイルの方は再生ならず停止してしまいました。
どうかよろしくお願いします!(ToT)



おにたま(管理人)

リンク

2022/10/23(Sun) 01:55:45|NO.97243

>よなぷー さん

返信ありがとうございます。
これは従来のバージョンからの仕様なのですが、.mp3や.oggはファイルストリーミングを行うためmemfile命令やexeファイルへの埋め込みなどに対応していません。
ですが、最近のPCではメモリに余裕があるのでストリーミングの必要性がなくなってきたため、取り急ぎhspoggプラグインの.ogg読み込みをオンメモリに対応したものを作成しました。
こちらのURLからダウンロードしてお試し頂けます。(従来のhspogg.dllに上書きして使えます)
https://www.onionsoft.net/hsp/file/hspogg221023.zip
こちらのバージョンであれば、memfile命令やexeファイルへの埋め込みなどに対応しています。(HSP3.5以降のバージョンで利用可能です)
.mp3はWindowsのシステムにより再生を行っているため、同様の処理は難しいかと思います。
次のβ4版ではこちらを同梱する予定です。コンテストの締め切りも近いので先行して公開しておきます。問題ないようでしたらお使いください。



よなぷー

リンク

2022/10/23(Sun) 15:06:14|NO.97246

対応ありがとうございます!
しかし、手持ちのWindows7、Windows10両PCで、新しいogg.dllを試してみましたが、どちらも再生ならず停止してしまいました。
ただ何にしても、wavは大きすぎ、oggは長くループ再生すると音がおかしくなります。(Windows7PCでは、です)
そのため、この2種類の音楽ファイルしか再生できないのでは、ゲーム作成ツールとしていまいちです。
そんなわけですので、音楽のmemfile再生は諦めようかと思います。
丁寧にご対応いただき、またお返事をいただき、嬉しかったです。
ありがとうございました。( ´ ▽ ` )



よなぷー

リンク

2022/10/23(Sun) 18:52:56|NO.97248

すんません、新ogg.dllでのdmmloadからのdmmplayで、ogg鳴りました!
dmmload時にパラメーター2を「1」にしていたのがどうやら原因のようです。
ごめんなさい。
取り敢えずCD再生+2MBに達しないwav+dmmloadのoggで、これらを同時再生できました。
また色々試してみたいと思います。
つつしんでお詫び申し上げます。



しまくろねこ(本物)

リンク

2022/10/23(Sun) 19:57:10|NO.97249

DishのAndroid10以降(?)でスケーリングに関する不具合です。

画面サイズの「hgio_view」を使用する(X:720, Y:1280)にして、自動拡大縮小の「hgio_autoscale」を「0:画面全体に収まる最適な大きさ(縦横比は維持)」にしてビルドし、出来上がったaabをGoogle Playを通してインストールしてみると、
本来描画されない上下の余白部分に、スクリーンID「0」の一部が細切れで表示されてしまいます。

問題はそれだけではなく、処理速度も低下してしまっています。

Google Playストアでダウンロード可能な「PIYOKO DEFENSE」ですが、私の使っているAndroid9の「UMIDIGI A3 Pro」(MediaTek MT6739 - 720x1512)はどの画面でもFPS値が50を下回ることは殆どないのですが、家族の所有しているAndroid10「Xperia Ace SO-02L」(Snapdragon630 - 1080x2160)ではAndroid9機よりもスペックが上のはずなのですが、FPS値が30〜40辺りをうろうろしています。

それから謎のスクロールバーも右側に表示されています。

またAndroid9では上記の症状は一切起きません。

この現象はHSP3.7β1〜β3までで起きています。申し訳ないのですが、HSP3.6では検証しておりません。


・PIYOKO DEFENSE
https://play.google.com/store/apps/details?id=com.simakuroneko.piyoko_defense

・スクリーンショット(オリジナル)
https://drive.google.com/file/d/15XtCx-rPf-NZHdPiqk8xVuPYsOeLuWwj/view?usp=sharing

・スクリーンショット(不具合箇所。青枠で囲っている)
https://drive.google.com/file/d/1t2sXVvnJJKmnzRYj2jNRcFPQ7WAI1FKj/view?usp=sharing



CORO3

リンク

2022/10/23(Sun) 20:28:17|NO.97250

>しまくろねこさん
横からですみません。
謎のスクロールバーは、Sony製スマホで使える「サイドセンスバー」のように見えます。
設定でオフにできるはずなので、試してみてはいかがでしょうか。



しまくろねこ(本物)

リンク

2022/10/23(Sun) 20:51:36|NO.97251

> CORO3さん
> 謎のスクロールバーは、Sony製スマホで使える「サイドセンスバー」のように見えます。

おお、そうでしたか。
情報ありがとうございます。



窓月らら

リンク

2022/10/24(Mon) 02:58:51|NO.97252

不具合報告ではなくてすみませんが、
mp3/oggがPACKFILEから使えないのはパテント絡みなのかと思ってましたが
ストリーミングだからでしたか。対応されれば便利になりますね!
正式対応をお待ちしております♪

…私がHSP3向けソフトウェア音源(波形メモリ+PCM)開発中ですが、
公開したらこちらもよろしくですw (来年になりそうですが)
1曲あたり1KB以下とか、めちゃくちゃ小さいパッケージで
BGMや効果音を実装可能になります。



しまくろねこ(本物)

リンク

2022/10/24(Mon) 20:20:50|NO.97258

DishのAndroid10以降(?)でスケーリングに関する不具合の続報です。

画面のクリアを手動ではなく、自動クリア(下記)にすることで、とりあえずは本来描画されない上下の余白部分に書き込まれることはなくなりました。
ただし、手動では本来描画されない上下の余白部分にスクリーンID「0」の一部が表示されてしまうので修正のほど宜しくお願いします。

setcls CLSMODE_SOLID, $000000



窓月らら

リンク

2022/10/27(Thu) 01:56:29|NO.97264

上記 No.97258 の問題はだいぶ前からありました。
Androidのバージョンというよりは機種固有の問題のような印象です。
再現しない端末でデバッグしていると気づきません。



アキアキノヒロロ

リンク

2022/10/27(Thu) 05:36:48|NO.97265

すぐ反応があると思ったので、投稿は新規で立てたんですが、
http://hsp.tv/play/pforum.php?mode=all&num=97261

どうも、簡単にはいかない問題のよう、バグの可能性が高そうなので、
こちらに再掲して、報告します。

[input]変数に実数(小数)も指定できますが、[hgimg4]では、指定はできても
小数点の入力が不可能。このため、小数点を一旦削除してしまうと、
実数(小数)を扱えなくなってしまいます。
小数点を消さずに数字部分だけを書換えて、更新すればいいのですが、
やはりこういう中途半端な状態というのは、不具合、バグでしょう。
対応、お願い致します。
//#include "user32.as"
#include "hgimg4.as" // gpreset screen 0,300,80 x=1.0 font "",20 objmode 2 objsize 100,30 pos 20,20 input x objsize 140,30 pos 150,20 button gosub "OK",*OK repeat // redraw 0 // gpdraw redraw 1 await 1000/60 loop *OK dialog x return



youdai

リンク

2022/11/2(Wed) 18:06:03|NO.97280

不具合の報告と、要望を書きます。

●HGIMG4のGPBモデルの大量クローン時は動作パフォーマンスが大幅に低下する

HSP3.7beta3で発生しました。

HGIMG4でGPBモデルのノードを大量にクローンすると、
グラフィックボードの性能が余っていても動作パフォーマンスが大幅に低下します。

動作確認したグラフィックボード
geForce GT740

以下のような実験をしました。


2000万頂点マテリアル数1のモデルを1個表示 = 60FPS達成 600頂点マテリアル数6のモデルを500個(合計30万頂点))クローンで表示 = 60FPSを大幅に割る

600頂点のモデルを500個クローンしても頂点数は僅か30万頂点で、
これはグラフィックボードの性能内なわけですが、60FPSを達成できませんでした。

この動作パフォーマンスの低下はクローンすることそのものが原因であり、
例えばこの600頂点モデル500個をBlender上で結合し、1つのモデルとして出力した場合は60FPSをあっさり達成しました。

この現象はおそらくgppbindの場合もそうで、ノードを分けて計算するよりも、1つのメッシュに結合した方が
gppbindでのコリジョン判定でもパフォーマンスが良いかもしれません。

このクローン時のパフォーマンスの大幅な低下をぜひ改善してほしいと思います。

●HGIMG4のアニメーションクリップにフレーム単位の指定がほしい

HGIMG4のアニメーションクリップ機能の単位は現在ミリ秒ですが、
3Dアニメーションを作成する際はフレーム単位で管理していますから、
フレーム単位で正確に指定できる命令が欲しいです。

フレーム単位で正確に指定できるようになれば、アニメーションクリップとの音ハメが
できるようになります。

現状、ミリ秒単位で作成している方もおられると思うので、そちらのバージョンも残しつつ、
フレーム単位で指定できるアニメーションクリップ命令が必要だと思います。

●HSPスクリプトエディタについての不具合

HSP3.7beta3のHSPスクリプトエディタでウィンドウを分割すると、
分割した方でマウスを右クリックしてもメニューが出ません。



アキアキノヒロロ

リンク

2022/11/3(Thu) 00:58:04|NO.97282

> 大量クローン
> 1つのモデルとして出力(1つのメッシュに結合)
> gppbindでのコリジョン判定でもパフォーマンスが良いかも
性能の余りよくない私のPCだと、顕著ですね。
[gppbind] での違いは、驚くほどでした。

> アニメーションクリップにフレーム単位
[gameplay3d] に依拠しているところが大きい [HGIMG4] は、どうなんだろう?

> 分割ウィンドウの右クリックメニュー
ウィンドウの分割機能が付いた [hsp351] のころから、ずっとそうですね。



よなぷー

リンク

2022/11/3(Thu) 18:47:40|NO.97289

hspogg.dllですが、どんなoggファイルでも、一回再生(dmmloop 1,-1など)だと最後に「ブツッ」と音が入ってしまいます。
これはプログラムでどうにもならなかったので、ぜひ改善のほどをよろしくお願いいたします。
あと旧dllの頃からなんですが、oggファイルをstop命令なしでメインルーチンをループしつつ再生していると、しばらく経ってから音が飛び飛びになってしまいます。
これはプログラムでどうにかなったのですが、なるべくならよろしくお願いいたします。



GENKI

リンク

2022/11/3(Thu) 20:57:52|NO.97290

hgimg4のevent_posについて

> swを省略した場合には、絶対値スプラインが設定されます。

実際には、省略時は「リニア補間(絶対値)」の動作になっています。


> swの値に16を加算した場合は、(x1,y1,z1)で設定される値の替わりにオブジェクトが持つworkグループの値を使用して変化を設定します。

ワーク値を指定しても反映されません。


; イベントテスト #include "hgimg4.as" title "HGIMG4 Test" randomize gpreset setcls CLSMODE_SOLID, $808080 ; 画面クリア設定 setpos GPOBJ_CAMERA, 0, 4, 10 ; カメラ位置を設定 ; 箱ノードを追加 gptexmat id_texmat, "res/qbox.png" gpbox id_box, 1, -1, id_texmat setpos id_box, 0, 4, 0 ; 床ノードを追加 gpfloor id_floor, 30,30, $404040 ; イベントリストを登録 newevent ev1 event_pos ev1, 60*2, 5, 0.5, 0 ; 絶対値スプラインのハズ ; event_pos ev1, 60*2, 5, 0.5, 0, 0 ; リニア補間(絶対値) ; event_pos ev1, 60*2, 5, 0.5, 0, 0 + 16 ; ワーク値を使用 event_wait ev1, 60*2 event_pos ev1, 60*2, -5, 0.5, 0 event_wait ev1, 60*2 event_jump ev1, 0 ; イベントを設定 setevent id_box, ev1 ; event_posで使用するワーク値を指定 ; 補間オプションに+16を指定すると使用されるはず。 setwork id_box, 0.0, -10.0, 0.0 repeat stick key,15 if key&128 : end ; カメラを自機に向ける getpos id_box,dx,dy,dz gplookat GPOBJ_CAMERA, dx,dy,dz redraw 0 ; 描画開始 gpdraw ; シーンの描画 redraw 1 ; 描画終了 await 1000/60 ; 待ち時間 loop

その他event_系命令については未確認です。



GENKI

リンク

2022/11/3(Thu) 23:38:34|NO.97291

HGIMG4関連で、ドキュメントの修正漏れをいくつか発見しました。

event_prmset
HDLのパラメーターIDの一覧表が正しくありません。
HGIMG4プログラミングガイドでは、もっと多くのパラメーターIDが使用できる説明になっています。

setobjmode
> regobj命令で指定するものと同様です。
と書かれたままです。HGIMG4プログラミングガイドにかかれている説明が、HDLへ反映されていません。

PRMSET_TIMER
OBJ_TIMERで有効にした後に、フレーム数でカウントダウンしてゼロになったら消す仕様のもののようです。
しかしドキュメントへの説明記載がどこにもありません。なお、HGIMG3のタイマーはミリ秒単位なので説明資料として流用できません。

OBJ_XFRONT
X FRONTという名前ですが、カメラ方向を向いているのはZ軸のようです。
この名前のままでしょうか。



GENKI

リンク

2022/11/4(Fri) 00:15:22|NO.97292

hgimg4に、event_delobjとevent_suicideという同じ機能を持った命令が2つあります。
event_suicideは、残す意味が無いのではないでしょうか。



アキアキノヒロロ

リンク

2022/11/5(Sat) 09:09:56|NO.97303

別立てしていた [input] の件、
> [hgimg4] で、[input] が上手く使えません
http://hsp.tv/play/pforum.php?mode=all&num=97261
NO.97265 に載せさせて頂きましたが、
おにたま さんから修正して頂ける、との レスがありました。
有難うございます。



youdai

リンク

2022/11/6(Sun) 14:37:52|NO.97305

HGIMG4の不具合の報告です。
OpenGL版のHGIMG4は、ユーザーからの報告によるとCPU内GPUの場合、グラフィックボードでは動く自作したシェーダーのGLSLを正常に読み込まないことがあるようです。
DirectX版のHGIMG4の場合は、CPU内GPUだけではなく、グラフィックボードの場合でも自作したGLSLを正常に読み込まないことがあります。
例えば、OpenGL版では正常に読み込むシェーダーでも、DirectX版では正常に読み込まないことが非常に多いです。
当方の環境ではほとんどの自作のGLSLシェーダーがDirectX版では正常動作しませんでした。(これは過去にも報告済みです)
この不具合は、グラフィックボードを使用してOpenGL版を使用している場合、起きませんでした。

動作環境は以下の通りです。

HSP3のバージョン HSP3.7beta3

CPU Intel Core i7 860S 2.53Ghz
メモリ 8GB
グラフィックボード nVidia GeForce GT740(DDR3) 2GB
ディスプレイ解像度 1024*768



zakki

リンク

2022/11/7(Mon) 12:36:44|NO.97306

現状はそういう仕様だと思います。

HGIMG4のDirectX版はANGLEを使っていて、Direct3D 9バックエンドだと、割と安定してOpenGL ES 2.0まで機能を使えます。
逆にOpenGL版の場合、GPUやドライバのOpenGL対応に直に依存するので、環境依存が大きいですがGPU差し替えたりドライバ更新で新しい機能を使えたりします。
https://chromium.googlesource.com/angle/angle/+/main/README.md

試してませんが、D3D11非対応のSandy Bridge以前は気にしないならES 3.0まで、自分でビルドしてOpenGLバックエンド使う用にすれば3.1以降も使えるかも。
https://github.com/google/angle/blob/main/doc/DevSetup.md#application-development-with-angle



GENKI

リンク

2022/11/8(Tue) 21:04:48|NO.97313

hgimg4関連で2件あります。


箱ノードから複製したノードは、半透明表示ができません。


#include "hgimg4.as" gpreset setcls CLSMODE_SOLID, $808080 setpos GPOBJ_CAMERA, 0, 0.5, 5 ; 箱ノードを追加 gptexmat id_texmat, "res/qbox.png" gpbox id_box, 1, -1, id_texmat setpos id_box, -1, 0.5, 0 gpsetprm id_box, PRMSET_ALPHA, 128 ; 箱ノードクローン ;gptexmat id_texmat, "res/qbox.png" ; 新たに箱ノードを作れば問題ない ;gpbox id_boxc, 1, -1, id_texmat gpclone id_boxc, id_box ; クローン setpos id_boxc, 1, 0.5, 0 gpsetprm id_boxc, PRMSET_ALPHA, 128 ;setobjmode id_boxc, OBJ_LATE ; ←効果なし ; 床ノードを追加 gpfloor id_floor, 30,30, $404040 repeat stick key,15 if key&128 : end redraw 0 gpdraw redraw 1 ; 描画終了 await 1000/60 ; 待ち時間 loop


2件目
gpsetprmoff/gpsetprmonがHDLにのみ存在しています。
HGIMG4プログラミングガイド及びhgimg4.as内に存在しておらず、使用できません。



おにたま(管理人)

リンク

2022/11/9(Wed) 21:05:10|NO.97314

多くのご報告ありがとうございます。以下、いくつか返信させて頂きます。

>kuma さん

_hsputf8のラベルがセットされるのが、今のところHSP3Dishで異なるプラットフォーム向けに
ビルドされる場合(androidやiOS、hsp3jsなど)、Linuxなど別なプラットフォームの場合で、
Windows上では、今のところランタイムを判別するタイミングが
「#include "hsp3utf.as"」のようにランタイム選択を行った時なので、
userdef.as内で処理を分けることが難しいですね。
どういった処理の場合分けを行うことを想定しているかによって、
今後また対応方法など検討したいと思います。

>GENKI さん

HGIMG4についてのご指摘ありがとうございます。
対応できる部分については、次のバージョンで修正したいと思います。

>>event_prmset
>>HDLのパラメーターIDの一覧表が正しくありません。

最新のβ版に含まれているヘルプでしょうか。
一応、正しく記述されているかと思いますが、抜けがあったでしょうか?

>>OBJ_TIMER
>>ドキュメントへの説明記載がどこにもありません。

最新のβ版に含まれているHGIMG4プログラミングガイドの「オブジェクトタイマー」項目に記述されているかと思います。

>>OBJ_XFRONT
>>X FRONTという名前ですが、カメラ方向を向いているのはZ軸のようです。

カメラのX回転軸に合わせているという意味でHGIMG3から継続している名前のためこのままになります。

>>hgimg4に、event_delobjとevent_suicideという同じ機能を持った命令が2つあります。

event_suicideは初期のHGIMG4で使用していた名称で、今後段階的に廃止となる予定です。

GPPBIND_MESHで定義した3Dモデルで物理挙動OFFの挙動が異なる点について、
まだ原因がわかっていませんがGPPBIND_MESHで作られる当たり判定のモデル(コライダー)が正常ではないようです。
これについては、もう少し調べてみたいと思います。

>よなぷー さん

色々と検証ありがとうございます。
oggファイルで再生していて音が飛び飛びになってしまうようなサンプルがあればご提示頂けると助かります。
また、どの程度再生したら起こるのかわかると調査できるかと思います。

>youdai さん

HGIMG4についての検証とご意見ありがとうございます。
現状だと、クローンで大量にオブジェクトを増やすよりも、最初から蝶点数の多いモデルを表示した方が速度が出るかと思います。
パフォーマンスについては、今後も改善できるよう更新を続けていきたいと思います。

自作したシェーダーのGLSLを正常に読み込まない(実行できない?)件につきまして、
zakkiさんが書かれているようにGLSLはグラフィックボードやDirectXの場合はangleライブラリの環境によってシェーダーコンパイル結果が異なります。
特定の環境で動作したGLSLが他の環境で動かないことはあり得ることです。
まずはどのようなエラーが出ているのかhsp3gp.logである程度確認できると思いますので、そちらでご確認ください。



GENKI

リンク

2022/11/9(Wed) 23:28:40|NO.97315

>> おにたまさん

ご回答ありがとうございます。

> >>event_prmset
> >>OBJ_TIMER

基本的にHSP 3.7β3で確認作業をしているのですが…
大変申し訳ございません。確認した所、私の不手際で「HSP3.6」のHDLとプログラミングガイドを見ていたことに気が付きました。
HSP 3.7β3ではいずれも修正済みであることを確認しました。
大変失礼しました。

HSP3.6のhdlmain.cssを書き換えて、見た目でバージョンを見分けられるようにしたのでもう間違えない!…はず。



よなぷー

リンク

2022/11/10(Thu) 03:11:32|NO.97317

対応ありがとうございます。
oggファイルの音飛び現象ですが、どうやら私のWindows7ノートPC固有のバグみたいです。
Windows10ノートPCで確かめたところ、音飛びはまったく発生しませんでした。
これより先は、自作ソフトを「Windows10以降専用」と表記したいと思います。
お手数をおかけして申し訳ありません。
一方のoggファイル一回再生で最後に音が発生する問題は、Windows10でも生じます。
こちらのほうの改善は、引き続きよろしくお願いいたします。



よなぷー

リンク

2022/11/13(Sun) 19:53:19|NO.97334

HSP3.6正式版では存在しなくて、3.7beta版から存在する不具合の報告です。
スクリプトエディタからのコンパイル実行では問題なくて、実行ファイルを作成してそれを使うと内部エラー(13)と出て停止してしまいます。
picload "MEM:a.jpg" という命令です。
サンプルの『memfile』で調べてみますと、コンパイル実行では問題なく、作った実行ファイルを走らせると内部エラー(12)と出ます。
なぜ私のプログラムでは13で、サンプルでは12なのかは分かりませんが、あるいはダミー名(a.jpg)ではなくそのままファイル名を指定しているからかもしれません。
以上、ともかく報告でした。



しまくろねこ(本物)

リンク

2022/11/14(Mon) 22:06:47|NO.97347

HSP3Dishでもcelloadで読み込める画像バッファの上限値を setreq SYSREQ_MAXMATERIAL で増加できるようにできないでしょうか?
現在は、512が上限値のようです。

> HSP3Dishでのcelloadで読み込める画像バッファの上限について
http://hsp.tv/play/pforum.php?mode=all&num=97342

> HGIMG4_celloadの上限について
https://hsp.tv/play/pforum.php?mode=all&num=97185



kuma

リンク

2022/11/16(Wed) 11:58:13|NO.97360

>おにたまさん
回答ありがとうございます。
ランタイムの判断をしたい理由ですが、デバッガのknowbug(https://github.com/vain0x/knowbug)
を使わせてもらっていて、それの機能拡張用のwrapcallという付属プラグインを使うために
いちいちソースにinclude文を書くのが面倒でuserdef.as内に記述したいと思ったのですが
プラグインはランタイムごとに分かれてるので不可能だったからです。
その後別の方法で強引に解決させたので今は困っていないのですが、できれば標準で可能になればうれしいです。


それと別件ですがutf8版のHSPで変数名に全角を使うと標準のデバッガで文字化けします。(knwobugもですが)
さらに、その変数の内容を表示しようとすると強制終了します。



うし

リンク

2022/11/17(Thu) 01:08:43|NO.97364

HGIMG4のリクエストについて書きます。
GPB convert での3Dモデル変換がうまくいきません。
掲示板を見ても、みなさんご苦労されているようです。
HGIMG3ではXファイルでの3Dモデルの読み込みやアニメーションが
容易に実行できました。
HGIMG4でも同様に直接Xファイルでの読み込みができるようにをすることは
技術的に難しいことなのでしょうか。
(それともモデルを扱う仕様が全く異なるもの?)
あと、基本3DモデルにSPHERE(球体)を加えることはできませんか。
玉ころがしやシューティングの弾などいろいろ使えると思います。



おにたま(管理人)

リンク

2022/11/18(Fri) 00:01:54|NO.97365

現在のβバージョンについて多くのご報告とご要望ありがとうございます。
対応できる部分について改修を進めたバージョンを一旦HSP3.7β4版として近日中に公開する予定です。
以下、プレビュー版を先行して公開しておきますので、もし致命的な問題などあればお知らせください。

HSP3.7β4(フルセットプレビュー版)
https://www.onionsoft.net/hsp/file/hsp37b4.zip

HSP3.7β4(Windows版のみプレビュー版)
https://www.onionsoft.net/hsp/file/hsp37b4le.zip


2022/11/16 3.7 beta4 hspoggプラグインの.oggファイル再生をオンメモリに切り替えpackfileに対応 celload命令のパラメーターに既存の画像を再利用するオプションを追加 mmload命令でメモリストリームからの読み込みに失敗することがある不具合を修正 noteadd命令の引数でnotefind関数を使用した場合に書き込み内容が壊れる不具合を修正 mes/print命令による表示が1023文字で強制的に改行される不具合を修正 [HSP3Dish] mes/print命令の改行処理が標準ランタイムと異なる不具合を修正 [HSP3Dish] 使用するテクスチャの上限数が512までだった制限を撤廃 [HSP3Dish][hsp3js] 連続する空白を含む文字列表示の横幅がずれる不具合を修正(zakki) [HSP3Dish][Windows] input命令で一部の記号入力が反映されなかった不具合を修正 [HSP3Dish][Windows] screen命令によるサイズ変更でウインドウの入力が反映されなくなる不具合を修正 [HSP3Dish][Windows] mes/print命令の空白に不要なピクセルが含まれる不具合を修正 [HGIMG4] クローンされたノードが半透明表示できなかった不具合を修正 [HGIMG4] ヘルプに記載されたgpsetprmon/gpsetprmoff命令が使用できなかった不具合を修正 [HGIMG4] event_pos命令の補間オプションでデフォルト値がHGIMG3と異なる(リニア)だった不具合を修正 [HGIMG4] event_pos系命令の補間オプション+16でワーク値が参照されない不具合を修正 [HGIMG4] gpdraw命令に物理オブジェクトのデバッグ表示を行うオプションを追加 [HGIMG4] gpnodeinfo命令にノードのマテリアル情報を取得するオプションを追加 [HGIMG4] resフォルダ以下のテクスチャ読み込みに失敗した場合カレントフォルダも参照するように修正 [HGIMG4] gpbconvツールのプレビュー機能を実装 [HGIMG4] gpbconvツールに別ファイルアニメーションの参照機能を追加 [HGIMG4] gameplay-encoderのUTF8ノード名を正しく表示するように修正 [HGIMG4] gameplay-encoderのマテリアル名補正オプション(-u)を追加 [HGIMG4] FBXから.gpbファイルの変換時に基本のブレンド設定を出力するように修正 [HGIMG4] FBXから.gpbファイルの変換時にマテリアルのDiffuse,Ambient色が黒の場合でも出力するように修正 [HGIMG4] setalpha命令の透明度が3Dモデルに正しく反映されない不具合を修正 [HGIMG4] gpmatprm16命令でマトリクスパラメーターが正しく設定されない不具合を修正 [HGIMG4] テクスチャのUVオフセット/リピート指定のためのgpmatprm2命令を追加 [HGIMG4] 任意のテクスチャマテリアルをシェーダーパラメーターとして設定するgpmatprmp命令を追加 [HGIMG4] マテリアル生成オプションにGPOBJ_MATOPT_UVOFFSET,GPOBJ_MATOPT_UVREPEATを追加 [HGIMG4] オフスクリーンのスプライト描画時のために解像度を再設定するes_screen命令を追加 [HGIMG4] setobjlight命令でライトが反映されないモデルがある不具合を修正 [HGIMG4] シェーダーソース(.frag/.vert)の先頭にある#versionディレクティブを維持するように修正 [HGIMG4][Windows] カレントフォルダ移動時にもシェーダーファイルが正しく参照されるように修正

引き続き、新規の機能や改修を今後のバージョンで行っていきたいと考えています。
どうぞよろしくお願いいたします。



おにたま(管理人)

リンク

2022/11/18(Fri) 00:03:30|NO.97366

>しまくろねこ(本物) さん

ご報告ありがとうございます。
β4版でcelloadの上限を無くしています(HGIMG4では引き続きSYSREQ_MAXMATERIALの数が影響します)ので、ご確認いただければと思います。

>よなぷー さん

ご報告ありがとうございます。memfileについて再度確認してみたいと思います。

>kuma さん

デバッガのための設定(?)を呼び出すためのものなんですね。
スクリプトのコンパイル後にincludeされるような仕組みをこちらでも検討してみたいと思います。

>うし さん

HGIMG4についてのご意見ありがとうございます。
Xファイルが使えると確かに便利なのですが、座標系の違いなどからそのまま読み込むのが難しいのが現状です。
3Dモデルの変換はもう少し便利になるよう今後も改修していきたいと考えています。
球体を生成するのは便利だと思います。HGIMG3ではサポートしていたので、HGIMG4でも検討したいと思います。



Yuzranium

リンク

2022/11/18(Fri) 13:53:13|NO.97367

>おにたま様
お疲れ様です!
ただの一般市民ですが早速試してみたいと思います!



GENKI

リンク

2022/11/19(Sat) 23:05:06|NO.97371

>> おにたまさん

修正作業お疲れ様です。早速使ってみました。


> [HGIMG4] クローンされたノードが半透明表示できなかった不具合を修正
> [HGIMG4] ヘルプに記載されたgpsetprmon/gpsetprmoff命令が使用できなかった不具合を修正
> [HGIMG4] event_pos命令の補間オプションでデフォルト値がHGIMG3と異なる(リニア)だった不具合を修正

ありがとうございます確認しました。
問題なく動作しているようです。


> [HGIMG4] event_pos系命令の補間オプション+16でワーク値が参照されない不具合を修正

NO.97290 に書いたスクリプトを使って確認しようとしたのですが、確認できませんでした。


> [HSP3Dish][Windows] mes/print命令の空白に不要なピクセルが含まれる不具合を修正

そういえばHGIMG4でも同様と思われる不具合が出ています。
3.7β4で確認した所、未修正が確認できたので報告します。

hgimg4でmes命令の空白に不要なドットが含まれる場合があります。ドット出現には条件があります。
・font命令で文字サイズを変える。(デフォルト値や16など特定のサイズでは出現しない。)
・特定の文字のあとに空白を使う。(フォントによって文字は変わる)
・msminchoは、msgothicよりもドットが出現する文字が少ない。
・ドットが出ると2個目以降の空白にもドットが付く。

#include "hgimg4.as" gpreset setcls CLSMODE_SOLID, 0 font msgothic, 32 ;font "メイリオ", 32 ;font "BIZ UDゴシック", 32 ;font "BIZ UDPゴシック", 32 ;font msmincho, 32 repeat redraw 0 gpdraw color 255,255,255 pos 8,8 mes "テスト   テスト   テスト   テスト   " /* mes "あ い う え お  ア イ ウ エ オ " mes "か き く け こ  カ キ ク ケ コ " mes "さ し す せ そ  サ シ ス セ ソ " mes "た ち く て と  タ チ ク テ ト " mes "な に ぬ ね の  ナ ニ ヌ ネ ノ " mes "は ひ ふ へ ほ  ハ ヒ フ ヘ ホ " mes "ま み む め も  マ ミ ム メ モ " mes "や   ゆ   よ  ヤ   ユ   ヨ " mes "わ ゐ を ゑ ん  ワ ヰ ヲ ヱ ン " mes "a b c d e f g h i j k l m " mes "n o p q r s t u v w x y z " mes "A B C D E F G H I J K L M " mes "N O P Q R S T U V W X Y Z " */ ; msgothicでドットが出るものだけをピックアップ mes "し  コ  ト  ヒ  ヨ  ワ  ヲ  " mes "b h i k l m n p u w y z B D E " mes "F H I K L M N P R T U V W X Y " ; 半角スペースも結果は同じ mes "し コ ト ヒ ヨ ワ ヲ " mes "b h i k l m n p u w y z B D E " mes "F H I K L M N P R T U V W X Y " redraw 1 await 1000/60 loop



莉琉

リンク

2022/11/20(Sun) 11:34:17|NO.97372

不具合報告ではなく要望になりますがご了承ください。

拡張プラグインの「HSPDA.DLL」のvsaveについて、
配列変数を保存する場合、その配列が4次元だったりした場合、
データの容量が膨大になってしまいますが、データを圧縮して保存する事は
出来ますでしょうか?

dim キーリプレイ,2,9,10000,5 ; リプレイ用。( 配列0=プレイヤー 配列1=ボタン 配列2=Time 配列3=ラウンド数 ) ddim キーリプレイ向き,2,10000,5 ; リプレイ再生中のキャラの向き。現在と不一致の場合左右のキーを反転する( 配列0=プレイヤー 配列1=Time 配列2=ラウンド数 )
例えば上記のゲーム用のリプレイ用変数をvsaveで保存した場合、4MBほどになりますが、
ZIP等で圧縮した場合、5KBくらいまで減らせることが出来ます。



Yuzranium

リンク

2022/11/20(Sun) 13:00:03|NO.97373

>莉琉さま
指定ファイルをZIP形式に圧縮・解凍するモジュールの
ZLibWrapモジュール(zipfile.as)がありますがそちらはお試しになられたでしょうか?

私自身このモジュールを使用したことがないのでなんとも言えませんが
vsave後にそのファイルを指定して圧縮できそうです。
筋違いでしたらすみません。



Yuzranium

リンク

2022/11/20(Sun) 13:38:32|NO.97374

>おにたま様
私の環境ではありますが、実行ファイルの生成に成功しましたので報告をば(しなくていい)
3.7beta3までは以下の条件で「Startup failed」やDPM2の「文字列がありません」などのエラーで
実行ファイルの生成に失敗していましたが beta4 では同様の条件でも特に問題ないようです。
重ねて感謝申し上げます。

Windows11 Pro 22H2
同梱の標準エディター

#packopt name "PC Careing Diary" #packopt version "version.txt" #packopt type 0 #packopt hide 1 #pack "text\\verinfo.txt" /*** 外部モジュール ***/ #include "user32.as" #include "gdi32.as" #include "WebView2_10115038.as" #include "hsp3util.as" #include "hsedsdk.as" #include "hspda.as" #include "d3m.hsp" #include "sqlele.hsp" /*** 分割自作モジュール ***/ #include "00_module.hsp" #include "00_mylv.hsp" #include "01_mypb.hsp" /*** 分割ファイル ***/ #include "01_variable.hsp" #include "02_interface.hsp" #include "03_process01.hsp"
version.txt

_FILEVERSION=0.2.0.0 _PRODUCTVERSION=0.2.0.0 Comments=Made by Hot Soup Processor3.7beta4 CompanyName=YUZRANIUM FileDescription=Desktop game InternalName=PC Careing Diary LegalCopyright=Copyright (C) 2022 YUZRANIUM OriginalFilename=04_process02 ProductName=PC Careing Diary



莉琉

リンク

2022/11/20(Sun) 15:38:35|NO.97375

>Yuzraniumさん

回答ありがとうございます。
只今Zipにする機能を試している所です。(今の所エラー吐いてZIPにする所がうまくいきませんが……)
情報提供感謝します。



youdai

リンク

2022/11/22(Tue) 00:55:57|NO.97376

HSP3.7beta4の不具合について報告します。

●HGIMG4のgpposteffect.as使用時の不具合
pronama5.hspでポストエフェクトを試してみましたが、正しく表示されていません。
OpenGL版、DirectX版両方を試しましたが、両方とも不具合がありました。
プロ生のモデルが正しく表示されているように見えるのはGlow Filterのみで、
後は全て何かのテクスチャのようなものが表示されるだけでした。
このテクスチャは恐らくなのですが、pronamaの中のresの中の
watch.pngの右上の一部の部分だけが表示されているのだと思います。
この不具合はhsp3.7beta3では発生しませんでした。



うし

リンク

2022/11/22(Tue) 01:06:16|NO.97377

ご回答ありがとうございます。

HGIMG4のリクエストについて書きます。(その2)

HGIMG4の物理で、バネは使えますか。
bulletにあったような。(bt..spring?)
(ゴムゴムとかスパイダーマンとかいろいろ使えそうかも。)

基本図形に、直方体(幅、高さ、奥行きの設定できる)があると、
STAGEづくりなどの工作に便利かも。

あと、HGIMG3では、3Dモデルによる地形の判定に、難しいところがありました。
高低差があり、やや複雑な地形の3Dモデルで、ジャンプアクションができるような。
(hghitやhitmoduleなどいろいろ試しましたが、できませんでしたので。)
(HGIMG4では、読み込んだ3Dモデルが、メッシュ化されるのかな?)

まずは、GPB convert の3Dモデル読み込み、変換の対応、向上に期待です。



usagi

リンク

2022/11/22(Tue) 01:46:26|NO.97378

新規命令gpmatprmp命令で遊んでみました。
※個人的に、シャドウや様々なポストエフェクトに使えそうで夢が広がります。

使い方が間違っているのか、不具合なのかわからないのですが、
ユーザーシェーダーからのコピー後のコピーが、一度通常バッファからコピーしないと
直前のテクスチャを参照してしまうようです。
使い方に問題があればご指摘いただけると幸いです。

・DisplacementMap.vert: sprite.vertのコピペ

・DisplacementMap.frag

// HSPデフォっぽい uniform sampler2D u_diffuseTexture; // コピー元 varying vec2 v_texCoord; //座標 varying vec4 v_color; //色 //カスタム uniform sampler2D u_mask; // マスク uniform vec2 u_offset; // オフセット void main() { // オフセット vec2 ofs = u_offset * (texture2D(u_mask, v_texCoord).rg * 2.0 - 1.0); // 描画 gl_FragColor = v_color * texture2D(u_diffuseTexture, v_texCoord+ofs); }
・サンプル

#include "hgimg4.as" s = 512 : div = 32 : ofs = 0.1 screen 0, s,s : gpreset : font "",12 gpusershader "DisplacementMap.vert", "DisplacementMap.frag", "" ; ディスプレイメントマップバッファ buffer 1,s,s,screen_offscreen + screen_usergcopy gpgetmat disp_mat, 1, GPGETMAT_OPT_SCRMAT ; マスクバッファ buffer 2,s,s,screen_offscreen gpgetmat mask_mat, 2, GPGETMAT_OPT_SCRMAT gpmatprmp disp_mat, "u_mask", mask_mat gpmatprm2 disp_mat, "u_offset", ofs,ofs celload dir_tv+"ball64.png", 3 ; 仮 *GEN_TEX dim bitmap,s*s repeat s*s ; タイル tcnt = cnt/div : bitmap(cnt) = ((tcnt\s+tcnt/s)\2==0)*$FFC0C0C0-$00404040 loop celbitmap 1,bitmap *MAIN title strf("ディスプレイメントマップテスト: %f", ofs) x = mousex : y = mousey : w = mousew if w>0 : ofs+=0.02 if w<0 : ofs-=0.02 gpmatprm2 disp_mat, "u_offset",ofs,ofs ; マスク gsel 2 : color 128,128,128 : boxf repeat 64 col = 192-cnt : color col,col,col grect x, y, deg2rad(time), 128-cnt,128-cnt loop ; メイン gsel 0 : redraw 0 pos 0, 0 : celput 1 // screen_offscreenが設定されているバッファにscreen_usergcopyが残ってる? // ※u_diffuseTextureが引き継が照れる? pos 0, 0 celput 2,,0.25,0.25 //こっちはうまくいかない celput 3,,0.25,0.25 //一度に通常バッファから celput 2,,0.25,0.25 //コピーすると上手くいく color 255 : pos 0,0 : mes "・この画像が本来は\n マスク画像に\n なってしまう", 4 color ,,255 : pos 128,0 : mes "・一旦コピー", 4 color ,255 : pos 256,0 : mes "・こっちは正しい", 4 redraw 1 time++ await 16 goto *MAIN



アキアキノヒロロ

リンク

2022/11/22(Tue) 13:51:32|NO.97379

> [HGIMG4] setalpha命令の透明度が3Dモデルに正しく反映されない不具合を修正

これを確認致しました。
ただし、3Dモデルのマテリアル設定をし直す必要があるようですね。

[material textured] の [renderState] の項目は、以前のものは、
> cullFace = true
> depthTest = true
だけでしたが、「hsp37b4」のものでは、
> blend = true
> blendSrc = SRC_ALPHA
> blendDst = ONE_MINUS_SRC_ALPHA
が追加されています。3Dモデルのマテリアル設定に、この追加があって初めて、その3Dモデルの透明度にsetalpha命令が使えるようです。たぶんですが。

ただ、サンプルの [pronama3d] でこれを確認してみると、setalpha命令の透明度は機能しませんでした。
「hsp37b4」の[pronamachan.material] は、この追加設定がされているのに、「hsp37b4」のエディタで実行してみたところ、そのままか完全な透明かのどちらかにしかならず、半透明にすることは出来ませんでした。

これと関連するか分かりませんが、また、ツイッターにも先日書いたことですが、
以前から、サンプルの [pronama3d] は、 #include の".as" を hgimg4 から hgimg4dx にすると、どれもエラーなく、実行可なのですが、プロ生ちゃんの姿がどのサンプルでも描画されません。
他の [HGIMG4] サンプルではそのようなことは生じず、プロ生ちゃんの場合だけです。
と言うことは、youdai さんご指摘のこと(NO.97376)と関係しているのか、
プロ生ちゃんのような、他のサンプルと違って多くのテキストを使っているものだと、その読込みがズレたり、空のものになってしまうのではと、勝手な想像をしてしまいます。
エラー表示も出ず、実行されるのですから、読込まれているハズです。なのに実際の表示は違ってしまうのですから。

さらに、[tamane2]モデルのサンプル[hgimg4/posteffect.hsp]は、正常機能しているので、これでプロ生ちゃんを試してみました。
サンプル[pronama3d]の[res]フォルダを、サンプル[hgimg4]の[res]フォルダに入れて、
[posteffect.hsp]の
> gpload id_model,"res/tamane2"

> gpload id_model,"res/res/pronamachan"
として実行。エラーなく、実行可で、プロ生ちゃんの姿は線画になってしまいますが、[posteffect] は、機能ているようにも見えます。
ただ、この逆、サンプル[hgimg4]の[res]フォルダを、サンプル[pronama3d]の[res]フォルダに入れて、プロ生ちゃんの代りに珠音で、[pronama3d/pronama5.hsp]をやってみましたが、
[Glow Filter]のみが線画のようになって珠音の形が確認できるだけでした。

詳しい専門的な知識もないので、試行錯誤で試しているだけなので、混乱するばかりです。



アキアキノヒロロ

リンク

2022/11/22(Tue) 20:13:38|NO.97380

続きになりますが、

プロ生ちゃんと珠音を取り替えてみたと言いましたが、
サンプル[pronama3d]の[res]フォルダを、[hgimg4]の[res]フォルダの中にではなく、
それと交換で入れ替えてやってみたところ、
プロ生ちゃんは、Blur Filter 2 だけがわずかに有効のように見え、
それ以外は、youdai さんご指摘の通り、watch.pngが表示されているようでした。
しかし、これは「hsp37b4」エディタでの実行の場合であって、
この状態のものを「hsp37b3」エディタで実行すると、正常に機能しています。

また、サンプル[hgimg4]の[res]フォルダの方も、[pronama3d]の[res]フォルダの中にではなく、
それと交換で入れ替えてやってみたところ、
無事、珠音のポストエフェクトでの表示変化が上手く出来ました。
これはしっかりと機能していると言っていいと思われます。
さらに、setalpha命令もポストエフェクトに重ねて有効でした。

色々な条件の組合せで結果が違ってきて、整理できていません。



chaco

リンク

2022/11/22(Tue) 23:24:51|NO.97381

> usagiさん

gpmatprmp命令で夢が広がるの、非常に同感です。
u_diffuseTextureを無視してタイルとマスクを
それぞれテクスチャとしてgpmatprmpdで読み込んでやると
うまいこと行くので、
usagiさん指摘の通りu_diffuseTexture絡みのような感じがしますね。


・DisplacementMap.frag
>
// HSPデフォっぽい uniform sampler2D u_diffuseTexture; // コピー元 ←【無視しちゃう】 varying vec2 v_texCoord; //座標 varying vec4 v_color; //色 //カスタム uniform sampler2D u_mask; // マスク uniform sampler2D u_mask2; // ←【追加】 uniform vec2 u_offset; // オフセット void main() { // オフセット vec2 ofs = u_offset * (texture2D(u_mask, v_texCoord).rg * 2.0 - 1.0); // 描画 // gl_FragColor = v_color * texture2D(u_diffuseTexture, v_texCoord+ofs); gl_FragColor = v_color * texture2D(u_mask2, v_texCoord+ofs); //←【u_diffuseTextureではなくテクスチャ指定】 }

・サンプル

#include "hgimg4.as" s = 512 : div = 32 : ofs = 0.1 screen 0, s,s : gpreset : font "",12 gpusershader "DisplacementMap.vert", "DisplacementMap.frag", "" ; ディスプレイメントマップバッファ buffer 1,s,s,screen_offscreen + screen_usergcopy gpgetmat disp_mat, 1, GPGETMAT_OPT_SCRMAT ; マスクバッファ buffer 2,s,s,screen_offscreen gpgetmat mask_mat, 2, GPGETMAT_OPT_SCRMAT gpmatprmp disp_mat, "u_mask", mask_mat gpmatprm2 disp_mat, "u_offset", ofs,ofs celload dir_tv+"ball64.png", 3 ; 仮 buffer 4,s,s,screen_offscreen ;←【追加】 gpgetmat mask_mat2, 4, GPGETMAT_OPT_SCRMAT ;←【追加】 gpmatprmp disp_mat, "u_mask2", mask_mat2 ;←【追加】 *GEN_TEX dim bitmap,s*s repeat s*s ; タイル tcnt = cnt/div : bitmap(cnt) = ((tcnt\s+tcnt/s)\2==0)*$FFC0C0C0-$00404040 loop //celbitmap 1,bitmap celbitmap 4,bitmap ;←【ここをID4に変える】 *MAIN title strf("ディスプレイメントマップテスト: %f", ofs) x = mousex : y = mousey : w = mousew if w>0 : ofs+=0.02 if w<0 : ofs-=0.02 gpmatprm2 disp_mat, "u_offset",ofs,ofs ; マスク gsel 2 : color 128,128,128 : boxf repeat 64 col = 192-cnt : color col,col,col grect x, y, deg2rad(time), 128-cnt,128-cnt loop ; メイン gsel 0 : redraw 0 pos 0, 0 : celput 1 // screen_offscreenが設定されているバッファにscreen_usergcopyが残ってる? // ※u_diffuseTextureが引き継が照れる? pos 0, 0 celput 2,,0.25,0.25 //こっちはうまくいかない celput 3,,0.25,0.25 //一度に通常バッファから celput 2,,0.25,0.25 //コピーすると上手くいく color 255 : pos 0,0 : mes "・この画像が本来は\n マスク画像に\n なってしまう", 4 color ,,255 : pos 128,0 : mes "・一旦コピー", 4 color ,255 : pos 256,0 : mes "・こっちは正しい", 4 redraw 1 time++ await 16 goto *MAIN



おにたま(管理人)

リンク

2022/11/23(Wed) 00:33:05|NO.97382

>youdai さん
>アキアキノヒロロ さん

ご報告ありがとうございます。
すみません、sample/pronama3d以下のres/shadersのポストエフェクト関連のシェーダー(p_*.frag)が古かったためpronama5.hspが正しく表示できていませんでした。
修正させて頂きます。(hgimg4サンプルのres/shadersは新しくなっています)
いままで、シェーダーに渡されるテクスチャ(sampler2D)の名称が2D表示の場合、u_textureだったのですが、β4版では3Dと同様のu_diffuseTextureに統一しています。
これが原因でβ3までにユーザーで作成していたカスタムのシェーダーが正しく動作しないものがあるかもしれません。そのあたりもドキュメントで補足したいと思います。



アキアキノヒロロ

リンク

2022/11/23(Wed) 01:11:27|NO.97383

あれこれやっているうちに、[shaders]フォルダが怪しいかなと思えてきたので、
[res]フォルダではなく、[shaders]フォルダを取り替えてやってみようとしていたところでした。

[sample/hgimg4/res/shaders]をコピーして、[sample/pronama3d/res/shaders]と置き換えたうえで、
[pronama5.hsp]を「hsp37b4」のエディタで実行してみました。
ポストエフェクトが無事機能していることを確認致しました。
有難うございます。



アキアキノヒロロ

リンク

2022/11/23(Wed) 01:23:50|NO.97384

度々ですいません。

上の手立てでもって、setalpha命令の方も、プロ生ちゃんモデルファイルに対しても有効になり、
かつ、ポストエフェクトに重ねても機能しています。



アキアキノヒロロ

リンク

2022/11/23(Wed) 02:52:21|NO.97385

また、追加です、すいません。

ポストエフェクトが正常に機能するためには、
新しくなっている方の、[sample/hgimg4/res/shaders]が必要であることと同時に、
この[shaders]フォルダと、ポストエフェクトの対象モデルのファイル群が
[res]フォルダ直下になければなりません。
対象モデルのファイル群をフォルダに収納した形で、
[res]フォルダに置いた場合は正常に機能しなくなります。
これは、プロ生ちゃんに限らず、珠音もそうで、みな同様です。

かつ、これは、setalpha命令においても、必要条件です。

なお、この条件下で、サンプル[pronama3d]の、
#include の".as" を hgimg4 から hgimg4dx にしてみましたが、
どのスクリプトでも、プロ生ちゃんは描画されませんでした。
期待しましたが、残念です。

以上、ご報告致します。



zrs90(5さい)

リンク

2022/11/23(Wed) 08:08:37|NO.97386

開発お疲れ様です。

hsp3.7β3
● hgimg3 のHDLの解説に一部間違いがあるようです。

addxanim 、addxfile 命令 で
setreq 命令によって(以下略)とありますが、この部分は
hgsetreq 命令が正しいと思うのですが...

−−−−−−−−−−−−−−−
別件になります。

おにたま さん
アキアキノヒロロ さん

>以前から、サンプルの [pronama3d] は、
>#includeの".as" を hgimg4 から
>hgimg4dx にすると、どれもエラーなく
>実行可なのですが、プロ生ちゃんの姿が
>どのサンプルでも描画されません。

https://hsp.tv/play/pforum.php?mode=all&num=94865

↑前の3.7βスレッド
#95100 で youdai さんが指摘されている件が
未修正?なんでしょうか?

hgimg4 自体、機能追加、修正が多すぎて
私程度では分からないですが



アキアキノヒロロ

リンク

2022/11/23(Wed) 08:48:35|NO.97387

追加報告の訂正です。

> ポストエフェクトの対象モデルのファイル群が
> [res]フォルダ直下になければなりません。
> 対象モデルのファイル群をフォルダに収納した形で、
> [res]フォルダに置いた場合は正常に機能しなくなります。

と言いましたが、これは、
> [material]ファイルの[sampler u_diffuseTexture]の[path]を
> [res/収納フォルダ名]とすればいい
だけでした。これで、モデルごとに専用フォルダに収めて
[res]フォルダに置いても、正常に機能します。



youdai

リンク

2022/11/23(Wed) 20:02:24|NO.97388

HGIMG4の要望を書きます。

●クローンをインスタンス化してほしい

現在のHGIMG4のクローンとは、同一のモデルとマテリアルを複製することだと思います。
ただ、現在のクローンの仕組みは、例えば500個クローンするとおそらく、500回分ドローコールを呼び出しているのではないでしょうか?
それが大量クローン時の動作パフォーマンスが大幅に落ちる原因なのかもしれません。

クローンをインスタンス化できれば、例えば500個クローンしても、ドローコールは1回で済むはずですから、
クローン描画時の動作パフォーマンスを大幅に高速化できるのではないでしょうか。

インスタンスが使えれば、大量のパーティクルを描画しても動作パフォーマンスの高速化ができるかもしれません。

インスタンシング(instanced arrays) - wgld.org
https://wgld.org/d/webgl/w075.html



うし

リンク

2022/11/24(Thu) 00:21:10|NO.97389

> 基本図形に、直方体(幅、高さ、奥行きの設定できる)があると、
> STAGEづくりなどの工作に便利かも。

HGIMG4への要望で、「直方体を」と書きましたが、
BOXの、SCALEでやればいいのかな。

BLENDER2.8で、基本図形をFBX出力しGPB変換してみましたが
変換できませんでした。
Versionにもよるのかな。

コライダーのワイヤーフレーム表示なんかできると
当たり判定がわかりやしくなるかも。



youdai

リンク

2022/11/24(Thu) 19:49:21|NO.97390

>うし さんへ
>BLENDER2.8で、基本図形をFBX出力しGPB変換してみましたが変換できませんでした。
>Versionにもよるのかな。
自分はBlender2.83.20を使用していますが、HSP3.7beta3ではFBXからGPBの変換は正常でした。
HSP3.7beta4では、まだ変換していません。
もしBlender2.80を使用しているならば、あのバージョンは2.8x系の初期のバージョンなので不具合が多いので、お勧めしません。
2.8x系はLTSの2.83をお勧めします。
基本図形(プリミティブ3Dメッシュ)の生成については、HGIMG4の機能のカスタム3Dメッシュで生成することも可能です。



アキアキノヒロロ

リンク

2022/11/26(Sat) 07:46:11|NO.97391

> [HGIMG4] setobjlight命令でライトが反映されないモデルがある不具合を修正

反映されないモデルがあった覚えがなかったので、そうだったのかと思うだけですが。
setobjlight命令に関して、setalpha命令や、ポストエフェクトと重ねて使った場合を見てみました。

結論から言えば、論外の POSTID_CUTOFF 以外は、どの組合せ、どの場合でも、
setobjlight命令でのライトの反映は、正常に働いているように見えました。
半透明でもしっかり機能していたのには驚きました。

ただ、以前ツイッターでも述べましたが、setobjlight命令に関わりなく、
ライトの色要素が、ライトが当たる対象ノードオブジェクトの色要素に含まれないと、ライトが反映されません。
具体的に言えば、緑のオブジェクトも青のオブジェクトも、赤いライトでは、全く反映されません。
これが不自然に感じて、仕方ないのですが。
ライトとオブジェクトの色要素が少しでも重なれば、反映されますし、一般的には、
純粋に全く重ならないことはないので、あまり問題にはならないのでしょうが。
これって、ライトの仕組みとして、当然のことなんでしょうか。初歩的なことですいません。



usagi

リンク

2022/11/26(Sat) 18:50:03|NO.97394

>アキアキノヒロロさん
おそくらくですが。

物体に光が当たると表面で拡散(diffuse)します。
その時、自然光のなかで赤いリンゴは緑と青の光を吸収するので赤く見えているのです。
ですから真っ暗な部屋で緑だけのライトを当てた場合は、緑が吸収されてしまうので黒く見えるのです。
これは物理現象として自然な事かと思われます。
(これを反映されないとおっしゃられている)

では何故不自然に感じられているのかというと、反射光(specular)というものがあります。
物体の表面が粗いほど乱反射するので広範囲に広がり、滑らかなほど鋭く反射します。
これがライト自体の色が反映されていないように感じられているのかと思われます。
(暗い部屋で銀のスプーンに緑のライトをあてると、鋭い緑の光が見える。などなど)

真面目にシミュレーションすると非常に複雑な計算なので、
CGやゲームなどではそれっぽくなるよう様々なシェーダーのアルゴリズムがあります。
ライトを増やしすぎても重くなるので、ご自身の理想の色味になるよう都合よくglslを書き換えると良いかかもしれません。
(specularColorにlightColorを乗算するなど)



アキアキノヒロロ

リンク

2022/11/26(Sat) 21:08:41|NO.97396

usagi さん、分かりやすい解説、ありがとうございます。
何となくまだちょっとしっくり来ない感じが残ってしまうのですが、
理屈としては、どうにか理解できたように思います。
おにたま さんが立てられたスレッドの表題にそぐわない内容になってしまったようで、
申し訳ありませんでした。
なお、ツイッターというのは、下記のものです。
https://twitter.com/akiakinohiroro/status/1552302230522728450



うし

リンク

2022/11/28(Mon) 03:05:10|NO.97403

>youdai さん

Blender2.80でした。Blender2.83LTS以降なんですね。
UNITYでもやってみたけど、変換できないな...。
カスタム3Dメッシュは上級ですね。

>HGIMG4の衝突範囲(バウンディングボックス)のワイヤーフレーム表示

物理ONにすれば、等倍(そのまま)のコリジョンなんですね。
HGIMG3の
 
modelcols m_xmodel, 20,20,20 ; コリジョンx,y,zサイズ  modelcols m_xmodel, 0,20,18,1 ; コリジョンweight,y,zサイズ
ここの、スケール感がわからなかったので。
障害物の上に乗れない仕様なんですか。



ze-na

リンク

2022/11/30(Wed) 23:45:19|NO.97416

>おにたま(管理人) さん

スプライト命令es_putbgが環境に依存します。

珠音ドットフレームワークβにも影響がありました。
ご確認願えませんでしょうか?

PCスペックによって早くなる/遅くなる/応答が悪い/
画面が止まるなど。

以下で確認しました(HSP3.6以降Windows版)

珠音ドットフレームワークβ、HSP3.7b3以降のdotfwサンプル
マジカルタマホーキ(es_putbgのコメント化で早くなります)



おにたま(管理人)

リンク

2022/12/1(Thu) 20:41:21|NO.97421

>GENKI さん

>NO.97290 に書いたスクリプトを使って確認しようとしたのですが、確認できませんでした。

ご報告ありがとうございます。確かに正しく動作していないことを確認しました。
この部分は未修正ということで、もう少し調べてみたいと思います。
HGIMG4で空白に不要なピクセルが含まれる点も修正が反映されていなかったので、修正版のβ4で対応したいと思います。

>莉琉 さん

現状では、vsaveで保存されたファイルは圧縮されません。別途zip圧縮などを併用する形になってしまいます。
リプレイを残す場合、各ボタンごとを要素に取るよりはstick命令で得られる値のように、1つの数値で複数のボタンを表現するなどするとかなり節約されるかと思います。

>うし さん

ご意見ありがとうございます。
HGIMG4の物理でバネやジョイントは今後のバージョンでサポートしたいと考えています。
地形の判定なども対応できるよう検討させて頂きます。
コライダーのワイヤーフレーム表示については、β4のgpdraw命令でサポートしています。

>zrs90(5さい) さん
>youdai さん
>アキアキノヒロロ さん

>以前から、サンプルの [pronama3d] は、
>#includeの".as" を hgimg4 から
>hgimg4dx にすると、どれもエラーなく
>実行可なのですが、プロ生ちゃんの姿が
>どのサンプルでも描画されません。

プロ生ちゃんのモデルがDirectX版で動かない状態なのはこちらでも確認しています。
DirectX版はangleというライブラリがOpenGLのシェーダーを内部で変換しているのですが、その過程で何かが起こっているものと思われます。
珠音ちゃんのモデルは表示されるため、ボーン数が多いものが引っかかっている気がしますが、今のところ原因がわかっていません。判明したらすぐに修正させて頂きます。

>youdai さん

HGIMG4についてのご意見ありがとうございます。
パーティクルや単純な図形を描画するためのインスタンシングはかなり有効な手段だと思います。
ただ、各プラットフォームごとにインスタンシング対応する必要がありますので、今後の課題ということになります。
また古いスマホやタブレットなどOpenGL ES3に対応していないものでは動作しなくなる可能性があります。

>ze-na さん

>スプライト命令es_putbgが環境に依存します。
>珠音ドットフレームワークβにも影響がありました。
>ご確認願えませんでしょうか?

ご報告ありがとうございます。
es_putbgは基本的にはスプライトを敷き詰めて表示を行っていますので、GPUやメモリのスペックによって遅くなる可能性はあるかと思います。
以下のような大量に画像を表示するサンプルは正常な速度で動作していますでしょうか。
sample/sprite/es_test4.hsp
sample/hsp3dish/celputm.hsp



おにたま(管理人)

リンク

2022/12/2(Fri) 21:02:14|NO.97428

現在のβバージョンについて多くのご報告とご要望ありがとうございます。
最新のバージョンを一旦HSP3.7β4版として公開致しました。
https://www.onionsoft.net/wp/archives/3609

プレビュー版から修正している部分は、

[HSP3Dish][Windows] mes/print命令の空白に不要なピクセルが含まれる不具合を修正
のみになります。
新規の機能や改修を今後のバージョンで行っていきたいと考えています。
引き続きどうぞよろしくお願いいたします。



GENKI

リンク

2022/12/2(Fri) 23:45:33|NO.97429

> [HSP3Dish][Windows] mes/print命令の空白に不要なピクセルが含まれる不具合を修正

修正ありがとうございます!
NO.97371 のスクリプトを使って、修正が完了したことを確認できました。



Drip

リンク

2022/12/3(Sat) 00:05:06|NO.97430

こんにちは。Dripです。
更新お疲れ様です。いつも修正対応有難うございます。
β4リリース時から気になっていたものをいくつか報告させていただきます。
整理できていない問題が他にもあるのですが、特に現状困っている問題を取り急ぎ報告させていただきたいと思います。


●β4からHgimg4作品が動作しなくなってしまいました。
resフォルダがカレントディレクトリにあるかなしかに関係なくスクリプトと同一フォルダにresフォルダがない場合動作しなくなってしまいました。
例えばこの掲示板に貼られるサンプルスクリプトでresフォルダに配慮したようなスクリプトは動作しなくなってしまいました。

//β4からスクリプトをresフォルダの存在するパスに保存せずには //このコードを実行することができません。(β3以前は動作します) #include "hgimg4.as" chdir dir_exe+"\\sample\\hgimg4" gptexmat t,"res/qbox.png" gpbox b,10,,t repeat addang b,0.1,0.1 redraw 0 gpdraw redraw 1 await 16 loop
また1段階パスを掘っているスクリプト(スクリプトファイルのパス \ datafiles \ res \ shaders などの構成)や、
独自に一時フォルダにhgimg4の実行環境を構築して実行するようなスクリプトも互換性が失われてしまい、ちょっとしたサンプルコードを実行するにもプロジェクトフォルダの構築が必要になってしまいました。
β4からはpackfileにresフォルダを含めることが可能ですが、この制限下では独自に素材を暗号化して使用することもできなくなってしまい大変不便です。
以前のようにカレントディレクトリからデータを読み出す仕様に戻すことはできないのでしょうか(通常のHSPと同じようにpackfileに無ければカレントを調べるだけでいいと思います)。
余程シェーダーのパスの扱いが特殊である場合、

gpresource "path\\res"
などの新規命令でリソースフォルダのパスを指定できるようにする等で対応できないでしょうか?


●β4から付属のGPBコンバーターで変換したgpbファイルをgploadで読み込もうとしても読み込めなくなってしまいました。
また生成されたマテリアルファイルをGPBコンバーターで読み込もうとするとエラー6が発生します。
生成されるマテリアルファイルは0byteです。fbxファイルはバイナリ・アスキー両方で試しましたがだめでした。(3.6では正常に変換されます。)
logファイルは次のようなものが出力されます。

Encoding file: C:**filepath**.fbx Loading FBX file. Loading Scene. Triangulate. Load nodes.(0) Load Shapes. Load materials Loading animations. Optimizing GamePlay Binary. Saving binary file: C:**filepath**.gpb

>珠音ちゃんのモデルは表示されるため、ボーン数が多いものが引っかかっている気がしますが、今のところ原因がわかっていません。

本件とは別の原因かもしれませんが、私の環境でも上で報告されている皆さんのように表示されなくなってしまったモデルを多数確認しており、旧作品のデータ(FBX,GPB双方)も扱えない状態になっております。
ボーンを含まないモデルも表示できないものがあり、今後は特定バージョンのモデラーと特定バージョンのHSPを維持し続けないと互換性が失われる作品が増えないか心配しています。


●別スレッドにも書いているのですが、hgimg4でgmode 6を使用した場合にdishと異なる結果になります。
これをdishと同一の動作にする方法はないでしょうか?
dishの場合は濃度縛りはあるものの正常に減算描画が行われるのですが、Hgimg4の場合は減算ではなく階調反転描画が行われてしまい困っております。

#include "hsp3dish.as" //【!】 hgimg4.as を指定すると表示が変わる【!】 celload dir_tv+"\\jp6girl.png",3:celdiv 3,256,220 //ベース画像 redraw 0 repeat 2 gmode 2:pos 10,10+cnt*230:celput 3,0 //ベース画像 gmode 5+cnt,,,255 //squareのコピーモード x=10,x+256,x(1),x //squareのX座標 y=10+cnt*230,y,y+220,y(2) //squareのY座標 c=$888888,0,c,$880000 //squareの色 gsquare -257,x,y,c //square描画 pos 10,10+cnt*230:mes "gmode "+(5+cnt)+"の合成結果" loop redraw 1


●β4からHgimg3製の作品のメモリ使用量が爆発的に増大してしまいました。
oggファイルを読み込んだだけで音データがメモリに展開されてしまうことが原因と思われますが、HSPはどんなにメモリを積んでも2ギガバイトまでしかメモリを使用できないことから、アルファチャンネルつきの高解像度のテクスチャを大量に読み込む3D作品への配慮をしていただきたいです。
なぜか旧仕様で読み込む場合は拡張子を.sに変更する必要があるとのことですが、この場合ファイル名に依存するようなスクリプト(ファイルを独自に暗号化しているような場合等)だと影響を受ける作品が出ると思います。
あえてここで互換性を切ることなく、新仕様(オンメモリでの読み込み)側の拡張子を変更する方向で対応することはできないのでしょうか。
(あるいはdmmloadのp2で+32を指定するとオンメモリになる等(+32なのはmmloadのパラメータを配慮したものです))
何卒ご検討をお願いします。



●oggファイルをhspoggやhgimg3でループなしで再生しようとした場合、ビリッというかなり耳障りなノイズが発生したり、最後に一瞬変な音が聞こえます。
上でよなぷーさんが報告されているものと同一の現象かと思います。
なんとなくですが再生してはならない領域を音声データに割り当てたり、ループポイントが変なメモリ空間に割り当てられているといったことはないでしょうか?
β4では以下のコードでもoggファイルが再生されるはずですが、正常に再生できる人はいらっしゃるでしょうか?

dt="4F67675300020000000000000000F34F000000000000C9353231011E01766F72626973" dt+="0000000001803E000000000000C05D000000000000AA014F6767530000000000000000" dt+="0000F34F00000100000022B41C470C42FFFFFFFFFFFFFFFFFFFF3103766F726269731D" dt+="000000586970682E4F7267206C6962566F726269732049203230303230373137020000" dt+="00060000005449544C453D070000004152544953543D0105766F726269731642435601" dt+="0008000080200A19C680D090550000100000428846C650A794049782851047C4508790" dt+="F3506AE920784A61C998F4146B104208DF7BCFBDF7DE7B20346415000004004018050E" dt+="62E031094208A118C509519C2908420861390996721E3A0942F72084102EE7DE72EEBD" dt+="F71E080D59050000020030082184104208218410420A29A514528A29A69862CA31C71C" dt+="73CC31C820830C3AE8A4934E32A9A4938E32C9A8A3D45A4A2DC514536CB9C5586BAD35" dt+="E7DC6B50CA18638C31C618638C31C618638C31C6084243560100200000844106196410" dt+="4208218514528A29A61C73CC31C780D09055000020008000000000479114C9911CC991" dt+="2449B2244BD224CFF22CCFF22C4F1335515345557555DBB57DDB977DDB7775D9B77DD9" dt+="767559976559776D5B977557D7755DD7755DD7755DD7755DD7755DD775203464150020" dt+="0100A023398E23398E233992232992028486AC02006400000400E0288EE23892233996" dt+="634996A4499AE5599EE5699E266AA2078486AC0200000100040000000000A0288AE228" dt+="8E234996A5699AE7A99E288AA6AAAAA269AAAAAA9AA6699AA6699AA6699AA6699AA669" dt+="9AA6699AA6699AA6699AA6699AA6699AA6699A4068C82A0040020040C7711CC7511CC7" dt+="711CC9912409080D590500C800000800C0501447911CCBB124CDD22CCFF234D1333D57" dt+="944DDDD4551B080D590500000200080000000000C0F11CCFF11C4FF224CFF21CCFF124" dt+="4FD2344DD3344DD3344DD3344DD3344DD3344DD3344DD3344DD3344DD3344DD3344DD3" dt+="344DD3344DD3344DD380D090950000100000821CD30E922410820A9267107310936614" dt+="820A92EB18941493879C828A91E7246306910B4A17998A203464450010050000188318" dt+="43CC21E79C944E52E49C93D249692084963A4A9DA5D26A8931A3546A4BB536103A4A21" dt+="B58C5289B5B4DA512BB596D80A00000870000008B0100A0D59110044010010C620A590" dt+="528831E620731031C6A0639019C61884CC39051D731452A91C74D441490D63CC3906A1" dt+="820E52E91C550E42491D75020000021C0000022C8442435604007102000649D2344BD3" dt+="3CCFD23CCFF34451553D5154554BF44CD3334D55F54C53554DD5945D513565D9F244D3" dt+="F44C53553DD35455D15465D73455D7F554D5964D57D565D15575DBB565DF766559B83D" dt+="55956D51756DDD545D595765D9F65DD9B67D491455555455D7F554D57555D7D56DD375" dt+="75DD5355D9355D57964DD7B565D7956D5D9565E1D75455964DD7B565D37565DB955DDD" dt+="566559B745D7F575559685DF9465DF976D5DF765DD5686D1756D5F9565DD376559F865" dt+="5B167657D77D61124555F55455764555755DD3756D5D755DDBD65453764DD7B5655375" dt+="65599565DD775D59D73555956553966DDB745D595665D9D75D59D66DD17575DD9465E1" dt+="575D59D75DDD368ED9B67D61745DDD376559F75559D67D59D78561D66D5FD75455F74D" dt+="D9F585D3957561F77D6398755D383ED7F57D55B685639565E3D7855F586E5D177ECF75" dt+="7D5DB565635865DB1876DF3786D9F78D63D56D63986DDDE8EA3A61F885E1B87DE3A8DA" dt+="B6D0D56D617975DBA81B3FE1367EA3A6AABE6EBAAEF19BB2ECEBB26E0BC3EDFBCAF1B9" dt+="AEEFABB26CFCAA6C0BBFADEBCAB1FB3EE5735D5F58655918565B168659D785651786A5" dt+="6AEBCAF0EABE71BCB6AE0CB72F347E5F19AAB66D2CAF6E0BC3ECDBC26F0BBF71ECC6CE" dt+="18000030E00000106042192834644500102700609124CFB32C4B142DCB1245D1145555" dt+="144555B534CD3435CD334D4DF34CD3344DD5154D53752D4D334DCDD34C53F334D33455" dt+="D3554DD3944DD1345DD7544DDB1555559655579665D5757559344D571655D3954D5375" dt+="65D5755D59755D599634CD3435CF334DCDF34CD3544D57364DD5752DCF534DCD134DD7" dt+="134555554D55754D55955DCDF34CD5133DD5F44451554DD79455535565D9544D5B364D" dt+="55964D57B56557955D597665DB365555964DD57465D3755DDB755DDB756557D8254D33" dt+="4DCDF34C53F33CD5344DD5754D557565CBF354D3134555D53CD1545555755DD3545DD9" dt+="F23C53F54451553551534DD3756559554D591555D3965555D565D35465D99565DB7655" dt+="D7954D557565537565D9544DD9755DD9E6CAAAAC7AA629CBA6AADAB2A9AAB22BDBB6AD" dt+="BBAEABDBA26ACAAE69AAB2ADAAAAEECAAEADFBB22CDBB2A8AAAE6BBAAA2C9BAA2ADBB2" dt+="2CEBBA2CDBC2AEBAAE6D9BAA2BEBAE2CD365D5767DDBB7E9AAEBDABE2ABBBEEECAB2AD" dt+="BBB6ABCBBA6DFBBE679AB26CAAA66C9BAA2ACBB2ECDAB62DCBBE309AA66B9BAE6ACBA6" dt+="EACAB6EBBABA2ECBB26D8BA629CBA6EABAB6A99AB22CCBB2EDCBB26CDBAA2BEBB26BCB" dt+="B6EFBAB26CCBB62DECB22BCCBEEACAB6EECAB62DACAE6ADBB26FFB6C5DD55501000003" dt+="0E000001269481424356020051000080318C3106A151CA39E720344A39E71C84CC3908" dt+="21A492390721849232E720949252E61C8452520A219492526B218452526AAD00008002" dt+="070080001B342516072834642500900A0060701C4D334DD7956563582C4B145555966D" dt+="DB1816CB1245559565DB168E4D145555966D5BD7D144515565D9B6755F394E559565DB" dt+="F675E1C8545559B66D5DF78D5459B66D5D17864AAA2CDBB6ADFB4625D9B675DD188EA3" dt+="926CDBBAEFFBC6B1C41786C2B254C2577EE1A8040200C0131C00800A6C581DE1A4682C" dt+="B0D0909500400600006090524629A58C524A29A518534A3126000060C0010020C08432" dt+="5068C88A00200A000070CE39E79C73CE39E79C73CE39E79C73CE39E79C638C31C61863" dt+="8C31C618638C31C618638C31C618638C31C618638C31C6181300B013E100B013612114" dt+="1AB21200080700001052084A4AA594524AE49C93524A29A5945222072194524A29A594" dt+="124927A594524A29A594C64129A594524A29A584524A29A594524A292594524A29A594" dt+="524A29A594524A29A594524A29A594524A29A594524A29A594524A29A594524A29A594" dt+="524A29A594524A29A594524A29A594524A29A594524A29A594524A29A594524A29A594" dt+="524A29A594524A290500983C38004025D838C34AD259E16870A1212B0180DC00004029" dt+="E6189350422A21951042289563103A2725A4D45A0929B4122AE8A0758E424A2DB55652" dt+="2A2565124208A184124A69A594D44AC920841242292184944A29258496410929945052" dt+="4A25B5D05229258310426925A456526B2994545206A5A4124A4AA9B4D6522A29B50E4A" dt+="4BA5B4D65A2B2985545A4A1D94925A4AA594D65A28ADB5D63A49A5B4905A4BADB5565A" dt+="29A57496522A25B5D65A6AADA5945A09A5B4D24A6BA594D45A4BADB554526B2DB5965A" dt+="4BADB5965A2BA594945A6AADB5D65A6AA9A4D4520AA594564A0AA9A5965A2BA9B41042" dt+="4B2595565A69ADA594522AA19454526AA9A4D65A4AA195164A2B2595945A2AA9A49452" dt+="4BA984524A48A98456524BADA5965A2AA9B4D4524BADA4525A2A29A5520000D0810300" dt+="408011951662A719571E81230A1926A000000010006020426602810228309001000708" dt+="095200406181A174A10B4288205D04593C70E1C48D276E38A1430B0400000000800700" dt+="7C00001C0C404444730D0E0F10111213141516000000000000000000000000024F6767" dt+="530004BA02000000000000F34F000002000000833BE783031525015A81EF613FCA81DD" dt+="890E0C280354000000007300006E797F07FEA8D0F7C97562A8F1001E000002102952B4" dt+="594A01606FEFB3CF73C1DE1E26630000" #include "hspogg.as" dmmini sdim ogg,strlen(dt)/2 //oggファイルのバイナリを読み込む repeat strlen(dt)/2:poke ogg,cnt,int("$"+strmid(dt,cnt*2,2)):loop memfile ogg:dmmload "MEM:.ogg",1 ;dmmloop 1,0 //ループを有効にすれば音は聞こえます(ピピピ) button "play",*play:stop *play mes "ピッ♪":dmmplay 1:stop


ご確認のほどよろしくお願いいたします。



youdai

リンク

2022/12/3(Sat) 12:52:16|NO.97436

HSP3.7beta4の不具合の報告と、要望を書きます。

●不具合について

・HGIMG4のselangが動作しません。
・HGIMG4のcelbitmapのcelbitmap_captureでバッファが正しく取得されません。
 何か描画されていても、メインスクリーンに対して取得すると常に「00 00 00 00 ....」として取得されます。
 オフスクリーンバッファの場合は常に「00 00 00 FF 00 00 00 FF ....」として取得されます。
 ただし、これはグラフィックボードの設定によって異なる可能性があるので、他のPC環境でも再現性があるかは不明です。

●要望について

・HGIMG4のオフスクリーンバッファをBMP画像で保存できる命令がほしいです。
 現状では、スクリーンの画像を取得するにはプリントスクリーンするしかなく、ディスプレイの解像度を超える画像を保存する方法がありません。

●その他

> Drip さんへ

>●β4からHgimg4作品が動作しなくなってしまいました。
自作シェーダーですが、当方の環境では問題なく動作しています。
標準シェーダーはまだ試していません。

>以前のようにカレントディレクトリからデータを読み出す仕様に戻すことはできないのでしょうか(通常のHSPと同じようにpackfileに無ければカレントを調べるだけでいいと思います)。
具体的にどのような仕様なのかは詳しくは知りませんが、仕様を戻すとbeta4の新機能が不具合が起きる可能性が高いので、自分は強く反対します。
現在、beta4で動作している私の作品が動作しなくなってしまう可能性が非常に高いです。
beta4の作品は、beta4の仕様に合わせるべきだと思います。

>●β4から付属のGPBコンバーターで変換したgpbファイルをgploadで読み込もうとしても読み込めなくなってしまいました。
これも自作シェーダーですが、当方の環境では問題なく変換できました。
標準シェーダーはまだ試していません。



Drip

リンク

2022/12/3(Sat) 18:29:39|NO.97440

youdaiさんこんにちは。
レスありがとうございます。

>自作シェーダーですが、当方の環境では問題なく動作しています。
本当ですか!?HSP3.7β4のスクリプトエディタを起動し、

#include "hgimg4.as" chdir dir_exe+"\\sample\\hgimg4" gptexmat t,"res/qbox.png" gpbox b,10,,t repeat addang b,0.1,0.1 redraw 0 gpdraw redraw 1 await 16 loop
を貼り付けてF5を押した場合、エラーせずハテナマークの箱が回っている表示がされる、という意味でしょうか?
だとすればこのスクリプトでエラー(Line:3 パラメータの値が異常)が発生する他の原因として何が考えられるか探る必要がありそうです。
私の所有する環境でHSP3.7β4でこのスクリプトが実行できるものはありません。

>具体的にどのような仕様なのかは詳しくは知りませんが、仕様を戻すとbeta4の新機能が不具合が起きる可能性が高いので、自分は強く反対します。
具体的な仕様を説明しているのですが、逆に具体的にどのようなコードでエラーが発生してしまうのでしょうか?
上のサンプルスクリプトでの問題の再現は充分に具体性があると思うのですが、resフォルダをpackfileに含めざるを得ない、あるいは実行ファイルと同一の場所にresフォルダが置かれていなければならないシェーダーが存在する、ということでしょうか?
もしそうした仕組みがあるのであれば大変興味深いです。サンプルスクリプトの提示は可能でしょうか?
私としても影やフォグ等の標準的なシェーダーは渇望しておりますので、将来の機能が潰れるのは本意ではありません。
かといってフォルダ構成の縛りが絶対的に発生するというのも問題に感じています。

>これも自作シェーダーですが、当方の環境では問題なく変換できました。
こればかりは何とも言えませんが、これまで変換できていたFBXファイルが全滅するのはこれまで精魂込めて作ってきた作品を沢山抱える身としては致命的な問題です。
特定のモデラーの特定のバージョンから出力されたFBX以外サポートしない…というのはかなり残念です。
これは何とかしていただきたい気持ちです。



アキアキノヒロロ

リンク

2022/12/3(Sat) 19:40:28|NO.97442

Dripさん、私も同じような思いを持ちましたが、
スクリプトとresフォルダの位置関係というよりも、
スクリプトとshadersフォルダの位置関係のように思います。
直下にshadersフォルダを持つresフォルダが、
スクリプトと同一フォルダになければならないということではないでしょうか。
この位置関係で、そのシェーダ設定がスクリプトに反映されるのではと思います。
また、3Dモデルが参照する画像のパスは、同様にスクリプトとの位置関係で指定することになるので、
materialファイル内でのパス指定も、materialファイルとその画像ファイルとの位置関係ではなく、
「res/....../...... .png」のような形になる訳です。
こうすれば、[hsp37b3]までのものを[hsp37b4]で実行できますが。

Dripさんも、このことは分かってらっしゃるとも思うのですが、
Dripさんの文面から、私が上手く読み取れていなかっただけかも知れません。でしたら、すいません。

GPBコンバーターは一つのモデルでしか試していないですが、正常に変換でき、マテリアルファイル読込みも出来ました。

HSP3.7β4のスクリプトエディタを起動し、ご提示のサンプルスクリプトを貼り付けて実行した場合、エラーが出ます。
> #Error 3 in line 3 (???)
> パラメータの値が以上です
しかし、[HSPアシスタント]を起動して、[hgimg4/...]のどれかを実行後、サンプルスクリプト実行ならば、正常動作します。

なお、以上に加えて、下記も参照願います。
http://hsp.tv/play/pforum.php?mode=all&num=97105#97379 と #97380
及び#97382〜#97387

このことを踏まえて、その手立てを施して、テストしています。



Drip

リンク

2022/12/3(Sat) 21:04:12|NO.97443

度々失礼します。

NO.97430 のGPBコンバータで0byteのマテリアルが生成される問題とエラー6の件はお忘れください。

>●β4から付属のGPBコンバーターで変換したgpbファイルをgploadで読み込もうとしても読み込めなくなってしまいました。
これは誤りです。

このエラーが発生した原因は私のミス(のよう)です。
HSP3.7β4で試していると思っていたらHSP3.6β4で試していたことが原因(のよう)でした。
(改めて3.7β4をセットアップして変換を試みたところ正常に変換できましたので、逆に変換できない状況の再現を調査したところ3.6β4に行き着きました。)
3.7β4のGPBコンバータでの変換は問題ないことが確認できましたが、依然3.7β4で変換したモデルであってもhgimg4dxで表示されないモデルがある問題は継続しています。
こちらでも引き続き原因を探りたいと思います。



アキアキノヒロロさん

>materialファイル内でのパス指定も、materialファイルとその画像ファイルとの位置関係ではなく、
>「res/....../...... .png」のような形になる訳です。

はい、これまでもそうだったかと思います。これは今回の話題と関係ありません。

>しかし、[HSPアシスタント]を起動して、[hgimg4/...]のどれかを実行後、サンプルスクリプト実行ならば、正常動作します。

説明の意図をご理解されていないのかもしれませんが、私は問題を再現する手法を説明しているのであって、HSPアシスタントなどでその手法を変更されてしまっては再現の意味がないかと思うのですが…
youdaiさんは私の提示したサンプルや説明では具体性に欠く(正常に実行される?)とのことのようで、私側に何か見落としがあるかを確認していただいております。
アキアキノヒロロさんの手法でエラーが発生しなくなる原因ですが、それはHSPスクリプトエディタの仕様(バグ?)によるものです。
HSPは何かスクリプトファイルを開いたあと新規作成して保存していない状態のスクリプトの実行パスを以前開いたスクリプトファイルと同じディレクトリと勘違いして実行します。
それではresフォルダの存在する場所にスクリプトを保存して実行しているのと変わらないため、この問題の解決にはなっていません。
これはHSP3初期からある現象だったかと思いますが、特に大きな問題になっていなかったため放置されていたのだと思います。
しかし現在こうしてスクリプトファイルのファイルパスが厳格化されていく流れがあるのであれば修正すべき時に来たのかもしれませんね。
(この問題がどう処理されるのか不明なため現時点でこの議論は意味がないですが)



ころ

リンク

2022/12/3(Sat) 21:57:47|NO.97444

Dripさん
横からすみません。
私の方でも試したところ


何もファイルを開いていない状態で

#include "hgimg4.as"
chdir dir_exe+"\\sample\\hgimg4"

gpreset

gptexmat t,"res/qbox.png"
gpbox b,10,,t
repeat
addang b,0.1,0.1
redraw 0
gpdraw
redraw 1
await 16
loop


以上のように
gpreset で初期化すれば動作したのですが

最初の読み込み位置から変化していないのかもです。

b3なら、そのままでも動作していますが

参考になりましたら幸いです



Drip

リンク

2022/12/3(Sat) 22:53:09|NO.97446

ころさん

こんにちは!ご助言ありがとうございます!
gpresetを実行したところとりあえずカレントディレクトリを移動しても正常にリソースへアクセスすることができました!
これは非常に助かります。
ただし、掲示板のスクリプトや旧スクリプトはこの仕様を知った上で逐一修正して実行する必要があるのはどうしようもないでしょうか;
できることなら互換性を維持したいのですが…

それとなんですが、gpresetを行っても残念なことに私のスクリプトは未だエラーが消えません…調査したところ、#pack , #epackの仕様が変更されており、今まで

#epack"dir\\data.jpg" picload "data.jpg"
でpackfileにアクセスできましたが、3.7からはこれがアクセスできなくなります。
新仕様に合わせるためには全旧作のスクリプトをひとつひとつ、大規模に書き換えが必要になりそうなのですが…かなり焦っています。
この仕様は旧来の仕様との互換性を取ることは難しいのでしょうか…

3.6までは#epack"dir\\data.jpg"と#epack"dir/data.jpg"では別の意味で扱われていたようです。
3.7ではこの仕様が変わってしまっています。
非常に困っているのですが、何とかならないでしょうか;;



アキアキノヒロロ

リンク

2022/12/4(Sun) 00:08:04|NO.97447

「hgimg4dxで表示されないモデルがある問題」は、私の環境(CPU内GPU)でも、確認しています。

> materialファイル内でのパス指定も、materialファイルとその画像ファイルとの位置関係でなく、
>「res/....../...... .png」のような形になる訳です。
については、確かに、「これまでもそうだった」ですが、
materialファイルもその画像ファイルも、resフォルダ内同フォルダにあるのが普通で、
「res/....../...... .png」は、単に「...... .png」というように画像ファイル名だけでも
正常に働いていましたが、[hsp37b4]では、必ず「res/....../...... .png」の形で指定しないと
正常な表示にならないという意味で、述べたつもりでした。言葉足らずで、すいませんでした。

ご提示のスクリプトの件は、[dir_exe]の認識不足で、こちらの落ち度でした。
([gpreset]でひとまず問題回避できるんですね。)
「スクリプトをresフォルダの存在するパスに保存」しないと、これがエラーになるのは何故か、
ということですね。答えはすでにDripさんが想定していらっしゃいますが、
> 実行ファイルと同一の場所にresフォルダが置かれていなければならないシェーダーが存在する
ということだと思います。具体的にどれとは分かりませんが、スクリプトとshadersフォルダの
位置関係がこの固定の位置関係にあることで、そのシェーダ設定の多くがスクリプトに反映される
のではと思います。
バッファのことも考えると、文字表示のこともありますし、多くが関係していそうです。

> これまで変換できていたFBXファイルが全滅する
私のFBXファイル(3Dモデル)は、
materialファイルの画像ファイルパスを「res/....../...... .png」にすること、
及び、shadersフォルダを正しいものに差し替え、
それに応じてmaterialファイルを編集し直すことで、
全て、[hsp37b3]までのものを[hsp37b4]に移植可能なのですが。

おにたまさんの
http://hsp.tv/play/pforum.php?mode=all&num=97105#97382
私の
http://hsp.tv/play/pforum.php?mode=all&num=97105#97383
ご確認頂けましたでしょうか。



Drip

リンク

2022/12/4(Sun) 00:46:25|NO.97448

アキアキノヒロロさん

>ご確認頂けましたでしょうか。
失礼ですが私の投稿はご確認いただけましたでしょうか。
GPBファイルへ変換に失敗する件は誤報告であったことも問題の原因も全て報告させていただいているのですが、
それでもまだ無関係とされる点を追求する理由はあるのでしょうか。何か納得が行かない点があるのでしょうか。



アキアキノヒロロ

リンク

2022/12/4(Sun) 01:21:21|NO.97450

どうも、頭が混乱して、失礼を犯してしまいました。
> 3.7β4のGPBコンバータでの変換は問題ない
はっきりおっしゃっておられるのに、問題をこねくり回したようで、すいませんでした。



ころ

リンク

2022/12/4(Sun) 09:36:11|NO.97451

Dripさん
また気になったので。
hgimg4はかじっただけなので、おかがましいですが

resフォルダの件
resフォルダへの参照をどのタイミングやっているのか
ちょっとわからないです。
いったんリセットして再参照させるしかかなぁ
出来れば改善されるといいですね。

あやふやですみません。


#epackの件
どちらもパスを書かけば、3.6でも3.7でも行けるみたいです

例えばですが


#define bgimg "dir\\bg03.jpg"

#epack bgimg
picload bgimg

stop

以上でも3.6/3.7でも表示できました。
#define なのは epack 部分も含めて同じにしたいので
これはこれでありですか?



雪月夜

リンク

2022/12/4(Sun) 10:57:48|NO.97452

不具合報告です。
以下の処理ではボタンを押した後、キー操作を受け付けなくなります。
HSP3.7β4で確認しました。

button gosub "ボタン",*click : _stat=stat onkey gosub *keypush stop *click objenable _stat,0 objenable _stat,1 return *keypush ;ENTERキー押下 if wparam=13{ gosub *draw } return *draw mes"enter" return



youdai

リンク

2022/12/4(Sun) 13:25:05|NO.97454

>を貼り付けてF5を押した場合、エラーせずハテナマークの箱が回っている表示がされる、という意味でしょうか?
いえ、違います。書いた通りの意味で、単純にbeta4で自作のシェーダーで自作のスクリプトを動作させた場合、問題なく動作したという意味です。
また、Dripさんのスクリプトを自作シェーダーで走らせることはできません。レンダリングパイプラインが全く異なるからです。
通常のシェーダーとは処理関係が全く別物なので、通常のスクリプトで試すことはできません。



Drip

リンク

2022/12/4(Sun) 16:12:36|NO.97455

こんにちは!

ころさん、#pack,#epackの問題につきまして

>#epackの件
>どちらもパスを書かけば、3.6でも3.7でも行けるみたいです

ファイルの数分の#defineを定義するということでしょうか^^;チカラ技ですね。
しかし残念ながらそれでは変数からファイルを指定しているような場合に対応することができません。
最も単純な例では "stage"+num+".dat" などとファイル名を指定することがありませんか?
指定されるファイルによってフォルダが違うような場合、単純にフォルダ名を添えれば解決できる話ではなくなってきますよね。

>以上でも3.6/3.7でも表示できました。

その記述ですとHSP3.6でコンパイルした実行ファイルを別の場所に持って行って実行するとエラーしてしまいますね;
3.7側でこの書き方に互換性を持たせていただくか、パック時にフォルダ情報を含めるかのオプションを設けていただければ解決できそうなのですが…


youdaiさん、hgimg4のパスの問題につきまして

>いえ、違います。書いた通りの意味で、単純にbeta4で自作のシェーダーで自作のスクリプトを動作させた場合、問題なく動作したという意味です。
>また、Dripさんのスクリプトを自作シェーダーで走らせることはできません。レンダリングパイプラインが全く異なるからです。
>通常のシェーダーとは処理関係が全く別物なので、通常のスクリプトで試すことはできません。

つまり私の報告とは直接関係がない全く別物のお話ということでしょうか。
どのようなものかも想像できませんので、申し訳ありませんが私から言えることは何もありません…。



youdai

リンク

2022/12/4(Sun) 16:24:16|NO.97456

>つまり私の報告とは直接関係がない全く別物のお話ということでしょうか。
>どのようなものかも想像できませんので、申し訳ありませんが私から言えることは何もありません…。
Dripさんが勘違いしたことを私のせいにしないでください。
それに私のレスは関係ないレスではありません。コメントを正確に読まない人とはこれ以上会話したくありません。



ze-na

リンク

2022/12/5(Mon) 00:22:52|NO.97458

>おにたま(管理人) さん

ご返答ありがとうございます。

>es_putbgは(中略)GPUやメモリのスペックによって遅くなる可能性はあるかと思います。
>以下のような大量に画像を表示するサンプルは正常な速度で動作していますでしょうか。
>sample/sprite/es_test4.hsp
>sample/hsp3dish/celputm.hsp

指定されたサンプルでも確認しましたが通常通り処理されました。

言われている通り GPUを利用することで es_putbgの処理は改善されました。
ただソフトウェアレンダリングの場合には、極端に遅くなってしまうようです。
仕様であれば、es_bg系命令やTDFWの利用の際には 3Dゲームなどのように
最低動作環境を表記する必要があるかも知れません。



GENKI

リンク

2022/12/5(Mon) 00:36:13|NO.97459

hgimg4のgpsetprmで、PRMSET_FLAG(オブジェクト登録フラグ)は読み出しのみとなっていますが、実際には書き換えできてしまいます。
例えば0を指定すると、オブジェクトが削除されます。delobjとおなじ挙動です。
また、gpsetprmを使用するとPRMSET_FLAGには2以上の数値も指定することができます。

マニュアルにはPRMSET_FLAGの詳しいい説明がないので、実際の挙動とgpsetprmの説明のどちらが正解かわかりませんが、挙動が説明と不一致なので報告しておきます。



おにたま(管理人)

リンク

2022/12/5(Mon) 21:30:27|NO.97464

>Drip さん

β版についてご指摘とご意見ありがとうございます。
まず、基本的にβ版は新しい機能の検証とテストを行うものですので、
現行の仕様で確定されているということではありません。
過去のスクリプトとの互換性もできるだけ重視したいと考えていますので、
そのあたりも含めてご理解頂ければ幸いです。

resフォルダについてですが、β4版から初期化時(gpreset実行時)の
カレントフォルダから見たres/shaders以下のシェーダーファイルを参照するよう変更されています。
これには理由があって、今回GPB Converterに新しく.gpbファイルのプレビュー機能が入りましたが、
res/shadersフォルダを固定することで、独立した.gpbファイルであっても正しく表示されるように考慮したものです。
いままでは、.gpbと.materialのあるフォルダ以下のshadersにあるシェーダーが参照されていました。
今後モデルが増加してフォルダごとに.gpbと.materialが配置されるような時に、それぞれのフォルダに重複してshadersフォルダを用意する必要が出てしまうため、
シェーダーが格納されているフォルダは固定する方向で検討しています。
(リソースファイル(.gpbと.material)は自由にフォルダを変更して読み込みが可能になっているはずです)
もちろんこれがベストということではなく、シェーダーが格納されているフォルダを
別途指定する命令を追加するなど実装方法はいくつかあるかと思います。
皆さんの意見などを参考にしながら、互換性の取れる形で進められればと考えています。
HGIMG4でgmode 6を使用した場合の動作ですが、これはOpenGLで同様の処理がすべてのプラットフォームで動作していないため保留されています。
Windowsだけであれば実現可能ですが、androidやiOSでの動作と異なるため調整中です。解決した際には、すべてHSP3Dishと統一した動作にしたいと思います。

>β4からHgimg3製の作品のメモリ使用量が爆発的に増大してしまいました。

爆発的というのはどの程度でしょうか。oggファイルのサイズ分が増加することは想定していますが。
オンメモリでの読み込み動作をパラメーターで指定する形も今後検討したいと思います。
また、ノイズが発生するという件も今後のバージョンで調査致します。

#packや#epackで「dir\\data.jpg」のようにフォルダ指定があった場合の動作ですが、
packfileのフォルダ構造がサポートされたことにより確かに従来と動作が変わっています。
従来の仕様では、#packや#epackで指定したファイル名のみが格納されフォルダは考慮されませんでした。結果的にフォルダ指定なしで読み込むことが可能です。
新しい仕様では、フォルダ名も含めて格納されるため読み込む場合も、「dir\\data.jpg」のように記述する必要があります。
ただ、これを従来と同様にフォルダ指定を無視するような動作にした場合、新しく使う人にとっては直感的な動作にならないことを懸念しています。
フォルダ名を含めた格納は、#dirpack、#direpackなど別途命令を新設することも可能ですが、ちょっと煩雑な気がします。
折衷案として従来のスクリプトは、「#packopt flatdir 1」のようにフォルダ構造を無視して格納するようなオプションを新設することで対応するような形はいかがでしょうか。
現状でデフォルトでフォルダ構造を再現する方が利便性が高いと判断していますが、そのあたりは皆さんのご意見も参考にしながら決定できればと考えています。

引き続きどうぞよろしくお願いいたします。



おにたま(管理人)

リンク

2022/12/7(Wed) 00:14:15|NO.97474

>youdai さん

ご報告ありがとうございます。
celbitmap命令自体はある程度動作していそうですが、どういった処理を行ったか具体的なスクリプトなどあると助かります。
バッファを画像ファイルとして保存する命令は、ずっと入れたいと考えています。余裕のある時に実装したいと思います。

>雪月夜 さん

ご報告とスクリプトの提示ありがとうございます。
原因など調査してみたいと思います。

>ze-na さん

ご返信ありがとうございます。
ソフトウェアレンダリングの場合は、HSP3の標準描画と変わらない速度になってしまうためHSP3DishのGPUを使用するメリットは得られなくなってしまいます。
多くの場合、ソフトウェアレンダリングを選択している人は少ないと考えていますが、有効にする理由などあれば参考にさせて頂きます。

>GENKI さん

gpsetprmで指定するパラメーターの説明は、読み出しのみとなっていても書き込めてしまう場合がありますので、あくまでも想定される動作という扱いになります。
安全性という意味では問題ありますが、今のところの仕様とお考えください。
PRMSET_FLAG(オブジェクト登録フラグ)は今のところ0か1の登録フラグとして使用されています。
現在はされ以外使用していませんが、将来的にシステムが使用する可能性はあります。



あかねこ

リンク

2022/12/7(Wed) 10:18:40|NO.97475

>おにたま(管理人) さま
#pack #epack について個人的には、ベータ4の現状の仕様で満足しています。
フォルダ指定は大変使いやすいです。
移行の際にプログラムの修正が必要になるケースもありますが、テキストの
一発置換ツールを使えば、かなり修正量も軽減されますので。
オプションで互換性を維持する方法もありだと思いますが、
少しでもファイルへのアクセスが遅くなるとかCPUの負荷が重くなるなら嫌ですね。
FPSはなるべく落としたくないので。

>現状でデフォルトでフォルダ構造を再現する方が利便性が高い
そのとおりだと思います。

ついでに質問で恐縮すが、chdpmを使用せずに従来の
picload "DPM:test.dpm:sample.jpg"
という指定方法はHSP3.7では使えなくなったのでしょうか?



アキアキノヒロロ

リンク

2022/12/7(Wed) 10:58:47|NO.97476

全く以て素人感覚ですいませんが、ツイッターに以前書いたことを再び思いました。
「シェーダー開発は、[hgimg4]の当然な宿命なので、問題大きく、こなれてくるには時間が......。」
「......その代償となる問題の解決も厄介だな。」
おにたま さんがおっしゃっているように、スマホ環境対応も、絶対条件で外せないし......。

となれば、あかねこ さんも同感しているように、
>現状でデフォルトでフォルダ構造を再現する方が利便性が高い
これで行くことを『決まりごと』とする割り切り方をしたほうが迷いがなくていいと思う。
この『決まりごと』に合わせるために生じる『厄介さ』というのは、
新しいものを始める時に必ず生じるもので、慣れるしかないと思う。
そして、その厄介な作業を通じて、新しいものの理解も深まって、こなれていくのだと思う。



Drip

リンク

2022/12/7(Wed) 22:56:54|NO.97477

おにたまさん

お忙しいところご返信感謝いたします!厚いご配慮を賜り本当に嬉しく思います。

●gmode 6の減算処理の件につきまして

>Windowsだけであれば実現可能ですが、androidやiOSでの動作と異なるため調整中です。

他デバイスでのgmode 6を把握できていないのですが、WindowsのDishで正しく減算合成できるのは他のデバイスでも調整が取れているという意味になるのでしょうか。
(Hgimg4はWindowsでもOpenGLの関係で無理なのかなと漠然と想像していたのですが…そういうわけでもない?)
Dishでgmode 6は大変便利な合成モードのためWindows限定で有り難く使わせていただいております。
今回は別の代替案を練ることにいたします。Hgimg4でこの機能が使えるようになる日を心待ちにしております!


●hgimg4のシェーダーパスの件につきまして

ご対応に感謝いたします。この問題自体はころさんの助言によりほぼ解決しており、
今回ご説明いただけたことでgpresetによりカレントディレクトリがシェーダーパスに確定する動作がバグ等ではなく意図した仕様ということがわかったので一安心いたしました。
(次の文はちょっと思った事として書かせていただきます。)

ところで、今回のご説明ですと、将来的に再びパスの仕様変更が必要になる可能性がありそうに思えるのですが、
例えば複数ワールドがシームレスに繋がったゲームでワールドごとにシェーダーをフォルダわけして管理したい場合や、
多数の素材フォルダを集めたシーン製作ツールなどは現行仕様では難しいということになるでしょうか。
このような場合ではシェーダーのパスはカレントディレクトリと独立していても任意で変更できる命令が必要になるのではと思いました。
勿論、シェーダーのパスをホイホイ変えられてはHgimg4の動作に支障を来たす、ということであればこれらの構想は諦めざるを得ないとは思いますが…
ただ3.7β4ではパスを自由に変更できず、目で確認できず、パスが設定されるタイミングもリセット時にこっそりと…というのはさすがに混乱を呼ぶと思いました。
この辺は開発者にとって透明性のある仕組みにしていただきたく思います。

更に、現在の仕様ではpackfile内のシェーダーパスは変更不可能ですよね?(packされたルートのresフォルダ限定で読み込み可という扱いで間違いないでしょうか。)

//このスクリプトファイルと同じ場所にdataフォルダを作成し、その中にβ4同梱のresフォルダを入れてください。 //□project //├このファイル.hsp //└□data // └□res //  └□shaders //これは3.7β4でF5実行は可能だがコンパイルして別のフォルダでは実行できない例です #epack "data/*" //パックしてもムダ! #include "hgimg4.as" chdir "data":gpreset //←この時点でpackfile内のresフォルダをキャッチできない(F5実行時は可) gpload m,"res/tamane2.gpb":setscale m,0.1,0.1,0.1:gpact m repeat redraw 0 gpdraw redraw 1 await 16 loop
個人的にはそんなに大量のシェーダーを管理したくはないので1フォルダにまとまっていても現状は問題性を感じませんが、gpreset時にシェーダーパスが確定するにしましても、それが利用者に明瞭に伝わるようにしていただきたいと思いました。


●oggファイルの読み込みでメモリの使用量が増大する件につきまして

>爆発的というのはどの程度でしょうか。oggファイルのサイズ分が増加することは想定していますが。

一気に+500MB程です…(HSPで使用可能なメモリの四分の1)
音楽データ1ファイルの平均は5MB〜程ですが、総データ量としては200MBくらいです。
またこの作品の音楽データだけを読み込む処理でテストしたところ、HSP3.6でのメモリ使用量は7MB程度でしたが、HSP3.7β4へ行った途端500MB(71倍!?)に跳ね上がりました。
HSPは動画を扱うことがかなり苦手なので代替案として相当量の画像データをまとめて読み込まざるを得ないことがあるのですが、
今回のケースではLive2D等で作成された滑らかなアニメーション画像等に割けるメモリ空間が大幅に削がれてしまいました。
そもそも2GBカツカツまで使用しますとユーザーからの批判や動作面での不安が想定されますので、実際はもっと低く抑えており実行自体はなんとかできますが、動作環境を大きく書き換える必要があります。
プログラムの構造を見直し、一々dmmloadする仕様に変更すれば(あるいは暗号化処理を変更して拡張子変更に配慮すれば)対応していくことはできるかもしれませんが、結局のところ現仕様では旧スクリプトを大きく改変する必要があります。

願わくばこれまでのように、新機能は旧機能に拡張する形で実装いただければ幸いです。


●packfileの件につきまして

>折衷案として従来のスクリプトは、「#packopt flatdir 1」のようにフォルダ構造を無視して格納するようなオプションを新設することで対応するような形はいかがでしょうか。

その解決策でありましても、フォルダ構造を「有効」にする場合に1を宣言する仕組み(#packopt packdir 1 等)の方が良いと思います。
これは旧来のスクリプトとの互換性を維持することが主たる目的ではなく、次のような理由から来るものです。

【理由1】この宣言がないとスクリプトだけ渡された時、そのコードが3.6仕様なのか3.7仕様なのか区別がつかない。
例えば数年後、ソースコードを実行してエラーした時、3.6仕様で書かれていて3.7で動かないのか、3.7仕様で書かれていて3.6で動かないのか区別できません。
それともポカミスで3.7仕様で書かれていて3.7でエラーしているのかもしれない。プロジェクトのバージョン管理がないHSPにとって、packfileでパスを有効にしている事を明示することは、旧スクリプトの互換性と同程度に3.7ユーザーにとっても有益と考えます。

【理由2】パスを含めるほうが必ずしも便利で標準的とは限らない。
体験版と製品版でデータをフォルダ管理し、実行ファイルを出力する際にどちらのフォルダからデータをpackするかによって動作を切り替えるスクリプトでは、殆どプログラム的な動作切り替えを必要とせず、今後も有用なものと考えられます。
“packfileにパスを含めることの方が標準なので昔の仕様を有効にするフラグを別途用意しよう”…という考え方は適切な構想ではないように感じます。

【理由3】カレントディレクトリを移動してもpackfile内では移動が考慮されない概念を追考する必要がある。
hgimg4でのパス指定もこれに近いのですが、プログラム上でchdirを行ってデータを読み出している場合、packfileからの呼び出しでは階層移動に関係なくpackしたパスを指定する必要があるという考え方が必要になってきます。
//F5実行はできるが実行ファイルにして別の場所で実行できない例
#pack "data\\file.bmp" chdir "data":picload "file.bmp" //3.7β4ではdataフォルダの有無に関係なく実行ファイルでエラー
現在のプロジェクトではその考慮が必要なのだと冒頭で宣言することはとても重要なことであり、理由1にも繋がることだと思います。

以上の理由から、ではどのようにそれを宣言するのが良いか?となったとき、私ならパスを有効にする場合に宣言を入れるほうが適切と感じました。
もう新しい仕様に慣れて行こうよ、シンプルに書けたほうがいいでしょ?といった精神論に寄らずに仕組みを決定するべきだと私は思います。


●最後に、ボーンを持たないモデルでhgimg4で表示できてhgimg4dxで表示できない例のひとつを報告させていただきます。
ビジネスノートからゲーミングPCまで構成の全く異なるPC3機で動作確認を行いましたが、全て同じ結果が得られました。

//症状 //・3.7β4で実行するとアヒルが表示されるかと思いますが、hgimg4dx.asに変更すると表示されなくなります。 //・hgimg4dx.asを使用しつつ、maxLightの値を6にして実行すると表示されるようになります。 //・モデルをduckからsphaceshipに変更するとmaxLightが7でも表示されますが、8にすると消えます。 //・この再現例ではスペキュラが有効なモデルで共通して起こる?(pronama3dとは別問題?) #include "hgimg4.as" chdir dir_exe+"\\sample\\hgimg4":gpreset #define maxLight 7 //最大ポイントライト数 gpresetlight 1,maxLight //ライト初期化 repeat maxLight gpnull id_light(cnt) //ライト用モデル生成 gplight id_light(cnt), GPOBJ_LGTOPT_POINT,6 //モデルをポイントライトに loop //標準ライト定義 gpnull normalLight gplight normalLight, GPOBJ_LGTOPT_NORMAL gpuselight normalLight,0 gpload b,"res/duck":setscale b,10,10,10 repeat addang b,,0.1 redraw 0 gpdraw redraw 1 await 16 loop

問題改善の参考になれば幸いです。

ありがとうございました!



うし

リンク

2022/12/8(Thu) 03:15:36|NO.97478

>おにたま(管理人) さん

ご返答ありがとうございます。

>Hgimg4での基本図形(球体)について
●3Dモデルが読み込めれば、
scaleでサイズ、摩擦を調整すればいいかな。
物理ONで、コリジョンはそのままの形状につくし。
回転つけるなら、dirとrotateかな。

●3Dモデルの地形についても、
物理ONで、コリジョンはそのままの形状につくなら、
Hgimg3で、できなかったことができるのかな。階層構造物とか。
複雑なモデルだと、処理が重くなるのかな。
その場合、単純化したモデル作成が必要になる?

●Hgimg4のビジュアルについて
凝りたい人も、凝れるよう。
初心者には直感的にshader、posteffect等が、
切り替えなんかで、できるといいかも。
現代のインディーズゲームなんかのビジュアルにも対応できるもの
となると、重くなる・・・。



アキアキノヒロロ

リンク

2022/12/8(Thu) 12:05:43|NO.97479

Drip さん、私がレスすると、またまぜっ返しに来たと思われそうですが。

初心者然とした素人感覚で言いましても、Drip さんがおっしゃるように
> 私ならパスを有効にする場合に宣言を入れるほうが適切と感じました。
> もう新しい仕様に慣れて行こうよ、シンプルに書けたほうがいいでしょ?
> といった精神論に寄らずに仕組みを決定するべきだと私は思います。
その通りだと私も思いました。
前に「慣れ」という言葉を不用意に使ったのは良くなかったですが、
一旦この仕様でやってみて、問題が出るようなら、その解を求めて行くしかないんじゃないか、
そうしていくことで、「理解も深まって、こなれていく」というふうに思ったわけです。
毎回のように、言葉足らずで誤解されても、仕方ありませんでした。
そのどういうような問題が出てくるかを、Drip さんは、現時点で明示しておられるのですね。
その解として、「パスを有効にする場合に宣言を入れる」というご提案をされている。
これには、大いに賛成です。明示的にすることは、初心者然としたものにとっては、
なおさら、お願いしたいところです。非明示的既定の設定には、度々悩まされてきましたので。

プロジェクトのバージョン管理がないことの問題点にも、同感です。
(直接は関係ないですが、少なくともスクリプトエディタには、エディタのバージョン表示が
欲しいです。)

あと、「●最後に」で、Drip さんが述べられていることについて、
自分なりに少し書き換えて、試してみました。
なお、[sphaceship]の[material]ファイル内の2つある[SPECULAR]のうち、どちらか1つを
外しておいて試したところ、確かに[SPECULAR]設定の有無が関わっているようです。
(「スペキュラが有効なモデルで共通して起こる」)

#include "hgimg4.as" //#include "hgimg4dx.as" chdir dir_exe+"\\sample\\hgimg4" gpreset #define maxL 7 //最大総ライト数 #define maxLight_N 1 //最大標準ライト数 #define maxLight_P 1 //最大ポイントライト数 #define maxLight_S maxL-maxLight_N-maxLight_P //最大スポットライト数 gpresetlight maxLight_N,maxLight_P,maxLight_S //ライト初期化 //標準ライト定義 repeat maxLight_N gpnull normalLight(cnt) gplight normalLight(cnt), GPOBJ_LGTOPT_NORMAL gpuselight normalLight,cnt loop //ポイントライト定義 repeat maxLight_P gpnull id_light_P(cnt) //ライト用モデル生成 gplight id_light_P(cnt), GPOBJ_LGTOPT_POINT,6 //モデルをポイントライトに gpuselight id_light_P(cnt),cnt loop //スポットライト定義 repeat maxLight_S gpnull id_light_S(cnt) //ライト用モデル生成 gplight id_light_S(cnt), GPOBJ_LGTOPT_SPOT,6 //モデルをスポットライトに gpuselight id_light_S(cnt),cnt loop gpload duck,"res/duck" setscale duck,10,10,10 setpos duck,-30,0,0 gpload ship,"res/sphaceship" setscale ship,10,10,10 setpos ship,30,0,0 repeat addang duck,,0.1 addang ship,,0.1 redraw 0 gpdraw redraw 1 await 16 loop
いくつもの条件が重なってきて、相変わらず、頭が混乱するのですが、
■"hgimg4.as"の場合、
各10までなら、最大総ライト数が30まで、表示されます。
[10+10+10]といったライト数でも、それらのライト設定が有効かどうかは分かりませんが、
少なくとも表示はされます。各ライト数でどれか1つでも10を超えた時点でエラーです。
このことはマニュアル通りです。

■一方、"hgimg4dx.as"では、
最大総ライト数は、7までのようで、それを超えると、エラーにはなりませんが、
正常には表示されません。
これは、ポイント/スポットライトの各ライトのみの総ライト数にも、あてはまるようです。
ただし、標準ライトは1以外、DXでは、表示されないようなので、
標準ライトは1として、ポイント/スポットライトの各ライトのみの総ライト数「6まで」です。
また、DXでも、各ライト数でどれか1つでも10を超えた時点でエラーです。
"hgimg4dx.as"の
#define maxL 7 //最大総ライト数
#define maxLight_N 1 //最大標準ライト数
#define maxLight_S maxL-maxLight_N-maxLight_P //最大スポットライト数
を固定して、
#define maxLight_P //最大ポイントライト数
を、0〜6 の間で変化させて見ても、正常表示です。
しかし、最大総ライト数を8、9、10...、と増やして見て下さい。
[duck]が消え、[sphaceship]の[SPECULAR]設定部分が消え、[sphaceship]の全部が消え、となっていきます。

何故、このようなことになるのか、初心者然とした素人感覚で言わせていただくと、
バッファが関係しているように思えるのですが。バッファの使い回しとか、不足とか?
これ、当てずっぽうです。

相変わらず、頭が混乱。上手く整理できていませんが、ご報告まで。



アキアキノヒロロ

リンク

2022/12/8(Thu) 14:34:01|NO.97481

HSP3.7β4版として公開の最新バージョンは、
https://www.onionsoft.net/wp/archives/3609
プレビュー版から、
「[HSP3Dish][Windows] mes/print命令の空白に不要なピクセルが含まれる不具合を修正」
のみ、とのことですが、
[pronama3d/res/shaders]
も、
[hgimg4/res/shaders]
と同一のものに差し替えておいて欲しかったです。

[pronama3d/pronama5.hsp]
以前と同じ結果になっていたので、ちょっと......。



youdai

リンク

2022/12/8(Thu) 14:58:04|NO.97482

>おにたま さん
>celbitmap命令自体はある程度動作していそうですが、どういった処理を行ったか具体的なスクリプトなどあると助かります。

グラフィックボードですが、GeForce GT740を使っています。
その設定の中のトリプルバッファリングとVSYNCを使っています。
HSP3の環境は、HSP3.7beta4(一番最初のプレビュー版)です。


使用したスクリプトの概念 1.複数のオフスクリーンバッファを使用している 2.メインスクリーン(gsel 0)には直接描画をせず、オフスクリーンバッファからcelputで画像をコピー&ペーストしているのみ

という処理をしています。
celbitmapで取得するタイミングですが、gsel 0 に対するredraw 1の前後など複数の箇所で取得を試してみましたが、結果は同じでした。
例えば、


goto *f2 *f0 gsel 1;これはオフスクリーンバッファ redraw 0 (なんらかの処理) gpdraw return *f1 gsel 0;これはメインスクリーン redraw 0 pos 0, 0 celput 1 redraw 1 return *f2 gosub *f0 gosub *f1 await (ディスプレイのリフレッシュレートに合わせた値) celbitmapで何らかの処理(このタイミングでcelbitmapでgsel 0 や gsel 1 の内容を取得しようとするが、真っ黒として取得される) stop;取得するだけなのでスクリプトはここで止める

実際はもっと複雑な過程のスクリプトなのですが、概念的な部分だけ省略すると上記のような形になります。



記事削除

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

NO.97105への返信

マスコット

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

名前

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

削除用パスワード

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

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