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


HSPTV!掲示板


未解決 解決 停止 削除要請

2026
0317
kinokawahgimg3のsetxinfoについて6未解決


kinokawa

リンク

2026/3/17(Tue) 03:13:07|NO.104873

NO.104768で投稿したスクリプトに関連する話なのですが

#include "hgimg3.as" chdir dir_exe+"/sample/hgimg3/" hgsetreq SYSREQ_MAXTEX,2048 hgsetreq SYSREQ_MAXMODEL,2048 hgsetreq SYSREQ_MAXOBJ,2048 hgini cammode CAM_MODE_NORMAL setdir HGOBJ_LIGHT,255,255,255 selcpos objset3 0.0, -150.0, 500.0 addxfile mdla, "tamane_s.x" regobj my_chr,mdla repeat 4 setxinfo my_chr, 0, $11ff0+cnt*4,0.0,0.0,0.0 loop repeat 4 setxinfo my_chr, 0, $21ff0+cnt*4,0.0,0.0 loop *main hgdraw ; 描画処理 hgsync 17 ; 時間待ち goto *main
上記スクリプトの repeat 4 の部分をrepeat 8にすると
表示されなくなってしまいます。
$12000以降 と $22000以降 に数値を設定するとダメっぽいのですが
なにか対策はありますでしょうか?
私の環境の問題もあるかもしれません。

windows11
Intel(R) Celeron(R) CPU G3900T @ 2.60GHz (2.59 GHz) RAM 4.00 GB



この記事に返信する


naya

リンク

2026/3/17(Tue) 16:21:01|NO.104875

指定するMatIDとIndexがオーバーしているのかもしれません。
少し実験してみましたがsetxinfoのp3(設定モード)は組み合わせずに別々に指定すると表示できました。

#include "hgimg3.as" chdir dir_exe+"/sample/hgimg3/" hgsetreq SYSREQ_MAXTEX,2048 hgsetreq SYSREQ_MAXMODEL,2048 hgsetreq SYSREQ_MAXOBJ,2048 hgini cammode CAM_MODE_NORMAL setdir HGOBJ_LIGHT,255,255,255 selcpos objset3 0.0, -150.0, 500.0 addxfile mdla, "tamane_s.x" regobj my_chr,mdla repeat 2000 setxinfo my_chr, 0, $1000+(cnt),0,0,0 ;setxinfo my_chr, 0, $2000+(cnt),rnd(4) setxinfo my_chr, 0, $10000+(cnt*4),0.0,0.0,0.0 setxinfo my_chr, 0, $20000+(cnt*4),0.0,0.0 loop *main hgdraw ; 描画処理 hgsync 17 ; 時間待ち goto *main
Indexの最大数を取得する方法は分かりませんでした。
あと、$1ff0に何か別の意図、用途があるのでしたらすみません(;



kinokawa

リンク

2026/3/17(Tue) 20:48:40|NO.104878

naya様 テストして頂いてありがとうございます

>Indexの最大数を取得する方法は分かりませんでした。
>あと、$1ff0に何か別の意図、用途があるのでしたらすみません(;

$1ff0については特に意味はなく
$2000を超えるとUVと頂点が設定できないので
少ないrepeat数という意味で作りました
tamane_s.x はたぶんそれ以上の頂点があるはず
自分で作ったXファイルのメッシュも
$2000を超えるとUVと頂点が設定できません
naya様のスクリプトで repeat 2049 を超えた場合です。



うし

リンク

2026/3/17(Tue) 21:07:28|NO.104879

HGIMG3のリフェレンスに、
>setxinfo命令は、ボーンを含むモデルが持つ個別の状態を変更するために使用することができます。
>アニメーションが設定されているノードは設定することができません。
>また、正しいノードIDを指定しないと表示が崩れることもあるので、
>十分に注意して使用してください。
とあるね。

tamane_s.xには、idlingみたいなアニメーションが設定されてるかも。
アニメーションのないmodelでやると、できるかも。



naya

リンク

2026/3/17(Tue) 22:33:53|NO.104880

setxinfoのヘルプより

$10000+Index 頂点座標( x,y,z )
$20000+Index UV座標( x,y )

色々実験中です。
ノードIDに対応した内部バッファのIndexのサイズが取得できれば問題は回避できそうです。

あと、モデルtamane_s.xも複数のノードに分かれているようですね。
もう少し調べてみます。



naya

リンク

2026/3/18(Wed) 02:56:33|NO.104881

Index最大値を取得する試みです。
tamane_s.xではimax値が15180個($3B4C)辺りを上下しています。
モデルのアニメーションを止めていても、現状では実行ウィンドウが落ちる場合があり不安定です。
本ケースではノードは無関係でした(すみません)。

#include "hgimg3.as" chdir dir_exe+"/sample/hgimg3/" hgsetreq SYSREQ_MAXTEX,2048 hgsetreq SYSREQ_MAXMODEL,2048 hgsetreq SYSREQ_MAXOBJ,2048 hgini cammode CAM_MODE_NORMAL setdir HGOBJ_LIGHT,255,255,255 selcpos objset3 0.0, -150.0, 500.0 addxfile mdla, "tamane_s.x" regobj my_chr, mdla ;アニメーション停止 objact my_chr, -1, 0 sdim lst, 36*20000 ;indexサイズの取得 imax=0 repeat ;await 5 getxinfo gets, my_chr, 0, $10000+cnt if (strmid(gets, 0, 26)=="0.000000,0.000000,0.000000") : break lst+=strmid(gets, 0, 26)+"\n" ;title ""+strlen(gets)+"_"+cnt+"_"+gets loop notesel lst imax=notemax title ""+imax ;notesave "xinfo.txt" ;stop repeat (imax-5)/4 setxinfo my_chr, 0, $10000+(cnt*4), 0.0, 0.0, 0.0 loop /* ;これで成功する事もありました repeat 8 setxinfo my_chr, 0, $12000+(cnt*4), 0.0, 0.0, 0.0 loop */ *main hgdraw ; 描画処理 hgsync 17 ; 時間待ち goto *main
ただし、こちらの方法では速度的に実用に耐えないと思われます。



kinokawa

リンク

2026/3/19(Thu) 23:47:19|NO.104883

うし様 naya様 コメントありがとうございます。

今のところUV値 座標値 共に$2000を超えると不安定っぽいので
使わない方向で考えてみます。検証してくださってありがとうございました。
もうしばらく解決のチェックはしないでおきます。



記事削除

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

NO.104873への返信

マスコット

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

名前

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

削除用パスワード

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

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

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