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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
1215
アキアキノヒロロ3Dモデルのノード名を直接取得する方法は?9未解決


アキアキノヒロロ

リンク

2022/12/15(Thu) 11:43:44|NO.97540

3Dモデルが持つ階層の個別のノードを特定するための、
階層の名前(ノード名)を直接取得する方法が分かりません。

[hgimg4] サンプル「tamane_tree.hsp」の
#include "mod_gputil.as"
sdim s1,256 gptree_get s1,id_model dialog s1
で、ダイアログで、ノード名を確認できますが、
直に取得する方法はないのでしょうか?
このダイアログ表示の文字列 [s1] から、
なんらかの方法で取り出すようにするとしても、
そのやり方が考え付きません。

『HGIMG4プログラミングガイド / 27.マテリアルの変更』の説明を読んでも、
ノード名を直接取得する方法がよく分かりません。
[gpnodeinfo] の [GPNODEINFO_NAME] を使ってもダメなのでしょうか?

ググっても、見つかりませんでした。



この記事に返信する


buhio

リンク

2023/1/7(Sat) 13:08:51|NO.97665

こんにちわ

split s1,"\n",results;スプリット
repeat stat
mes "配列("+cnt+")="+strtrim(results(cnt));トリム
loop


これでどうでしょうか。



buhio

リンク

2023/1/7(Sat) 14:59:10|NO.97666

追記

「mod_gputil.as」は、内部で[gpnodeinfo] の [GPNODEINFO_NAME]を再帰処理してs1を作っているだけなので、
直接取得しているのと同じと思われます。



zrs90(5さい)

リンク

2023/1/7(Sat) 15:00:29|NO.97667

ん...spirit 命令ってdish 系は命令制約で
使えないはず??間違いならすみません。

しまくろねこ さんのHPに、sprit 命令の
代替モジュールがあるので
ソレ使えば、buhio さんのソースで
良いなら、いけるかもしれません。

② gptree_get を記事検索か
サイト内検索した所
#95575 hashikemu さんの
改造モジュールにヒントが
ないでしょうか?

後の方法は、面倒ですが使用している
mod_gputl.as 自体を読んでみると
拾う方法が分かるかも。

後、ダイアログの変数 s1 から、どんな感じで
情報を取り出したいのか書いておくと
他の方々から、回答を得られやすいのでは?



buhio

リンク

2023/1/7(Sat) 17:34:13|NO.97669

おや、、、
split 当方では、hgimg4で動いているようです。
だめなら違う方法で。。。



zrs90(5さい)

リンク

2023/1/7(Sat) 20:12:25|NO.97670

失礼しました。今、3.7β4pのマニュアルを見直してます

split 命令の件ですが
support_cmds.txt を確認した所

HSPDish非互換コマンドで
Windows上のみ動作し、他のデバイスは無視されます
とありましたので、動作可?かも知れません。


ただ、hgimg4は、hsp3Dishの上位互換のはずなので
HSP3Dishプログラミングマニュアルには

25.既知の不具合について
・split 命令は現在正しく動作していません。
getstr命令などにより代用下さい

...とあった事と、history.txt にもdish系で
対応した話はありませんでした

モジュール無しで動作するならありがたいです



buhio

リンク

2023/1/7(Sat) 22:28:33|NO.97671

おやまぁ。。。知りませんでした。WINDOWSしか使ってないので。。
勉強になりました。
便利なのになぁ。。。🐖



zrs90(5さい)

リンク

2023/1/8(Sun) 05:32:18|NO.97674

Windows7 3.7β4p hgimg4 上で、split命令
確認して見ました

hgimg4 のサンプル、tamane_tree.hspに
buhio さんのスクリプトを追加した所
配列変数にタブ?がない状態で、変数s1 の内容
が取得されてました。申し訳ないです。
勉強させて頂いたのは私の方です。ありがとうございました。


...note系の命令で配列内容を記録して
適当なテキスト名(※英数字のみ)で一度セーブ
コレを元に、28行のnodename = "〜"を
書き換えながら動作確認...位しか私は
思いつきませんでした。

conbox 、listboxが標準で使えれば
メモリ上に置いた物から
noteget で、直接、nodename を取り出して
使う所なんですが...(※何か別の方法があるような...)

アキアキノヒロロ さんが前から仰っている通り
hgimg4 は、ツール系の動作には向いていない
、スマホでも動作させる関係上からか、こういった
物は難しい...と言うのを改めて思い知らされました。


●追記

ご存知かとは思いますが...
gpnodeinfo命令は、history.txt によると
3.7β4から、ノードのマテリアル情報を
取得するオプションを追加とあります。
なので一緒に、HDL、マニュアル等が追記されて
いると思います。

gpnodeinfo をHGIMG4プログラミングガイドで
表示(v)→ ページ内検索 した所、27.マテリアルの変更以外に
参考になるかは分かりませんが 、43.階層情報の取得
と言うのがありました。

gpnodeinfo 命令ですが、HDL側の方が、オプション値
に関しては、何個か追加で載ってる様で
ガイドの方は書き忘れ??かと



しまくろねこ(本物)

リンク

2023/1/8(Sun) 12:44:04|NO.97675

split命令はWindows上であればDishでも動きます。
Android上だとNGです。



buhio

リンク

2023/1/13(Fri) 01:52:19|NO.97698

さらに備忘のため追記します

gpnodeinfoは、ノード名でオブジェクトidを取得できますが、このidは整数ではなくポインタ?参照のようです。
したがって、ループ等でgpnodeinfoを呼び出すたびに戻り値が書き換えられるため、変数に保存して再利用できず、idを使う直前にgpnodeinfoで取得する必要があるようです。

理解が間違っていたらご指摘願いたいですが、当方ではidを変数に保存できませんでした。
何か方法があるのかな。。🐖



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