MAXScript メッシュ品質プリセットの変更が実際のオブジェクトに反映されません

MAXScript メッシュ品質プリセットの変更が実際のオブジェクトに反映されません

isidayas
Explorer Explorer
712件の閲覧回数
4件の返信
メッセージ1/5

MAXScript メッシュ品質プリセットの変更が実際のオブジェクトに反映されません

isidayas
Explorer
Explorer

以下コードを実行すると「メッシュ品質プリセット」が"細かい"に切り替わります。

ところが時々、実際のオブジェクトには変更が反映されないことがあります。
$.LowQualityVDS = off
$.MediumQualityVDS = off
$.HighQualityVDS = on

$.invalidate() -- オブジェクトの再描画を強制
redrawViews() -- 再描画も試みる

 

アプリもMAXScriptも初心者です。どこかに問題があるのか、他に試すべき手順があれば教えていただけると助かります。

よろしくお願いします。

0 件のいいね
解決済み
713件の閲覧回数
4件の返信
返信 (4)
メッセージ2/5

nagaimo
Advisor
Advisor

メッシュ品質プリセットということは、何らか外部から取り込んだデータの
ボディオブジェクトの"ビューポート表示設定"の所でしょうか?
>ところが時々、実際のオブジェクトには変更が反映されないことがあります。
ということは同じデータでも反映されるときと反映されないときとランダムとかそんな感じでしょうか?
それとも特定データのみ切り替わらないとかそんな感じでしょうか?
反映されないときは、ボディオブジェクトの"ビューポート表示設定">"メッシュ品質プリセット"の
ボタンのハイライトも全く変わらない感じでしょうか?
それともボタンのハイライトは変わるけどメッシュ表示の細かさが変わらない感じでしょうか?

 

ちょっとCADデータをインポートとかあまりしないのでボディオブジェクトを
扱ったことはないのですが、とりあえず適当なSATファイルをインポートして
試したところ、時々でなく全く変わりませんでした。
どうも試した範囲では
LowQualityVDS,MediumQualityVDS,HighQualityVDSはプリセットボタンのハイライトのみ変わって
本来その下の面近似角度とかのパラメータが変わるはずが全く変わっていなかったです。
というか手動でボディオブジェクトのプリセットを押した場合は
3つのトグル動作でそれに合わせて下のパラメータが変わるのですが
LowQualityVDS,MediumQualityVDS,HighQualityVDSのすべてをonにするとか
そんな動作も可能でしたので、もしかしたら単純にそのコードはプリセットボタンのon/off表示を
変えるだけで実際のメッシュ品質は変えないのかもしれないです。
FaceApproxAngleVDSとか実際のパラメータの方を変更するスクリプトで行かないとダメかもしれないです。

 

Body_Object: GeometryClass 

 

ヘルプファイルを見ると"チェックボタンの状態を取得/設定します"としかないので
LowQualityVDS,MediumQualityVDS,HighQualityVDS自体実際の細かさを変えるコードではないのが
仕様なのかもしれませんが、ちょっと数個のSATデータで試しただけですので、
もしかしたら、うまくいくデータもあるのかもしれません。
とりあえず下のパラメータを直接変更するコードを使ったほうが確実かもしれません。

メッセージ3/5

isidayas
Explorer
Explorer

お忙しいところ返信ありがとうございます。
私はプログラム作成者で、実際に使っている人に確認してまいりました。

 

> メッシュ品質プリセットということは、何らか外部から取り込んだデータの
> ボディオブジェクトの"ビューポート表示設定"の所でしょうか?
そうです。

 

> 同じデータでも反映されるときと反映されないときとランダムとかそんな感じでしょうか?
> それとも特定データのみ切り替わらないとかそんな感じでしょうか?
2024/9/18 にオブジェクトに反映されていないことに気付いたそうです。
それまでは反映されていたそうです。

 

3ds MAX のバージョンは2024。
2024/4/30 ごろに 3ds MAX のセキュリティパッチをあてて以降は何もしていないそうです。
Windows 11。(Windowsのセキュリティパッチをあてた日は今のところ調べていません。)

 

> 反映されないときは、ボディオブジェクトの"ビューポート表示設定">"メッシュ品質プリセット"の
> ボタンのハイライトも全く変わらない感じでしょうか?
> それともボタンのハイライトは変わるけどメッシュ表示の細かさが変わらない感じでしょうか?

ご指摘のボタンのハイライトは毎回きちんと変わります。(全部ONにしたり全部OFFにしたりもできる謎仕様ですが)

メッシュ表示の細かさは(オブジェクトに反映されず)変わりません。

結局手動で「中」に戻して「細かい」を押してオブジェクトには反映させています。

手動だと一括でできないので数が多いと大変時間がかかります。

 

> もしかしたら単純にそのコードはプリセットボタンのon/off表示を
> 変えるだけで実際のメッシュ品質は変えないのかもしれないです。
> FaceApproxAngleVDSとか実際のパラメータの方を変更するスクリプトで行かないとダメかもしれないです。
バグも疑っています。回避策などあれば良いのですが。

 

> とりあえず下のパラメータを直接変更するコードを使ったほうが確実かもしれません。
「下のパラメータ」が指しているのは何か教えてください。

 

よろしくお願いします。

0 件のいいね
メッセージ4/5

nagaimo
Advisor
Advisor
解決済み

すいません、分かりにくかったですね
ボディオブジェクトのメッシュ品質プリセットボタンの下のパラメータの所です
ボタンを押した感じメッシュ表示の"面近似角","面距離",カーブ表示の"近似角度"が
変わる様でしたのでそのパラメータを直接弄るスクリプトで変更するのが確実かもしれません。
スクリプトで言うと
FaceApproxAngleVDS
FaceChordHeightVDS
IsoAngleDS
の3つですね
ですので

$.LowQualityVDS = off
$.MediumQualityVDS = off
$.HighQualityVDS = on
$.FaceApproxAngleVDS = 10
$.FaceChordHeightVDS = 0.02
$.IsoAngleDS = 3

こんな感じになると思います
上三行はプリセットボタンのハイライトが変わるだけですので
無くても大丈夫かも

 

>3ds MAX のバージョンは2024。
>2024/4/30 ごろに 3ds MAX のセキュリティパッチをあてて以降は何もしていないそうです。

こちらで試した環境はMax2025(27.0.0.4919)2023(25.3.4.84)ですが

どちらの環境でもHighQualityVDSとかの上三行だけだとボタンのハイライトが変わるだけで

数値は変わらない感じでした

 

メッセージ5/5

isidayas
Explorer
Explorer

メッシュ品質プリセットを「細かい」にすることが
同じパネルの別のプロパティを変更することで実現できるとは思ってもいませんでした。

 

ご提案のプログラム3行を追加して試してもらったところ
手動で変更したのと同じ効果を実感してもらうことができました。
解決とさせていただきます。

 

半ばあきらめていたのですが本当に良かったです。
これでまた数時間分の時短ができるようになりました。
ありがとうございました!