レンダリング フレーム ウィンドウと MAXScript
レンダリング フレーム ウィンドウ(別名: 仮想フレーム バッファまたは VFB)は、3ds Max 2009 以降で反復およびプロダクション レンダリング ワークフローを実現します。
レンダラーに固有の拡張機能は、MAXScript を使用して実装されています。これは、さまざまなワークフローやサード パーティ製のレンダラーの使用を容易にするため、レンダリング
フレーム ウィンドウの上部および下部に公開されているコントロールを、テクニカル アーティストやテクニカル ディレクタが MAXScript だけを使用して拡張したり置き換えたりできることを意味します。
以下の MAXScript の追加機能は、レンダリング フレーム ウィンドウとそのプロパティへのアクセス方法およびそのパネルへの新しいロールアウトの登録方法を提供します。
イメージ ビューワの表示通知
一般イベント コールバック メカニズムに、 #preImageViewerDisplay と #postImageViewerDisplay の 2 つの新しい通知が追加されました。
これらは、レンダリング フレーム ウィンドウが開かれる前と開かれた後にブロードキャストされます。
インタフェース: IVFB
callbacks.notificationParam() メソッドは、コールバック スクリプト内で実行された場合、レンダリング フレーム ウィンドウによって公開されるプロパティとメソッドを提供する IVFB インタフェースを返します。
例:
|
次の例は、StdPlugs ¥ StdScripts ¥ VFB_Methods.ms ファイルに定義されている元のコールバックを削除し、ロールアウト パネルに新しいロールアウトを定義します。
元の機能を復元するため、以下を評価し、 callbacks.removeScripts #preImageViewerDisplay
元のコールバックを登録するため、上で説明されているスクリプトを実行します。 もしくは、単に 3ds Max を再起動します。
|
(
global MyFirstVFBLayout --the function needs to be global
fn MyFirstVFBLayout VFB_Interface = ( --will be called by the callback
--if the window is a Rendered Frame Window,
if VFB_Interface.IsFramebuffer do (
--set all borders to 0 to save screen estate
VFB_Interface.SetMetric #horzMarginLeft 0
VFB_Interface.SetMetric #horzMarginCenter 0
VFB_Interface.SetMetric #horzMarginRight 0
VFB_Interface.SetMetric #vertMarginTop 0
VFB_Interface.SetMetric #vertMarginCenter 0
VFB_Interface.SetMetric #vertMarginBottom 0
VFB_Interface.SetMetric #minClientWidth 320
VFB_Interface.SetMetric #minClientHeight 240
--Definesome stand-in rollouts to display in the three panels:
rollout theTopLeftRollout "Top Left Rollout" width:200 height:45 (
dropdownlist ddl_topLeft items:#("View","Region","Crop") width:160
button btn_topLeft "Top Left Button" width:160 )
rollout theTopRightRollout "Top Right Rollout" width:200 height:50(
button btn_topLeft"Top Right Button...")
rollout theBottomRollout "Bottom Rollout" width:200 height:22(
button btn_bottomButton "Bottom Button (Try to say 3 times fast!)"
)
--Initialize the top left panel to a size and
--get its RolloutFloater value back:
theTopLeftFloater = VFB_Interface.InitRolloutWindow #TopLeft 200 60
--Add the rollout to the RolloutFloater without borders and tile bar:
addRollout theTopLeftRollout theTopLeftFloater border:false
--and enable the visibility of the top left panel:
VFB_Interface.SetRolloutWindowVisible #TopLeft true
--Initialize the top right panel to a size and
--get its RolloutFloater value back:
theTopRightFloater = VFB_Interface.InitRolloutWindow #TopRight 200 60
--add the rollout to the RolloutFloater WITH borders and tile bar:
addRollout theTopRightRollout theTopRightFloater border:true
--and enable the visibility of the top left panel:
VFB_Interface.SetRolloutWindowVisible #TopRight true
--Initialize the bottom panel to a size and
--get its RolloutFloater value back:
theBottomFloater = VFB_Interface.InitRolloutWindow #Bottom 400 35
--add the rollout to the RolloutFloater without borders and tile bar:
addRollout theBottomRollout theBottomFloater border:false
--and enable the visibility of the top left panel:
VFB_Interface.SetRolloutWindowVisible #Bottom true
VFB_Interface.InitLayout() --finally, initialize the new layout
)--end if
)--end fn
--unregister any related callbacks:
callbacks.removeScripts #preImageViewerDisplay
--register a pre-image viewer display callback
callbacks.addScript #preImageViewerDisplay "MyFirstVFBLayout (callbacks.notificationParam())" id:#ResizeVFBPanels
)--end script
|