このコア インタフェースは、MAXScript にネットワーク レンダリングを公開します。
メソッド
<Interface>NetRender.GetManager()
MAXScript からネットワーク レンダリングにアクセスするには、マネージャ インスタンスを作成する必要があります。
構文は次のようになります。
Mixin インタフェース: netRender.getManager()
NetRender.GetManager
メソッドから返される
NetManager
Mixin インタフェースでは、MAXScript からネットワークレンダリングにアクセスできます。
プロパティ
次のプロパティは、情報を取得する場合、またはマネージャの特定のプロパティを設定する場合に使用できます。
マネージャに接続した場合、
true
を返します。読み込み専用です。
マネージャの状態を返します。
netstatus
を使用して、マネージャに関するさまざまな情報を収集することができます。詳細は、netstatus のトピックを参照してください。読み込み専用です。
QueueControl を取得しているときに、他のコンピュータが QueryControl を呼び出す場合、この関数は、コントロールを維持するか、または放棄するかを示します。
現在 QueueControl を持っている場合は
True
です。読み込み専用です。
キュー内のジョブの数を返します。読み込み専用です。
サーバの数を返します。読み込み専用です。
グループの数を返します。読み込み専用です。
マネージャの操作
メソッド
マネージャの問い合わせまたは制御を行うには、次のメソッドを使用できます。
<netManager>.setCallback <#progress | #message | #update | #managerdown | #queuecontrol | #querycontrol> <somefunction>
ネットワーク レンダリング中に発生する特定のイベント タイプに関して、マネージャと交信するために使用されます。イベント タイプごとに、定義する単一の関数を呼び出すことができます。 6 つの各コールバック タイプはイベント タイプの 1 つです。これらのイベントのうち任意のイベントについてコールバックをインストールするか、またはいずれのイベントについてもコールバックをインストールしないようにすることができます。
イベント タイプによって異なる引数の数をとるように関数を定義する必要があります。
2 つの引数が必要な場合、次のように定義します。
ジョブまたはサーバに関する情報を呼び出す場合など、ダウンロード中またはアップロード中に呼び出されます。
この場合、2 つの整数パラメータ Total と Current で定義された関数が必要です。Total は転送するデータの合計、Current は現時点での転送済みデータの量です。
例:
|
fn myprogress total current = -- 注: 2 つの整数パラメータです。
format "Progress: completed % out of %\n" current total
m.setcallback #progress myprogress -- #progress コールバックを設定して、myprogress() を使用します。
|
マネージャからユーザへのテキスト メッセージがある場合に呼び出されます。この場合、メッセージのテキストである 1 つの文字列パラメータで定義された関数が必要です。
例:
|
fn myNetMessage msg = -- 注: 1 つの文字列パラメータです。
format "Message: %\n" msg
m.setcallback #message mymessage -- #message コールバックを設定して、mymessage() を使用します。
|
ジョブの開始や完了など、変化があった場合に呼び出されます。GetUpdate を呼び出す場合やその他のリフレッシュを行う場合に通知します。パラメータなしで定義された関数が必要です。
例:
|
fn myUpdate =
job.GetUpdate() --使い方の例です。
m.setcallback #update myupdate -- #update コールバックを設定して、myupdate()を使用します。
|
#managerdown mymanagerdown
マネージャがシャットダウンされた場合に呼び出されます。パラメータなしで定義された関数が必要です。
例:
|
fn myManagerDown =
format "Manager is dead\n"
m.setcallback mymanagerdown -- #managerdown コールバックを設定して、mymanagerdown()を使用します。
|
#queuecontrol myqueuecontrol
キュー コントロールが変化した場合に呼び出されます。パラメータなしで定義された関数が必要です。
例:
|
fn myQueueControl =
format "Queue control has changed\n"
m.setcallback #QueueControl myQueueControl --「QueueControl」コールバックをインストールします。
|
#querycontrol myquerycontrol
キュー コントロールの所有中に、別のコンピュータがそれを必要とする場合に、QueueManager またはスクリプト関数 <netManager>.QueryControl() によって呼び出されます。コントロールを保持したい場合は、値 <netManager>.WantControl
を true に、それ以外の場合は false に設定します。関数は 1 つの引数(コントロールを要求するマシンの名前)をとる必要があります。詳細は、関数 <netManager>.QueueControl() を参照してください。
例:
|
fn myQueryControl clientName = ( --注: 1 つの文字列パラメータです。
format "The computer % wants queue control" clientName
m.wantControl = true -- これを使用してキュー コントロールを保持します。
m.wantControl = false -- これを使用してキュー コントロールを解放します。
)
m.setcallback #QueryControl myQueryControl -- 「QueueControl」コールバックをインストールします。
|
<netManager>.GetCallback <#progress | #message | #update | #managerdown | #queuecontrol | #querycontrol>
特定のコールバックに使用される関数の名前を返します。コールバックが割り当てられていない場合は、空の配列を返します。次のいずれかの引数が必要です。
#progress:
ジョブまたはサーバに関する情報を呼び出す場合など、ダウンロード中またはアップロード中に呼び出されます。
#message:
マネージャからユーザへのテキスト メッセージがある場合に呼び出されます。
#update:
ジョブの開始や完了など、変化があった場合に呼び出されます。GetUpdate を呼び出す場合やその他のリフレッシュを行う場合に通知します。
#managerdown:
マネージャがシャットダウンされた場合に呼び出されます。
#queuecontrol:
キュー コントロールが変化した場合に呼び出されます。
#querycontrol:
キュー コントロールがあり、別のコンピュータがそれを必要とする場合に呼び出されます。
<netManager>.connect #manual <manager name>|<manager IP address> [port:<integer>] platform:<enum>
or
<netManager>.connect #automatic <subnet mask> [port:<integer>] platform:<enum>
platform
enums: {
#32|#64|#default
}
platform
default value:
#default
マネージャとの接続を確立して、ジョブおよびサーバ状態へのアクセス、ジョブ設定の編集などを可能にします。
platform
のオプション: 引数は 32 ビットまたは 64 ビット プラットフォームで使用できます。既定値は 3ds Max が実行するコマンドをコピーするプラットフォームに基づきます。
マネージャ名またはマネージャの IP アドレスを文字列で指定してマネージャに手動で接続するか、またはサブネット マスクおよびオプションのポート番号を指定して自動的にマネージャに接続することができます。
例:
|
m.connect #manual "manager" -- 「manager」という名前のマネージャに接続します。
|
または
|
m.connect #manual "192.168.0.1" -- IP 192.168.0.1 のマネージャに接続します。
|
または
|
m.connect #automatic "255.255.255.0" port:1234
-- ポート 1234、サブネット 255.255.255.0 のマネージャに自動的に接続します。
|
どちらの場合も、マネージャが既定値以外のポート番号を使用している場合は、オプションのポート番号を指定することができます。接続に成功した場合、true が返されます。
|
<netManager>.Disconnect()
<netManager>.connect
で確立された接続を切断します。
マネージャをシャットダウンします。これを実行するには、キュー コントロールが必要です。
<netManager>.QueryControl <#wait | #dontwait>
#wait
または
#dontWait
が必要です。関数は次のように機能します。
キュー コントロールを取得しているユーザがいない場合、
#dontWait
は
true
を返し、
#wait
は
true
を返します。
キュー コントロールを取得しているユーザがいる場合、
#dontwait
は
false
を返し、
#wait
は現在のキュー コントローラを要求するプロンプトを表示します。
最後の場合、キュー コントローラは QueryControl コールバックを取得して、コントロールが必要かどうかを指定する必要があります。コントロールを保持したいことをユーザが指定している場合、関数は
false
を返します。コントロールを放棄する場合(または 10 秒間のタイムアウトが過ぎた場合)、
true
を返します。QueueManager は、必要なコントロールの指定を求めるプロンプトを表示します。MAXScript では、コールバックを取得して
wantControl
値を使用する必要があります。
注:前述の
<netManager>.setCallback
で、コールバック「
#queuecontrol myqueuecontrol
」を参照してください。
<netManager>.GetControl()
キューのコントロールを取得します。コントロールを取得した場合、
true
を返します。コントロールの取得後は、キュー コントロールが放棄されるまで、ジョブの発信、編集、再順序付け、およびサーバの削除を行うことができます。
注:現在のキュー コントローラでは、その
QueryControl
コールバックはトリガーされません。さらには、(ロックされたキューも取得している場合を除き)キュー コントロールを消失します。
QueryControl(true)
の呼び出しが可能かどうかを確認するため、
GetControl()
の呼び出しは、常に QueryControl(true) よりも前に呼び出す必要があります。
<netManager>.Lock <true | false>
キュー コントロールが取得されないように他のユーザをロックアウトします。他のユーザが
QueryControl
を呼び出した場合、自動的に
false
を返します。たとえば、
getcontrol()
を使用して MAXScript からキューのコントロールを取得したときに、他のユーザが QueueManager を読み込み専用で呼び出して、キュー コントロールを要求できる場合があります。ロックを
true
に設定すると、マネージャから切断するまで、またはロックを false にリセットするまで、他のユーザがコントロールを取得できなくなります。QueueManager は常に QueryControl を呼び出して、キューを取得できるかどうかを確認します。
<netManager>.SetUpdates <true | false>
この関数の使い方は、ブール値が渡され、既にキュー コントロールを取得している必要があるという点で
Lock()
関数に似ています。更新を
false
に設定すると、キューに対する変更を拒否するようにマネージャがフリーズします。これはコールバックには影響しません。ジョブ キューは更新されないため、受信する Update コールバックは少なくなります。この関数は、大量の変更を発信する場合、またはすべての変更を一度に有効にしたい場合に使用します。この場合、
setUpdates()
を
true
の値で呼び出して実行します。
<netManager>.checkoutputvisibility <path>
1 つの引数(文字列として定義されるパス名、つまり「c:¥¥temp」)をとります。パスが存在するかどうかを確認し、パスが存在しない場合は、"指定されたパスが見つかりません。(0x3)" というメッセージを返します。
注:
マネージャは、ローカル マシンではなく、マネージャ自体の相対パスとしてこの出力パスを確認します。したがって、「c:¥¥」を渡すときに、C ドライブを共有していない場合は OK が返されます(マネージャは自分の C ドライブを確認するため)。つまり、この関数を呼び出す場合は、「¥¥¥¥mymachine¥¥share¥¥」のようにネットワーク名を使用する必要があります。また、パラメータが
¥¥ で終わらない場合、ディレクトリではなくファイルを指定しているとみなされ、このファイルを作成できるかどうかが確認されます。ディレクトリにアクセス可能かどうかを確認する場合は、パスの最後に必ず を含めます。
ジョブの操作
さまざまな関数とプロパティを使用して、ジョブにアクセスすることができます。
GetJobs()
関数を使用すると、キュー内のすべてのジョブの配列を取得できます。ジョブをさまざまな方法でフィルタ処理し、フィルタに基づいて配列を返すことができます。
警告:
|
GetJobs()
または
GetServers()
を何度も呼び出さないでください。これらは非常に負担のかかるメソッドです。
|
<netManager>.getjobs [filter:#suspended | #complete | #waiting | #started | #error | #name | #handle | #index] [key:<name> | <handle> | <index>]
最後の 3 つのフィルタ タイプには、対応するキー引数が必要です。フィルタなしで使用した場合は、キュー内のすべてのジョブの配列が返されます。キューにジョブがない場合は、空の配列が返されます。
filter
:#suspended:
中断されているすべてのジョブの配列を返します。中断されているジョブがない場合は、空の配列
#()
を返します。
filter
:#complete:
完了したすべてのジョブの配列を返します。完了したジョブがない場合は、空の配列
#()
を返します。
filter
:#waiting:
レンダリングの待機中またはレンダリング中のジョブの配列を返します。待機中のジョブがない場合は、空の配列
#()
を返します。
filter
:#started:
実際に開始された、レンダリング中のジョブの配列を返します。
filter
:#complete:
完了したすべてのジョブの配列を返します。完了したジョブがない場合は、空の配列
#()
を返します。
filter
:#error:
エラーが発生したすべてのジョブの配列を返します。エラーが発生したジョブがない場合は、空の配列
#()
を返します。
filter
:#name:
名前をキー引数として渡し、指定された名前を持つすべてのジョブの配列を返します。その名前を持つジョブがない場合は、空の配列
#()
を返します。
filter
:#handle:
ハンドルをキー引数として渡し、そのハンドルを持つジョブを 1 つの要素を含む配列として返します。そのハンドルを持つジョブがない場合は、空の配列
#()
を返します。
filter
:#index:
整数をキー引数として渡し、キュー内のそのインデックスのジョブを 1 つの要素を含む配列として返します。そのインデックスにジョブが存在しない場合は、空の配列
#()
を返します。
例
|
manager.GetControl() --キュー コントロールを取得します。
manager.SetUpdates false --キューはフリーズされています。
jobs = manager.GetJobs()
manager.SetUpdates true --キューのフリーズは解除されます。
|
注:ジョブ情報のダウンロード中にキューが変更された場合、
GetJobs()
関数は間違った結果を返す可能性があります。
SetUpdates()
は、
GetJobs()
がエラーなく動作することを保証するために使用されます。
<netManager>.SetJobOrder <array>
キュー内のジョブの順序を変更します。配列には、
.getjobs()
からの配列に含まれるジョブと同じジョブが含まれている必要がありますが、ジョブの順序は変更することができます。また、キュー コントロールも取得する必要があります。ジョブの順序を設定する前に、
.getcontrol()
関数を使用してコントロールを取得してください。
<netManager>.NewJobfile:<filename>
新しいジョブ インスタンスを作成します。有効な max ファイル名(ハード ドライブまたはネットワーク上に存在する max ファイル)が必要です。ファイルが存在する場合はジョブ定義を返し、ファイルが見つからない場合は undefined を返します。
例
|
job.newJob file:"file.max" --ファイルを送信します。
job.newJob() --現在のシーンを送信します。
|
注:
ジョブにマップを含めることはできません。レンダリング要素データを発信されたジョブに使用することはできませんが、レンダリング要素は正しく処理されます。ファイルからジョブを発信する場合、これらの問題は再送信されますが、現在のシーンを発信する場合は再送信されません。
選択されたジョブに関する情報を更新します。この操作はネットワークの相互作用を伴うため、負担がかかることに注意してください。
キュー内のジョブを新しいジョブ設定で更新します。キュー コントロールが必要です。キュー コントロールを取得するには、
<netManager>.getcontrol()
を使用します。この操作はネットワークの相互作用を伴うため、負担がかかることに注意してください。
<job>.Submit() Servers:<array>
レンダリングする新しいジョブをキューに送信します。キュー コントロールが必要です。キュー コントロールを取得するには、
<netManager>.getcontrol()
を使用します。サーバが指定されていない場合、すべてのサーバがジョブに割り当てられます。
選択されたジョブを中断します。キュー コントロールが必要です。キュー コントロールを取得するには、
<netManager>.getcontrol()
を使用します。
中断されたジョブを中断された場所から続行します。キュー コントロールが必要です。キュー コントロールが必要です。キュー コントロールを取得するには、
<netManager>.getcontrol()
を使用します。
ジョブを最初から再開します。キュー コントロールが必要です。キュー コントロールを取得するには、
<netManager>.getcontrol()
を使用します。
ジョブをキューから削除します。キュー コントロールが必要です。キュー コントロールを取得するには、
<netManager>.getcontrol()
を使用します。
<job>.AssignServer <server>
選択されたサーバをジョブに割り当てます。キュー コントロールが必要です。キュー コントロールを取得するには、
<netManager>.getcontrol()
を使用します。
<job>.SuspendServer <server>
サーバを選択されたジョブから削除します。キュー コントロールが必要です。キュー コントロールを取得するには、
<netManager>.getcontrol()
を使用します。
<job>.GetServerInfo <integer>
ジョブに割り当てられた特定のサーバに関する情報を取得します。1 から始まるサーバ番号が必要です。
<job>.nonconcurrentDriver
(.MOV ファイルのように)フレームごとに出力をレンダリングできない場合、
true
を返します。読み込み専用です。
<job>.uninterruptibleDriver
レンダリングが割り込みまたは中断された後に再開できない場合、
true
を返します。
たとえば、.AVI ファイルの半分をレンダリングして、後で残りをレンダリングすることはできません。割り込みなしですべてをレンダリングする必要があります。読み込み専用です。
シーン内のカメラの配列を返します。カメラがシーン内にない場合は、空の配列
#()
が返されます。
<job>.GetLog() start:x numLines:y
ジョブのログをテキストで返します。'start' および 'numLines' パラメータはオプションです。パラメータを渡さない場合、ログ全体が返されます。start のみを渡す場合、指定した行から始まるすべての行が返されます。numLines
のみを渡す場合、start は 0 とみなされます。
<job>.GetServerStatusText <server>
ジョブに割り当てられたサーバの中で選択されたサーバからのメッセージを返します。サーバからのメッセージがない場合は、空の文字列が返されます。読み込み専用です。
ジョブに割り当てられたサーバの数を返します。読み込み専用です。
ジョブの状態を返します。状態は、
#complete、#suspended、#busy
、または
#waiting
のいずれかです。読み込み専用です。
この関数は、内部使用に限定した下位レベルの情報を提供します。
ジョブのハンドルを返します。読み込み専用です。
次の値の多くは読み込み/書き込みが可能ですが、これらの値に対する変更は、
<job>.SendUpdate()
を呼び出すまでマネージャに登録されません。
注: SendUpdate には、( <NetManager>getControlを使って取得した)キュー コントロールが必要です。
ジョブの名前を返します。ジョブ名は変更可能です。
ジョブのファイル サイズを返します。
ジョブの抽出ファイル サイズを返します。読み込み専用です。
ジョブが送信された時間を文字列で返します。
ジョブが開始された時間を文字列で返します。ジョブが開始されていない場合は、undefined が返されます。読み込み専用です。
ジョブが完了した時間を文字列で返します。ジョブが完了していない場合は、undefined が返されます。読み込み専用です。
通知がオンの場合、true を返します。変更可能です。
エラーが通知された場合、true を返します。変更可能です。
進行状況が通知された場合、true を返します。変更可能です。
進行状況の通知がオン場合、true を返します。変更可能です。
<job>.notifyFrameInterval
通知の間隔を返します。変更可能です。
レンダリングの開始フレームを返します。変更可能です。
レンダリングの終了フレームを返します。変更可能です。
レンダリングのフレーム間隔を返します。変更可能です。
レンダリングされたフレームの幅を返します。変更可能です。
レンダリングされたフレームの高さを返します。変更可能です。
ジョブに関して完了したフレームの数。読み込み専用です。
ジョブの優先順位を返します。
ビデオ ポストのシーケンスが存在する場合、
true
を返します。読み込み専用です。
[マップを含む]をオンにしてジョブが送信された場合、
true
を返します。変更可能です。
ジョブが送信されたときに[レンダリングされたフレームをスキップ]がオンに設定されていた場合、
true
を返します。変更可能です。
ジョブが送信されたときに[すべてのサーバを使用]がオンに設定されていた場合、
true
を返します。変更可能です。
ジョブが中断されている場合、
true
を返します。読み込み専用です。ジョブを中断するには、
<job>.suspend()
を使用します。
ジョブが終了している場合、
true
を返します。読み込み専用です。
[共有を無視]をオンにしてジョブが送信された場合、
true
を返します。変更可能です。
[出力テストをスキップ]をオンにしてジョブが送信された場合、
true
を返します。変更可能です。
連続しないフレームをレンダリングするジョブが送信された場合、
true
を返します。変更可能です。
ジョブが max ジョブの場合、
false
を返します。読み込み専用です。
ジョブ ファイルが圧縮されている場合、
false
を返します。読み込み専用です。
[ガンマ補正]をオンにしてジョブが送信された場合、
true
を返します。変更可能です。
入ってくるガンマ値の浮動小数点値を返します。変更可能です。
出て行くガンマ値の浮動小数点値を返します。変更可能です。
レンダリング ピクセル アスペクト比の浮動小数点値を返します。変更可能です。
レンダリング中のカメラ ビューの名前を文字列で返します。レンダリング中のビューがカメラ ビューではない場合(パースペクティブ、フロント、ユーザなどの場合)、空の文字列が返されます。変更可能です。変更するシーン内の有効なカメラのリストを取得するには、
<job>.getcameras()
関数を使用します。
レンダリング要素がアクティブな状態でジョブが送信された場合、
true
を返します。レンダリングする要素が存在しない場合でも true が返されます。変更可能です。
シーン内のオブジェクトの数を整数で返します。読み込み専用です。
シーン内の面の数を整数で返します。読み込み専用です。
シーン内のライトの数を整数で返します。読み込み専用です。
フレーム内のシーンの開始時間を返します。そのため、[分 : 秒 : ティック]を使用するようにシーンが設定されている場合でも、フレーム内の値が返されます。
フレーム内のシーンの終了時間を返します。
[ビデオ カラーをチェック]をオンにしてジョブが送信された場合、
true
を返します。変更可能です。
[両面レンダリング]をオンにしてジョブが送信された場合、
true
を返します。変更可能です。
<job>.renderHiddenObjects
[非表示オブジェクトをレンダリング]をオンにしてジョブが送信された場合、
true
を返します。変更可能です。
<job>.renderAtmosphericEffects
[環境効果をレンダリング]をオンにしてジョブが送信された場合、
true
を返します。変更可能です。
[スーパー ブラック]をオンにしてジョブが送信された場合、
true
を返します。変更可能です。
[N 番目の連続番号]がオンの場合、
true
を返します。このプロパティは[基本設定]ダイアログ ボックス/[レンダリング]タブからアクセスできます。
[ディザ 256]を有効にしてジョブが送信された場合、
true
を返します。変更可能です。
[ディザ フルカラー]を有効にしてジョブが送信された場合、
true
を返します。変更可能です。
[フィールドをレンダリング]を有効にしてジョブが送信された場合、
true
を返します。変更可能です。
<job>.renderDisplacements
ディスプレイスメントを有効にしてジョブが送信された場合、
true
を返します。変更可能です。
レンダリング効果を有効にしてジョブが送信された場合、
true
を返します。変更可能です。
ジョブの送信時に設定されていたフィールドの順序に応じて、
#odd
または
#even
を返します。変更可能です。
シーン内のレンダリング要素の数を返します。読み込み専用です。
ジョブを送信したユーザの名前を文字列で返します。MAXScript から
<job>.submit()
を使用してジョブが送信され、別のコンピュータの他のユーザによって max ファイルが最後に保存された場合、ユーザ名はそのユーザの名前になります。読み込み専用
ジョブを送信したコンピュータの名前を文字列で返します。MAXScript から
<job>.submit()
を使用してジョブが送信され、別のコンピュータの他のユーザによって max ファイルが最後に保存された場合、コンピュータ名は max ファイルが最後に保存されたコンピュータの名前になります。読み込み専用
すべてのジョブがマネージャに保存されている場合に、共有フォルダを文字列で返します。
レンダリングするフレームの文字列(つまり、「
1,3,5-12
」)を返します。変更可能です。
出力ファイルの名前およびパスを返します。変更可能です。
レンダリングされたフレームの出力ガンマを返します。
レンダリング時にデバイスが指定されている場合、デバイス名を返します。
レンダリング要素情報へのアクセス
<job>.GetRenderElement <index>
n 番目の要素に関する情報をデータ構造体で返します。<element> 構造体は、次のように定義されます。インデックス番号に要素がない場合は
undefined
が返されます。たとえば、
el = jobs[1].getrenderelement
1 の場合、キュー内の 1 つ目のジョブの 1 つ目の要素が取得されます。これにより、要素が使用可能かどうか、フィルタが使用可能かどうか、環境効果が適用されているかどうか、シャドウが適用されているかどうか、および要素名と要素の出力ファイル名を知ることができます。要素に有効なプロパティは次のとおりです。
要素が使用可能な場合、
true
を返します。状態を設定することもできます。
フィルタが使用可能な場合、
true
を返します。状態を設定することもできます。
<element>.atmosphereApplied
環境効果が適用されている場合、
true
を返します。読み込み専用です。
シャドウが適用されている場合、
true
を返します。読み込み専用です。
要素名を返します。要素名は変更可能です。
要素の出力ファイル名を返します。出力名とパスを変更できます。ただし、ファイルタイプを変更すると、実際のファイル タイプではなくイメージの拡張子が変更されます。たとえば、返された現在の出力が「
¥¥ej4sf¥frames¥foo_diffuse.tga
」の場合、拡張子を .bmp に変更すると、単純に .tga 拡張子の代わりに .bmp 拡張子が付いた tga ファイルになります。
<job>.SetRenderElement <index> <element>
選択されたレンダリング要素を、要素に割り当てられた新しい値に設定します。変更内容をジョブで有効にするには、
<job>.sendupdate()
を実行して、キュー内のジョブ自体を更新する必要があります。
フレーム情報へのアクセス
<job>.GetFrameInfo <integer>
n 番目のフレームに関する情報をデータ構造体で返します。インデックスの基数は 1 です。<frame> 構造体は次のように定義されます。
例
|
fr = getframeinfo 4 -- 4 番目のフレームに関する情報を返します。読み込み専用です。読み込み専用です。
|
フレームの状態を返します。状態は、
#waiting
、
#assigned
、または
#complete
のいずれかです。
実際のフレーム番号を返します。読み込み専用です。
サーバ ハンドルを返します。フレームがまだレンダリングされていない場合は、undefined が返されます。読み込み専用です。
フレームに割り当てられたサーバの名前を返します。フレームがまだ割り当てられていない場合は、undefined が返されます。読み込み専用です。
フレームをレンダリングするのに必要な時間を返します。フレームがまだ割り当てられていない場合は、undefined が返されます。読み込み専用です。
サーバの操作
さまざまな関数とプロパティを使用して、レンダリング サーバにアクセスすることができます。
getservers()
関数を使用すると、マネージャで管理されているすべてのサーバの配列を取得できます。サーバをさまざまな方法でフィルタ処理し、フィルタに基づいて配列を返すことができます。
警告:
|
GetJobs()
または
GetServers()
を何度も呼び出さないでください。これらは、非常に負担のかかるメソッドです。
|
<netManager>.GetServers [filter:#idle | #busy | #absent | #suspended | #error | #group | #job | #handle | #index] [key:<string> | <integer> | <job> ]
GetServers
() をフィルタなしで使用した場合は、マネージャで管理されているすべてのサーバの配列が返されます。サーバが存在しない場合は、空の配列が返されます。
filter:#idle: アイドル状態になっているすべてのサーバの配列を返します。
filter:#busy: ジョブのレンダリングでビジー状態になっているすべてのサーバの配列を返します。
filter:#absent: 休止状態になっているすべてのサーバ、つまり、その時点でマネージャに接続していても停止しているか、サーバのサービスまたはサーバ アプリケーションが実行されていないすべてのサーバの配列を返します。
filter:#suspended: 中断されているすべてのサーバの配列を返します。
filter:#error: エラーが発生したすべてのサーバの配列を返します。
filter:#group: グループ内のサーバの配列を返します。キー オプションを使用する必要があります。キーには、文字列のグループ名または(基数 1 の)整数のグループ番号を使用できます。グループが定義されていない場合は、空の配列が返されます。
filter:#job: 指定されたジョブに割り当てられたサーバの配列を返します。キー オプションを使用する必要があります。キーはジョブ定義でなければなりません。
filter:#handle: 指定されたハンドルを持つサーバを(1 つの項目を含む配列で)返します。キー オプションを使用する必要があります。キーはサーバ ハンドルでなければなりません。
filter:#index: サーバ リストの指定されたインデックスのサーバを(1 つの項目を含む配列で)返します。キー オプションを使用する必要があります。キーは整数(インデックス)でなければなりません。
サーバの状態の最新情報を取得します。正常に終了した場合、OK を返します。
サーバを新しい設定で更新します。キュー コントロールが必要です。
サーバをマネージャから削除します。キュー コントロールが必要です。
<server>.ResetPerformance()
パフォーマンス メトリックを 0.0 にリセットします。キュー コントロールを取得し、
<server>.sendupdate()
を実行してサーバを更新する必要があります。
Netstatus
サーバのハンドルを返します。読み込み専用です。
サーバの状態(#idle、#absent、#busy)を返します。
サーバの名前を返します。読み込み専用です。
サーバによってレンダリングされたフレームの総数を返します。読み込み専用です。
サーバの合計稼働時間を返します。戻り値は時間単位です。
サーバのパフォーマンス インデックスを返します。読み込み専用です。
<server>.AttendedPriority
ユーザがログ インする際のサーバの優先順位を整数で返します。
0: 優先順位上位
1: 優先順位下位
2: アイドル状態
変更可能です。
<server>.UnattendedPriority
システムをログ アウトする際のサーバの優先順位レベルを整数で返します。
0: 優先順位上位
1: 優先順位下位
2: アイドル状態
これは、
serversvc
を実行中で、ユーザがシステムにログインしていない場合にのみ有効です。
serversvc
を実行中で、ユーザがシステムにログインしている場合は、
attendedpriority
の値が有効になります。変更可能です。
7 つの bitarray の配列を返します。各 bitarray は曜日、各ビットは時間、ビット配列内の各ビットはサーバがその時間に利用可能なことを意味します。
#{1, 3..5, 15..24}
のビット配列は、サーバが深夜の 12 時から午前 1 時まで、午前 3 時から 5 時まで、午後 3 時から深夜の 12 時まで利用可能なことを意味します。
サーバで処理されているジョブのハンドルを返します。そのサーバで処理されているジョブがない場合は、0 が返されます。
サーバで処理されているジョブのフレーム インデックスを返します。
<server>.jobFrameTimeStarted
レンダリングされるフレームが開始された時間を返します。
グループの操作
<netManager>.SizeofGroup <index>
n 番目のグループのサーバの数を返します。
<netManager>.GetGroupName<index>
n 番目のグループの名前を返します。
<netManager>.CreateGroup <array> <string>
サーバの名前付きグループを作成します。これは、2 つの引数をとります。サーバの配列とグループ名を定義する文字列です。
<netManager>.DeleteGroup <string>
名前付きグループを削除します。文字列を引数としてとります。
Netstatus
マネージャとサーバの両方に netstatus プロパティがあります。すべてのプロパティは、読み込み専用です。
<system>.SpaceOnDisk <index>
指定されたディスクの容量を MB 単位で返します。インデックスの基数は 1 です。ディスク 1 および 2 は、それぞれ a: および b: ドライブです。
注:
このプロパティは現在、特定のディスク(
.workdisk
を使って指定する作業ディスク)に対してだけ、正しい結果を返します。実際には、作業ディスク以外のディスクも渡す必要があります。
NetStatus オブジェクトでは、UNIX および Linux との互換性を維持するために、常に 1 つのディスク(作業ディスク)のみをレポートします。このため、
NetStatus.SpaceOnDisk()
値は実際には正しくありませんが、作業ディスクの空き容量は判別できます。ほとんどの場合、この情報を取得するために使用します。
<system>.numDroppedPackets
ドロップされたパケットの数を返します。
無効なパケットの数を返します。
TCP 要求の数を返します。
UDP パケットの数を返します。
システムが開始された時間を返します。
システムのメモリの量を返します。
システム マシンのプロセッサの数を返します。
コンピュータにログ インするユーザのログイン名、またはサービスで使用されるログイン名を返します。
コンピュータの名前を返します。
max がセットアップされているディスクを返します。
注:
現在は正しく機能していません。常に同じ値を返します。
ディスクの存在を bitarray で返します(1=A、2=B、3=C など)。
注:
現在は機能していません。
NetStatus オブジェクトでは、UNIX および Linux との互換性を維持するために、常に 1 つのディスク(作業ディスク)のみをレポートします。このため、
NetStatus.Disks()
値は実際には正しくありませんが、作業ディスクの空き容量は判別できます。ほとんどの場合、この情報を取得するために使用します。
システムのネットワーク カードの MAC アドレスを返します。コンピュータがネットワーク サーバの場合、これはサーバのハンドルになります。
Backburner 技術が導入されたため、以下のプロパティは 3ds Max 5 以降ではサポートされていません。
3ds Max 4 では、整数を返します。1 は Windows 95、2 は Windows NT を示します。
3ds Max 4では、整数を返します。platformID が Windows NT を示す場合、ここで 5 以上の値は Windows 2000 を示します。
3ds Max 4では、整数を返します。Windows 98 は、0 (Windows 95)より大きなマイナー ビルドで示されます。
3ds Max 4 ではビルド番号を返します。これは Windows NT および 2000 にのみ適用されます。Windows 95、98、または ME ではサポートされていません。
3ds Max 4 では、OS のサービス パック番号を文字列で返します。
3ds Max 4 では、システムの一時ディレクトリを返します。
例:
|
-- 接続の確立 --
m = netrender.getmanager() --NetManager インスタンスを取得します。
--このセッションを開始します。
m.connect #manual "nimbus"
-- OR m.connect #manual "nimbus" port:1234 -ポート番号を指定します。
|
-- キュー コントロール -- --
--GetControl() を使用して QueueControl を取得します。
--コントロールを譲渡することはできませんが、wantControl==false の場合、
--コントロールは、コントロールを要求する次のクライアントに
--解放されます。
if ( m.QueryControl #wait ) do --アクセス権がある場合にのみコントロールを取得します。
m.getcontrol() --キュー コントロールを取得します。
m.wantControl=true --他のクライアントが QueryControl() を実行すると、false が返されます。
m.Lock true --これにより、他のクライアントはキュー コントロールをまったく取得できなくなります。
m.Lock false --これで他のクライアントはコントロールを取得できます。
|
-- ジョブの発信 --
job = m.newjob file:"c:\\share\\test.max"
job.suspended = true --中断されているジョブを送信できます。
job.state --未送信です。
job.includeMaps = true --[マップを含む]をオンにします。
srv_list = m.getservers() --サーバ リストを取得してジョブに割り当てます。
job.submit servers:srv_list --ジョブに使用するサーバを指定します。
-- job.submit() --すべてのサーバをジョブに使用します。
|
-- ジョブおよびサーバ オブジェクトの取得 --
m.SetUpdates false --キューをロックして、情報のダウンロード中に変更されないようにします。 while you download info
j = m.getjobs filter:#suspended --NetJob オブジェクトの配列。フィルタはオプションです。
s = m.getservers filter:#idle --NetServer オブジェクトの配列。フィルタはオプションです。
--他のフィルタについては、以下を参照してください。さまざまなフィルタを使用できます。
m.SetUpdates true --キューのロックを必ず解除してください。
|
-- グループの操作 --
m.creategroup s "myGroup" --NetServer と名前の配列を取得します。
num_groups = m.numGroups --グループ総数です。
size_group1 = m.SizeofGroup 1 --最初のグループのサーバの数です。
g = m.getservers filter:#group key:1 --グループ 1 のサーバの配列です。
g = m.getservers filter:#group key:"myGroup" --グループ「myGroup」のサーバの配列です。
g_name = m.GetGroupName 1 --最初のグループの名前です。
m.deletegroup g_name --グループを削除します。
|
-- ジョブの操作 --
job = j[1] --リストからジョブを取得します。
jHandle = job.handle --ジョブの IDです。
p = job.priority --ジョブの優先順位です。
if job.nonSeqFrames == True then frames = job.frames --「1,3,5-12」フレーム リストのいずれか。
else frames = (job.fromFrame as string) + "-" + (job.toFrame as string) -- 0 および 100 が開始/終了フレームの場合、フレームは「0-100」です。
cameraArray = job.GetCameras() --カメラ名の配列です。
l = job.GetLog --ログ全体をテキストとして
l = job.GetLog start:4 numLines:2 --ログの 4 番目と 5 番目のエントリを取得します。
statText = job.GetServerStatusText s[1] --このジョブに関するサーバについてのテキスト。
num_workers = job.numServers --このジョブで使用するサーバの数です。
job.frameOutputName = "d:\\blah.bmp" --出力名を変更します。
isDevice = job.frameOutputDevice --デバイスへの出力の場合は true、それ以外の場合は false。
share = job.managerShare --このジョブに使用するマネージャの共有フォルダです。
job.filesize --このジョブに使用する MAZ ファイルのサイズです。
job.filesizeextracted --このジョブに使用する MAZ ファイルの抽出サイズです。
|
-- サーバの操作 --
srv = s[1] --リストからサーバを取得します。
sHandle = srv.Handle --サーバの IDです。
sName = srv.name --サーバのマシン名。
speed = srv.performance --サーバのパフォーマンス インデックス。
srv.ResetPerformance() --インデックスをリセットします。
timeUsed = srv.totalTime --レンダリングの総所要時間です。
sjHandle = srv.jobHandle --サーバの現在のジョブのハンドル。ハンドルがない場合は 0。 current job, 0 if none
sjFrameIndex = srv.jobFrameIndex --サーバでレンダリングされているフレームのインデックスです。
|
--実際の例 レンダリング中のフレームに関する情報を取得します。
sjHandle = srv.jobHandle
sjIndex = srv.jobFrameIndex
sJobs = m.getJobs filter:job key:sjHandle --1 つのエントリを含む配列です。
frameInfo = (sJobs[1].getFrameInfo sjIndex) --現在のフレームに関する情報を取得します。
frameTime = frameInfo.elapsedTime
|
-- マネージャからの更新 --
--ジョブとサーバは、GetUpdate および SendUpdate 関数を使用した
-- マネージャとの同期をサポートしています。
job.status --ビジーです。
job.Suspend()
job.status --ビジーのままです(ステータス値は変わりません)。
job.GetUpdate() --最新の情報をダウンロードします。
job.status --中断状態に変わりました。
s[1].GetUpdate() --サーバにも Get/SendUpdate があります。
|
-- コールバック --
-- コールバックは、マネージャからのメッセージの受信に使用されます。
-- これらは定義可能な関数で、マネージャからのメッセージがある場合に
-- 呼び出されます。
-- 6 種類のコールバックがあります。
-- 注: これらの関数に任意の名前を付けることができますが、正しいパラメータを使用する必要があります。
--NETPROGRESS コールバック; ジョブまたはサーバに関する情報を呼び出す場合など、
-- ダウンロード中またはアップロード中に呼び出されます。
fn myNetProgress total current = --注: 2 つの整数パラメータです。
format "Progress: completed % out of %\n" current total
--NETMESSAGE コールバック; マネージャからユーザへのテキスト メッセージがある場合に呼び出されます。
fn myNetMessage msg = --注: 1 つの文字列パラメータです。
format "Message: %\n" msg
--UPDATE コールバック; ジョブの開始や完了など、変化があった場合に呼び出されます。
-- GetUpdate を呼び出す場合やその他のリフレッシュを行う場合に通知します。
fn myUpdate =
job.GetUpdate() --使い方の例です。
--MANAGERDOWN コールバック; マネージャがシャットダウンされた場合に呼び出されます。
fn myManagerDown =
format "Manager is dead\n"
--QUEUECONTROL コールバック; キュー コントロールが変化した場合に呼び出されます。
fn myQueueControl =
format "Queue control has changed\n"
--QUERYCONTROL コールバック; キュー コントロールがあり、別のコンピュータがそれを必要とする場合に呼び出されます。
fn myQueryControl clientName = ( --注: 1 つの文字列パラメータ
format "The computer % wants queue control" clientName
m.wantControl = true -- これを使用してキュー コントロールを保持します。
m.wantControl = false -- これを使用してキュー コントロールを解放します。
)
--コールバックのインストール; 関数を定義した後で、次のように
-- マネージャに設定する必要があります。
--注: インストールできるコールバックは、1 つのタイプにつき 1 つのみです(2 つの「Update」コールバックをインストールすることはできません)。
m.setcallback #Progress myNetProgress --「Progress」コールバックをインストールします。
m.setcallback #Message myNetMessage --「Message」コールバックをインストールします。
m.setcallback #Update myUpdate --「Update」コールバックをインストールします。
m.setcallback #ManagerDown myManagerDown --「ManagerDown」コールバックをインストールします。
m.setcallback #QueueControl myQueueControl --「QueueControl」コールバックをインストールします。
m.setcallback #QueryControl myQueryControl --「QueueControl」コールバックをインストールします。
|
-- NETSTATUS オブジェクト --
--ネットワーク上のコンピュータに関する読み込み専用の情報。
stat = s[1].netStatus --サーバ 1 に関するネットワーク情報を取得します。
stat.boottime --クエリーを作成します。
stat.Disks --
d = stat.workDisk --ネットワーク レンダリングに使用するディスクです。
stat.SpaceOnDisk d --作業ディスクの空き容量(MB)です。
stat.memorySize --コンピュータのメモリ サイズ(バイト(1 MB = 1048576 バイト)単位)。
s[1].GetUpdate() --netStatus オブジェクトをリフレッシュします。
stat = m.netStatus --マネージャにも NetStatus があります。
--NOTE: NetStatus をもう一度呼び出して変更を確認する必要があります。
--マシンのオペレーティング システムを出力するには...
--Windows 95 の platformID は 1、Windows NT の platformID は 2 です。
--platformID が Windows NT の場合、Windows 2000 は 5 以上の majorBuild で示されます。
--platformID が Windows 95 の場合、Windows 98 は、0 より大きな minorBuild で示されます。
--また、ビルド番号と CSDVersion 文字列は Windows 95/98 ではサポートされていません。
format "Windows %.%, Build %, %\n" \
stat.majorVersion stat.minorVersion stat.buildNumber stat.CSDVersion
|
-- JOBFRAME オブジェクト --
num_frames = job.numFrames()
frame = job.getFrameInfo 1 --最初のフレームに関する情報を取得します。
elapsed_time = frame.ElapsedTime --フレームのレンダリングに費やした時間。
num_rendElems = job.numRenderElements() --レンダリング要素の数です。
if num_rendElems>0 do(
rendElem = job.GetRenderElement 1 --要素のインデックスを渡します。
rendElem.enabled = false --レンダリング要素をオフにします。
job.SetRenderElement 1 rendElem --新しい変更内容でジョブを更新します。
job.SendUpdate() --変更内容をアップロードします。
)
|
-- JOBSERVER オブジェクト --
--特定のジョブに関するサーバの読み込み専用の情報です。
j_num_servers = j[1].numServers --ジョブで使用するサーバの数です。
js = j[1].GetServerInfo 1 --ジョブの最初のサーバに関する情報です。
sh = js.serverHandle --サーバのハンドルです。
sn = js.serverName --サーバの名前です。
isWorker = js.active --このサーバがこのジョブに関与するかどうか
js_state = js.state --サーバがジョブを処理中かどうかエラーがあるかどうかなど。
--いくつかの状態を出力します。
format "rendering frame %, completed %, total time % hours\n" \
js.currentFrame js.numFramesComplete js.elapsedTime
--このサーバに関する詳細情報を取得するには...
jSrv = m.GetServers filter:#handle key:sh --実際のサーバ オブジェクトを取得します。
statText = j[1].GetServerStatusText jSrv[1] --このジョブに関するサーバからのテキスト情報です。
|
-- RENDERELEMENT オブジェクト --
--ジョブの特定のレンダリング要素に関する情報。
n = j[1].numRenderElements --このジョブで使用するレンダリング要素の数。
re = j[1].GetRenderElement 1 --最初のを取得します。
re.enabled = false --その要素を使用不可能にします。
re.filterEnabled = false --フィルタを使用不可能にします。
re.name = "newName" --名前を変更します。
useShadows = re.shadowsApplied --シャドウが適用されているかどうか(読み込み専用)。
useShadows = re.atmosphereApplied --環境効果が適用されているかどうか(読み込み専用)。
re.output = "C:\\share\\rendElem1.bmp" --出力パスと名前を変更します。
j[1].SetRenderElement 1 re --新しい変更内容でジョブを更新します。
j[1].SendUpdate --変更内容をアップロードします。
|
-- 週間スケジュール --
-- サーバの週間スケジュールは、7 つの BitArray の配列です。
-- 各 bitArray は曜日、各ビットは時間です。
sched = s[1].schedule
sched[1][11] = false --日曜日の午前 11 時、サーバは稼動しません。
sched[1][12] = false -- 日曜日の正午も同じです。
s[1].attendedPriority = 60 --サーバのスケジュールに優先順位を設定します。
s[1].unattendedPriority = 10
s[1].schedule = sched --新しいスケジュールを設定します。
s[1].schedule --変更した情報が正しく機能することを確認するために出力します。
s[1].SendUpdate() --このサーバに変更内容をアップロードします。
--NOTE: 注: スケジュールは単なる BitArray であるため、スケジュールに GetUpdate はありません。
--変更を確認するには、サーバからもう一度スケジュールを呼び出す必要があります。
|
-- その他の関数 --
jobList = #( j[3], j[1], j[2] ) --いくつかのジョブの配列を作成します。
m.SetJobOrder jobList --ジョブを再配置します(たとえば、ここではキューの先頭に j[3]があります)。
mName = (m.netStatus).computerName --マネージャのマシン名です。
|
-- ジョブおよびサーバ フィルタ --
jobServers = m.getservers filter:#Job key:j[1]
groupServers = m.getservers filter:#group key:"Clouds"
|
-- セッションの終了 --
m.wantControl=true --これで他のクライアントはキュー コントロールを取得できます。
m.disconnect() --このセッションを終了します。
-- m.kill() --マネージャを終了します(キュー コントロールが必要です)。
|