2012年12月5日水曜日

起動時のスクリプト実行プロセス

3dsMaxをファイル指定無しで起動した場合、
スクリプトファイルがどのようなプロセスで評価・実行されているかを検証。

基本的にMaxScriptヘルプの「スタートアップ スクリプト」項目を検証した内容。
※基本的にプロジェクトフォルダは検索しない<C:\Users\*\Documents\3dsMax>



(1) load Macroscript

 <C:\Program Files\Autodesk\3ds Max 2011\UI\MacroScripts\>
 <[カスタマイズ]>[システム パスの設定]>[システム]>[Additional Macros]>指定フォルダ

 ・全サブディレクトリのファイルがロードされる(コンパイルは無し)
 ・フォルダ名を半角丸カッコ()でくくると無視される

(2) stdscripts

 <C:\Program Files\Autodesk\3ds Max 2011\stdplugs\stdscripts>
 
 ・[*.ms]が実行されグローバル変数として格納される
 ・全サブディレクトリのファイルも実行される
 ・フォルダ名を半角丸カッコ()でくくると無視される
 ・[startup.ms]というファイルは無視される

(3) サードパーティプラグインパス

 <[カスタマイズ]>[システム パスの設定]>[サードパーティプラグイン]>追加パス

 ・全サブディレクトリのファイルも実行される
 ・フォルダ名を半角丸カッコ()でくくると無視される
 ・[startup.ms]というファイルは無視される

(4) 3dsMax GUI構築進捗

 ・3ds Max シーンは作成されいない
 ・ビューポートは作成されていない
 ・シーン オブジェクトは作成できない
 ・UI 関連の作業は何もできない
 ・上記の操作関数を定義できるが、呼び出しはできない

(5) Macroscript評価

 ・キーボード/ツールバー/メニュー/クアッドメニューにアサインされたマクロは、この時点でコンパイルされる。

 ※この時点で3ds Max は基本シーンとユーザ インタフェースを作成します。
 ※この時点でコンパイルされないマクロは、初回実行時にコンパイルされていると思われる。

(6)スタートアップスクリプト

 <システムスクリプトフォルダ><\startup>
 <[カスタマイズ]>[システム パスの設定]>[システム]>[Additional Startup Scripts]>指定フォルダ

 ・全サブディレクトリのファイルも実行される
 ・フォルダ名を半角丸カッコ()でくくると無視される
  
 ※スタートアップ実行するかどうかは、[カスタマイズ]>[基本設定]>[MaxScript]>[スタートアップ]設定に依存 
 ※[Additional Startup Scripts]指定フォルダ内の<\startup>は実行されない

2012年12月4日火曜日

アクティブなグローバル変数を確認する

現在のセッションで有効なグローバル変数を出力

2012年12月3日月曜日

基点位置を変更する(最大/最小)

 バウンディングボックスの座標を元に基点位置を変更する(3dsMax標準と同じ?)

2012年11月2日金曜日

詳細レベル(LOD)を操作する

 詳細レベル(LOD)を操作する方法。
 直接スクリプトで値を変更出来ないので、この方法を使用する
 ※メッセージ番号は「sendMessage listbox」といった具合で調べればなんとなくわかる。

2012年10月31日水曜日

ネームスペースの除去

ネームスペースの除去方法
 オブジェクト名を変更するのではなく、ネームスペース自体を削除する。
 ネームスペース名が入れ子になっている場合を考慮して、
 名前配列をリバースソートして子供から処理していく。

 中身の移動と削除を行うネームスペースが、
 リファレンス時に生成されたものであればエラーが発生する。
 別途エラー処理を行うか、事前にリファレンスをインポートしておく。


(参考記事)

2012年10月26日金曜日

リファレンス操作関連(referenceQuery)

リファレンス操作関連のPythonコマンド referenceQuery

 リファレンスノードとかターゲットリファレンスとかの単語の意味が  正確に理解できていないので何となくのコメント。

2012年10月18日木曜日

INIファイル用関数で扱える文字数制限について

概要

MaxScript標準で用意されているINIファイルへのアクセス関数において、
書き込んだ文字列の取得制限について

結論

下記コードで検証したところ、8192byte以上は追加出来ても文字列として取得できなかった。(max2012x64調べ)

関連情報

getINISetting ではファイル名だけを指定するとセクション名が配列で、セクション名まで指定するとキー名が配列で取得可能。
この配列取得においても、一度に取得できる要素数は 395 が上限のよう。
※setINISetting による追加、セクション名とキー名を直接指定した値の取得は問題無く行える。

パス文字記述方法

パス文字記述方法について

2012年5月29日火曜日

オブジェクトの位置・回転合わせ

初めてのMayaスクリプティング。
リグ制作の延長で必要になりそうだったアラインツールを作ってみました。

最初に選択したオブジェクトの位置/回転を合わせるという感じです。
一応フリーズされたオブジェクト間のアラインに対応しているつもりです。
※かなり手探りで作っていますので間違っているかもしれません。。。