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


HSPTV!掲示板


未解決 解決 停止 削除要請

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


おにたま(管理人)

リンク

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のコメント化で早くなります)



記事削除

記事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.