MAXSCRIPT_Vol1
1 :01 :04/12/04 01:19:32 ID:5lu9hJHF.net MAXSCRIPTに関するQ&Aのためのスレッドです。 あらかじめ用意された複数のテクスチャ(解像度違い)があり、 選択しているオブジェクトのテクスチャをボタン一発(インターフェース上は、解像度の種類分)で 切り替えていくというスクリプトを作りたいと思っています。 またできれば、ディフューズレベル、スペキュラレベル...などで、選択できる分岐処理を実装できればと思っています。 既存のものであれば、ご紹介ください。また、参考になるテンプレートスクリプトがあれば、お願いします。
249 :名無しさん@お腹いっぱい。 :2013/03/15(金) 22:04:04.43 ID:C2FvTETZ.net maxのマクロレコーダーは使い物にならないことがまれによくある
250 :名無しさん@お腹いっぱい。 :2013/03/19(火) 19:26:13.50 ID:X8YFO+Ym.net for i in objects do みたいな書き方だと、メッシュ化してないプリミティブオブジェクト(普通のSphereとかBoxとか)が拾えないみたいです。 objects の代わりに $* だと拾えるのは分かったんだけど、 昔に別な書き方でもできた気が。 $* 以外の書き方って無かったでしたっけ?
251 :名無しさん@お腹いっぱい。 :2013/03/19(火) 20:28:59.89 ID:X8YFO+Ym.net >みたいな書き方だと、メッシュ化してないプリミティブオブジェクト(普通のSphereとかBoxとか)が拾えないみたいです。 あれ、拾える? 勘違いしたかも。ごめん。
252 :名無しさん@お腹いっぱい。 :2013/03/20(水) 02:26:31.86 ID:aKXLPO5z.net >>251 一度くらいはリファレンスに目を通しましょう objectsはObjectSet値 $*はPathName値 条件次第で同じ動作をするけど明確に異なる値です
253 :名無しさん@お腹いっぱい。 :2013/03/20(水) 02:29:51.60 ID:eBhQm1NF.net 異なる値かどうかとか、全く質問と関係ないですよね。
254 :名無しさん@お腹いっぱい。 :2013/04/08(月) 01:53:06.75 ID:5QN07Uff.net 複数のスクリプトのバージョンまとめて更新したいんだけど、なんかいい方法ある? 今のとこ一つずつビューポートに投げるしか方法思い浮かばなくて。
255 :254 :2013/04/09(火) 02:40:30.40 ID:Rf+a1HI9.net 事故解決しますた。 AppDataのほうにスクリプトあるとmacroscriptsに入れても更新されないのね。
256 :名無しさん@お腹いっぱい。 :2013/09/20(金) 13:22:13.08 ID:J23xaoqY.net 基本設定の自動バックアップのチェックのオンオフをスクリプトで制御したいのですが、 どこにアクセスしたら良いでしょうか?
257 :名無しさん@お腹いっぱい。 :2013/09/20(金) 14:19:37.97 ID:seUHEVg3.net autosave.Enable = true
258 :名無しさん@お腹いっぱい。 :2013/09/20(金) 14:47:55.40 ID:J23xaoqY.net ありがとうございます!
259 :名無しさん@お腹いっぱい。 :2013/09/20(金) 15:12:16.09 ID:J23xaoqY.net ( ( if (autosave.Enable = true) then autosave.Enable = false else autosave.Enable = true ) ) のようにして、有効の時に押せば無効になるようにしたのですが、 無効の時に押しても有効になりません… 書き方がおかしいのでしょうか?
260 :名無しさん@お腹いっぱい。 :2013/09/20(金) 16:39:14.32 ID:seUHEVg3.net ×if (autosave.Enable = true) ○if (autosave.Enable == true)
261 :名無しさん@お腹いっぱい。 :2013/09/23(月) 17:48:48.98 ID:9DKAKKE/.net Boolのトグルにif文はいらんよ autosave.Enable = not autosave.Enable
262 :260 :2013/09/24(火) 01:00:49.87 ID:mn/UtfSO.net あ、そりゃそうだ。
263 :名無しさん@お腹いっぱい。 :2013/09/27(金) 18:56:32.77 ID:TYSRycw4.net レイヤーマネージャーのボタンのように、一回押すとオレンジになり もう一回押すと戻るようなマクロスクリプトはどのように書いたらよいでしょうか?
264 :名無しさん@お腹いっぱい。 :2013/09/29(日) 22:42:11.86 ID:Kn62Wyl+.net CheckButton
265 :264 :2013/09/30(月) 15:00:16.83 ID:oCM9TbaB.net ごめん、勘違いしてた ツールバーのボタンのことならisCheckedっていうイベントがあって その中で真偽値を返すことで押下状態を制御できるよ http://docs.autodesk.com/3DSMAX/16/JPN/MAXScript-Help/index.html?url=files/GUID-6E21C768-7256-4500-AB1F-B144F492F055.htm,topicNumber=d30e639208
266 :名無しさん@お腹いっぱい。 :2013/10/30(水) 11:56:10.28 ID:9LvRQ0hj.net オブジェクトプロパティの「フリーズをグレーで表示」をボタンにしたいのですが、 マクロレコーダーに出た$.showFrozenInGray = onだけでは反映されません。 何か足りないのがあるのでしょうか?
267 :名無しさん@お腹いっぱい。 :2013/10/30(水) 16:50:12.49 ID:S4wv1NoX.net いけるはずだけど。 $は選択オブジェクトを表してるから、オブジェクトが選択されてないか、 もしくは複数選択されてるとか。
268 :名無しさん@お腹いっぱい。 :2013/10/30(水) 18:14:49.54 ID:9LvRQ0hj.net >>267 単体で試したら確かにいけました。 複数選択時はまた違うのでしょうか?
269 :名無しさん@お腹いっぱい。 :2013/10/30(水) 21:43:19.30 ID:j90ZXGHA.net これなら選択なし/単体/複数でも対応可能 selection.showFrozenInGray = true $は現在の選択を表す「PathName値」 selectionは現在の選択を表す「ObjectSet値」 どちらも配列の一種で似てるけど微妙に違う 試しに何も選択せずにリスナーに $ と selection を打って戻り値を確認するといいよ どういう違いなのかなんとなく分かるはず
270 :名無しさん@お腹いっぱい。 :2013/10/31(木) 10:00:43.80 ID:/c+HcHYW.net へ〜、selectionってプロパティの代入はループさせなくても複数一気にいけるんだ。 一個賢くなった。>>268 じゃないけどdクス
271 :名無しさん@お腹いっぱい。 :2013/11/01(金) 16:01:01.61 ID:b4idwkku.net >>269 ありがとうございます! いろいろ応用したいと思います
272 :271 :2013/11/06(水) 12:25:25.06 ID:aqtHo5u9.net 何度もすいません…。 下記のようにしてif文にしたところ、2010では動作しましたが2012では動作しないようです。 仕様が若干変わっていたりするのでしょうか? ( for i in selection do ( if (i.showFrozenInGray == on) then (i.showFrozenInGray = off) else (i.showFrozenInGray = on) ) )
273 :名無しさん@お腹いっぱい。 :2014/04/18(金) 17:07:03.83 ID:9+12GPL9.net 大体そういうのって才能でしょ
274 :名無しさん@お腹いっぱい。 :2014/09/17(水) 12:58:38.10 ID:29SZFRZ4.net スクリプトを勉強し始めた初心者です。 ヘルプにあるビューポートの再描画コールバックについて2012と2014で 結果が異なる為、ご存知の方がいましたらご教授願います。 fn redrawviews_p = print "Viewports Redrawn" registerRedrawViewsCallback redrawviews_p 上記を評価してコールバックを停止するため unregisterRedrawViewsCallback redrawviews_p と入力しました。 2012は正常にコールバックが停止するのですが、2014は「OK」と返しては来るのですが "Viewports Redrawn"がリスナーに表示され続けます(停止できない) モヤモヤしてます・・・
275 :名無しさん@お腹いっぱい。 :2014/09/17(水) 14:21:03.60 ID:ZrjisZBc.net 今試してみたけど、うちは2014でも止まるよ。SP5。
276 :名無しさん@お腹いっぱい。 :2014/09/17(水) 20:16:44.80 ID:29SZFRZ4.net >>275 なんだかよくわかりませんでしたが、max再起動したら正常に動作しました。 ありがとうございました。
277 :名無しさん@お腹いっぱい。 :2014/09/19(金) 11:24:09.41 ID:B80uezAN.net >>276 登録したスクリプトがエラーを吐くと正常に登録解除できない その状況を作らないために登録する関数は 実処理を行う関数を呼び出すだけの内容にしておくといいってリファレンスにも載ってるよ さらにtry文で囲んでおくと安全 --登録 fn redrawviews_p = print "Viewports Redrawn" fn redrawviews_handler = try( redrawviews_p() )catch() registerRedrawViewsCallback redrawviews_handler --解除 unregisterRedrawViewsCallback redrawviews_handler バージョン毎の動作の違いはよく分からん
278 :名無しさん@お腹いっぱい。 :2014/09/19(金) 19:24:22.18 ID:8D8hfrU1.net >>277 教えて頂きありがとうございます。 仕事の暇を見つけてスクリプトの学習を行っているので進みがとても遅く try文が何なのか未だ理解してません。 もっと勉強します。 プログラミングの予備知識ゼロの人がmaxscriptを一人前に出来るようになるまで どれくらい時間が必要なんでしょうかね。本人次第の所はありますが。。。
279 :本田 :2014/11/27(木) 00:59:22.99 ID:5yIvS+Qc.net Introduction to MaxScript - Creating a Voxel Tree - Part 1 https://www.youtube.com/watch?v=ZoIY5lT6IV4 Introduction to MaxScript - Creating a Voxel Tree - Part 2 https://www.youtube.com/watch?v=NxI-ru5yAa0
280 :名無しさん@お腹いっぱい。 :2014/11/28(金) 06:49:47.18 ID:03A4HOy/.net >>279 ただのBoxで構成された木を作る動画 ボクセルツリーという言葉に期待した人は残念でした
281 :名無しさん@お腹いっぱい。 :2016/10/28(金) 03:55:49.06 ID:O8TzAf5R.net ほしゅ
282 :名無しさん@お腹いっぱい。 :2016/12/19(月) 16:52:53.71 ID:K6a+KmnL.net hoshu
283 :名無しさん@お腹いっぱい。 :2017/03/01(水) 20:12:49.31 ID:xlEL985/.net ほ
284 :名無しさん@お腹いっぱい。 :2017/07/13(木) 22:14:39.30 ID:LLhauofu.net また活発になってほしい... それかpython版作ろうよ
285 :名無しさん@お腹いっぱい。 :2017/07/14(金) 09:40:43.13 ID:bf4NRxNB.net いい加減Qtに移行したいけどpythonで完結できないことが多くて 結局maxscriptが必要になるならmaxscript一本でいいやとなって移行できない
286 :名無しさん@お腹いっぱい。 :2017/07/17(月) 02:06:52.52 ID:qFBfMv+9.net BonesProをmaxscriptから操作したいと思って試したのですが、上手くいかず困ってます。 http://doc.bonespro.com/MAXScript.html 【概要】 ボーン選択をmaxscriptで選択したい <void> BonesPro.bone_select_name <name> <select> <void>と <name> <select>のところが同様になっていると良いのかが良くわかっていません。 クラスとかパラメータとか調べてみたのですが、上記のメソッド関係が動いてくれません。 どうしたらいいのかアドバイス頂ける幸いです。 よろしくお願いいたします。
287 :名無しさん@お腹いっぱい。 :2017/07/17(月) 02:07:45.66 ID:qFBfMv+9.net テストで探ってた際のログ 【実行】 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)
288 :名無しさん@お腹いっぱい。 :2017/07/17(月) 15:50:16.01 ID:ytjApNC/.net >>286 この手のドキュメントは <戻り値>関数名 <引数名または型> みたいに書かれてることが多い 型は説明文に書かれてる場合がある 戻り値のvoidってのは意味のある値は返さないって意味 ちょっと不親切なドキュメントだけど読めなくもない
289 :名無しさん@お腹いっぱい。 :2017/07/18(火) 11:42:08.96 ID:+y6a6aPr.net >>288 解説ありがとうございます。何となくな理解だったので助かりました。 あれから色々試していくつか分かってきたのですが、根本的に合っているのか謎で手探り状態なのですが、ご報告します。 ・Nameはstringにしろとエラー文で言われました。maxscriptのヘルプ通り、文字列 string値でした。 ・Bone選択は描画を更新しないと反映されないようで、以下のような処理が必ず実行されます。http://doc.bonespro.com/MAXScript.html の関数説明文にそのようなことが書いてありました。 【必ずBone選択時に実行される処理】 $.modifiers[#BonesPro].use_oscillation = on max views redraw ・また、Boneの操作のためにはLayerにアクセスする必要がありそうでした。実行:$.modifiers[#BonesPro].BonesPro.num_bones()結果:場所は <MixinInterface:BonesPro>と表示されます。 http://help.autodesk.com/view/3DSMAX/2016/JPN/?guid=__files_GUID_78B79975_7BA5_4A03_8FEF_27E78D14B575_htm $.modifiers[#BonesPro].BonesPro.num_bones()のように単純にやるだけではダメで、Layerの方も考慮しないといけないぽく、立ち止まってます。
290 :名無しさん@お腹いっぱい。 :2017/07/18(火) 11:42:44.79 ID:+y6a6aPr.net >>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
291 :名無しさん@お腹いっぱい。 :2017/07/18(火) 14:23:18.04 ID:QbqZQpNF.net >>289 MixinInterfaceってのは簡単に言えばA(BonesProインタフェース)に実装された関数num_bonesを別のB(モディファイア)でも共有して利用するための仕組みのこと A └num_bones B(Aを継承) プラグイン内部をこんな感じで実装すると B.num_bones こんな感じでmaxscriptではAとBの違いを意識せずに使える 手元にプラグインがないから推測になるけど $.modifiers[#BonesPro].bone_select_all() みたいに書けばいいはず
292 :名無しさん@お腹いっぱい。 :2017/07/18(火) 15:49:51.54 ID:+y6a6aPr.net $.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 ) ありがとうございます。大変勉強になりました。
293 :名無しさん@お腹いっぱい。 :2017/07/18(火) 15:52:50.34 ID:+y6a6aPr.net >>291 MixinInterfaceの解説はヘルプ見てもチンプンカンプンだったので、ありがとうございます。 まだ何となくですが、分かった気がしますw 色々ありがとうございました。
294 :名無しさん@お腹いっぱい。 :2017/12/30(土) 17:47:26.45 ID:Hp7G0Fs4.net 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 T7Y1UVEC4V
295 :名無しさん@お腹いっぱい。 :2018/04/11(水) 16:00:31.15 ID:MPrHuaEE.net T7Y1UVEC4V
296 :名無しさん@お腹いっぱい。 :2020/04/05(日) 21:50:59.57 ID:SrCbsgAu.net はいはい、カンペですよー http://www.thecgschool.com/images/Tutorials/MAXScript_Cheat_Sheet.pdf
297 :名無しさん@お腹いっぱい。 :2020/12/29(火) 00:40:30.11 ID:pD7KEqv1.net 仕事納め保守
298 :名無しさん@お腹いっぱい。 :2023/09/24(日) 16:29:05.79 ID:7jcy0M4I.net 豪華な朝ご飯を食べた
107 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★
本文 スレッドタイトル 投稿者