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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0221
おにたま(管理人)HSP3.6β5テストのお願い151解決


おにたま(管理人)

リンク

2021/2/21(Sun) 00:53:28|NO.92295

HSP3.6β版について、いつも多くのご報告とご意見ありがとうございます。
頂いたご報告をもとに修正できるものについて、β5版としていくつか修正させて頂きました。
以下のURLか、OneDriveのページから最新のhsp36betaフォルダをダウンロードできます。
HSP3.6β5版(プレビュー版)
https://www.onionsoft.net/hsp/file/hsp36b5_20210220.zip

HSP3.6β版(OneDrive)のページ
https://onedrive.live.com/embed?cid=EC425522ED849DA7&resid=EC425522ED849DA7%211229&authkey=AB-pNztAqBp6BcU

2021/02/17 3.6 beta5

hspextプラグインのcomputb命令が変数バッファサイズを少なく認識する不具合を修正
β4版のmes(print)の表示位置が配置オブジェクトを出すとおかしくなる不具合を修正
[HGIMG4] ポイントライト、スポットライト及びマルチライトの機能を追加
[HGIMG4] 物理挙動の接触判定情報を取得するgppcontact、gppinfo、gppraytest命令を追加
[HGIMG4] 自由なポリゴン形状を定義できるメッシュ機能を追加
[HGIMG4] ポストエフェクトを制御するモジュールmod_posteffectを追加
[HGIMG4] オフスクリーンに対してmes命令を使用した場合に座標やサイズが正しく反映されない不具合を修正
[HGIMG4] OBJ_HIDEを指定した非表示オブジェクトも動作のみ行うように修正
[HGIMG4] fvdir命令が正しく動作しなかった不具合を修正
[HGIMG4] gppbind命令にモデル形状のコリジョンを使用するオプションを追加
[HGIMG4] gppbind命令でモデルを指定した場合、中心座標がずれることがある不具合を修正
[HGIMG4] gppbind命令使用時に1フレームだけ原点にモデルが表示される不具合を修正
[HGIMG4] getcoli命令で箱モデルの半径が正しく判定されない不具合を修正
[HGIMG4] event_addang命令が正しく動作しなかった不具合を修正
[HGIMG4] テクスチャのαチャンネル値が低いピクセルは描画を破棄するように修正
[HGIMG4] GPDWIN2など一部の機種でOpenGLの初期化に失敗する不具合を修正
[HGIMG4] フォント使用時に存在しないコードを指定した際に落ちることがあった不具合を修正
[HGIMG4] gpcameraの平行投影でアスペクト比が反映されていなかった不具合を修正
[HGIMG4] FBXから.gpbファイルの変換時に単一のノードを変換するように修正
[HGIMG4] gfilter命令の仕様がHSP3Dish標準と異なっていたのを修正
[HSP3Dish][hsp3js] HGIMG4の描画を高速化
[HSP3Dish][android] β4版のライブラリフォルダ名が間違っていた不具合を修正
[HSP3Dish] β4版の標準スプライトでY座標のクリッピングが正しく設定されていなかった不具合を修正

まだ調査中、修正中のものも含めて落ち着いた時点でバグフィックス版としてβ5をリリースできればと考えています。
引き続きよろしくお願いいたします。



この記事に返信する


おにたま(管理人)

リンク

2021/2/21(Sun) 00:57:30|NO.92296

以前のスレッドで頂いたご報告にいくつか返信させて頂きます
http://hsp.tv/play/pforum.php?mode=all&num=91014

>youdai さん

FBXの変換について色々と検証ありがとうございました。
Meshオブジェクトが1つでも変換できるよう修正させて頂きました。
gsquareの動作については引き続き検証していきますが、歪みについてはAPIやビデオカードの違いによる差異もあるため、完全に同一にすることは難しいと考えています。

>法貴優雅 さん

HSP3Dish及びHGIMG4については、Windows以外はShiftJISのサポートが難しいため文字コードをUTF-8として取り扱っています。
Windowsでも最終的には、HSP3DishをUTF-8に統一したいと考えているため、申し訳ありませんがその点だけ注意が必要となります。
その他、ご報告頂いた不具合については修正させて頂きました。ありがとうございます。
また、androidのAdMobについては、この後対応していきたいと考えています。

>アキアキノヒロロ さん

HGIMG4について検証頂きありがとうございます。
ライトや物理設定については、β5版で大きく変わりましたので、また新しいバージョンでテストして頂けると助かります。

平行投影モードのライトですが、GPOBJ_LIGHTのノードに対してsetangなどで方向を変えても変化しないということでしょうか。
平行光源なので座標は意味ありませんが、方向は反映されているはずです。

スクリプトエディタについては大きな変更を行うためには大幅な修正が必要なことから、
マルチプラットフォームの新しいエディターを別途準備したいと考えています。
ですので、Windows版のスクリプトエディタについては不具合の対応が中心になるかと思います。

>窓月らら さん

wait命令が正しく動作しない件について、HSP3.6β3で修正していたのですが、どのバージョンで起こっているでしょうか。

>ふにくら さん

以下のスクリプト動作で確認して頂ければと思いますが、こちらではクリアはされていませんでした。
HSP3DishとはAPIが違うため異なる状態にはなると思いますが、ダブルバッファリングされているので動作としては正しいはずです。
もし画面クリアをOFFすることが、以前の画面を残すという意味であればbuffer命令で画面と同一のサイズを作成して、
そこに描画したものをメイン画面に毎フレームコピーするような方法が良いかと思います。


#include "hgimg4.as" gpreset : setcls CLSMODE_SOLID,0 : screen 0 setreq SYSREQ_CLSMODE,0 celload "hoge.png" bufid = stat gmode 2 repeat redraw 0 : gfilter 2 pos mousex,mousey celput bufid redraw 1 await 1000/30 loop



アキアキノヒロロ

リンク

2021/2/21(Sun) 09:22:50|NO.92298

おにたまさん、修正ご苦労様です。

GPOBJ_LIGHTのノードに対しての [setang]、ご指摘ありがとうございます。[setang] 命令の使用自体に気が付きませんでした。
X,Y軸回転角度は正常に機能していること、確認致しました。ただ、Z軸回転角度の投影が反映していないように思われます。
Z軸については、他の問題でも、うまく機能させるのが難しいようなことが言われていたような覚えがありますが、どうなんでしょうか。

HSP3.6β5版(プレビュー版)、ダウンロードさせて頂きました。まだ、開いていませんが、ツイッターに上げられた画像、拝見しました。
開発中とおっしゃっていた、ポイントライト、スポットライトの様子でしょうか。
画像から判断しますと、その応用・利用には限定・制限がありそうに思えますが、たとえあったとしても、また「HGIMG4」に新たな魅力が加わることは、素直にうれしいです。
早く、実際に試してみようと思います。そして、たとえ制約があったとしても、その制約をも工夫次第で乗り越えて、作品に生かしていけたらと、そのこと自体も楽しみです。

自己宣伝になるかもと恐縮ですが、12年前の受賞作を思い出します。
「Easy3D」での、鉄道ジオラマの夜景、自分ながらとても気に入っていたので、「HGIMG4」でも美しい夜景を再現したい衝動を抑えられません。
「HSP3.6β5」でもって、なんとか実現できないものか、挑戦したいです。

色々と、無理な注文をしてきたようで、それにも関わらず、多くのことに応えて頂き、とても感謝しております。



ふにくら

リンク

2021/2/21(Sun) 14:19:52|NO.92304

おにたまさん、開発お疲れ様です。

画面リセット設定に関する質問の回答として頂いた上記スクリプトですが、確かにリセットされていないものの
が画面が物凄い速度で(おそらく描画のたびに)白黒に明滅します。
私の環境ではこのスクリプトに限らずたまに起きていた現象で、setclsやgmodeを変えると起きなくなることも
あったのですが、今回はそれも通用しないようでした。

ただし、今回はsetreq SYSREQ_CLSMODE,0 の行をコメントアウトすると発生しなくなりました。
(その場合、画面はredraw 0でリセットされてしまうのですが)

これについて、何か回避方法などお心当たり無いでしょうか・・・?
環境としては
CPU:AMD Ryzen Threadripper 2950X
GPU:Geforce RTX2080Ti
です。



アキアキノヒロロ

リンク

2021/2/21(Sun) 22:24:33|NO.92310

ふにくらさんへ

#include "hgimg4.as" gpreset setcls CLSMODE_SOLID,0 screen 0 setreq SYSREQ_CLSMODE,0 celload "hoge.png" bufid = stat gmode 2 repeat color : boxf redraw 0 gfilter 2 pos mousex,mousey celput bufid redraw 1 await 1000/30 loop
これでは、ダメですか。
[setreq SYSREQ_CLSMODE,0] は、使ったことがないのですが、
> 画面クリアをOFFすることが、以前の画面を残す
ということであれば、"hoge.png"画像の軌跡を残しながら、描画するのが目的ということでしょうか。

[setcls CLSMODE_SOLID,0] と黒色クリア設定したものを、[setreq SYSREQ_CLSMODE,0] でキャンセルしたということになる訳ですね。
"hgimg4.as"では、[screen 0] は [redraw 0] で白色クリアになります。
ところが、バッファは背景黒色で設定されているようで、これが [celput] (この場合、バッファの全画面コピー) されているので、
背景白色の[screen 0]へ背景黒色のバッファが毎フレームコピーされるので、白黒に明滅すると思われます。
なので、毎フレーム [color : boxf] で、[screen 0] を黒色クリアすればいいはずです。

これらのことは、私もつい最近気付いたことです。
私のスレ「バッファに表示した文字の透過表示方法」のなかに関連することが度々出てくると思います。
途中、訂正を何度もしているので、最後まで見て頂けるとうれしいです。
「初期化」や「非明示的な既定の設定」が絡んでくるので、意識的に検証していかないと分らないことなので、とても厄介です。



アキアキノヒロロ

リンク

2021/2/21(Sun) 23:41:57|NO.92311

ふにくらさんの元のスクリプトで言えば、以下のように書き換えることで、[SYSREQ_CLSMODE] の正常機能が確認できるのでは。

#include "hgimg4.as" gpreset setcls CLSMODE_SOLID,0 screen 0 setreq SYSREQ_CLSMODE,0 celload "hoge.png"//, 0 ;この[0]はおかしいので、コメントアウト bufid = stat gmode 2 ;================================================== repeat color : boxf ;………………………………………………………………… redraw 0 pos 0,0 celput bufid redraw 1 await 1000/30 ;………………………………………………………………… redraw 0 pos 100,100 celput bufid redraw 1 await 1000/30 ;………………………………………………………………… redraw 0 redraw 1 await 1000/30 ;………………………………………………………………… loop ;==================================================



ふにくら

リンク

2021/2/21(Sun) 23:52:05|NO.92312

> アキアキノヒロロ 様

丁寧に検証してくださったようで、有難うございました。
色々と勉強になりました。
特にsetclsの色指定をsetreq SYSREQ_CLSMODE,0で無効化してしまうというのは完全に盲点で、setreq SYSREQ_CLSMODE,0は単にredraw 0時の画面初期化をなくせるコマンドだと思い込んでいたのは勘違いだったと良く解りました。
重ねてお礼申し上げます。


これ以上は当スレッドの趣旨を外れてしまいそうなので控えますが、gpreset/setclsなど「なんとなく最初の方にやっといた方がいいとは知っているが、具体的にどう動くか、どういう順番で宣言すればいいか良く分からない」
という命令群については、ヘルプリファレンス等に何かしら書いておいて頂けると嬉しいです。

特にdish/HGIMG4は標準ランタイムに比べ有志の検証やホームページによる知見共有も乏しく、公式が唯一の情報源となることも多いので…。



youdai

リンク

2021/2/22(Mon) 17:56:54|NO.92319

>[HGIMG4] gpcameraの平行投影でアスペクト比が反映されていなかった不具合を修正

gpcameraの平行投影のアスペクト比関係の不具合ですが、hsp3.6bate5で試してみた所、
bate4と変化がありませんでした。
更新履歴の記述とは異なり、実際には修正されていません。



アキアキノヒロロ

リンク

2021/2/22(Mon) 18:17:42|NO.92320

「HSP3.6β4」で作っている、アニメーションクリップデータ登録の3Dモデルを「HSP3.6β5」で実行してみました。
何故か、アニメーションの再生が倍以上のスピードになってしまいました。感覚的な感じでは、4倍くらいに思えるほどです。
> [HSP3Dish][hsp3js] HGIMG4の描画を高速化
とあるから、描画の処理速度が速くなっていることは、確かのようですが、アニメーション再生速度まで速くなっていて、このままでは甚だ違和感が生じてしまいます。
「Blender」でアニメーションを作り直すことになるのでは、と考えてしまいました。
ただ、かなり以前の私のスレ「固定フレームレートごとのアニメーション更新は?」で
> setreq SYSREQ_FIXEDFRAME, FIXEDFRAME_ms ; [FIXEDFRAME_ms]msごとにアニメーション更新
という命令のことを、通りすがりさんに教えて頂いたことを思い出して、書き加えたところ、[FIXEDFRAME_ms] の数値を調整することで対応できました。
これとは別に、はっきり確認してはいませんが、もしかすると、この速度調整は、物理設定したものの動きの速度にも関わっていそうに感じました。



qwerty

リンク

2021/2/22(Mon) 18:55:00|NO.92321

個人的に、Androidで利用可能なオブジェクトを増やしいてほしいです。
今のままだと、開発に難航する方が増えるのではないでしょうか?



砂時 計

リンク

2021/2/22(Mon) 20:00:40|NO.92322

gpbox で作成した箱オブジェクトを
setscale でサイズ変更してから
gppbind すると、setscale が反映されたサイズで
物理演算剛体が生成されることを確認しました。
期待していた機能です。ありがとうございました。



アキアキノヒロロ

リンク

2021/2/23(Tue) 08:20:28|NO.92326

> [HGIMG4] オフスクリーンに対してmes命令を使用した場合に座標やサイズが正しく反映されない不具合を修正

正しく機能していることを確認致しました。
私のスレ「バッファに表示した文字の透過表示方法」であれこれと試したことが、全て解消されました。
有難うございます。



法貴優雅

リンク

2021/2/23(Tue) 11:45:49|NO.92327

今回追加されたGPPBIND_MESHの動作が、バグなのか仕様なのかわからないのですが
HGIMG4のサンプルtest11.hspのgpboxをgploadに変更してモデルを読み込み
gppbind設定にGPPBIND_MESHにした際、gpcloneで生成されるモデルは1つだけで?
(最初に生成したモデルが移動している? また箱のように大量のクーロンが生成できない)
またモデルが発生する位置も指定された座標と、まったく異なる場所に生成されます。

GPPBIND_MESHをしていない場合も球体コリジョンになるはずですが
モデル座標(モデルのMINMAX座標)の球体ではなく
モデル座標+ワールド座標を含めた球体コリジョンになっているような動作をします。



法貴優雅

リンク

2021/2/23(Tue) 16:41:40|NO.92330

一部訂正します。NO.92327の件は、HSP3.6β5版(プレビュー版)での事でした。
HSP3.6β版(OneDrive)で試したところ、GPPBIND_MESHの動作は正常のように見えます。
ただし、球体コリジョンの件は同一でした。



法貴優雅

リンク

2021/2/23(Tue) 18:16:44|NO.92331

要望になりますが、HGIMG4でフォグが欲しいです。
シェーダーをいじれば実装できますが、標準であってもいいと思います。



窓月らら

リンク

2021/2/25(Thu) 01:07:01|NO.92343

> wait命令が正しく動作しない件について、HSP3.6β3で修正していたのですが、どのバージョンで起こっているでしょうか。

よく見たら3.51のものでした。
修正済だったのですか・・・失礼いたしました。
新しいバージョンでもテストしてみます。



アキアキノヒロロ

リンク

2021/2/26(Fri) 00:21:51|NO.92348

私のスレ「物理設定を利用した動きの制御方法」の「NO.88929」に載せた、
> 「gpbモデル(ボール)」物理挙動テスト_No2.zip
を「HSP3.6β5」で実行してみたところ、「HSP3.6β4」までの不自然さは解消されているようです。

> [HGIMG4] gppbind命令でモデルを指定した場合、中心座標がずれることがある不具合を修正

この修正によって、解消されたのでしょうか。



アキアキノヒロロ

リンク

2021/2/26(Fri) 08:38:21|NO.92350

> [HGIMG4] FBXから.gpbファイルの変換時に単一のノードを変換するように修正

この検証のため、モンキーのみの [blend]ファイルを作って、FBX出力、[HSP3.6β5] の[GPB converter ver.0.6] でGPB変換してみました。
[HSP3.6β5] で読込み、表示に成功しました。この [GPB]ファイルは、[HSP3.6β4] でも読込み、表示は正常でした。

以前、[HSP3.6β4] 正常読込み、表示できている自作のものも、その [blend]ファイルから、新たにFBX出力、今回のコンバーターで、同様にGPB変換してみました。
今のところ、試したものは、どれも成功しています。



アキアキノヒロロ

リンク

2021/2/28(Sun) 11:29:21|NO.92368

[HGIMG4] の
> setreq SYSREQ_USEGPBFONT,0
による、または、非表示の既定の設定による、[mes]についてです。

[0]=[font 設定可]ですが、これは、バッファを使って文字表示していると思われます。

メイン画面の文字表示の上に、別バッファを[gmode 3]で被せた場合、ブレンド率=256 で、文字が完全に消えます。
これは、元々のメイン画面そのものが覆われて消えるので、当然なことです。
しかし、メイン画面に別バッファを[gmode 3]で被せて、その上に文字表示しようとすると、[gmode 3]のブレンド率が低い場合、文字が薄れてしまいます。ブレンド率=0 では、完全に消えてしまいます。
[1]=[font 設定不可](hsp351までの方式 = [res/font.gpb]使用)とすると、後者の順番で半透明合成コピーした場合は、ブレンド率に関わらず、文字は鮮明に表示されます。
これは、仕様としてこうなるのだと思いますが、ちょっと残念です。



youdai

リンク

2021/2/28(Sun) 19:04:49|NO.92371

●HGIMG4のワイヤーフレームの種類を指定したい

HGIMG4のワイヤーフレームに対する要望を書きます。

現在、HGIMG4のワイヤーフレームの種類は
メッシュの中心に斜線が入るもののみですが、
それ以外のワイヤーフレームの種類も指定したいです。

例えば、「辺=線」のワイヤーフレームが実装できれば
ヘアーシェーディングのようなことが手軽に実現できます。
線の太さも指定できれば、さらに良いと思います。

「頂点=点」のようなものが実装できれば、砂埃のようなものが
手軽に実現できます。
点の半径も指定できればさらに良いと思います。

これらが実装できれば、点や線の3D上での描写が非常に楽になると思います。

●mod_posteffect.asのBuffer ID競合問題について

HGIMG4プログラミングガイドのmod_posteffect.asについての項目を読みましたが、
何番のBuffer IDを占領しているかはガイドに記述した方がいいと思います。
すでに独自のポストエフェクトを実行している環境や
他の処理をBufferで行っている環境で競合する可能性が高いです。
実際に自分の作ったポストエフェクトとは競合していました。
ガイドに記述があれば、競合は予め防ぐことができます。

スクリプトやスクリプト内のコメントを見た限りは、描画対象がbuffer 1、エフェクト用がbuffer 64で
ポストエフェクトによっては65、66も占領しているというように読めます。
これで合っているでしょうか?

これらの占領するbuffer idは、モジュールから使用するbuffer idを指定できた方が
便利なのではないでしょうか。

●GPBモデルに対するポイントライトやスポットライトとpassの関係について

今回の新ライトは.materialのpassにPOINT_LIGHT_COUNT 1等の記述は必要ないのでしょうか?
DIRECTIONAL_LIGHT_COUNT 1の指定だけで、シーンに配置したポイントライトやスポットライトまで
GPBモデルに対して同様のライトの影響が反映されるのを確認しました。
これは今回からこういう仕様になったのでしょうか?
それともこれはpassに指定していないのに反映されてしまうという不具合なのでしょうか?
HGIMG4プログラミングガイドにはこの件に関して何も記述されていないため、よく分かりませんでした。



アキアキノヒロロ

リンク

2021/3/1(Mon) 14:16:40|NO.92373

youdaiさんの「●mod_posteffect.asのBuffer ID競合問題について」の箇所を読んでいて、思ったのですが。

文字表示用に使っている [buffer]? が、「他の処理をBufferで行っている環境で競合する可能性」というのも、考えられるのでしょうか。
あるバッファを半透明合成コピーした場合に、その上に [mes] した文字が、その[gmode 3]のブレンド率でもって表示されるように思われるのも、「競合」とかの関係でしょうか。
[font.gpb]使用時のように、[gmode 3]のブレンド率に影響されることなく、文字表示できないものでしょうか。


おなじく、次の「●GPBモデルに対するポイントライトやスポットライトとpassの関係について」では、以下のことを思いました。

私はお恥ずかしい話、「3Dモデルデータ(.gpbファイル)にも適用されたら素晴らしいな」などと、掲示板で言っていましたが、これはすでにずっと以前に対応できていること、
「HGIMG4プログラミングガイド / (25.) 3Dモデルデータのライティング」を読み返して、詳しく解説されていることを確認いたしました。
で、[tamane]モデルに対して、[material] の [define] に必要定義を追加し、かつ、pass設定部分に「DIRECTIONAL_LIGHT_COUNT 1」を指定して、「HSP3.6β5」の「sample/hgimg4/light_test.hsp〜light_test5eff.hsp」で読込んでみました。
youdaiさんのおっしゃる通り、「DIRECTIONAL_LIGHT_COUNT 1」だけで、全てのサンプルで、ポイントライト、スポットライトともに反映されていました。これは、「 (25.) 3Dモデルデータのライティング」に
> pass設定部分のdefine定義に「DIRECTIONAL_LIGHT_COUNT 1」が指定されている マテリアルはライティング計算の対象になります。
とあり、これだけで、そのマテリアルは、ポイントライト、スポットライトの計算対象にもなるということになります。
「HSP3.6β5」の「GPB converter」で、「.material読み込み」をして、編集画面にすると、[Directional light] と [Specular] の設定はできますが、[Point light] や [Spot light] のチェック欄がありません。
[material] ファイルでの 「POINT_LIGHT_COUNT 1」等の記述も、この [material] 編集画面上のこれらの欄も、現状必要ないということになろうかと思います。

これからは、「HGIMG4」を使っていくうえで、[material] 編集も不可欠になってくることが多くなる感じがしますので、この編集画面の具体的な解説がほしいです。
とりあえずは、[material] で違ったライト定義をした、幾種類かの[tamane]モデルを読み込み、表示する、比較サンプルを、「sample/hgimg4/light_test.hsp〜light_test5eff.hsp」に加えて頂きたいです。

「HGIMG4プログラミングガイド」に、ライティングの参考として載っている[tamane]モデルの画像(「HSP3オフィシャル3D素材 "珠音(たまね)"」のページにも使われている画像)のような、柔らかい陰影にすることがうまくできません。
今の私には、テカテカした感じにしか作れないので、その設定方法が知りたいのです。



法貴優雅

リンク

2021/3/1(Mon) 18:38:55|NO.92376

HGIMG4でGPPBIND_MESHしたモデルに対して
getposができない様なのですが
別途取得する方法があるのでしょうか?



アキアキノヒロロ

リンク

2021/3/2(Tue) 08:02:29|NO.92379

youdaiさんへ

>[HGIMG4] gpcameraの平行投影でアスペクト比が反映されていなかった不具合を修正
についてです。

[gpcamera] のヘルプで、
> aspect(1.5): アスペクト比
となっているのが気になったので、色々やってみました。これは、こんな仕組みになっているように思われます。

#include "hgimg4.as" gpreset sx=400 : sy=700 ; スクリーンサイズ ■色々変えてみて下さい■ screen 0,sx,sy,0 setcls CLSMODE_SOLID, $808080 gpbox id_box, 5, 0xFF0000 ;================================================== gpnull id_camera ; ヌルノードを生成する ;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 sx=1.0*sx : sy=1.0*sy ; 実数にするため kitei_aspect=sy/sx ; そのスクリーンのサイズの 既定のアスペクト比 sitei_aspect=1.0 ; 使用者が求めて 指定するアスペクト比 ■これも色々変えてみて下さい■ aspect=sitei_aspect * kitei_aspect ; スクリプト上で、命令に設定するアスペクト比 ;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 gpcamera id_camera, 50, aspect, 0.5, 200, 1 ; カメラとして設定する gpusecamera id_camera ; 使用するカメラを選択する setpos id_camera, 0,0,1 ; カメラ位置を設定する ;================================================== repeat title ""+aspect redraw 0 gpdraw redraw 1 await 1000 loop



アキアキノヒロロ

リンク

2021/3/2(Tue) 12:58:10|NO.92382

アスペクト比について、追記です。

スクリーンサイズの縦横どちらかでも、デスクトップ画面サイズをオーバーしたり、逆に [100] 以下だったりする場合は、この通りにはいかないようです。
オーバーの場合は、はみ出しの割合分だけ、はみ出していない方も削った場合の大きさの画面サイズを求めて、その縦横比を既定のアスペクト比にする、そんな感じだと思います。
この辺は、検証していませんが。



youdai

リンク

2021/3/2(Tue) 21:52:46|NO.92388

アキアキノヒロロさんへ

●文字列描写関係について

文字列描写関係はあまり自信がないので、分かっていることだけ書きます。

HGIMG4はDISHの制約を受けます。
bufferについても同じで、HGIMG4でもbufferに対して直接描画ができません。
mes命令も直接描画命令に分類されるものだと思います。

HGIMG4のbufferにmes命令で文字列を描画しようとしても
その仕様上、反映されません。

HGIMG4でmes命令を使いたい場合は、描画の最後にscreen id0に上書きする形で使いましょう。
例えば、redraw 1の直前が良いと思います。

標準HSP3のmes命令は1度描写すればclsで消すか、何かで上書きするまでそこにあり続けますが、
HGIMG4のmes命令は毎回描写しないと消えてしまうことにも注意しましょう。

HGIMG4のmes命令の改善を目的に、lmesとlmes2というモジュールを作りました。
機能的にはmes命令にレイヤー機能を追加したもので、
かつmes命令を随時描画するのではなく、一度にまとめて描画することに特化したモジュールです。
これは上記のアドバイスを自然に実装するために考えたモジュールです。
lmesの仕様通りに実装していけば、mes命令に関する不具合をある程度予防できるようになっています。

lmes & lmes2 公式配布ページ

http://youdaizone.webcrow.jp/hsp3/lmes.html

使用中のbuffer領域がmes命令を犯してしまう可能性についてですが、
これはmes命令がどのようにHGIMG4上で実装されているか知らない為、よく分かりません。

●GPBモデルをツルツルでない表面にする方法について

GPB converter ver.0.6から出力したGPBモデルの表面がツルツルになりがちな理由は、
passのdefinesにSPECULARが設定されているからだと思います。
definesからSPECULARを外してしまえば、マットな表面になります。

.materialを直接編集するのが一番早いのですが、
GPB converter ver.0.6上からでもSPECULARのチェックを外すだけで
設定を解除できるはずです。



アキアキノヒロロ

リンク

2021/3/3(Wed) 09:23:18|NO.92392

youdaiさんへ

「●文字列描写関係について」に、
> HGIMG4のbufferにmes命令で文字列を描画しようとしても、その仕様上、反映されません。
とのことですが、
私のスレ「バッファに表示した文字の透過表示方法」に載せた、NO.92273 のスクリプトでは、
「bufferにmes命令で文字列を描画」していて、なおかつ、 [screen 0] には上書きしていない、はず? と思います。
[screen 0] に、透明色付きコピーモードで、その [buffer] を [gcopy] しているかたちです。
それでも、望んでいる通りに、主画面 [screen 0] に文字表示されました。
これは、どういうことになるのでしょう。

また、バッファに関して言えば、NO.92368 の半透明合成コピーでの不都合は、とりあえず、NO.92254 の下地色付きの文字表示の方法で、回避してしのいでいます。

[lmes & lmes2] 使わせて頂きたいと思い、ダウンロード致しました。


「●GPBモデルをツルツルでない表面にする方法について」では、
[SPECULAR] の英語自体の意味も知らず、調べもせずにいたこと、英語音痴に恥じ入りました。有難うございます。
サンプルの [tamane] のようにしっかり作られたものなら、自然な、いい感じになりました。
自作のものは、[SPECULAR] を付けたままで 「DIRECTIONAL_LIGHT_COUNT 1」を追加すると、ごまかされるのか、ツルツルではありますが、アラは目立ちません。
一方、[SPECULAR] を外すと、「DIRECTIONAL_LIGHT_COUNT 1」が、作りの大雑把なところ、アラをはっきりさせてしまいます。
これは、3Dモデル作りに習熟するしかないのでしょう。



hashikemu

リンク

2021/3/3(Wed) 14:08:50|NO.92394

開発お疲れ様です.HGIMG4の最新版について報告と要望です.

gppraytestを試してみて,gpload(GPPBIND_MESH)やgpboxで生成されるモデルでは正常にレイが判定されることを確認しました.
一方で,gpfloorに対するレイはレイ接触位置(work値)の更新が遅れることがあります.
floorはboxで代替可能ではありますが,変な挙動を踏む方が減らせればと思い報告しておきます.

次に要望です.
現在レンダリングバッファは取得できますが,深度バッファを取得可能な実装にできないでしょうか.
Depth of Fieldエフェクトやシャドウマッピングのように深度バッファが必要なエフェクトを実現するためには
必要だと思います.



youdai

リンク

2021/3/3(Wed) 18:37:31|NO.92397

アキアキノヒロロさんへ

HGIMG4のbufferの追加情報を書きます。

HGIMG4はDISHの制約を受けます。
通常は前記した通りbufferに対して直接描画できません。
ですが、bufferをscreen_offscreen属性にすれば直接描画が可能です。

例えば、こんな感じです。


buffer 1, 800, 600, screen_offscreen

ただ、これは通常のbufferとは異なるものであることに注意して下さい。

この場合のbuffer 1の画面の更新のタイミングというのは、
screen ID0が更新されるタイミングになります。

bufferに書き込みができているとすれば、恐らくはそうなっているんじゃないかと思います。
その場合、それは通常のbufferとは異なる性質のものです。

これはHGIMG4のリファンレスに同様の記述があります。
「35.レンダリングバッファ」の項目です。

リファレンスの内容を補足すると、
screen_offscreen属性のbufferは、bufferに情報を送っている時点では
まだ未確定の状態にあるということです。
実際に画像として描き込まれる(生成される)のは、リファレンスの通り、
screen ID0が更新されるタイミングになります。
そのタイミングで一度に更新されます。
ちなみにbufferを転送できるのはscreen ID0だけではなく、
bufferからbufferへの転送も可能です。

サンプルとしては、
sampleフォルダのHGIMG4の buffer.hsp が分かりやすいと思います。



youdai

リンク

2021/3/4(Thu) 23:32:18|NO.92408

>HGIMG4でGPPBIND_MESHしたモデルに対して
>getposができない様なのですが
>別途取得する方法があるのでしょうか?

hsp3.6bate5で追加された機能で試行錯誤してみたのですが、
自分の技術レベルでは実現できませんでした。

ただ、大雑把な位置判定であれば、当たり判定を敷き詰めて
判定することが理論上可能に思えます。

例えばAという判定に当たっているとすれば、
そのオブジェクトはそこにあるから、
そこが映るようカメラを移動させればそのオブジェクトが画面内に入る、
という具合です。

どのくらいの当たり判定を用意すればゲームとして
不自由のないものができるかは研究中です。

ただ、この方法でゲームを作るのは大変なので
gppbindで物理特性を付与されたノードに対しても
get系命令で位置情報や回転情報を取得できるように
してほしいなと思います。
(現状でも可能だよという方がいましたら情報提供お願いします)



hashikemu

リンク

2021/3/5(Fri) 00:05:04|NO.92410

法貴優雅さん,youdaiさん

私の方で検証した限りでは,gpbモデルを読み込む際のノード名を陽に指定すると各種情報が取得できました.
確かに,ノード名を指定しない場合には取得できなくなるようです.



youdai

リンク

2021/3/5(Fri) 17:15:20|NO.92411

hashikemuさん、情報提供ありがとうございます。

今回実験してみて他にもいろいろなことに気が付きました。

・gploadで3番目のパラメータ"name"が無指定の場合、
 gppbindをGPPBIND_MESHで設定した場合、getposが反映されない
(hashikemuさん情報提供)

・gploadで3番目のパラメータ"name"が無指定の場合、
 gppbindをGPPBIND_MESHで設定した場合、
 GPBモデルの中に複数のオブジェクトが存在する場合、
 一部のオブジェクトしか物理挙動が反映されない
(例えば一部のオブジェクト以外は重力が反映されず、落ちない)

・gploadで3番目のパラメータ"name"に対して、
 モデルのコレクションは指定できない

・gploadで3番目のパラメータ"name"に対して、
 複数の組み合わせのオブジェクトは指定できず、
 1つしか指定できない

・gploadで3番目のパラメータ"name"に対して、
 指定したものを除外して表示というような機能はない

・GPPBIND_NOSCALEの場合はgetposが反映される

GPPBIND_NOSCALE、GPPBIND_MESH両方でアニメーションが再生されることも確認しました。
GPPBIND_MESH指定時にアニメーション変形によるメッシュ形状が反映されるかどうかは
今回確認した限りではよく分かりませんでした。

●対処方法

・gploadで3番目のパラメータ"name"を指定する

・GPBモデルの中に複数のオブジェクトが存在する場合、
 これを統合して1つのメッシュとして出力する
(ただしこの方法は恐らく、アニメーションを作る上では不都合がある)

・上記の対処方法ではアニメーションを作る上で不都合があるので、
 gppbindの物理挙動ノードと、実際の見た目とのノードは分離して使い分ける
 物理挙動用ノードは当たり判定用のローポリ、実際の見た目のノードは所謂普通のポリゴンを推奨

●要望

 これに対して以下のような機能がほしいと思いました。

・gploadで3番目のパラメータ"name"が無指定で、
 gppbindをGPPBIND_MESHで設定した場合でもgetposが反映されるようにしてほしい

・GPBモデルの中に複数のオブジェクトが存在する場合でも、
 全てのオブジェクトに物理挙動が反映されてほしい

・gploadで3番目のパラメータ"name"に対して、
 モデルのコレクション(グループ)を指定できるようにしてほしい

・gploadで3番目のパラメータ"name"に対して、
 複数の組み合わせのオブジェクトが指定できるようにしてほしい

・gploadで3番目のパラメータ"name"に対して、
 指定したものを除外して表示というような機能がほしい
 できれば複数表示と複数除外等の複雑な組み合わせができる機能がほしい



法貴優雅

リンク

2021/3/5(Fri) 20:26:49|NO.92413

β5になってからキューブ環境マッピングができなくなっているようです。
\sample\pronama3d\pronama_box.hspのサンプルが
私の環境ではβ4ではちゃんと表示されますが、β5だと真っ黒になってしまいます。

またhgimg4dxにすると、プロ生ちゃんが真っ黒に表示されたり動かなかったりと
動作がおかしくなります。



おにたま(管理人)

リンク

2021/3/5(Fri) 22:37:02|NO.92414

プレビュー版について、多くの書き込みありがとうございます。
HSP3.6β5版を一般向けに公開させて頂きました。
https://www.onionsoft.net/wp/archives/3363

新しいアーカイブでは、プレビュー版から、hsp3js(html5版)のhtmlテンプレート選択が増えているのと、HGIMG4のシェーダーコードが若干修正されています。それ以外は変更ありません。
引き続き、ご報告頂いた不具合や要望に向けた修正を続けていきたいと考えています。ご報告とご意見ありがとうございます。
GPPBIND_MESHの動作については、まだおかしい部分がありそうなので今後手を入れていきたいと思います。色々な検証感謝致します。

>アキアキノヒロロ さん

光源の方向はベクトルなので、Z軸だけを回転させても方向は変わらない場合があります。光源と同じ位置にモデル等を出してみて、方向と一致しているかご確認頂ければと思います。

>youdai さん

mod_posteffectについてのご意見ありがとうございます。
描画対象バッファIDの指定や、ワーク用のIDも含めて調整できるようにしていきたいと思います。
.material内に記述されている光源の指定は、いままでと同様に「POINT_LIGHT_COUNT 1」の指定がある場合は光源計算ありとして認識されます。
ただし、光源の個数や種類については、スクリプト中で指定されたものが適用されるため、指定された数字自体に意味はなくなっています。
また、ワイヤーフレームについてですが、HGIMG4のワイヤーフレーム表示はあくまでも
デバッグ的な用途で3角形の頂点を結ぶ線を簡易的に描画しています。
すべてのポリゴンモデルは3角形の集合体で、辺という扱いはありません。ただ、点や線を3D上で描画する用途はあると思いますので、何か別な方法で描画できるか考えてみたいと思います。

>hashikemu さん
>法貴優雅 さん

フォグや深度バッファの使用についてご要望ありがとうございます。
深度バッファやHDRなどの計算結果を扱うためのステンシルバッファを実装する予定ですので、今しばらくお待ちください。
フォグも深度バッファを使って実現できるかと思います。

キューブマップですが、β4とβ5であまり実装は変わっていないはずなのですが、
念のためhsp3gp.exeと同じフォルダにある、hsp3gp.logに何らかのエラーか警告が出ていないか確認してみてください。
シェーダーコード(res/shaders)が変わったことが関係しているかもしれないので、同じスクリプトのファイルで、hsp3gp.exeだけ切り替えて試して頂けると、プログラムが原因かシェーダーが原因か絞り込めるので助かります。



法貴優雅

リンク

2021/3/5(Fri) 23:16:29|NO.92415

キューブマップの件ですが、私のPCがおかしいのかもしれません。
今改めてβ5で実行したところ問題なく表示されました。うーん、何だったのだろうか?

あとhgimg4dxで実行した時のエラーログです。
HGIMG4 3.6beta5 initalized : win32dx9
gameplay::Effect::createFromSource -- Linking program failed (res/shaders/colored.vert,res/shaders/colored.frag): Failed to create D3D shaders.
gameplay::Effect::createFromFile -- Failed to create effect from shaders 'res/shaders/colored.vert', 'res/shaders/colored.frag'.
gameplay::Pass::initialize -- Failed to create effect for pass. vertexShader = res/shaders/colored.vert, fragmentShader = res/shaders/colored.frag, defines = SKINNING;SKINNING_JOINT_COUNT 187
gameplay::Material::loadPass -- Failed to create pass for technique.
gameplay::Material::loadTechnique -- Failed to create pass for technique.
gameplay::Material::create -- Failed to load technique for material.
gameplay::Effect::createFromSource -- Linking program failed (res/shaders/textured.vert,res/shaders/textured.frag): Failed to create D3D shaders.
gameplay::Effect::createFromFile -- Failed to create effect from shaders 'res/shaders/textured.vert', 'res/shaders/textured.frag'.
gameplay::Pass::initialize -- Failed to create effect for pass. vertexShader = res/shaders/textured.vert, fragmentShader = res/shaders/textured.frag, defines = SKINNING;SKINNING_JOINT_COUNT 187
gameplay::Material::loadPass -- Failed to create pass for technique.
gameplay::Material::loadTechnique -- Failed to create pass for technique.
gameplay::Material::create -- Failed to load technique for material.
これは一部で、実際はもっと大量に出ています。



ふにくら

リンク

2021/3/7(Sun) 12:14:05|NO.92429

HGIMG4におけるcelbitmap命令の読み出しオプション(celbitmap_capture)の詳細な仕様を明記して欲しいです。
以前、別のスレッド(https://hsp.tv/play/pforum.php?mode=all&num=91096)で検証されていた内容では
・メイン画面(screen 0)と読み出し元のオフスクリーンバッファが同じサイズでないといけない?
 (できればこの仕様は改善してほしいです…)
・読み出し元のオフスクリーンバッファはXYサイズがともに2の累乗でないといけない?
ということが書かれていましたが、以下のようなスクリプトでは読み出せていなかったりと詳細が不明です。
dish系ではmrefでVRAMを読み出せない以上、バッファの内容を画像にするにはcelbitmapに頼らざるを得ないので、どうかお願いしたいです。


//celbitmap読み出し検証(_bmpの全要素が-1(0xFFFFFFFF)になってしまう) #include "hgimg4.as" ;初期化 gpreset : screen 0,1024,1024 : setcls CLSMODE_SOLID,0 : gmode 2 ;バッファと配列の用意 buffer 1, 1024,1024, screen_offscreen : gmode 2 dim _bmp, 1024*1024 ;画像コピー元 celload "hsp3dish.png", 2 gsel 1 redraw 0 celput 2 redraw 1 celbitmap 1, _bmp, celbitmap_capture //buffer 1に画像がコピーされていることの確認用 gsel 0 redraw 0 celput 1 redraw 1 stop



砂時 計

リンク

2021/3/7(Sun) 16:41:01|NO.92432

gpaddanim でスタートフレームと終了フレームの大小を逆転させた際に
Assertion failed ダイアログが出ます。

File: d:\onidev\hsp3dish\gameplay\src\curve.cpp
Line: 215


#include "hgimg4.as" gpreset setcls CLSMODE_SOLID, $404040 setpos GPOBJ_CAMERA, 0, 200, 500 gplookat GPOBJ_CAMERA, 0, 100, 0 gpload id, "res/tamane2" gpaddanim id, "first", 1500, 500 gpact id, "first" repeat redraw 0 gpdraw redraw 1 await 1000/60 loop



しまくろねこ

リンク

2021/3/11(Thu) 21:19:48|NO.92460

HSP3Dish上のmmplayでMP3をループ再生しているのですが、今まで使用していたPCが故障してしまい、新たに購入したPCではループ後に0.5秒から1秒ほど曲がストップ(アプリ全体もストップ)し、その後再生される現象が起こるようになってしまいました。
故障前のPCではこの現象は起きていませんでした。新たに購入したPCで自分のアプリを動かした見たところ曲のループ時にアプリが一瞬ストップしてしまったことから今回現象が見つかりました。
ずっと再生したままにして、ループ後のストップ現象はループ後毎回起きるわけではなく、現象が起きたり起きなかったり様々です。
PCのドライバ等が原因であればどうしようもないのですが一応報告しておきます。

故障前に使用していたPCの環境です
Intel Atom Z3775
Windows 10 Home 32ビット

新たに購入したPCの環境です。
AMD RYZEN 5 4500U
Windows 10 Home 64ビット

以下のソースで現象が起こります。
現象が起きた時を分かりやすくするために、ウィンドウタイトルに値を表示させています。
現象が起きるとウィンドウタイトルの値が一瞬止まります。

#include "hsp3dish.as" mmload "bgm_000.mp3", 0, 1 mmplay 0 c = 0 repeat title "" + c c++ if c >= 10000 { c = 0 } await 16 loop
以下の手動でループ再生にしても同じ現象が起きます。

#include "hsp3dish.as" mmload "bgm_000.mp3", 0, 0 mmplay 0 mstat = 0 c = 0 repeat title "" + c c++ if c >= 10000 { c = 0 } mmstat mstat, 0, 16 if mstat == 0 { mmplay 0 } await 16 loop



アキアキノヒロロ

リンク

2021/3/12(Fri) 09:59:47|NO.92461

> [HGIMG4] 物理挙動の接触判定情報を取得するgppcontact、gppinfo、gppraytest命令を追加
についてです。
[gppinfo] のヘルプの解説 [var] と [fv] が逆のようです。
サンプルの [physics_1.hsp] でも、
> gppinfo respos,resid,box,0
となっていますし、実際、自分のプログラムに組込んでやってみても、やはり逆で、
> gppinfo p1,p2,objid,index
とすれば、[p1] に「衝突したx,y,z」が入っています。[p2] の方に「衝突したオブジェクトID」です。



砂時 計

リンク

2021/3/13(Sat) 17:42:30|NO.92467

gpclone した後、クローン元のレンダーグループを変更すると
クローンのレンダーグループも一緒に変更されているように見えます。
クローン元とクローンで
別なレンダーグループを指定できるようにしてほしいです。


#include "hgimg4.as" gpreset setcls CLSMODE_SOLID,0x333333 gpload id, "res/duck" setscale id, 10,10,10 gpclone idclone, id setpos idclone, 30,0,0 repeat redraw 0 if cnt == 100 { setobjrender id, 2,2 } gpdraw pos 8,8 : color 255,255,255 : mes "" + id + ", " + idclone + ", " + cnt redraw 1 await 1000/60 loop



アキアキノヒロロ

リンク

2021/3/14(Sun) 08:20:54|NO.92469

[getcoli] で接触判定がうまくいかない判定対象モデルに対しては、[gppcontact] [gppinfo] を使うことで可能になりました。
ありがとうございます。



しまくろねこ

リンク

2021/3/14(Sun) 13:19:14|NO.92473

NO.92460で記載したHSP3Dish上のmmplayでMP3をループ再生についてですが、ドライバを最新にしたところ現象が起こらなくなりました。
失礼しました。



砂時 計

リンク

2021/3/14(Sun) 14:59:48|NO.92474

GPPBIND_MESH 指定時は getpos で物理剛体反映後の位置が取得できないようです。

内部的に取得可能であれば物理剛体反映後の位置が
取得できると嬉しいです。


#include "hgimg4.as" gpreset : setcls CLSMODE_SOLID, 0x333333 gpload id1, "res/duck" gppbind id1, 1.0, 1.0 gpload id2, "res/duck" setpos id2, 30,0,0 gppbind id2, 1.0, 1.0, GPPBIND_MESH x = 0.0 : y = 0.0 : z = 0.0 repeat redraw 0 gpdraw pos 8,8 : color 255,255,255 getpos id1, x,y,z mes strf("%.3f", x) + strf(",%.3f", y) + strf(",%.3f", z) getpos id2, x,y,z mes strf("%.3f", x) + strf(",%.3f", y) + strf(",%.3f", z) redraw 1 await 1000/60 loop



ふにくら

リンク

2021/3/19(Fri) 11:46:12|NO.92494

不具合というわけではありませんが、HGIMG4は64bit版に移行しないのでしょうか?
高解像度のテクスチャとか高音質の音源を使ったりするとメモリ上限4GBがついつい気になってストレスなので…。
今時ほとんどのユーザーがwin10(64bit)に移行し、8〜16GBのメモリを使っている時代ですので
32bitであることがボトルネックになりつつあるのかな、という感じです。



zakki

リンク

2021/3/19(Fri) 14:06:57|NO.92495

HGIMG4(のWindows版)は、要素要素としてはほぼ64bit対応出来てるっぽくて設定をちょっと変えてビルドすればサンプルくらいは動きました。
https://github.com/zakki/openhsp/commit/221f436648f4da120ebef4b3f5efeb17c4a813a8

HGIMG4じゃない素のdishは使っているDirectXのバージョンが64bit版が無いころのもので結構面倒そうです。



ppp

リンク

2021/3/19(Fri) 19:52:13|NO.92501

64bit化自体は賛成派ではあるけど、RAWデータを扱うような画像動画音声編集ソフトならともかく
個人製作アプリで32bitのメモリでストレス感じるってそれは作りに問題あるだろうと考えた方がいいのでは?
企業や年季の入った有名フリーソフトに負けないようなソフトならともかくメモリ1G持っていかれる時点で問題外だわ。



法貴優雅

リンク

2021/3/19(Fri) 21:57:12|NO.92505

HGIMG4の今回追加されたライト関連で、ライトのオブジェクトをOBJ_HIDEしても
ライトが消えないのは、仕様でいいんですかね?

シェーダーとの兼ね合いで単純には無理だと思いますが…まあライトの位置を
影響が出ない場所まで移動すればいいのですが、その辺りどうなのかと思いました。



法貴優雅

リンク

2021/3/22(Mon) 22:10:52|NO.92516

HGIMG4でmesのmesopt_outlineを指定した際、objcolorで指定した色と
何か別の色が混ざった状態で表示されることがあるみたいなのですが
原因は調査しきれていません。



Drip

リンク

2021/3/26(Fri) 04:11:13|NO.92525

こんにちは。
スクリプトエディタでアンドゥ実行時にスクリプト内容が狂う不具合の原因らしきものを発見しましたので報告させていただきます。
この不具合はHSP3.2以前のスクリプトエディタでは再現されません。
HSP3.3以降の全てのHSPスクリプトエディタで再現されます。

この問題はキーボードがInsert入力になっている場合に発現します。
意図的にInsertキーを押さなくても、誤入力やテンキーの0を押してしまうなどでこの状況が意図せず発生することがあり非常に危険です。
以下の手順で問題を再現できます。

1.スクリプトエディタに通常通り以下のA〜Gの文字列を入力(コピペ)します。
 (各アルファベットの間にタブを入れることで不具合の視認性が上がります。
  また最後に改行が入らないほうが手順7の状況がはっきりと出ます。)
A	B	C	D	E	F	G
2.キーボードでInsertキーを1回押して上書き状態にします。

3.最初に入力した文字列中の C 〜 E をマウスかキーボードで範囲選択します。

4.その状態でキーボードからsssなどと適当な3字を入力します。

5.3回アンドゥを行います。

6.この状態で表示状態が手順1に戻っていない(復元されない)ことが確認できます。
 (私の環境ではタブが1つ消滅し、EとFがくっついた状態になってしまいました)

7.さらにアンドゥ・リドゥを繰り返していくと文字列がめちゃくちゃに破壊されます。
 (これが確認できるのは手順1を手入力しなかった場合(コピペの場合)に顕著です。)

ご確認いただければ幸いです。
大切なスクリプトを失わないようにするために、過去にこれに似たスクリプト崩壊を
経験された方はこの不具合を意識してエディタを扱った方が良いかもしれません。



遠い空のニック

リンク

2021/3/28(Sun) 23:53:59|NO.92534

こんにちは、いつも楽しく使わせていただいてます。
hgimg4を使っているときnewcomが機能しないのですが
対応される予定はありますか?

3Dconnexionの3Dマウス用のCOMオブジェクトを利用した
hgimg4のソフトを作りたいのですが。



法貴優雅

リンク

2021/4/1(Thu) 18:51:20|NO.92555

HGIMG4でオブジェクトに対して毎ループgppbindすると
オブジェクトが変な動きをします。
通常ありえない使い方ですが、一応報告しておきます。

あと別件ですがgppbindしたオブジェクトに対してsetposを
使えるようにしてほしいです。



リンク

2021/4/6(Tue) 12:41:28|NO.92571

ぷにくらさんの4GBでストレス 感じるというのは気になる。
3Dゲームでかなりのものを作る以外、用ないと思いますが諸氏の意見
を聞きたい。



youdai

リンク

2021/4/13(Tue) 12:37:42|NO.92595

HGIMG4に対する要望を書きます。

●GPBモデルのシェーダーにバッファやオフスクリーンバッファの画像を送れるようにして欲しい
GPBモデルのシェーダーに対して、バッファやオフスクリーンバッファの画像を送れるようにして欲しいです。
それができるようになれば、例えばデプスシャドウや半球環境マッピングの自動生成ができるようになるかもしれません。
また、それほど高度な使い方でなくとも、テクスチャをHSP3スクリプト上で生成してそれをGPBモデルに反映させるといった
素朴な使い方もできると思います。



とあるプログラマ

リンク

2021/4/13(Tue) 21:51:51|NO.92597

HSP3本編とは少し違いますが、Visual Studioでデバッグ中に、#regcmd でDLLを登録したHSP3アプリケーションを閉じると例外:0xC0000005が発生します。
終了時に発生するのでさほど重要ではないですがデバッグ終了の度に発生するので少々面倒です。

hspsdk付属サンプルのhpi3sample.dllでも発生します。
また #regcmdのみで発生し、#cmdの登録は関係ありませんでした。
DLL側の termfunc は return 0; のみでその他の処理はありません。

環境は VS2019です。

以下詳細です。


ハンドルされない例外が 0x00C812E0 (hsp3.exe) で発生しました: 0xC0000005: 場所 0x00C812E0 の実行中にアクセス違反が発生しました。



TOMATO

リンク

2021/4/14(Wed) 06:32:30|NO.92598

> #regcmd でDLLを登録したHSP3アプリケーションを閉じると例外:0xC0000005が発生します。

これ、DLL側のtermfuncを呼び出す前に、DLLがアンロードされているのでコケてるっぽいね。

以下のように、HSP内部の hsp3win.cpp の void hsp3win_bye( void ) 内の
下記処理の順序を変えると平気そう。

// HSP関連の解放 // if (hsp != NULL) { delete hsp; hsp = NULL; } DllManager().free_all_library();



TOMATO

リンク

2021/4/14(Wed) 06:42:03|NO.92599

ユーザー側での無理やり回避も一応できるかな?


LoadLibrary("hpi3sample.dll");

をプラグイン側(C++)でもHSPソース側でもいいので、書いておくとか。

DLLの参照カウンタを意図的に増やしておくことにより、
HSP内部のDLL解放処理が動かないようにするという手法です。



おにたま(管理人)

リンク

2021/4/14(Wed) 21:57:35|NO.92601

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

>ふにくら さん

celbitmap命令の読み出しオプションcelbitmap_captureの動作について、ご報告ありがとうございます。
確かに描画画面サイズと異なるバッファサイズの場合エラーとなっていました。
次の修正で、描画画面のサイズに関係なく取得できるよう修正させて頂きます。

また、HGIMG4が64bit版に移行しない理由は、既存のプラグインとの互換性や文字コードの
互換性などを考慮してのことですが、そのあたりを無視すればzakkiさんが示されているように可能ではあると思います。
いずれHSP3Dishは他のプラットフォームと合わせてUTF-8と64bitを標準にしたいところですが、
事前のアナウンスなど準備は必要になると考えています。

>法貴優雅 さん

ご指摘ありがとうございます。
ライトのオブジェクトを有効/無効にする方法はちょっと検討してみます。
現状ではまだ効率的にON/OFFするのが難しい状況ではあります。

gppbindを指定したオブジェクトの操作ですが、HGIMG4の内部では
物理設定を行った段階でBulletというエンジン内の世界でも並行して
1つのオブジェクトとして管理されるようになっています。
このため、HGIMG4側の設定や反映が遅れることがあります。
setposを反映させること自体は可能かもしれませんが、おそらく物理的には
おかしな動きになる可能性があります。
あまり直感的ではないのですが、物理設定を一旦解除して再設定するような
仕組みが必要かもしれません。

>Drip さん

スクリプトエディタについてのご報告ありがとうございます。
アンドゥ関連と、入力中のマウス選択は問題があることを認識していますので、
原因を調査した上で改修していきたいと考えています。

>遠い空のニック さん

HGIMG4についての要望ありがとうございます。
HSP3Dishとその派生は、COMオブジェクトを当初から除外していたのですが、
サポート自体は可能です。(他のプラットフォーム互換はありませんが)
今後のバージョンでは検討させて頂きます。

>youdai さん

HGIMG4についての要望ありがとうございます。
今後のバージョンで、3Dモデル(.gpb)のマテリアルを取得して再設定できるような
仕組みを検討したいと思います。

>砂時 計 さん
>とあるプログラマ さん
>TOMATO さん

ご報告ありがとうございます。
次のバージョンで対応させて頂きます。

現在までに修正されている更新を含む最新β版は、以下のページから取得可能です。

HSP3.6β版(OneDrive)のページ
https://onedrive.live.com/embed?cid=EC425522ED849DA7&resid=EC425522ED849DA7%211229&authkey=AB-pNztAqBp6BcU

2021/04/14 3.6 beta6

noteadd命令に4094文字以上の文字列を指定した際に不安定になる不具合を修正
実行ファイル作成時にコマンドライン引数に余計なスペースが入る不具合を修正
拡張プラグインを使用した際の終了時にエラーイベントが記録される不具合を修正
[hspinet] リクエストに関する文字列の長さ制限を撤廃
Windows版のHSP3,HSP3CL,HSP3Dishでdirinfo,sysinfoが同じ仕様になるように修正
Linux/RaspberryPi版のスクリプトエディタにF1キー(ワンキーヘルプ)の機能を追加
[HGIMG4] β5版でオブジェクトのレンダリンググループ設定が正しく反映されていなかった不具合を修正
[HGIMG4] β5版でモデル形状のコリジョンを使用した際にノード座標が取得できなくなる不具合を修正
[HSP3Dish][Windows] celbitmap命令の描画画面読み出しに失敗することがある不具合を修正
[HGIMG4][Windows] アプリ終了時にエラーが発生することがある不具合を修正



とあるプログラマ

リンク

2021/4/15(Thu) 04:10:09|NO.92603

おにたまさんご対応ありがとうございます。
最新版のhsp3.exeでは例外のスローが発生しないことを確認しました。


追加になりますが、仕様なのかバグなのか分からなかったので一応報告しておきます。


プラグイン用のマクロ《getobj() /hpi3sample/hsp3plugin.h》に存在しないオブジェクトID(0未満の数値やBMSCR::objmax以上の値)を渡しても戻り値がエラーなし(0)を返してしまいます。

しかし、参照元(下記)によれば

int getobj( int wid, int id, void *inf ); widで指定したウインドゥIDに配置されている、idで指定された番号の オブジェクト情報を取得します。 取得されたデータは、infで指定されたポインタにコピーされます。 HSP3の標準GUIを使用している場合は、infにはHSPOBJINFO構造体の内容が コピーされることになります。 HSPOBJINFO構造体については、オブジェクト情報についての項目を参照 してください。 返値は、正常に終了した場合は0に、それ以外の値はエラーを示します。
とあります。


そこで HSPEXINFO::HspFunc_getobj() の定義と思われる《ex_getobj() /win32gui/hsp3gr_wingui.cpp》を見たところ《obj = bm->GetHSPObject( id );》とあり、idの値の範囲チェックをしている bm->GetHSPObjectSafe(); を使用していませんでした。
また ex_getobj() は常に return 0; であり0以外の値が返ることはありえませんでした。

なので、存在しないオブジェクトIDのOBJEXINFOを取得しても恐らく強制的にmemcpy()が行われるため、構造体の中身はめちゃくちゃになってしまいます。
現段階ではこちらでプラグイン側に getbmscr() で取得したBMSCRのobjmaxを用いて範囲チェックを行う関数を作り対応しております。

参照元のファイルのHSPバージョンが3.3 / 2011年なのでその後に仕様が変わったということも無きにしも非ずですが…
これは仕様変更による仕様そのものなのか、それとも実装ミスなのでしょうか。


【参照元】http://www.onionsoft.net/hsp/v35/hspsdk/hspdll.txt
【使用SDK】http://dev.onionsoft.net/trac/openhsp/browser/trunk/hsp3



とあるプログラマ

リンク

2021/4/15(Thu) 04:14:30|NO.92604

書き忘れてしまいましたが、setobj()でも同様にSafe無しの関数が使われていました。
こちらに関しては割り当てられていない領域に強制的にmemcpy()する可能性があるため最悪アプリケーション全体の不具合になる可能性もあると思います。



アキアキノヒロロ

リンク

2021/4/17(Sat) 18:30:13|NO.92612

> [HGIMG4] gppbind命令にモデル形状のコリジョンを使用するオプションを追加

これを読んだ最初、モデル全体を覆うスフィア(球体)では、人型のようなモデルの場合不自然になるので、コリジョン専用に筒状のような単純化したオブジェクトを用意して、それに物理設定して、その位置を本来のモデルにコピーする、このような使い方になるのだ、と理解しました。
確か、youdaiさん がご提案されていた使い方の、機能の実装だと思いますが。

これとは別な利用方法を思い付きました。
以前お世話になった「Easy3D」では、移動可能領域を設定するために、道の両側に壁を作っていました。これと同じことが出来るはずだと。
GPBファイルの壁を作って、HSPで[gppbind]時に、GPPBIND_MESHのオプション指定すればと。
> ただし、複雑なモデル形状をコリジョンにした場合、接触判定にかかる負荷が増大します。
ヘルプにある、これには気を付けなければいけませんけれども。
道のようなものは、まだ試していませんが、池など輪郭の不規則なものの、周りを囲むような壁を作って、モデルが内側に入らないように出来ました。



砂時 計

リンク

2021/4/17(Sat) 19:00:20|NO.92613

OneDrive の HSP3.6b6 で以下が確認できました。
ありがとうございます。
- アニメーションのパラメーターで始点終点逆転したときにダイアログが出ない
- カメラグループがクローンに別々に指定できる
- メッシュ形状のときにも物理演算反映後の位置が取得できる



とあるプログラマ

リンク

2021/4/25(Sun) 16:22:34|NO.92669

hsp3.exeでは問題ないのですが、hsp3utf.exeだとgetbmscr()したBMSCR::objmaxの内容が崩れます。内容的に見て恐らく未初期化な感じがします。

詳細のスクリーンショット:
https://i.imgur.com/V18x0M9.png


プラグインや、標準以外のランタイム(hsp3utfやhsp3mtなど)は利用している人が全くいないのでしょうか。こういったバグがかなり見られる気がします。



とあるプログラマ

リンク

2021/4/25(Sun) 22:03:30|NO.92677

すみません、プラグイン側もUnicode使用にしたらobjmaxは正常に取得できました。

しかしBMSCRすらもUnicodeかASCIIかで違ってきてしまうのですね…



youdai

リンク

2021/4/26(Mon) 16:37:37|NO.92682

HSP3.6bate5のHGIMG4の平行投影モードの不具合について報告します。
HSP3.6bate5はzip配布版です。

●以前の報告の修正
以前のHSP3.6bate5の報告で、平行投影モードのgpcameraのaspectの値が反映されていないと報告しましたが、
改めて確認したところ、前回の報告は間違いで、
値の入力自体は反映している(何か入力すれば画面に変化がある)ことを確認しました。

ただし、aspectの値を正常に入力しても、
平行投影モードとしての画面比率が異常なことには変わりませんでした。

●平行投影モードとしてのaspectが正規化されていない?
aspectを入力しても、正常な平行投影として反映されない理由は、
もしかしたらHGIMG4のgpcameraのaspectの値は
平行投影用に正規化されていないのではないでしょうか?

ortho_normalizeという関数を作りました。


#module mod_ortho_normalize #defcfunc ortho_normalize double p1, int p2 ; 正規化なし if p2 == -1 : return p1 ; 画面比率4:3(アスペクト比 1.333333333333333)用 if p2 == 0 : return (p1*p1*p1)/3.0 ; 画面比率16:9(アスペクト比 1.777777777777778)用 if p2 == 1 : return p1/3.0 ; 画面比率16:10(アスペクト比 1.5)用 if p2 == 2 : return (p1*p1*p1)/5.0 goto *error *error dialog "無効なオプションが指定されました", 1, "ortho_normalizeエラー" end #global

配布ページも作りました。リファレンスとサンプルも収録しています。
サンプルを動作させれば、正常に平行投影が反映されていることが分かると思います。

ortho_normalize公式配布ページ
http://youdaizone.webcrow.jp/hsp3/ortho_normalize.html

これはaspectの値を平行投影モード用に正規化する関数です。
数学的にこれで正しいかどうか分かりませんが、
見た目上は正しいアスペクト値で表示できたように思います。
4:3、16:9、16:10のアスペクト比のみ対応しています。

ortho_normalizeを平行投影モードのgpcameraのaspectの値に関数として利用すれば、
平行投影として正しいアスペクト比で、少なくとも見た目上はこれで反映されるはずです。

ちなみに広角モードのaspectの場合、ortho_normalizeで補正する必要はありませんでした。
広角モードの方は恐らく、そのままで正常だと思います。

●平行投影モードのこれから
平行投影モードはユーザーが自ら正規化して利用することを前提にするのでしょうか?
それともHGIMG4側で何か自動で補正してくれる方向にしていくのでしょうか?

正規化の方法をユーザーが自分で試行錯誤して作っていくのはなかなか難しいと思います。
自分も4:3、16:9、16:10の3つのアスペクト比の正規化くらいしか思いつきませんでした。

screenやbufferの画像度と連携して平行投影モードのaspectが自動で補正されてくれたらいいなと思います。



法貴優雅

リンク

2021/4/28(Wed) 22:01:13|NO.92710

HGIMG4にて、物理設定(gppbind)されていないオブジェクトに対して
gppapplyを使用すると、エラーダイアログが出て、終了してしまいますが
無視するような設定がほしいです。

もしくは、オブジェクトが物理設定(gppbind)されているか、いないかを
知る方法がほしいです(すでに実装されていたら、すいません)

あとは、物理設定の解除もしたいです。



アキアキノヒロロ

リンク

2021/4/28(Wed) 22:32:28|NO.92711

法貴優雅さんへ
> あとは、物理設定の解除もしたいです。

[gppset objid, GPPSET_ENABLE, 0] で、物理挙動のON/OFF(0=無効)が出来ます。
今作っているゲームで、この命令で解除も、元に戻すことも出来ています。
ある条件時に [0](無効)、別の条件時に [1](有効)、のようにすればいいだけです。

一旦、物理設定したオブジェクトでは、 [GPPSET_ENABLE]は、当然、非明示的既定の設定で、[1]=(有効設定)になっていて、それを 無効化(0=無効)するという訳です。
注意すべきは、[GPPSET_KINEMATIC](運動学的有効)の方を使うと、[0](無効)にセットしても、それにぶつかったものが止められてしまうので、[ENABLE](物理挙動有効)の方を 無効の設定で使うということです。



法貴優雅

リンク

2021/4/28(Wed) 22:59:32|NO.92713

アキアキノヒロロさんへ
物理挙動の設定の件、了解しました。
ありがとうございます。



youdai

リンク

2021/4/29(Thu) 14:17:04|NO.92717

HGIMG4のリギング関係についての要望を書きます。

●GPBモデルのアーマチュアのボーンの情報を取得・設定できるようにしてほしい

GPBモデルの「現在のアニメーションフレーム」のアーマチュアのボーンの情報を取得、設定できるようにしてほしいです。

例えば、

GPBモデルの現在のアニメーションフレームのボーンの取得


gpbboneget モデルのID, "ボーンの名前", PositionのFV値出力先配列変数, RotateのFV値出力先配列変数, ScaleのFV値出力先配列変数

GPBモデルの現在のアニメーションフレームのボーンの設定


gpbboneset モデルのID, "ボーンの名前", 設定するPositionのFV値配列変数, 設定するRotateのFV値配列変数, 設定するScaleのFV値配列変数

GPBモデルの現在のアニメーションフレームのボーンの値加算


gpbboneadd モデルのID, "ボーンの名前", 加算するPositionのFV値配列変数, 加算するRotateのFV値配列変数, 加算するScaleのFV値配列変数

というようにです。

これができるようになると様々なことができるようになるはずです。
例えば、手のボーンの位置を取得できるようになれば、手に何かアイテムを持たせることが容易になります。
ボーンの回転を設定できるようになれば、アニメーション中の頭部でも目を任意の向きに回転させるといったことが容易になります。

また、ボーンの情報を取得できるということはBlenderのグラフエディタで入力されたVector情報をそのまま取得できるということでもあるので、
グラフエディタで作ったVector情報をも扱えるということを意味します。
これができるようになれば、HGIMG4のモデルの動作面で革命的な変化を与えられると思います。

zezenanaさんの「hgimg4で3Dモデルのボーンを動かしたい」のスレッドでも同様のことができないか質問がありました。
ボーンの情報の取得・設定ができるようになれば、非常に便利になると思います。



アキアキノヒロロ

リンク

2021/4/29(Thu) 22:13:30|NO.92720

[gppbind] のヘルプ [GPPBIND_MESH] の項に

> コリジョンは、モデルの形状とは独立した情報となります。
> コリジョンが作成された後は、ノードのスケール値は反映されませんので注意してください。

とある意味がよくわかりませんでした。コリジョン用に作ったノードを透明にしていたのをやめて、表示してみると、そのことがわかってきました。

[GPPBIND_MESH] 指定するとしないとでは、表示されるノードの大きさが違ってしまうのです。
[setscale] で、[1,1,1] 以外にして、本来の大きさを変更していると、[GPPBIND_MESH] 指定しない場合には、[setscale] での設定の大きさで表示されますが、[GPPBIND_MESH] 指定した場合は、元の大きさになってしまっているようです。
ただし、ここで紛らわしいのは、[GPPBIND_MESH] 指定した場合でも、
gppbind id_kabe_obj, 0, , GPPBIND_MESH
のように、摩擦係数(friction)は指定せず、重さ(mass)を0にすることで、床(地面)と同等にした時は、[setscale] での設定の大きさに表示されます。
さらには、板を伸ばしたり、曲げたりして作ったものと、立方体から作ったものとでは、同じ形にしたノードでも、[gpload] で読み込んでみると、[GPPBIND_MESH] 指定で違いがあるようです。
この辺は、まだよく確かめていません。条件が錯綜していそうで、まだ仮説的なこともわからないでいます。

別にたてたスレの「GPPBIND_MESHのオプション指定の利用方法」でも少しやってみようと思います。



アキアキノヒロロ

リンク

2021/5/10(Mon) 05:05:50|NO.92808

以前、このスレの中で、「HGIMG4の描画が高速化」されたことに関連して、[setreq SYSREQ_FIXEDFRAME] について、以下のように書きましたが、やはり、それを強く思います。

> この(固定フレームレートの)速度調整は、物理設定したものの動きの速度にも関わっていそうに感じました。

プログラムがだんだん込み入ってくると、特にこの「固定フレームレート」と「物理設定」に関する部分に影響がいち早く出始め、ついには止まってしまいます。

パソコンへの負荷を下げるため、メインループの待ち時間を長くすると、どうにか動いてくれます。
しかし、当然全てのものが遅くなります。かつ、「物理設定」を使って動かしているものの速度も、遅くなる(ものによっては、止まってしまう)のです。
それだけでなく、「固定フレームレート」の設定をしているアニメーションの再生速度まで遅くなってしまいます。

「固定フレームレート」の設定を外すと、メインループの待ち時間を変えていないのに、メインループが速くなります。今度は、アニメーションの再生が速くなりすぎて困ります。
これを調整する方法として、「固定フレームレート」の設定を外す場合、望む速さになるようにするには、元のモデルのアニメーション速度を、プログラムに合ったものに作り変えないといけなくなり、とても厄介で手間がかかりすぎます。

なので、速度の程度は置いておいて、まず、とにかく全体がある程度の余裕をもって動くメインループの待ち時間を探ります。
そして次に、その待ち時間でもどうにか許容できるアニメーションの再生速度になる「固定フレームレート」の設定値を探ります。
これを終えてから、「物理設定」で動かしている数値を調整して、動かしているもの(モデル)の、望む速さに近づけていく。
このようにして、全体のバランスをとって行くしかないようです。

「HGIMG4の描画が高速化」されたことは、確かですが、それでも当然、処理速度には限界がある訳で、「アニメーション」と「物理設定」に関する処理は、負荷が大きくて、影響が出やすいのでしょうか。

どの辺りで折り合うかも、大切になってきますね。



youdai

リンク

2021/5/10(Mon) 07:36:13|NO.92809

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

物理演算とフレームレートの関係ですが、フレームレートに合わせて物理演算の数値を調整すると対応できます。
それは単純な式で対応できます。「FPS60時の物理演算 * (double(フレームレート) / 60.0)」です。

HGIMG4のデフォルトのフレームレートはFPS 60ですが、例えばこれをFPS 30程度まで落としたい場合、
物理演算に関係する全ての数値を2.0倍にします。
例えば重力の場合は9.8だから、重力の設定をその倍の19.6にします。
この場合のすべての数値とは、物理演算に関係するすべてのコマンドに対してです。
gppapplyに対しても同様に2.0倍にします。
力の吸収や弾力等の設定も2.0倍にする必要があります。

こうするとフレームレートを変更しても、速度的な見た目や物理演算的にはFPS60とあまり変わらない結果が得られます。
ただし、精度の問題でFPS60と全く同じ結果になるわけではありません。あくまで近似です。
例えば、FPS60の時には右側に転がっていった玉が、物理演算の数値を2.0倍にしたために左側に転がっていくこともあります。



youdai

リンク

2021/5/10(Mon) 07:39:33|NO.92810

式を間違えてしまいました。

>FPS60時の物理演算 * (double(フレームレート) / 60.0)

ではなく、正しくは

FPS60時の物理演算 * (60.0 / double(フレームレート))

です。



アキアキノヒロロ

リンク

2021/5/10(Mon) 15:08:44|NO.92812

youdaiさん、ありがとうございます。

自分でも、やってみていました。
理論的なことは別にしても、結果としては、youdaiさんのおっしゃっていることがあてはまっています。

[Main_time] = 「メインループの待ち時間」
[Anim_time] = 「アニメーションのフレームレート設定値」
[Gpp_force] = 「物理挙動で使用している数値」

とすると、[Main_time]を 1.2倍ほどにした場合、[Anim_time]は、1.3倍ほどにしています。
[Gpp_force]の物理挙動には、[gppapply]を主に使っていて、全てのこの
[gppapply objid, GPPAPPLY_IMPULSE, x*(impulse), y*(impulse), z*(impulse)] の [x,y,z] に掛ける係数(impulse)を1.5倍ほどにしています。
この、1.2倍、1.3倍、1.5倍という誤差は、実際のプログラム実行における誤差としての近似値だと思います。

処理速度の限度を気にしだしたのは、実は、カメラの位置設定で、対象との距離を変化させようとした時です。
カメラ距離として、[キー]で、ある値を指定するぶんには、正常にその距離の位置になります。
それを連続して増減させようとすると、カメラ距離の増減とともに、「アニメーション」の速度も急激に極端に変化してしまい、完全に止まることもありました。
これは、カメラ距離決定には、カメラ向き(回転 = ca_cnt)を利用して、次のような式から求めていて、

ca_deg=360*ca_cnt/256
Cx=sin (deg2rad(ca_deg))*(-3)
Cz=cos (deg2rad(ca_deg))*(-3)

setpos id_camera, model_x+Cx, model_y+ca_y, model_z+Cz

かつ、一回のメインループの中で、これと同じ形の式を15ヶ所ほどで使っています。
連続して増減させると、これらの式に毎メインループごとに、違った数値を代入して計算させる訳ですから、ある特定数値を指定して代入するのに比べ、余計に負荷が大きくなるでしょう。

このような大きな負荷が生じると、元々負荷が大きくて目に付きやすくもある「アニメーション」や「物理挙動」におかしなことが起こるのでしょう。



リンク

2021/5/12(Wed) 00:33:39|NO.92834

HSP3.6β5を使用しています

上でも出てきて自己解決されているようですが
こちらでも、mmplayでmp3ファイルをループ再生させた場合、ループのタイミングで
ゲームが1秒ほど停止します。
"2MB以下のWAV以外のファイル場合、実際の読み込みはmmplay実行時"とありますので
その影響でしょうか?

BGMのループタイミングでゲームが止まってしまうのはちょっと不便です。

但し、自分の環境だけかもしれませんが、mp3でも1.71MB程以下ならループのタイミングで
ゲームは止まりませんでした。いくらか試しましたが、mp3でも1.71MB程以下なら実際の
読み込みはmmplay実行時だがサイズが小さいので止まらないだけなのか・・・?

hgimg3の時は他のプラグインで解決ができたのですが、なんとかできるならうれしいの
ですけども、それとも1秒ほど停止してしまうのは自分の環境が悪いのでしたらすみません



しまくろねこ

リンク

2021/5/12(Wed) 06:51:56|NO.92835

>cmpopt命令のオプション「varinit」を有効にすると、hspinet等使用時にエラーになる
https://hsp.tv/play/pforum.php?mode=all&num=92785



雪月夜

リンク

2021/5/13(Thu) 11:15:15|NO.92846

不具合報告です

fxlinkを用いてもショートカットファイルが作成されません
sample\hspext\fxlink.hspを実行して確認できました
HSPのバージョンは3.6βです
よろしくお願いします



アキアキノヒロロ

リンク

2021/5/13(Thu) 18:33:02|NO.92848

愛さんへ

> mmplayでmp3ファイルをループ再生させた場合、ループのタイミングでゲームが1秒ほど停止します。

との件についてです。
私の、かなりの負荷のかかっている今回のゲームでも、mp3のループ再生をしていますが、そのような現象は起こっていません。

しまくろねこさんがこのスレの中の[NO.92460][NO.92473]で同じようなことをおっしゃっていて、

> ドライバを最新にしたところ現象が起こらなくなりました。

ということです。試してみてはどうですか。愛さんが言うプラグインの意味がよくわかりませんが。



法貴優雅

リンク

2021/5/13(Thu) 19:28:24|NO.92849

新しい命令のgppinfo var,fv,objid,indexですが
ヘルプやガイドに書かれている内容が、取得できるvarとfvが
逆ではないでしょうか?

また同じIDで複数情報が得られるのですが、これは仕様でしょうか?



法貴優雅

リンク

2021/5/13(Thu) 19:33:43|NO.92851

取得できるvarとfvが逆の件は、アキアキノヒロロさんが報告してましたね、失礼しました。



TOMATO

リンク

2021/5/13(Thu) 20:27:04|NO.92852

>fxlinkを用いてもショートカットファイルが作成されません

実は、第1引数をフルパスにすると動くという…。
マニュアルの記載が間違っているのか、Windows の仕様変更で挙動が変わったのか。謎。


#include "hspext.as" ; ; インターネット・ショートカットを作成 ; a = dir_cur + "\\ONION soft HOMEPAGE" fxlink a, "http://www.onionsoft.net/" dialog "ショートカットを作成しました。" stop



リンク

2021/5/14(Fri) 14:12:52|NO.92858

アキアキノヒロロさんへ

mmplayの件ですが、ドライバーは最新でした。

プラグインというのはhgimg3まではサウンドとジョイパッドに
MULTIMEDIA( hmm.dll ) をずっと使用していました。

原因が分かりました・・・
USBメモリにデータを保存して起動していたのがまずかったみたいです。
自分の環境ではありますがUSBから起動させるとサウンドがループ時に止まりますが
デスクトップに移動させて起動したらループ時にゲームが止まらなくなりました。
hgimg3でhmm.dll使用時はUSBメモリから起動しても問題がなかったので気が付きませんでした!!

お騒がせしました・・・



正体不明2

リンク

2021/5/16(Sun) 15:33:09|NO.92877

ver3.6β5で実行ファイルを作成したら
windows Defenderにトロイだと誤検知されてしまったんですが、なんとかならないでしょうか?
ver3.51で実行ファイルを作成すると誤検知されませんでした。



youdai

リンク

2021/5/18(Tue) 09:18:17|NO.92897

HGIMG4 OpenGL版の要望を書きます。

●ジオメトリシェーダーを実装してほしい

HGIMG4 OpenGL版にGLSLのジオメトリシェーダーを実装してほしいです。

ジオメトリシェーダーの解説
OpenGL Tutorial 49: Geometry Shader Introduction - YouTube
https://www.youtube.com/watch?v=C8FK9Xn1gUM

ジオメトリシェーダーが使えるようになると、
パーティクルの実装が非常に楽になると思います。

今、HGIMG4はgpclone等を使ってパーティクル用のモデルを表示するものだと思いますが、
このジオメトリの計算自体はHSP3でCPU上で行っていると思います。

このジオメトリ計算をジオメトリシェーダーを使ってシェーダー内で、
つまりGPU上で行えるようになれば、速度面でも表現面でも
パーティクル関係の劇的な改善が見込めると思います。

●ジオメトリシェーダーが使えるようになると可能になる表現

表現面でできるようになること

・メッシュや頂点単位からパーティクルを表示したり、発射したりできるようになる

パフォーマンス面でのメリット

・メッシュとパーティクル部分を分離できるのでスキンニングを単純化できる

●スキンニングを単純化するということ

現在のHGIMG4でアーマチュアアニメーションをする場合、
全ての頂点に対してスキンニングをしないといけません。

例えば頂点数が1000あるモデルの場合、
かかる負荷は「1000(頂点数) * ボーンの数 * 3(XYZ) * 2(位置と法線)」だと思います。
これは処理する部分が頂点シェーダーといっても、やはりかなり重い処理だと思います。

これはジオメトリシェーダーを使えるようになると、
スキンニング補正をかける頂点と法線を大幅に抑えることができるようになるはずです。

ムカデのモデルを例にあげると分かりやすいと思います。
ムカデのモデルで必要なモデルとジオメトリは、「頭」と「分割された胴体」と「尻」の3つだと思います。
そしてスキンニング用の、画面には表示されない単純な紙のようなメッシュのジオメトリが1つです。

頭、胴体、尻はこの場合、パーティクルだとも言えると思います。
紙のメッシュからジオメトリシェーダーでパーティクルとして生える頭、胴体、尻です。
スキンニング補正をかけるのはこの場合、紙のメッシュだけです。

するとスキンニングにかかる負荷は紙のメッシュ分だけで、アニメーションが表現できるはずです。
この場合、頭、胴体、尻は紙のメッシュのスキンニングの変形に従って移動や回転をするだけですが、
それでもムカデのアニメーションとしては十分な表現力があると思います。

このメリットは、処理にかかる負荷が非常に軽いということです。

●繰り返し表現が多いゲームに向いている

ゲーム用のマップを考えた時、そのマップには繰り返し表現が多いと思います。
例えば、森です。

ジオメトリシェーダーを使えるようになると、木をパーティクルとして表現できるはずです。
地面はこの場合、メッシュです。

つまり、地形のジオメトリ1つと、木のジオメトリ1つあれば、森が簡単に表現できるようになります。

●実装方法

.materialに記述する従来通りの以下のような方法に加えて、


technique { pass { vertexShader = res/shaders/colored.vert fragmentShader = res/shaders/colored.frag } }

以下のような方法でジオメトリシェーダーを使用できるといいと思います。


technique { pass { vertexShader = res/shaders/colored.vert fragmentShader = res/shaders/colored.frag geometryShader = res/shaders/colored.geom } }

●ジオメトリシェーダーとOpenGLの関係

HGIMG4のOpenGL版はOpenGL 3.1以降が対象ですが、
ジオメトリシェーダーが使えるOpenGLはOpenGL 3.2以降です。
GLSLはGLSL 1.5、GLSL ES 3.2以降で対応します。

自分のグラボのgeForce GT740(DDR3)では、OpenGL 4.4まで対応しています。
ただ、もうひとつのグラボのgeForce GT220では、OpenGL 3.1までの対応でした。

性能の低いグラボに対応させたい場合は、
ジオメトリシェーダーを使わないシェーダーを別途用意してあげるといいんじゃないかと思います。

●blenderとジオメトリの関係について

blender 2.92になってから、新たにジオメトリノードエディターという概念が追加されました。
これはその名の通り、モデルのジオメトリを直接コントロールするノードのシステムです。

初めてこのジオメトリノードエディターを触った時、こんなの使いこなせるのかと思っていましたが、
仕組みが分かってくると非常に多彩な表現ができるようになることがわかってきました。

これは、おそらく、GLSLのジオメトリシェーダーと同じような概念の仕組みだと思います。

●ジオメトリシェーダーの学習という面

ジオメトリシェーダーの問題は、頂点シェーダーとフラグメントシェーダーと比較して
その解説の情報数が非常に少なく、説明されている場合でも内容が専門的過ぎてよく分からないものが多いことです。
HGIMG4でも使えるようになれば、学習用としても非常に有用だと思います。
 



砂時 計

リンク

2021/5/23(Sun) 17:07:26|NO.92927

OneDrive公開のβ6プレビュー版で
WebGL版で mes を使用すると
実行したブラウザの devtools に
mes で指定した文字列が出力されます。
※厳密に確認していませんが,同一文字列を指定したときに
抑制される場合もあります。

mes は画面構成に毎フレーム使用するので
devtools へのデバグ出力とは分離してほしいです。

変換元のソースは以下。
「HGIMG4を使用する」「WebAssemblyを使用する」にチェックを入れ
「デバック情報を出力する」にチェックを入れていない状態で
「変換」を実行しました。

ブラウザは Win10 64bit Chrome 90.0 です。


//#include "hsp3dish.as" #include "hgimg4.as" flag = 1 repeat getreq val, SYSREQ_TIMER redraw 0 pos 8,8 stick key,15 if key & 1 { mes "左" } if key & 256 { flag = 1 - flag } mes "flag: " + flag if flag { mes "" + val } redraw 1 await 1000/60 loop



砂時 計

リンク

2021/5/23(Sun) 19:52:52|NO.92928

HGIMG4 WebGL/JavaScript 版への要望です。

HSP3側からは exec "alert('" + score + "');" のようにコードで値も送信できますが
JavaScript の側から値をコールバックで取得したいです。
4096バイトぐらいのバッファが引数として指定されているようになっていると助かります。

IndexedDBのfsを経由すると類似のことはできそうですが
IndexedDBを止められている環境で動かしたいので
コールバックだと嬉しいです。

イメージとしては次のような感じでしょうか。

goto *label *callback // lparam から始まるアドレスに格納される dupptr hbuf, lparam, 4096, vartype("str") // hbuf を解釈する return *label exec "const buf = new Uint8Array(4096);/* buf に書き込む */; __hspcallback(buf);",1024,"",*callback



zakki

リンク

2021/5/24(Mon) 18:42:07|NO.92934

現状でもポインタ取得とEmscriptenのヒープ操作で書き声目無くはありません。
HSPやEmscriptenのバージョンアップに弱いので何か正規の方法あると便利そうですね。


#include "hsp3dish.as" sdim strbuf, 1024 ptr = varptr(strbuf) *main redraw 0 color 0,0,128:boxf color 0,255,255: pos 0,0: mes "'"+ptr+"'" mes "'"+strbuf+"'" exec "const ptr = " + ptr + "; stringToUTF8Array(new Date().toLocaleString(), Module.HEAP8, ptr, 1024);" await 10 goto *main



リンク

2021/5/25(Tue) 14:38:44|NO.92937


font "MS ゴシック",24,1 mes"モロ \n モーロロ  \n ああロ ああああああ"
カタカナの"レ"、"ロ"、"ワ"、"ヲ"と"ー"の後に空白をいれると
1ドットの点"."が表示されます。ほかの文字でもなるかも?
MS 明朝ではなりませんでした

自分の環境だけかもしれませんが一応・・・



あとフルスクリーンについてです

3.6β4だと

screen 0,1280,720,256
で問題なくフルスクリーンに出来るのですが
3.6β5だと自分の環境ではフチなしウィンドウにはなりますが
画面サイズが変わらず1280*720のままになってしまいます
たまに使用できない云々とウィンドウが出ることもあります


マウス表示について

mouse -1でマウス表示を消した後、mouse命令をいれても
マウスが表示されない気がします



TOMATO

リンク

2021/5/25(Tue) 15:07:47|NO.92938

>マウス表示について


// 再表示 mouse ,,1

ではダメです?



リンク

2021/5/25(Tue) 16:37:39|NO.92940

TOMATOさんへ

ありがとうございます!

mouse ,,1
で、できました!

hgimg3までとは少し記述が違うのですね・・・すみません



砂時 計

リンク

2021/5/25(Tue) 19:55:42|NO.92944

zakki さん

ありがとうございます。HSP3側で取得できる期待の動作になりました。
※WebGL/JavaScript 版では varptr()がそんなことに使えるとは。

HSP3dish の exec と JavaScript のコードの同期実行性が
少し気になりますが色々できそうで試してみます。



リンク

2021/5/30(Sun) 17:16:50|NO.92973

NO.92937の追記
たまに使用できない云々とウィンドウが出る部分はこちらのミスだと思います、すみません
β6があるのを見落としていました
自分の環境ではβ6でもβ5と同じでフルスクリーンができませんでした

mesの件も同じ症状です

Windows 10 pro
Ryzen7 3700x
GeForce GTX1660 SUPER



こち

リンク

2021/5/30(Sun) 22:38:31|NO.92976

愛さんへ
フルスクリーンの件

screen 0,1280,720,256

これを私のPCでやると固まってしまいます。
画面モードの設定違っていませんか?
全部指定でもはや...

たとえば、これならどうでしょう?
screen 0,ginfo_dispx,ginfo_dispy,0,0,0

ご参考になれば



リンク

2021/5/31(Mon) 11:33:07|NO.92977

こちさんへ

画面いっぱいのウィンドウを作りたいわけではなく
1280*720をフルスクリーンにしたいのです・・・
あー!すみません!記載を忘れましたが、hgimg4dx.asを使用しています

#include "hgimg4dx.as" gpreset ; hgimgの初期化 setreq SYSREQ_VSYNC,1;////垂直同期ON screen 0,1280,720,256 *main getkey c,27;Escで終了 if c=1:end redraw 0 ; 描画を始める(画面クリア) redraw 1 ; 描画を完了する(画面が更新されます) await 1000/60 ; 時間待ちを行う(垂直同期がonなので実際は減らす) goto *main
余計な部分を省いていますが、上記だと、hsp3.6 β4だとフルスクリーンになるのですが
β5、β6だと左上に寄った1280*720のフチなしウィンドウになってしまいます
hsp3.6からscreenのp4の初期化モードで256を指定すればフルスクリーンになる
はずなのですが・・・記述が間違っていますでしょうか?



#include "hsp3dish.as" screen 0,1280,720,256 *main getkey c,27;Escで終了 if c=1:end redraw 0 ; 描画を始める(画面クリア) redraw 1 ; 描画を完了する(画面が更新されます) await 1000/60 ; 時間待ちを行う goto *main
hsp3dish.asだとβ6でもフルスクリーンになりました。
ただ、自分のPCだとF5をちょんっと一瞬だけ押してウィンドウモードで起動した時
hgimg4.asやhsp3dish.asだとscreen命令があると
何故かウィンドウのバーをクリックしてウィンドウの位置を動かそうとすると
動かせなくなるのデスヨネ・・・

screenを削除するか、screenの前にwaitを入れるか
F5を素早く押さず起動するかコンパイル+実行で起動すると大丈夫・・・何故だ・・・



こち

リンク

2021/5/31(Mon) 22:42:05|NO.92981

愛さんへ
すみませんでした
マニュアルの方は見ていませんでした

私の方でも
b4では、問題なくて
b5から、hsp3dishでしか、フルにならないですね
ただ、b5でも、たまに違うサイズをいれて試すと
フルにならないことありです。



リンク

2021/6/1(Tue) 00:05:08|NO.92982

こちさんへ

いえいえ〜

こちさんの方でも
hgimg4dx,hgimg4のフルスクリーンは、β4はOKだがβ5、β6は出来ず
hsp3dishのフルスクリーンは、β5、β6でも問題なくできるわけですね!

こちさんでも同じ症状なようですし自分の環境だけそうなる訳ではないようなので
その点は少し安心できました・・・というのも変ですが
おにたまさんの修正待ちですかねー

フルにならない事があるのは640*480、800*600、1280*720とか
である必要があると思うので、それかな



雪月夜

リンク

2021/6/1(Tue) 13:05:37|NO.92983

dirlist2に関する不具合を見つけました

dirlist2のファイルマスクで拡張子を指定し
カレントディレクトリに指定した拡張子のファイルが存在状態で命令を実行すると
カレント以下のファイル自体は取得できますが、ファイルの合計数が「0」になってしまいます

例:ディレクトリ構成

C:\フォルダ1(※カレントディレクトリ) └─フォルダ2    ├─フォルダ3    │   └─ファイルB.txt    └─ファイルA.txt
以下が確認に用いたソースコードです

#include "hspext.as" chdir"C:\フォルダ1" dirlist2h 0,',' dirlist2 a,"*.txt", 1, '\\' mes "DATA SIZE="+a mes "FILE NUM="+stat ;ファイル合計数 sdim ftmp,a dirlist2r ftmp fs=strlen(ftmp) mes "STRSIZE="+fs mes ftmp



雪月夜

リンク

2021/6/1(Tue) 13:06:35|NO.92984

>カレントディレクトリに指定した拡張子のファイルが存在状態で命令を実行すると
カレントディレクトリに指定した拡張子のファイルが存在しない状態で命令を実行すると



ふんすけ

リンク

2021/6/7(Mon) 08:45:27|NO.93001

ジョイスティック入力モジュール2(mod_joystick2.as)について報告します。

jstick の非トリガータイプ指定で、TABキーの値以上が対応されていませんでした。

#deffunc jstick var _p1, int _p2, int _p3 ; jstick 変数,ポート番号 ; (stick命令互換の値を変数に返す) ; stick@hsp key_now,$3ff jstick_org jkey,_p3 key_now|=jkey trg_key=key_now^last_key&key_now last_key=key_now _p1 = (last_key & _p2) + ( trg_key & (0xffff ^ _p2) ) return
恐らく stick 命令の非トリガー指定値が小さいのが問題でしょうか?
意図通りの動作であれば、申し訳ございません。ご査証ください。

ジョイスティックを使おう
https://w.atwiki.jp/hspcontest/pages/116.html



GENKI

リンク

2021/6/7(Mon) 22:03:38|NO.93002

>> NO.93001
> jstick の非トリガータイプ指定で、TABキーの値以上が対応されていませんでした。

mod_jstick2.asの中で次の箇所の修正が必要そう。

stick@hsp key_now,$3ff
になってるせいなので、$3ff→$3FFFF にすればよさそう。



窓月らら

リンク

2021/6/13(Sun) 02:16:42|NO.93026

一般配布向けの hsp36b5.zip ですが、またしてもAvastでウイルスと言われます。
ダウンロードの時点で反応しています。
該当は以下の2つのファイルです。

\hsp36beta\hsp3dh.exe ...Win32:Malware-gen
\hsp36beta\hsprt ...FileRepMetagen [Malware]



窓月らら

リンク

2021/6/15(Tue) 18:18:54|NO.93044

上記ウイルス誤判定の件は hsp36b5a.zip で対応して頂きました。
ありがとうございました。



法貴優雅

リンク

2021/6/15(Tue) 18:54:06|NO.93045

HGIMG4のgpresetでメモリリークが発生するようです。
HSP3.6b5aで下記のコードを実行して、スクリーンをクリックすると使用メモリが増えていきます。
HSP3.51では使用メモリは増えないので、screen関連がリセットされてないのではと思います。
また現在作っているゲームでは、gpresetしても数百Mbyteのメモリリーク?が発生しているので
gpresetでメモリすべてが解放されているか、確認してほしいです。


#include "hgimg4.as" screen 0, 1600, 900, 0 ct = 0; *init gpreset *main stick k, 256 if (k & 256) { ct++; goto *init } gsel 0 title "gpreset:"+ct redraw 0 gpdraw redraw 1 await 16 goto *main

またメモリを1GBくらい使用すると、その後、画像が読み込めなくなりエラーが発生します。
リミッターがあるなら32bitアプリで使用できる最大値までメモリを使用できるようにしてほしいです。



窓月らら

リンク

2021/6/15(Tue) 23:59:30|NO.93049

不具合報告などでは無いのですが、更新ネタとしてこちらで書かせて頂きますが
HSP3Dishで作成されたアプリをGooglePlayで公開する場合ですが、

重要: 2021 年 8 月より、Google Play での新規アプリの公開は Android App Bundle で行う必要があります。
https://developer.android.com/guide/app-bundle?hl=ja

これはHSP側で何か対応が必要な内容でしょうか? イマイチよくわかっておりません。
必要ならご対応をお願いいたします。



ゆうやん

リンク

2021/6/16(Wed) 19:27:38|NO.93050

要望なのですが、UTF-8版のエディタも出してもらえないでしょうか。
UTF-8で書かれたファイルだと文字化けしてしまいます。

https://twitter.com/yuuyan_1025/status/1384472652073431048



法貴優雅

リンク

2021/6/19(Sat) 21:06:02|NO.93078

Twitterの方でも返信しましたがhsp3.6b5aでもmouse -1してカーソルを消した後
mouseでカーソルを表示させようとしても、表示されません。



法貴優雅

リンク

2021/6/19(Sat) 21:12:40|NO.93079

mouseの件は上の方で、愛さんとTOMATOさんでやりとりしてましたね。
ただヘルプには書いてない件なので、ヘルプに仕様変更の旨をお願いいたします。



ゆうやん

リンク

2021/6/19(Sat) 21:18:19|NO.93080

>NO.93078
マルチモニターだからではないでしょうか。
仕様バグのようですが、修正されるといいですね。
http://hsp.tv/play/pforum.php?mode=pastwch&num=82382



法貴優雅

リンク

2021/6/19(Sat) 22:53:56|NO.93081

ゆうやんさんへ
私の環境はマルチモニターではないです。
またsample\basic\mouse.hspをhsp3.51の環境で動かしたときは
正しい動作をするので、hsp3.6b5aのmouse命令が
おかしくなっているのではないかと思っています。



おにたま(管理人)

リンク

2021/6/22(Tue) 00:23:43|NO.93094

多くのご報告と書き込みありがとうございます。
頂いたご報告をもとに修正できるものについて対応したバージョンをプレビュー版として作成致しました。
以下のURLか、OneDriveのページから最新のhsp36betaフォルダをダウンロードできます。
HSP3.6RC1版(プレビュー版)
https://www.onionsoft.net/hsp/file/hsp36r1_210622.zip

HSP3.6RC1版(OneDrive)のページ
https://onedrive.live.com/embed?cid=EC425522ED849DA7&resid=EC425522ED849DA7%211229&authkey=AB-pNztAqBp6BcU

2021/06/18 3.6 RC1

β2版でmouse命令の動作が過去のものと異なっていたのを修正、ヘルプに追記
[HGIMG4][Windows] gpreset命令実行時のメモリリークを修正
[HGIMG4][Windows] β5版でウインドウアイコンが表示されない不具合を修正
[HGIMG4][Windows] β5版でフルスクリーンの指定が動作しない不具合を修正
[HSP3Dish] 標準スプライトで自動回転・ズームを行うためのes_arot命令を追加
[HSP3Dish] 標準スプライトのes_fade命令にαチャンネルのフェード機能を追加
[HSP3Dish] 標準スプライトのes_draw命令がstatに値を返すように修正
[hspext] dirlist2命令の戻り値(ファイル数)が少なくなる不具合を修正
[hsp3utf] プラグインに渡されるBMSCR構造体のサイズが一部ずれていた不具合を修正
hsedsdkのサービス、HspFunc_getobj/HspFunc_setobjのオブジェクトID範囲チェックを追加
noteadd命令に4094文字以上の文字列を指定した際に不安定になる不具合を修正
実行ファイル作成時にコマンドライン引数に余計なスペースが入る不具合を修正
拡張プラグインを使用した際の終了時にエラーイベントが記録される不具合を修正
[hspinet] リクエストに関する文字列の長さ制限を撤廃
Windows版のHSP3,HSP3CL,HSP3Dishでdirinfo,sysinfoが同じ仕様になるように修正
Linux/RaspberryPi版のスクリプトエディタにF1キー(ワンキーヘルプ)の機能を追加
#comoptにより未初期化変数エラーを有効にした際に標準のプラグインやモジュールでエラーが出るものを修正
[HGIMG4] β5版でオブジェクトのレンダリンググループ設定が正しく反映されていなかった不具合を修正
[HGIMG4] β5版でモデル形状のコリジョンを使用した際にノード座標が取得できなくなる不具合を修正
[HSP3Dish][Windows] celbitmap命令の描画画面読み出しに失敗することがある不具合を修正
[HGIMG4][Windows] アプリ終了時にエラーが発生することがある不具合を修正

今後、大幅な内容の追加は行わず安定した状態で、HSP3.6版をリリースさせて頂く予定です。
手を入れられなかった機能も含めて検討中の内容は、次バージョンのβ版として引き続き公開をしていく予定です。
多くの検証とご意見、本当にありがとうございます。
引き続きよろしくお願いいたします。

>とあるプログラマ さん

ご指摘ありがとうございます。
hsp3utfでプラグイン側に渡されるBMSCR::objmaxの内容がおかしいのは不具合になります。
hsp3utfとhsp3で共通の内容になるよう修正させて頂きました。

>youdai さん

ご意見ありがとうございます。
gpcameraのaspectの値につきましては、もともとのライブラリであるgameplay3dの仕様で、画面のサイズを考慮したものではありません。
ボーン情報の取得設定については、確かに便利だと思いますので何らかの形で実現したいと考えています。
ただ、それぞれのノードはマトリクスにより管理されているので、X,Y,Zの座標は取れると思いますが、回転角度はクォータニオンでしか取れません。(角度に変換したとしても、それをそのまま加工して戻すのは難しそうです)
ですので、細かい加工を行う際にはマトリクスの演算が必要になり、ある程度3Dの理解がある人に限定された機能になってしまうかと思います。
ジオメトリシェーダーにつきまして、今後の課題ではありますが、当面のバージョンではandroidやRaspberryPiなどの対応状況を見ながら実装できればと考えています。
今のところはHDRやZ値の活用をするためのステンシルバッファ書込みの実装を優先する予定です。

>砂時 計 さん

devtoolsに文字列が出力される件は、こちらでも確認しています。
HSP3Dishでは文字列を描画する際に最初の1回だけjs側でレンダリングを行っているので、それが出ているものと思われます。
今後抑制できるようならば対応していきたいと思います。

>愛 さん

ご報告ありがとうございます。
HGIMG4のフルスクリーン機能については、新しいバージョンである程度対応しましたが、基本的にはHSP3のchgdisp命令と同様の方法で解像度が変更されます。
この方法は、マルチモニタの場合などでウインドウの位置やサイズが移動されるなど弊害もあり、あまりお勧めできません。
可能であれば、画面全体と同じサイズのウインドウをbgscr命令で作成して、ゲームの解像度に合わせてviewcalc命令などで表示を調整する方が望ましいと考えています。

>法貴優雅 さん

HGIMG4のgpresetでのメモリリークにつきまして、ご報告ありがとうございます。
新しいバージョンで対応していますので、ご確認頂けると助かります。

>窓月らら さん

ご報告ありがとうございます。
Android向けビルドの方法については、色々変わってきている所があるので、antによるビルドが限界に来ているかと思います。
ただ、どのような方法が最適なのかまだこちらでもわかっていないので、もう少し検証してみたいと思います。
ビルド方法がアップデートされた際にはβ版のテストも含めて、皆様の環境でテストをお願いできれば嬉しいです。

>ゆうやん さん

UTF-8版のスクリプトエディタは今後提供したいと考えていますが、
現状のものをベースとした場合安定性に問題があるため、現状ではVSCodeなど他の環境をお使いください。



Drip

リンク

2021/6/22(Tue) 04:17:46|NO.93095

Dripです。

こんにちは。更新お疲れ様です。
HSP3.6RC1上の動作で何点か報告させていただきます。


RC1でも実行ファイル生成時、生成された実行ファイルの「製品バージョン」の情報がドットではなくカンマ+スペースで区切られてしまいます。
こちらは正式版が出る前に修正をお願いいたします。
知っている人は手動で修正することができますが、知らない人は困ると思います。


またスクリプトエディタのラベルの色が変更できない問題についてちょっと検証してみたのですが、もしかするとこれはiniファイル(またはレジストリ)を扱う上でのプログラム上の単純な命名ミスが原因ではないでしょうか?
HSPスクリプトエディタのコンフィグの設定をiniに保存するようにした上で、hsed3config.iniを開いてみてください。
[Color]の行以下に設定された色合いが色コードでそのまま記載されている箇所があります。
ここを見ていくとLabelという行の数値が、

Label=3260608
で固定されていてエディタ側でいくら設定してもこの値は反映されません。(そればかりか、この色コードはHSPの初期状態のピンクっぽいラベルの色とも異なる値です。)
それはそれとして、更に下へ見ていくと

URL=16711680 URLUnderLine=16711680 Mail=4259648 MailUnderLine=4259648 LabelUnderLine=3260608
という行があります。この値は「分類:リンクの配色」で定義されている値のようです。
おかしなことに、この値は6項目あるはずなのにiniファイル内には5項目しか定義されていません。
そしてなぜか、LabelUnderLineの色コードは先ほどのLabelの色コードと一致します。
またこの項目の命名規則からして、あるはずの「Label=3260608」の行が行方不明です。
またこれら6項目はHSPのスクリプトとは無関係な配色であり、変更しても値が「黒」等に固定されています。
それでもhttp://から始まる文字列が青く表示されるのは設定ファイルでURL=16711680と定義されているからのようです。
この値を手動で書き換えればリンクの色を青以外に変更できます。
また、Label=3260608の行を手動で書き換えてもラベルの色が任意の色に変更されるのが確認できます。
………これってまさか「リンクラベル」の色とされる色コードをLinkLabelではなく単にLabelと扱っているせいでHSPのLabelと命名がバッティングして内部的な動作がおかしくなっているのではないでしょうか?
一度調べていただけますでしょうか?よろしくお願いいたします。(もしこの考察が正しければ、LabelUnderLine という命名も LinkLabelUnderLine として一緒に修正すべきかと思います。)


ところで、HSPスクリプトエディタは3.51の頃からWindows2000以前のUIに(ボタンの形状等が)戻っている気がするのですが、これは意図的なものなのでしょうか?(manifestが古いか消えている?)
(それと同時にコンフィグのコンボボックスの動作もおかしくなった気がするのですが…確かXP以降からコンボボックスのYサイズの指定方法が変わりましたよね。HSPも3.5まではそのUIに対応して正しく動作していたと思うのですが…指定方法がXP以降仕様なのに2000以前のUIを使っているせいで動作がおかしくなっている…?)


以上3点、ご確認の程どうぞよろしくお願いいたします。



法貴優雅

リンク

2021/6/22(Tue) 19:36:35|NO.93096

更新ありがとうございます。RC1を試したところ…

1.HGIMG4で"DPM:"を使用してパックファイルの画像をバッファーに読み込むと
  メモリリークする件はhgimg4は修正されていますがhgimg4dxの方は修正されていません。

2.HGIMG4で大量のオブジェクトを作成してから、gpresetして、再度大量のオブジェクトを
  作成すると物理エンジンが停止?して動かなくなります。
  以前は、使用メモリが多くなった時に起きていましたがRC1では、使用メモリ量に関係なく
  発生します、ただし、この件につきましては、詳細はまだ調査中です。

3.mouse命令の仕様変更で、デフォルトの設定モード値が0なので
  いままでmouse x, yとやっていたものが、同時にShowCursor trueをすることになり
  カーソル表示カウンタが増え、いざmouse ,,-1してもカーソルが消えないという
  質問が増えそうですが、この仕様はこれでよいのでしょうか?
  (必ずmouse x, y, 1とすれば、問題はないのですが)
  (仕様の問題ですので、その辺はお任せしますが、バグを誘発しそうで怖いです)

以上、よろしくお願いいたします。



Drip

リンク

2021/6/23(Wed) 22:26:25|NO.93098

こんにちは。

法貴優雅さん

興味がありmouse命令の動作について私も動作を検証してみたのですが、いつの間にか仕様が何度か変わっていて驚いています。
安定版と整合性を取るため第三パラメータが標準で0なのは良いことだと思いますが、以下のスクリプトでmouse命令の整合性をテストしてみました。

pos 50,50 mes "mouseテストを開始します。マウスに触れないでください。" mes "■何かキーボードのキーを押すとテストを開始します。" onkey *go stop *go py=100:pos 10,py:mes "■テスト1: mouseの座標設定・非表示・表示テスト" py+=120 circle 90,py-40,90+40,py,0 pos 80,py-80:mes "消失点" pos 190,py-80:mes "表示点" circle 200,py-40,200+40,py,0 repeat 80 if cnt<30 | cnt>55:mx=cnt*4:my=py:mouse ginfo(4)+mx,ginfo(5)+my if cnt=30:mouse -1 await 30 loop repeat 2 py=py+40 pos 10,py if cnt=0:{ color 192 mes "■テスト2: mouse -1 内部カウンタ上昇中...(今マウスは見えない)" repeat 50 mouse -1:line 10,py+30,10+cnt*10,py+30 await 60 loop }else{ color ,,192 mes "■テスト3: mouse 内部カウンタ減少中...(まだマウスは見えない)" repeat 50 mouse:line 10,py+30,10+cnt*10,py+30 await 60 loop } loop pos mx+40,my-60:color ,128 mes "■テスト4:\nmouseをmouse-1と同じ回数実行\nマウスカーソルが表示されました。" color:circle mx-25,my-50,mx+35,my+10,0 mes "テスト終了。"

おにたまさんのRC1の更新履歴より
>β2版でmouse命令の動作が過去のものと異なっていたのを修正、ヘルプに追記

とありますが、テストした結果、以下の動作結果となりました。(RC1のmouse命令はどのバージョンとも互換性が取れていないように見えます)

HSP3.6beta1 安定版と同じ動作
HSP3.6beta2 ■テスト2のタイミングで画面左端にポインタが出現
HSP3.6beta3 beta2に同じ
HSP3.6beta4  〃
HSP3.6beta5  〃
HSP3.6betaRC1 ■テスト3のタイミングでポインタが出現

ただ、このmouse命令の内部カウンタの仕様は過去にもmouse -1を複数回実行後mouse命令で座標を指定してもポインタが表示されないとのことでトラブルになっていたことを記憶しています。
ここでばっさり内部カウンタというわかり辛い仕様を撤廃するのもひとつの道なのかもしれません。
F1ヘルプから内部カウンタに関する一文が撤廃されているところを見ますと、これは意図した仕様変更ということなのでしょうか?
その場合はアナウンスやF1ヘルプにて“HSP3.6beta1までのmouse命令に存在していた内部カウンタを撤廃し、ポインタ非表示回数に関係なくmouse命令一回でポインタが再表示されるようになった”旨を記載したほうが良いように思いました。


余談となりますが、このテスト中にHSP3.6beta5に同梱されていた日本語版スクリプトエディタのみ、UIが3.5の頃と同じWindowsXP以降のスタイルが割り当てられていることに気付き、コンフィグのコンボボックスの異常表示が解消されているのを確認いたしました。
やはりこの問題の原因は2000以前のオブジェクトスタイルに起因するものだったのでしょうか?
こちらのバージョンは言語の割り当て(?)がおかしく日本語と英語が混在するおかしなバージョンだったため殆ど確認できておらず気付くのが遅れてしまいました。
しかし残念ながらRC1版でUIが再びWindows2000仕様に戻ってしまったようですが何か問題があったのでしょうか?



法貴優雅

リンク

2021/6/23(Wed) 23:25:43|NO.93099

RC1をさらに検証したところ
>2.HGIMG4で大量のオブジェクトを作成してから、gpresetして、再度大量のオブジェクトを
>  作成すると物理エンジンが停止?して動かなくなります。
この件につきましては、私の方のバグでした、大変申し訳ございません。

1.のHGIMG4DXの対応をしていただけると助かります。

以上、よろしくお願いいたします。



アキアキノヒロロ

リンク

2021/6/25(Fri) 16:25:06|NO.93102

[getangr] での角度取得は、一癖あって、そのことは、去年のコンテストの「=Hgimg4=Test_Sample」で、利用できるよう、工夫、試作をしてみていました。
今回、プログラム内でこれを幾度となく使っていると、エラーになることがあります。

[getangr] でのY軸角度取得の数値をそのまま、Y軸角度設定に使えるような、取得方法にしていただけないでしょうか。



リンク

2021/6/25(Fri) 21:33:56|NO.93104

あのう、HSP3.6RC1版(プレビュー版)を落として

#include "hgimg4dx.as" gpreset ; hgimgの初期化 setreq SYSREQ_VSYNC,1;////垂直同期ON screen 0,1280,720,256 *main getkey c,27;Escで終了 if c=1:end redraw 0 ; 描画を始める(画面クリア) redraw 1 ; 描画を完了する(画面が更新されます) await 1000/60 ; 時間待ちを行う(垂直同期がonなので実際は減らす) goto *main
を確認しましたが自分の環境ではフルスクリーンにはなりませんでした。
3.6β4では問題なかったんです
マルチモニタではないです。
おすすめの方法ではないとこのですが、手がるにできるのはうれしいのですが・・・
他の方の環境では今回ので直ったのでしょうか・・・?



法貴優雅

リンク

2021/6/25(Fri) 22:03:26|NO.93105

私の環境でもRC1のhgimg4とhgimg4dxでのフルスクリーンはできませんでした。
hsp3dishの方はフルスクリーンになりました。



リンク

2021/6/25(Fri) 22:16:45|NO.93106

法貴優雅さん

確認ありがとうございました!
自分以外でもフルスクリーンにならないのが分かって助かります。

おにたまさんおすすめのviewcalc命令を使用したら、ぱっと試した感じこれを使って
フルスクリーンをするのが手軽でよさげなので上記のフルスクリーンがダメでも
問題はないかもですが、マニュアルにある以上直るとありがたいですね!



おにたま(管理人)

リンク

2021/6/30(Wed) 01:43:13|NO.93127

RC1プレビュー版についてご報告ありがとうございます。
以下、いくつか返信させて頂きます。

>法貴優雅 さん
>愛 さん

ご指摘ありがとうございます。
とり急ぎ、HGIMG4のメモリリークとフルスクリーンについての修正を行ったバージョンを作成しました。
お手数をおかけしました。
https://www.onionsoft.net/hsp/file/hsp36r1_210628.zip

>Drip さん

スクリプトエディタについてご指摘ありがとうございます。
3.6の正式版までには確認しておきたいと思います。
mouse命令の仕様については書かれている通りです。
変更についてはマニュアル等で補足をすることを検討致します。

>アキアキノヒロロ さん

NO.93094でも書きましたが、HGIMG4の内部ではX,Y,Z軸の回転ではなくクォータニオンで管理されているため、取得した角度と完全に一致させることがなかなか難しいと考えています。
よりスマートな角度の取得方法などがあれば、今後対応していきたいところです。



MIZUSHIKI

リンク

2021/6/30(Wed) 19:09:48|NO.93132

RC1で iOS版 HSP3Dishを試そうと、HSP3Dish helperでスクリプトを変換するとエラーが出ます。

項目[name = hspproj;]がありませんでした。 項目[productName = hspproj;]がありませんでした。 プロジェクトの作成に失敗しました。
C:\hsp36beta\iOS\hspproj\hspproj.xcodeproj\project.pbxproj の465行目あたりが

name = grotate; productName = grotate;
になっているので『grotate』→『hspproj』に書き換える必要があります。
そこさえ直せば、MacのXcodeでシミュレータでの実行まで出来ました。

ご確認お願いいたします。
http://hsp.tv/play/pforum.php?mode=all&num=92998



Drip

リンク

2021/6/30(Wed) 21:52:27|NO.93133

おにたまさん

お忙しいところご対応痛み入ります。
そういえば以前よりpicloadでアルファチャンネルの読み込みがおかしい問題を確認しているのですが、こちらの改善は難しいでしょうか?

//HSPがPNGファイルのアルファチャンネルを正確に読み込まないサンプル redraw 0 repeat 100 picload dir_exe+"\\hsptv\\tamadot.png",1 loop redraw 1 boxf 0,0,512,24:color 255,255,255 mes "picloadでtamadot.pngを100回読み込みました"
このバグは視覚的にわかりづらく、例えば予めboxfで背景を塗りつぶした上で透過PNGを読み込み、gmode 4で背景色をくりぬこうとしているような場合に色が狂うのでこの問題にハマります。
色がくりぬかれないのはgmode 4のバグと勘違いされたり、ツールチップ等のくりぬきにAPIを使用している場合にはAPIの使用方法に問題があるのかと問題が波及し迷宮に突入します。
結局picloadの問題だったと気付いた時の脱力感たるや今でも忘れないのですが;
今のところこのバグの回避のためにArtlet2Dを使用しています。

//回避策 #include "a2d.hsp" alCreateImageByFile 1,dir_exe+"\\hsptv\\tamadot.png" repeat 100 alCopyImageToScreen 1,0 loop redraw 1 boxf 0,0,512,24:color 255,255,255 mes "Artlet2Dでtamadot.pngを100回読み込みました"
上の2つのサンプルの読み込まれた画像の違いを比較してみてください。
この問題を知らない人は改善されるまでの転ばぬ先の杖で覚えておくと良いかもしれません。



リンク

2021/7/3(Sat) 03:08:55|NO.93146

おにたまさんへ

遅くなってすみません、6/30の修正版を試してみたところ
screen 0,1280,720,256でのフルスクリーンの方問題ありませんでした
早い対応ありがとうございました



法貴優雅

リンク

2021/7/3(Sat) 08:02:32|NO.93147

通常エラーが出るコードですがモジュールだと、エラーもなく落ちます。

#module #deffunc hoge dim a = 0 return #global hoge stop



リンク

2021/7/5(Mon) 21:13:52|NO.93169

お疲れ様です!



窓月らら

リンク

2021/7/18(Sun) 01:07:46|NO.93250

HSP3Dishですが、mes命令にまた不具合が再発している様子です。
当方のアプリ CoinFZ for Android を更新してから気づいたのですが、
最新の 3.6b5(hsp36b5a.zip)では、またしてもmes命令の文字が
正しく表示されないAndroid環境があります。
3.6b2 では直っていた不具合が再発している形になります。
当方の環境では Android 4.x.x(TM75A等)な一部の端末で不具合がでます。
とりあえず 3.6b2 でビルドし直すことで対応しています。
b3-b4 につきましては試しておりません。

だいぶ前にもこちらの NO.67879 で報告していた不具合と同じです。
3dish、android上での不具合
http://hsp.tv/play/pforum.php?mode=pastwch&num=67779

関連?
不具合報告:HSP3Dishでmesによる文字描画後、コピー命令が誤作動など
http://hsp.tv/play/pforum.php?mode=pastwch&num=67749



おにたま(管理人)

リンク

2021/7/22(Thu) 20:52:38|NO.93273

多くのご報告と書き込みありがとうございます。
頂いたご報告をもとに修正対応したバージョンをHSP3.6RC1版として公開致しました。
以下のURLか、OneDriveのページから最新のファイルをダウンロードできます。

HSP3.6RC1版
https://www.onionsoft.net/hsp/file/hsp36rc1.zip

HSP3.6RC1版(OneDrive)のページ
https://onedrive.live.com/embed?cid=EC425522ED849DA7&resid=EC425522ED849DA7%211229&authkey=AB-pNztAqBp6BcU

今まで頂いた中で、対応に時間のかかるもの、多くの検証が必要になるものについては、今後のアップデートに向けたβ版としてリリースしたいと考えています。
特に、android版の新しいビルドシステム対応などは早い段階で対応する予定です。
今後、正式版に向けて軽微な不具合などを調整した上で一般にリリース版を公開したいと考えています。
多くのご報告とアドバイス、本当にありがとうございました。
引き続きよろしくお願いいたします。

>MIZUSHIKI さん

ご報告ありがとうございます。
RC1版で修正させて頂きました。

>Drip さん

ご報告ありがとうございます。
透過PNGについて、現状の動作はPNG画像を読み込むライブラリの仕様なのですが、読み込み回数によって状況が変化するのはおかしいですね。
今後、原因などわかれば対応していきたいと思います。

>法貴優雅 さん

ご報告ありがとうございます。
動作確認しました、今後のバージョンで修正させて頂きます。

>窓月らら さん

ご報告ありがとうございます。
3.6β3から、文字列の描画システムが大きく変わっているため、
以前のコードに戻ったというよりも、別な問題ではないかと思われます。
こちらで、該当する端末がないため確認できていないのですが、RC1版でもまだ問題が出るようであれば、表示がおかしくなるようなスクリプトをご提示頂けると大変助かります。



Drip

リンク

2021/7/23(Fri) 02:17:09|NO.93277

おにたまさん

更新お疲れ様です。
スクリプトエディタのコンフィグのコンボボックス表示異常、ラベルの色が変更できない問題の改善を確認いたしました。
大弱りしていた部分でしたので修正いただけて大変助かりました。重ね重ね対応に感謝いたします。


>透過PNGについて、現状の動作はPNG画像を読み込むライブラリの仕様なのですが、読み込み回数によって状況が変化するのはおかしいですね。

これは私の言っている事が正しく伝わっているのでしょうか…読み込み回数によって状況が変化しているわけではなく、不具合を目立たせるために何度も読み込んでいるに過ぎません(読み込み回数は関係ありません)。
HSPのpicloadによるpngファイルの読み込みでは完全に透過(アルファチャンネル=0)の領域がなぜかアルファチャンネル=1で読み込まれてしまっているようで、塗り重ねればどんどん色は濃く見えてきます(1回読み込んだ画像の完全な透過域の色を拾ってみてください。下地の色と一致しないはずです。)
今回報告のサンプルでは100回読み込んでいるため、完全な透過域は255-100=155のグレー表示になってしまっています。(1回読み込むごとに完全な透過域に存在する色が+1乗っています。)
このような異常は他のツールや言語でも類を見ないため、実装に何らかの問題が潜んでいる気がするのですが…


ところで、依然として実行ファイル生成時の製品バージョンの情報がカンマ+スペースで区切られてしまっています。
この問題は以前より掲示板でも話題になり改善策も話題に上がっていたため情報は共有されているものと考えておりましたが、念のため今一度確認させていただきます。
以下の手順で修正可能ですので修正をお願いいたします。

【再現・準備】
予め適当なアイコンとバージョン情報ファイルを用意していただき、
通常の自動実行ファイル作成では製品バージョンがカンマ+スペースで区切られてしまう事を確認してください。

【1】
HSP本体フォルダ -> hspsdk -> iconins -> modResource.hsp を開いてください。

【2】
96行目に次のコードがあります。これがこの問題の元凶のようです。

return strf("%u, %u, %u, %u", v(0), v(1), v(2), v(3))
この箇所を次のように修正してください(カンマ+スペースをドットのみにします)。

return strf("%u.%u.%u.%u", v(0), v(1), v(2), v(3))
修正したらmodResource.hspを上書き保存してください。

【3】
次に同じフォルダにあるiconins.hspを開き、Ctrl+F9でコンパイルします。
iconins.exeが作成されるので、HSP本体フォルダのiconins.exeをこれで上書きします。
またこの実行ファイル生成時に生成された hsptmp packfile start.ax は不要なので削除してください。

【修正の確認】
以上の操作の後、【再現・準備】で用意していた実行ファイルの作成を再度行い、
実行ファイルの製品バージョンがカンマ+スペースではなくドットで区切られていることを確認してください。


何卒よろしくお願いいたします。



Drip

リンク

2021/7/23(Fri) 03:40:31|NO.93279

追伸、HSP3.6正式版のAndroid出力ではデータファイルをそのままassetsフォルダに置かざるを得ない状態になるのでしょうか?
DPMファイルがダメ、memfileもダメとなると…どうしても隠したいご褒美CGや隠し音声等、まったく隠さずに封入するしかないのでしょうか。
これがどうしても気になりAndroid作品に踏み出せずにいたりするのですが…



ppp

リンク

2021/7/23(Fri) 10:49:47|NO.93281

透過PNGの問題はstb側のバグと言うか実装の在り方では?
HSP作者に言うのではなくstb側作者に投げるのが筋と思うが。



aaa

リンク

2021/7/23(Fri) 11:22:06|NO.93282

アルファブレンドがうまくいかない原因ですが高速化のために本来255で割るべきところを256で割ってるため起こる問題です。
誤差は微小ですがそのままでは完全透過や完全不透過にも誤差が出るため問題になります。
本当ならこういう手法を使う場合0〜255の範囲のα値を0〜256の範囲になるように調整すべきです。
単純に128以上なら1を足すとかすれば完全透過や完全不透過は誤差なく計算できます。

https://github.com/onitama/OpenHSP/blob/eddc647733e82657757055b66fd8c2dbf17898b8/src/hsp3/win32gui/hspwnd_win.cpp
1991行目
BYTE a1,a2,a3,a4,a4r;

BYTE a1,a2,a3;
WORD a4,a4r;

2039行目
a1=*p2++;a2=*p2++;a3=*p2++;a4=*p2++;a4r=255-a4;

a1=*p2++;a2=*p2++;a3=*p2++;a4=*p2++;a4+=a4>>7;a4r=256-a4;
にすればうまくいくとおもいます。
未確認なので間違ってたら申し訳ないですが。

あと同じ問題はpicloadだけでなくgmode 7でも起こると思います。
1673行目
srcht=(short)( *(p2+sx2) );
if ( srcht!=0 ) { if ( srcht==255 ) { *p = *p2; } else { ha=(((short)*p)*(255-srcht)>>8) + (((short)*p2)*srcht>>8); *p=(BYTE)ha; } }

srcht=(short)( *(p2+sx2) );
srcht+=srcht>>7; if ( srcht!=0 ) { if ( srcht==256 ) { *p = *p2; } else { ha=(((short)*p)*(256-srcht)>>8) + (((short)*p2)*srcht>>8); *p=(BYTE)ha; } }
にすればいいと思います。



ppp

リンク

2021/7/23(Fri) 11:39:56|NO.93283

なるほど、gmode7の方しか捉えてなかった。
これは申し訳ない。



aaa

リンク

2021/7/23(Fri) 11:40:02|NO.93284

よく見たらgmode 7は完全透過と完全不透過は個別に対処してるので問題は起こらないですね。
失礼しました。



m

リンク

2021/7/23(Fri) 13:34:10|NO.93289

3.6beta1以降においてwinobjで作成したエディットコントロールの文字色+文字背景色がおかしくなります。
これが私の環境依存の問題なのか3.6の不具合なのかわからないので確認していただけないでしょうか?

3.6beta1以降のansi版で発生し、バージョンごとに色が異なります。(beta1=明緑+黒、beta4=黒+赤茶、rc1=黒+濃紫)
3.5系やutf版、CreateWindowExで作成した場合は問題ありません。
テスト環境はWin10Home(20H2)です。


// 0=ansi, 1=utf #if 0 #runtime "hsp3utf" #uselib "user32.dll" #func CreateWindowEx "CreateWindowExW" sptr,wptr,wptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr #else #uselib "user32.dll" #func CreateWindowEx "CreateWindowExA" sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr #endif #define WS_CHILD $40000000 #define WS_VISIBLE $10000000 #define WS_VSCROLL $00200000 #define WS_EX_CLIENTEDGE $00000200 #define ES_AUTOVSCROLL $00000040 #define ES_MULTILINE $00000004 exstyle = WS_EX_CLIENTEDGE style = WS_CHILD | WS_VISIBLE | ES_AUTOVSCROLL | ES_MULTILINE | WS_VSCROLL s = "mesbox" pos 0, 0 mesbox s, 200, 100 pos 0, 100 winobj "EDIT", "winobj", exstyle, style, 200, 100, 0, 0 CreateWindowEx exstyle, "EDIT", "CreateWindowEx", style, 0, 200, 200, 100, hwnd, 0, 0, 0



おにたま(管理人)

リンク

2021/7/30(Fri) 00:31:16|NO.93364

HSP3.6RC1についてのご報告ありがとうございます。
細かい修正対応を行ったHSP3.6RC2版として作成致しました。
以下のURLか、OneDriveのページから最新のファイルをダウンロードできます。

HSP3.6RC2版(zipアーカイブ)
https://www.onionsoft.net/hsp/file/hsp36rc2.zip

HSP3.6RC2版(インストーラー)
https://www.onionsoft.net/hsp/file/hsp36rc2.exe

HSP3.6RC2版(OneDrive)のページ
https://onedrive.live.com/embed?cid=EC425522ED849DA7&resid=EC425522ED849DA7%211229&authkey=AB-pNztAqBp6BcU

>Drip さん

失礼しました、conins.exeが付加するバージョン情報をRC2版で修正させて頂きます。
pngファイルの読み込みについては、今後また原因を探っていきたいと思います。

>m さん

ご報告ありがとうございます。
winobj命令の動作についてはRC2版で修正させて頂きます。



法貴優雅

リンク

2021/7/30(Fri) 07:50:24|NO.93366

お疲れ様です。
誤検知だと思いますが、HSP3.6RC2版(zipアーカイブ)のiconins.exeが
Aviraでウィルスだと報告されます。



おにたま(管理人)

リンク

2021/8/10(Tue) 19:01:35|NO.93533

HSP3.6RC版についてのご報告ありがとうございます。
RC2版からドキュメントやデモなどの修正を行ったものをHSP3.6正式版として公開致しました。
多くのご報告、ご意見本当にありがとうございました。
頂いた中で積み残しがある課題については、引き続きβ版として公開をしていきたいと考えています。
引き続きどうぞ宜しくお願いします。

>aaa さん

アルファブレンドについてのご指摘ありがとうございます。
誤差の出る部分については、今後のβ版で引き続き検証していきたいと思います。

>法貴優雅 さん

誤検知についてのご報告ありがとうございます。
いくつかのアンチウィルスベンダーで誤検知されることがあるようです。
この点についても情報を告知していきたいと思います。



zezenana

リンク

2021/8/15(Sun) 21:19:15|NO.93593

>HSP3.6RC2版(zipアーカイブ)
>https://www.onionsoft.net/hsp/file/hsp36rc2.zip

こちらをダウンロードしましたが
前にも数回検知されていたファイルだと思いますが
今回も Windows Defenderで検知されました。

Trojan:Win32/Zpevdo.B
file: hsp36rc2.zip->hsp36/hsp3dh.exe

こちらのご対応もよろしくおねがいします。



Y_repeat

リンク

2021/8/17(Tue) 01:04:16|NO.93602

前からなんとなく思ってたんですが
お互い0じゃなければ1を返す論理積命令があった方がいいと思ってました
HSP初心者が最初ぶつかる問題ぽいので
どちらかが0じゃなければ1を返す論理和命令もなくても問題はなさそうですが
mes (2 | 0) & 1 が0だと考えるとあった方がいい場面はありそうです
あと0ならば0を返しそうではなければ1を返す命令も便利そうですね

いずれも論理演算とビット演算の違いをわかっていれば
#defcfuncで実装出来るのではありますけれど



にゃんこ

リンク

2021/8/17(Tue) 08:44:51|NO.93603

要望「スーパータマベーダー」

"HSP3.6の機能デモとして製作されたサンプルゲームです。"
との事ですが、ソースリストの公開はしないのでしょうか?
是非、HSP3.6の書籍には、ソースとWEBに公開するまでの
一連の手順を紹介して欲しいです
※コンバート方法、リソースデータの扱い方法等



法貴優雅

リンク

2021/8/20(Fri) 21:15:56|NO.93644

β版の時は、気がつかなかったのですが、現在HSP3.6の正式版を使用していて、
エディタからHGIMG4DXを使ったプログラムを終了させた時に、プログラムの終了が
待たされることがあり、その後、Windowsのイベントビューアーを見てみると
エラーとして

障害が発生しているアプリケーション名: hsp3gpdx.exe、バージョン: 0.0.0.0、タイム スタンプ: 0x60fac7a2
障害が発生しているモジュール名: hsp3gpdx.exe、バージョン: 0.0.0.0、タイム スタンプ: 0x60fac7a2
例外コード: 0xc000041d
障害オフセット: 0x00034a44
障害が発生しているプロセス ID: 0xba4
障害が発生しているアプリケーションの開始時刻: 0x01d79192bee89a63
障害が発生しているアプリケーション パス: E:\_data\hsp36\hsp3gpdx.exe
障害が発生しているモジュール パス: E:\_data\hsp36\hsp3gpdx.exe
レポート ID: b5941e0f-584b-4f6b-ad30-b9b3f2d0a159
障害が発生しているパッケージの完全な名前:
障害が発生しているパッケージに関連するアプリケーション ID:

と記述がありますが、これは大丈夫でしょうか?
ちなみにhsp3gp.exe版はテストしていません。



K-s

リンク

2021/8/24(Tue) 22:43:17|NO.93679

#constの計算結果が実数になるときの結果が以前のバージョンと異なるようです。
https://twitter.com/skymonsters_Ks/status/1429849720122318852



おにたま(管理人)

リンク

2021/8/25(Wed) 22:51:27|NO.93688

皆様、HSP3.6リリース版についてのご報告ありがとうございます。
以下いくつか返信させて頂きます。

>zezenana さん

アンチウイルスでの誤検出についてご報告ありがとうございます。
現在は主なアンチウイルスでの誤検出はないと思われますが、また発生した場合はお知らせ頂けると助かります。

>Y_repeat さん

ご意見ありがとうございます。
論理演算については、確かに問題があることを承知しています。
過去のスクリプトとの互換もあるのですぐには解決が難しいと思いますが、
良い方法があれば採用していきたいと考えています。

>にゃんこ さん

ご要望ありがとうございます。
スーパータマベーダーやTamaHoukiなど、今後ソーススクリプトの公開もしていきたいと考えています。
WEBに公開するまでの手順は、通常のHSP3DishによるWEB変換と同様に、HSP3Dish Helperで変換を行ってホームページとして公開するだけです。
以下のマニュアルを参考にしてみてください。
https://www.onionsoft.net/hsp/v36/doclib/hsp3dish_js.htm

>法貴優雅 さん

HGIMG4DXについてのご報告ありがとうございます。
エラーが発生しているものと思われますが、こちらでは確認できていません。
サンプルなどどのようなスクリプトでも発生しますでしょうか。
また終了方法として、単にウインドウを閉じるのか、onexit命令でendに飛ばしているか…などで動作が変わる可能性があります。
エラーについてはこちらでも引き続き調査していきたいと思います。

>K-s さん

ご報告ありがとうございます。
お手数をおかけしてすみません、これは気が付きませんでした。
今後のバージョンで修正していきたいと思います。



にゃんこ

リンク

2021/8/26(Thu) 08:24:31|NO.93693

ありがとうございます(≡^∇^≡)
HSP習得の為に、勉強させていただきます(*^▽^*) /



K-s

リンク

2021/8/27(Fri) 01:33:01|NO.93701

自分も法貴優雅さんと同じような終了時に待たされることがあり
イベントビューアーで見てみるとエラーが出ていました。
いろいろ試したところ以下のスクリプトでエラーが出ました。

#include "hgimg4.as" ; hgimg4dx でも同様 oncmd gosub *wmKillFocus, $8 ; エラー出る ; oncmd gosub *wmWindowPosChanged, $47 ; 出る ; oncmd gosub *evKeyDown, $100 ; 出ない ; oncmd gosub *evMouseMove, $200 ; 一度出たことがあった *mainLoop redraw 0 redraw 1 await 16 goto *mainLoop *wmKillFocus *wmWindowPosChanged *evKeyDown *evMouseMove return
このスクリプトでは終了時に待たされはしませんがエラーは出ます。
oncmd関連が原因の一つかと思います。

障害が発生しているアプリケーション名: hsp3gp.exe 障害が発生しているモジュール名: hsp3gp.exe(ntdll.dll のときもある) 例外コード: 0xc0000005(0xc000041d もある)



Y_repeat

リンク

2021/8/27(Fri) 12:08:29|NO.93704

返信ありがとうございます→作者様

要はかぶらない名前の演算子を新しく作成すればいいんじゃないんすかね
例えば
&&& \& \&& $& $&& ANDAND \AND $AND l_AND(logicalのlです)
とか
ANDANDとかにすると変数名や#deffuncで定義してるのとかぶらないようにするため
switch等の時のように
しばらくチェックを付けて無効に出来るとか



しまくろねこ

リンク

2021/8/28(Sat) 06:14:52|NO.93713

HSP3.6b5
HSP3.6
で作成したexeがWindows Defenderで下記のようなウィルスとして誤検出されてしまいます。

Program:Win32/Wacapew.C!ml

なんとかならないでしょうか?



K-s

リンク

2021/8/28(Sat) 15:42:59|NO.93715

NO.93701 の件ですが onexit などを使って終了直前に oncmd 0 で割り込み停止するとエラーが出なくなりました



しまくろねこ

リンク

2021/8/28(Sat) 17:45:19|NO.93716

>HSP3.6b5
>HSP3.6
>で作成したexeがWindows Defenderで下記のようなウィルスとして誤検出されてしまいます。
>
>Program:Win32/Wacapew.C!ml
>
>なんとかならないでしょうか?

何故かウィルスとして誤検出が無くなりました。
なんでだろう・・・



Crystal

リンク

2021/8/29(Sun) 21:17:01|NO.93728

拡張機能でも搭載して欲しいのですが、XAMLに対応して欲しいです。
理由としては高度なUIを作ることができ、またC#でXAMLやUnityにも対応できるので
開発の幅が広がると思うのですが、対応するのも大変になるので、可能であれば搭載して欲しい
です。現在、もどきで作っていますが、限界があるので…



zezenana

リンク

2021/8/31(Tue) 08:21:37|NO.93731

HSP3.6をインストールして利用し始めたのですが、
HSP3.51で動作確認済みのスクリプトを利用して実行ファイルを作成すると
稀に異常な exeファイルが作成されます。
正常な exeファイルが作成される場合が多いので再現性は乏しいです。

HSP3.51ではこのような現象が1度も無かったので気になりました。

異常なケースとしては以下の組み合わせ(1と2、2と3など)が起こります。
見た目や挙動がわかりやすかったので気づきました。

1.#packopt iconでアイコンが変更されない(HSPアイコンのまま)
2.#packopt versionでバージョン情報が空欄となる
3.実行できず「Startup failed.」ダイアログ表示

exeファイルの作成は実行ファイル自動作成(ctrl+F9)で行っています。

スクリプトの問題も考えたのですが以下内容に絞っても
HSP3.6では異常な exeファイルが作成されました(再現性は同様に低いです)


#packopt runtime "hsprt" #packopt name "sample001" #packopt icon "sample001.ico" #packopt version "ver_sample001.txt" #packopt lang "1041" mes "sample" stop



zezenana

リンク

2021/9/11(Sat) 10:46:54|NO.93841

先月末にHSP3.6にて制作したexeファイルが
先ほどWindowsセキュリティにて以下のウィルスと誤検知されました。

Trojan:Win32/Wacatac.B!ml

前回質問したexe不具合の件や、一般配布の際にも不安があるので
暫定的に誤検知した経験のないHSP3.51やHSP3.6β5に戻しています。


現在の環境では以下のような経緯で立て続けにウィルスの誤検知があったので
最新版3.6だけは何とか誤検知の対策をして頂きたいです。

hsp36b3.zip---問題なし
hsp36b4.zip---hsp3dh.exeが誤検知:Trojan:Win32/Wacatac.B!ml
hsp36b5.zip---hsp3dh.exeが誤検知:Trojan:Win32/Skeeyah
hsp36b5a.zip---問題なし(対策版?)
hsp36rc1.zip---hsp3dh.exeが誤検知:Trojan:Win32/Zpevdo.B
hsp36rc2.zip---hsp3dh.exeが誤検知:Trojan:Win32/Zpevdo.B
hsp36.zip---問題なし。作成したexeにて誤検知あり?

※すべてWindows10のWindowsセキュリティにて確認


また誤検知の件ではしまくろねこさんも同様の報告をしていますが

>HSP3.6b5
>HSP3.6
>で作成したexeがWindows Defenderで下記のようなウィルスとして誤検出されてしまいます。
>
>Program:Win32/Wacapew.C!ml
>
>なんとかならないでしょうか?

この件は原因解明しているのでしょうか?



とあるプログラマ

リンク

2021/9/11(Sat) 13:18:06|NO.93842

このスレッドもだいぶ長くなって下までスクロールするのが大変になりましたし、3.6リリース版もでたということで新しいスレッドを立てるのはいかがでしょうか。



法貴優雅

リンク

2021/9/17(Fri) 20:42:28|NO.93900

私的にも、新スレッドの方がいいような気もしますが、見ていただけるかわからないので
こちらで、報告します。
HGIMG4および、HGIMG4DXにてmmloadがメモリリークしているようです。

#include "hgimg4.as" mmload "0.wav", 0, 1 mmplay 0 repeat stick k if (k&256) { mmstop 0 mmload "0.wav", 0, 1 mmplay 0 } await 1 loop

上記コードで、クリックしまくるとタスクマネージャでメモリ使用量が
増えつづけて、最終的にエラーになって落ちます。
また#includeをコメントアウトするだけで、メモリリークしなくなるため
HGIMG4および、HGIMG4DXでのmmloadだけがメモリリークするようです。



法貴優雅

リンク

2021/9/17(Fri) 20:45:16|NO.93901

あとWindowsのイベントビューアーにエラーログが出る件は、私の環境では
標準のサンプルを動かした時でも、出たり出なかったりするので、
現状エラーが発生する条件がわかっていません。



記事削除

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

NO.92295への返信

マスコット

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

名前

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

削除用パスワード

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

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