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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0410
アキアキノヒロロポストエフェクトを組み込むと、ドラッグでのカメラ移動ができない8解決


アキアキノヒロロ

リンク

2022/4/10(Sun) 10:04:21|NO.95941

ポストエフェクトを初めて利用してみました。
「HGIMG4プログラミングガイド / 37.ポストエフェクト」を参照しながら、
[sample/hgimg4/tamane1.hsp] にあれこれのポストエフェクトを組み込んで、
どうにか成功しました。
ところが、[tamane1.hsp] に元々ある、ドラッグでのカメラ移動が
できなくなってしまいました。
何故でしょうか。
また、これをどうやったら、可能に出来るのでしょうか。
よろしく、ご教示願います。



この記事に返信する


youdai

リンク

2022/4/10(Sun) 12:40:37|NO.95944

通常、ポストエフェクトをかけたからといって、key入力が効かなくなることはありません。
おそらく、ポストエフェクトをかけるタイミングが間違っているのではないかと思います。
こういうケースの質問の場合、ソースを実際に見てみないと分からないので、ソースを質問文に入れて「ここにポストエフェクトを入れたけど、動かないけどどうしたらいいか」というように投稿するといいと思います。



アキアキノヒロロ

リンク

2022/4/10(Sun) 13:19:31|NO.95946

そうですね、スクリプト載せます。
書き換えたスクリプトは、以下の通りです。
(■が、追加/コメントアウトetc.)

どのポストエフェクトも、この書き換えで、正常に機能していますが、
カメラは、カーソルキーでなら動くのに、ドラッグでの移動は出来ません。


#include "hgimg4.as" #include "mod_posteffect.as" ;■ ポストエフェクトモジュールを使用 gpreset post_reset POSTID_NONE ;■ ポストエフェクト初期化 post_select POSTID_MOSAIC ;■ ポストエフェクトIDを指定 setcls CLSMODE_SOLID, $404040 gpload id_model,"res/tamane" ; モデル読み込み setscale id_model, 0.01,0.01,0.01 gpfloor id_floor, 8,8, $00ffff ; 床ノードを追加 setpos GPOBJ_CAMERA, 0,3.5,5 ; カメラ位置を設定 gpaddanim id_model,"run",0,700 ; "run"クリップを設定 gpact id_model,"run" ; "run"クリップを再生 repeat stick key,15 if key&128 : end // redraw 0 ;■ 描画開始 post_drawstart ;■ ; タッチでカメラ位置を動かす if dragmd { ; ドラッグ中 getkey a,1 if a=1 { dx=0.05*(mousex-dragx)+cx dy=0.05*(mousey-dragy)+cy setpos GPOBJ_CAMERA, dx,dy,cz } else { dragmd=0 } } else { ; ドラッグなし getkey a,1 if a { dragx=mousex:dragy=mousey getpos GPOBJ_CAMERA, cx,cy,cz dragmd=1 } } gplookat GPOBJ_CAMERA, 0,14,0 ; カメラから指定した座標を見る ; カーソルキーでカメラ位置を動かす if key&1 : addpos GPOBJ_CAMERA, -0.2, 0 if key&4 : addpos GPOBJ_CAMERA, 0.2, 0 if key&8 : addpos GPOBJ_CAMERA, 0, 0 , 0.2 if key&2 : addpos GPOBJ_CAMERA, 0, 0 , -0.2 gplookat GPOBJ_CAMERA, 0,1.2,0 ; カメラから指定した座標を見る ;addang id_model,0,0.02 ; ノード回転 gpdraw ; シーンの描画 color 255,255,255 pos 8,8:mes "HGIMG4 sample" // redraw 1 ;■ 描画終了 post_drawend ;■ await 1000/60 ; 待ち時間 loop



zrs90(5さい)

リンク

2022/4/10(Sun) 14:12:01|NO.95947

なんの情報もない、部外者ですみません。

mod_posteffect.as って3.6だと
hsファイルがないので、mod_posteffect.as
を直接読まないといけないのですが
3.7β1だと、どうなってますか?

後、サンプルに mod_posteffect.as を使った
物が2つ収録されているのですが

light_test5eff.hsp なんですが、コメントには
マウス/タッチドラッグでカメラを動かすことができます
とありますが、なぜか、マウス/タッチドラッグの処理自体が
入ってない?のですが、何か関係があるのでしょうか?

質問だけして、申し訳ありません。



法貴優雅

リンク

2022/4/10(Sun) 16:11:30|NO.95948

モジュールの中身を見るとわかると思いますが
post_drawstartでgselして対象画面が切り替わっているため
mouseのxyが取得できてないのではないでしょうか?

ですので、gpdrawの上に
post_drawstartを置けばよいと思います。



アキアキノヒロロ

リンク

2022/4/10(Sun) 17:14:27|NO.95949

[mod_posteffect.as] の [hsファイル] というのは、
[mod_posteffect.hs] ということですか。
ならば、[3.7β1/hsphelp] にも、そのようなファイルはありませんでした。

サンプル [light_test5eff.hsp] に、「マウス/タッチドラッグ」の処理自体が入っていないのに、
コメントとして、それがあるのは、
サンプル [light_test2〜4.hsp] からの作り替え作業で消し忘れたものでしょう。
[light_test5eff.hsp] のカメラ移動は、「マウス/タッチドラッグ」ではなく、
自動回転移動(74〜78行目)させているのですから。
[light_test2〜4.hsp] 同様に、74〜78行目をコメントアウトして、
[*cammove] を代替追加すれば、動きます。

zrs90(5さい) さんのご質問から、カメラ移動を組み込む位置について、
注意しないといけないことに気付きました。
言い換えれば、youdai さんのご指摘の通り、
「ポストエフェクトをかけるタイミングが間違っている」
ということでした。

[post_drawstart] は、カメラ移動処理の後に持って来れば、
「マウス/タッチドラッグ」は、正常に機能しました。
ただ、「カーソルキーでカメラ位置を動かす」の処理は、
[post_drawstart] の前でも後でも大丈夫でした。
この違いは、「マウス/タッチドラッグ」の方は、画面に対するマウスの位置取得の処理があって、
ポストエフェクトでのバッファ処理使用以前に済ませておく必要がある、
ということだと、推測しました。

youdai さん、zrs90(5さい) さん、有難うございました。
解決と致します。



アキアキノヒロロ

リンク

2022/4/10(Sun) 17:26:53|NO.95950

法貴優雅 さん、行き違いで、レスが前後してしまい、すいませんでした。

「post_drawstartでgselして対象画面が切り替わっているため」ですね。

対象画面の切り替え、それかなとは、何となく思っていましたが、
[post_drawstart] の記述位置が、そのタイミングなんですね。

有難うございました。



アキアキノヒロロ

リンク

2022/4/10(Sun) 17:47:52|NO.95951

追記です。
このことから、今まで [redraw 0] の位置については、
メインループのはじめの方に置いておけばいい、
あいまいで、適当にそう思っていましたが、
[gpdraw]直前にするのが本来なのだ、
と考えた方がよさそうです。
これなら、「HGIMG4プログラミングガイド / 37.ポストエフェクト」の
> redraw 0→post_drawstart、redraw 1→post_drawend
でいいことになります。



zrs90(5さい)

リンク

2022/4/10(Sun) 19:12:44|NO.95953

...『無知』って恐ろしいですね。
hsファイルが無いのは、すぐ分かりましたが
(※他のモジュールとかで、たまにありましたので。)

自動回転自体が、カメラ移動だったとは...

アキアキノヒロロさん、他の皆様
ありがとうございました。



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