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


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
1116
ze-naHGIMG4モデルのクローンでsetposがセットできない3未解決


ze-na

リンク

2024/11/16(Sat) 11:20:37|NO.102547

HGIMG4のクローンでsetposがセットできないことがあります。

調査したところgppbindにてGPPBIND_MESH(モデルを反映)してクローン元のモデルが
奈落落ちした状態(Y軸がマイナス)にてクローンすると発生します。

その場合のクローン先は元のモデルの座標のままとなります。ちなみに箱ノードの場合には
発生しません。

HGIMG4始めたばかりなので学習不足かもしれませんがこの現象は、正しい動作なのでしょうか?

またこれが仕様なのであれば、回避策としての正しいセット方法とかありますでしょうか?
(落ちないように元モデルをどこかに表示しておくとか?)

■確認用スクリプト(test11_duck)
res素材が必要なので、コピーするかhsp37beta\sample\hgimg4直下にて動作確認して下さい。

クリックにてモデルを投下します。
元モデルが奈落に落ちると投下位置が更新されなくなります。
箱ノードで試す場合には#define MODEL_DUCKをコメント化して下さい。

;ベーススクリプト:sample\hgimg4\test11.hsp #include "hgimg4.as" title "HGIMG4 Test" randomize:gpreset setcls CLSMODE_SOLID, $808080 setpos GPOBJ_CAMERA, 0,2,10 gplookat GPOBJ_CAMERA, 0,0.3,0 #define MODEL_DUCK ;箱ノードとアヒルの切り替え #ifndef MODEL_DUCK gptexmat id_texmat, "res/qbox.png" gpbox id_box, 1.5, -1, id_texmat setpos id_box, 0, 3, 0 gppbind id_box, 1, 0.5 #else gpload id_box,"res/duck" setpos id_box, 0, 3, 0 gppbind id_box, 1, 0.5,GPPBIND_MESH #endif gpfloor id_floor, 5,5, $404040 gppbind id_floor, 0 *main stick key,15:if key&128 : end if key&$110 { gpclone i, id_box x=0.02*rnd(20)-0.2:z=0.02*rnd(20)-0.2 setpos i, x, 3, z #ifndef MODEL_DUCK gppbind i, 1, 0.5 #else gppbind i, 1, 0.5,GPPBIND_MESH #endif } redraw 0:gpdraw color 255,255,255 pos 8,8:mes "HGIMG4 sample" getpos id_box,x,y,z:fall="地面":if y<-0.5:fall="**奈落**" mes strf("getpos %i,%3.1f,%3.1f,%3.1f[%s]",id_box,x,y,z,fall) getpos i,x,y,z mes strf("getpos %i,%3.1f,%3.1f,%3.1f",i,x,y,z) redraw 1:await 33 goto *main



この記事に返信する


buhio

リンク

2024/11/17(Sun) 15:36:08|NO.102553

う〜ん、、何でしょうねぇ〜

GPPBINDは時々不可解な動きをするような気がします。。
不具合報告しておくべきかもしれません。

対症療法ですが、クローン元の物理設定をやめる
//gppbind id_box, 1, 0.5,GPPBIND_MESH //こいつをコメントアウト
というのはどうでしょうか。

わたしは、普段クローン元モデルは画面外に配置して(非表示含む)、クローンしています。
何かとこの方法がトラブルが少ないので、、



こち

リンク

2024/11/17(Sun) 22:04:15|NO.102554

よこからすみません。

gppbindのヘルプでは
物理設定を行なったノードオブジェクトは、
それ以降自立して動作するようになり、
setposなどの座標変更は無効となります。

以上と書かれていますのでこの影響かと。
なのでクローンも追加時に元の現時点でのマイナス値が
反映されているため、追加されても画面外になってしまっていると
思うのですが。

あまり使っていない者ですが
ご参考になれば幸いです。



ze-na

リンク

2024/11/17(Sun) 23:18:03|NO.102555

>buhio さん

>GPPBINDは時々不可解な動きをするような気がします。。

正しい動きではなく不具合の可能性が高いのですね。

>対症療法ですが、クローン元の物理設定をやめる
>//gppbind id_box, 1, 0.5,GPPBIND_MESH //こいつをコメントアウト

この検証で、GPPBIND_MESHなしで箱ノードと同一動作になることは確認済みでしたが
さらに調査したところsetposが反映されないのではなく、setpos命令の不具合の可能性が
高いことがわかりました。

GPPBIND_MESHを行うとなぜかsetpos命令が相対位置でセットされるようです
(setpos命令の仕様では絶対位置)

なので、Y座標がマイナス(落下)すると位置が変化するだけではなくX座標もZ座標すべて
相対位置に変化していたようです。

箱とモデルのgpcloneによるsetpos検証動画
https://x.com/Zena35443105Na/status/1858141151511154707

クローンがsetpos位置(XYZ=-10,5,-10)になるはずが、モデルの場合のみ元モデルとの
相対位置(XYZ=0,5,0)になるようです。

-----
>こち さん

>gppbindのヘルプでは
>物理設定を行なったノードオブジェクトは、
>それ以降自立して動作するようになり、
>setposなどの座標変更は無効となります。

上記に書きましたが、setposが無効になるのではなくsetposが相対位置にセットされるような
動きをしていることがわかりました。

クローン直後は、setposをしており、物理設定(gppbind)はその後の処理なので
ヘルプ記述には該当していないはずです。
この点は箱クローンの公式サンプルと同じスクリプトです。

-----
とりあえずsetpos命令の不具合として報告してみることにします。
いちおうHGIMG4の仕様?なのかわからないので返答を待ってみます。

buhio さん、こち さん、コメントありがとうございました。



記事削除

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

NO.102547への返信

マスコット

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

名前

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

削除用パスワード

解決したら質問者本人がここをチェックしてください。

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

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