00010104/12/04 01:19:32ID:5lu9hJHF
MAXSCRIPTに関するQ&Aのためのスレッドです。
あらかじめ用意された複数のテクスチャ(解像度違い)があり、
選択しているオブジェクトのテクスチャをボタン一発(インターフェース上は、解像度の種類分)で
切り替えていくというスクリプトを作りたいと思っています。
またできれば、ディフューズレベル、スペキュラレベル...などで、選択できる分岐処理を実装できればと思っています。
既存のものであれば、ご紹介ください。また、参考になるテンプレートスクリプトがあれば、お願いします。
複数の子を選択なんてあったのか…今回はそれで十分でした。ありがとう。
レコーダーの件はわからないけど…
maxのマクロレコーダーは使い物にならないことがまれによくある
for i in objects do
みたいな書き方だと、メッシュ化してないプリミティブオブジェクト(普通のSphereとかBoxとか)が拾えないみたいです。
objects の代わりに $* だと拾えるのは分かったんだけど、
昔に別な書き方でもできた気が。
$* 以外の書き方って無かったでしたっけ?
>みたいな書き方だと、メッシュ化してないプリミティブオブジェクト(普通のSphereとかBoxとか)が拾えないみたいです。
あれ、拾える?
勘違いしたかも。ごめん。
>>251
一度くらいはリファレンスに目を通しましょう
objectsはObjectSet値
$*はPathName値
条件次第で同じ動作をするけど明確に異なる値です 異なる値かどうかとか、全く質問と関係ないですよね。
複数のスクリプトのバージョンまとめて更新したいんだけど、なんかいい方法ある?
今のとこ一つずつビューポートに投げるしか方法思い浮かばなくて。
事故解決しますた。
AppDataのほうにスクリプトあるとmacroscriptsに入れても更新されないのね。
基本設定の自動バックアップのチェックのオンオフをスクリプトで制御したいのですが、
どこにアクセスしたら良いでしょうか?
(
(
if (autosave.Enable = true) then autosave.Enable = false
else autosave.Enable = true
)
)
のようにして、有効の時に押せば無効になるようにしたのですが、
無効の時に押しても有効になりません…
書き方がおかしいのでしょうか?
×if (autosave.Enable = true)
○if (autosave.Enable == true)
Boolのトグルにif文はいらんよ
autosave.Enable = not autosave.Enable
レイヤーマネージャーのボタンのように、一回押すとオレンジになり
もう一回押すと戻るようなマクロスクリプトはどのように書いたらよいでしょうか?
オブジェクトプロパティの「フリーズをグレーで表示」をボタンにしたいのですが、
マクロレコーダーに出た$.showFrozenInGray = onだけでは反映されません。
何か足りないのがあるのでしょうか?
いけるはずだけど。
$は選択オブジェクトを表してるから、オブジェクトが選択されてないか、
もしくは複数選択されてるとか。
>>267
単体で試したら確かにいけました。
複数選択時はまた違うのでしょうか? これなら選択なし/単体/複数でも対応可能
selection.showFrozenInGray = true
$は現在の選択を表す「PathName値」
selectionは現在の選択を表す「ObjectSet値」
どちらも配列の一種で似てるけど微妙に違う
試しに何も選択せずにリスナーに
$
と
selection
を打って戻り値を確認するといいよ
どういう違いなのかなんとなく分かるはず
へ〜、selectionってプロパティの代入はループさせなくても複数一気にいけるんだ。
一個賢くなった。>>268じゃないけどdクス >>269
ありがとうございます!
いろいろ応用したいと思います 何度もすいません…。
下記のようにしてif文にしたところ、2010では動作しましたが2012では動作しないようです。
仕様が若干変わっていたりするのでしょうか?
(
for i in selection do
(
if (i.showFrozenInGray == on) then (i.showFrozenInGray = off)
else
(i.showFrozenInGray = on)
)
)
0273名無しさん@お腹いっぱい。2014/04/18(金) 17:07:03.83ID:9+12GPL9
大体そういうのって才能でしょ
スクリプトを勉強し始めた初心者です。
ヘルプにあるビューポートの再描画コールバックについて2012と2014で
結果が異なる為、ご存知の方がいましたらご教授願います。
fn redrawviews_p = print "Viewports Redrawn"
registerRedrawViewsCallback redrawviews_p
上記を評価してコールバックを停止するため
unregisterRedrawViewsCallback redrawviews_p
と入力しました。
2012は正常にコールバックが停止するのですが、2014は「OK」と返しては来るのですが
"Viewports Redrawn"がリスナーに表示され続けます(停止できない)
モヤモヤしてます・・・
今試してみたけど、うちは2014でも止まるよ。SP5。
>>275
なんだかよくわかりませんでしたが、max再起動したら正常に動作しました。
ありがとうございました。 >>276
登録したスクリプトがエラーを吐くと正常に登録解除できない
その状況を作らないために登録する関数は
実処理を行う関数を呼び出すだけの内容にしておくといいってリファレンスにも載ってるよ
さらにtry文で囲んでおくと安全
--登録
fn redrawviews_p = print "Viewports Redrawn"
fn redrawviews_handler = try( redrawviews_p() )catch()
registerRedrawViewsCallback redrawviews_handler
--解除
unregisterRedrawViewsCallback redrawviews_handler
バージョン毎の動作の違いはよく分からん >>277
教えて頂きありがとうございます。
仕事の暇を見つけてスクリプトの学習を行っているので進みがとても遅く
try文が何なのか未だ理解してません。
もっと勉強します。
プログラミングの予備知識ゼロの人がmaxscriptを一人前に出来るようになるまで
どれくらい時間が必要なんでしょうかね。本人次第の所はありますが。。。 0279本田2014/11/27(木) 00:59:22.99ID:5yIvS+Qc
>>279
ただのBoxで構成された木を作る動画
ボクセルツリーという言葉に期待した人は残念でした 0281名無しさん@お腹いっぱい。2016/10/28(金) 03:55:49.06ID:O8TzAf5R
ほしゅ
0283名無しさん@お腹いっぱい。2017/03/01(水) 20:12:49.31ID:xlEL985/
ほ
0284名無しさん@お腹いっぱい。2017/07/13(木) 22:14:39.30ID:LLhauofu
また活発になってほしい...
それかpython版作ろうよ
いい加減Qtに移行したいけどpythonで完結できないことが多くて
結局maxscriptが必要になるならmaxscript一本でいいやとなって移行できない
0286名無しさん@お腹いっぱい。2017/07/17(月) 02:06:52.52ID:qFBfMv+9
BonesProをmaxscriptから操作したいと思って試したのですが、上手くいかず困ってます。
http://doc.bonespro.com/MAXScript.html
【概要】
ボーン選択をmaxscriptで選択したい
<void> BonesPro.bone_select_name <name> <select>
<void>と <name> <select>のところが同様になっていると良いのかが良くわかっていません。
クラスとかパラメータとか調べてみたのですが、上記のメソッド関係が動いてくれません。
どうしたらいいのかアドバイス頂ける幸いです。
よろしくお願いいたします。 0287名無しさん@お腹いっぱい。2017/07/17(月) 02:07:45.66ID:qFBfMv+9
テストで探ってた際のログ
【実行】
showproperties $.modifiers[BonesProDemo]
【結果】
.use_inertia : boolean
.use_oscillation : boolean
.use_stack : boolean
.use_parabones : boolean
.use_dual_quaternion : boolean
.use_linked : boolean on off
.bone_sync : boolean
.mirror_plane : integer
.mirror_flip : boolean
.mirror_offset : float
.mirror_threshold : float
.soft_selection : boolean
.soft_radius : float
.use_edge_distance : boolean
.edge_distance : integer
false
【それを元にパラメータは操作できました】
$.modifiers[#BonesProDemo].use_stack = off
【実行】
$.modifiers[#BonesProDemo].category
$.modifiers[#BonesProDemo].classID
【結果】
#3d_io_Plugins
#(1623534534, 1946828630)
>>286
この手のドキュメントは
<戻り値>関数名 <引数名または型>
みたいに書かれてることが多い
型は説明文に書かれてる場合がある
戻り値のvoidってのは意味のある値は返さないって意味
ちょっと不親切なドキュメントだけど読めなくもない 0289名無しさん@お腹いっぱい。2017/07/18(火) 11:42:08.96ID:+y6a6aPr
0290名無しさん@お腹いっぱい。2017/07/18(火) 11:42:44.79ID:+y6a6aPr
>>288
以下はテスト時のログ
[実行]
$.modifiers[#BonesPro].BonesPro.num_bones()
----------------------------------------------------------
$.modifiers[#BonesPro].BonesPro.bone_select_all()
----------------------------------------------------------
BonesPro.bone_select_all()
----------------------------------------------------------
BonesPro.bone_select_all(1)
[結果]
-- 未知のプロパティ : "num_bones()" 場所は <MixinInterface:BonesPro>
----------------------------------------------------------
OK
----------------------------------------------------------
-- 引数のカウント エラー : bone_select_all には 1 が必要です、0 を受け取りました
----------------------------------------------------------
-- ランタイム エラー: オブジェクトにこのインタフェースが実装されていません : BonesPro >>289
MixinInterfaceってのは簡単に言えばA(BonesProインタフェース)に実装された関数num_bonesを別のB(モディファイア)でも共有して利用するための仕組みのこと
A
└num_bones
B(Aを継承)
プラグイン内部をこんな感じで実装すると
B.num_bones
こんな感じでmaxscriptではAとBの違いを意識せずに使える
手元にプラグインがないから推測になるけど
$.modifiers[#BonesPro].bone_select_all()
みたいに書けばいいはず 0292名無しさん@お腹いっぱい。2017/07/18(火) 15:49:51.54ID:+y6a6aPr
$.modifiers[#BonesPro].bone_select_all()でBone全選択行けました。
http://www.bonespro.com/download-order/からデモ版でやっていたので、それで出来なかったっぽいです。ライセンス版の方で動きました。ありがとうございます。
名前選択の方も、-- 変換できません : "Bone001" 入力: Boolean といったエラーメッセージをもとにtrue or false を入れてみたら動きました。
名前の指定で選択
$.modifiers[#BonesPro].BonesPro.bone_select_name "Bone001" true
名前の指定で選択解除
$.modifiers[#BonesPro].BonesPro.bone_select_name "Bone001" false
ありがとうございます。
この"Bone001"を配列に置き換えてfor文でループ処理して複数でも行けるようにしてみました。
A = #("Bone001","Bone002")
print A[1]
for i = 1 to 2 do (
$.modifiers[#BonesPro].BonesPro.bone_select_name A[i] true
)
ありがとうございます。大変勉強になりました。 0293名無しさん@お腹いっぱい。2017/07/18(火) 15:52:50.34ID:+y6a6aPr
>>291
MixinInterfaceの解説はヘルプ見てもチンプンカンプンだったので、ありがとうございます。
まだ何となくですが、分かった気がしますw
色々ありがとうございました。 0294名無しさん@お腹いっぱい。2017/12/30(土) 17:47:26.45ID:Hp7G0Fs4
誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
T7Y1UVEC4V
0296名無しさん@お腹いっぱい。2020/04/05(日) 21:50:59.57ID:SrCbsgAu