ステート セットのレンダリング パス管理システムは、3ds Max 2012 に対する Subscription Advantage Pack 拡張機能で初めて導入され、現在、3ds Max 2013 以降では欠かせない機能となっています。3ds Max 2018 以降では、コンポジティング エディタがノードベース システムになっています。
この機能は、DotNet オブジェクト、およびそのプロパティとメソッドを介して、MAXScript に公開されます。
次の例は、ステート セットへのアクセスおよび操作に関係する基本的な手順を示しています。
ステート セットへのアクセス |
stateSetsDotNetObject = dotNetObject "Autodesk.Max.StateSets.Plugin" --Get StateSets dotNet object. stateSets = stateSetsDotNetObject.Instance --Get the state sets instance from the dotNet object. |
ステート セット ウィンドウを開く/閉じる |
stateSets.ShowMainFrame() --Open the State Sets window. stateSets.HideMainFrame() --Close the State Sets window. |
マスター ステートへのアクセス |
masterState = stateSets.EntityManager.RootEntity.MasterStateSet |
新規ステート セットの追加と名前変更 |
stateSet = masterState.AddState() stateSet.Name = "MyStateSet" masterState.AssignUniqueName stateSet "MyMasterStateset" --Assigns a unique name to the state set |
現在のステート セットの変更、記録の開始と終了 |
previousCurrentStateSet = masterState.CurrentState.Items[0] --Record current state set. masterState.CurrentState = #(stateSet) --Assign current state set. stateSet.BeginRecording() --Begin recording state set. stateSet.EndRecording() --End recording state set. masterState.CurrentState = #(previousCurrentStateSet) --Assign previous state set. |
子サブステート セットの追加とレンダリング、および他の操作の実行 |
subStateSet = stateSet.AddState() subStateSet = stateSet.Render #(stateSet) --Render state set, note that we specify a path because this state set could be located under multiple parents. scriptedState = stateSet.AddScriptedState(false) --Add a scripted state. scriptedState.ApplyScript = "-- MaxScript executed when applying state set" --Assign the apply script. scriptedState.RevertScript = "-- MaxScript executed when reverting state set" --Assign the revert script. stateSet.CreateTemplate() --Create a template for this state set |
ステート セットと最初の子の削除 |
masterState.RemoveChild stateSet --Removes the state set masterState.RemoveChild masterState.Children.Item[0] --Removes the first child |
コンポジタ ビューの追加 |
masterState.CreateCompositingView true --Add compositor view with render elements masterState.CreateCompositingView false --Add compositor view without render elements |
アクティブなコンポジタ ビューでのノード取得 |
cViewNodes = stateSets.CompositingViewNodes for i in 0 to (cViewNodes.Count - 1 ) do ( node = cViewNodes.Item(i) node.Collapsed = true print node.Tag.Name ) |
シーン内のすべてのステート セットのレンダリング |
masterState.RenderAllStates() |
オブジェクトのステート セットへのアクセス |
objectStateSet = masterState.ObjectStateSet |
ステート セット システムによって実装されたすべての DotNet オブジェクトとクラスのすべてのプロパティおよびメソッドには、DotNet 検査関数を使用して MAXScript からアクセス可能です。
ステート セット プラグイン インスタンスの探索 |
stateSetsDotNetObject = dotNetObject "Autodesk.Max.StateSets.Plugin" dotNetObject:Autodesk.Max.StateSets.Plugin stateSets = stateSetsDotNetObject.Instance dotNetObject:Autodesk.Max.StateSets.Plugin showProperties stateSets .AbsentLayerStatesWereRemovedOnLoad : <System.Boolean> .ActiveViewId : <System.UInt16> .BitmapInfos : <System.Collections.Generic.Dictionary`2[System.Int32,Autodesk.Max.IBitmapInfo]>, read-only .ClassDescManager : <Autodesk.Max.StateSets.ClassDescManager>, read-only .CompositingView : <Ephere.Gui.NodeViews.NodeView>, read-only .CompositingViewNodes : <System.Collections.Generic.IList`1[Ephere.Gui.NodeViews.NodeView+Node]>, read-only .CompositorLink : <Autodesk.Max.StateSets.CompositorLink.CompositorLinkSettingsController>, read-only .CompositorLinkTargetViewId : <System.UInt16> .Configuration : <Autodesk.Max.StateSets.Configuration> .EntityManager : <Autodesk.Max.StateSets.Entities.EntityManager>, read-only .Global : <Autodesk.Max.IGlobal> .GlobalStringFormat : <System.Drawing.StringFormat>, read-only .HasRenderPreviewNode : <System.Boolean>, read-only .Instance : <Autodesk.Max.StateSets.Plugin>, static .InvokeRequired : <System.Boolean>, read-only .IsInSequencerMode : <System.Boolean> .IsMainFrameInitialized : <System.Boolean>, read-only .IsMainFrameVisible : <System.Boolean> .LoadedVersion : <System.Version> .MainFrameBounds : <System.Drawing.Rectangle> .NodeEvents : <Autodesk.Max.StateSets.Plugin+NodeEventCallback>, read-only .OpenViewCount : <System.Int32>, read-only .PluginWasRegistered : <System.Boolean> .PreviewRenderNode : <Autodesk.Max.IINode>, read-only .SequencerTreeView : <Ephere.Gui.NodeViews.NodeView>, read-only .Skin : <Ephere.Gui.NodeViews.Skin>, read-only .Sync : <System.ComponentModel.ISynchronizeInvoke> .ToolbarTreeView : <Ephere.Gui.NodeViews.NodeView>, read-only .TreeView : <Ephere.Gui.NodeViews.NodeView>, read-only .TreeViews : <Ephere.Gui.NodeViews.NodeView[]>, read-only .accumCallbacks : <System.Int32[]> true showMethods stateSets .<System.Int32>AccumCallbackCount <Autodesk.Max.StateSets.Plugin+AccumCallbackType>type .AccumCallbackIncrement <Autodesk.Max.StateSets.Plugin+AccumCallbackType>type .AccumCallbackIncrement <Autodesk.Max.StateSets.Plugin+AccumCallbackType>type <System.Int32>n .AccumCallbackReset <Autodesk.Max.StateSets.Plugin+AccumCallbackType>type -- Added in 3ds Max 2018: .<Ephere.Gui.NodeViews.NodeView>AddTreeView() .<System.IAsyncResult>BeginInvoke <System.Delegate>method <System.Object[]>args .Cleanup() .<T>CreateInstance() .<System.Runtime.Remoting.ObjRef>CreateObjRef <System.Type>requestedType .<System.Object>EndInvoke <System.IAsyncResult>result .<System.Boolean>Equals <System.Object>obj .[static]<System.Boolean>Equals <System.Object>objA <System.Object>objB .<System.Int32>GetHashCode() .<System.Object>GetLifetimeService() .<System.Type>GetType() .<System.Int32>GetUniqueBitmapInfoId() .HideMainFrame() .Initialize <Autodesk.Max.IGlobal>global <System.ComponentModel.ISynchronizeInvoke>sync .<System.Object>InitializeLifetimeService() .<System.Object>Invoke <System.Delegate>method <System.Object[]>args .<Autodesk.Max.IValue>LaunchBlank <Autodesk.Max.IValue[]>args .[static]Log <Autodesk.Max.StateSets.Plugin+LogType>logType <System.String>message .[static]Log <System.String>message <System.Boolean>newLine .LogLocal <Autodesk.Max.StateSets.Plugin+LogType>logType <System.String>message .PreviewRenderNodeReset() .[static]<System.Boolean>ReferenceEquals <System.Object>objA <System.Object>objB .RegisterAnchorCallbacks() .ReloadConfiguration() .ResetAndDelete() .ResetConfiguration() .ResetNodeEventCallbackMessages() .ShowMainFrame() .<Autodesk.Max.StateSets.Entities.StateSets.SetupRenderOutputs>ShowSetupRenderOutputsPanel() .ToggleMainFrame() .<System.String>ToString() .TriggerNodeEventCallbackMessages() .UnRegisterAnchorCallbacks()true true showEvents stateSets CameraSequencerModeChanged <System.Boolean>obj = ( ... ) CurrentLayerChanged <Autodesk.Max.IILayer>obj = ( ... ) CurrentStateSetChanged <Autodesk.Max.StateSets.Entities.StateSets.StateSet>obj = ( ... ) ScenePostSave = ( ... ) StateApplied <Autodesk.Max.StateSets.Entities.StateSets.StateSet>arg1 <System.Boolean>arg2 = ( ... ) StateRecording <Autodesk.Max.StateSets.Entities.StateSets.StateSet>arg1 <System.Boolean>arg2 = ( ... ) StateSetAdded <Autodesk.Max.StateSets.Entities.StateSets.StateSet>obj = ( ... ) StateSetChanged <Autodesk.Max.StateSets.Entities.StateSets.StateSet>obj = ( ... ) StateSetRemoved <Autodesk.Max.StateSets.Entities.StateSets.StateSet>obj = ( ... ) StateSetRenamed <Autodesk.Max.StateSets.Entities.StateSets.StateSet>obj = ( ... ) TimeChange <System.Int32>obj = ( ... ) TimeRangeChanged = ( ... ) true |
MasterStateSet の探索 |
showProperties stateSets.EntityManager .RootEntity : <Autodesk.Max.StateSets.Entities.Root> true showProperties stateSets.EntityManager.RootEntity .AutomaticName : <System.String> .AutomaticTypeName : <System.String> .Children : <System.Collections.Generic.List`1[Autodesk.Max.StateSets.Entities.Entity]> .CustomAttributes : <System.Collections.Hashtable>, read-only .CustomChildren : <System.Collections.Generic.List`1[Autodesk.Max.StateSets.Entities.Entity]> .Description : <System.String> .DynamicInsertTarget : <System.Boolean> .HierarchyIndex : <System.Int32>, read-only .InternalName : <System.String>, read-only .MasterStateSet : <Autodesk.Max.StateSets.Entities.StateSets.Master>, read-only .Name : <System.String> .Parents : <Autodesk.Max.StateSets.Entities.Entity[]>, read-only .TypeName : <System.String> .UseNameForTypeName : <System.Boolean>, read-only .CustomChildrenToken : <System.String>, read-only, static true showProperties stateSets.EntityManager.RootEntity.MasterStateSet .AutomaticName : <System.String>, read-only .AutomaticTypeName : <System.String> .Children : <System.Collections.Generic.List`1[Autodesk.Max.StateSets.Entities.Entity]> .CompositorLinkFilePath : <System.String> .CurrentState : <Autodesk.Max.StateSets.Entities.StateSets.StateSet[]> .CustomAttributes : <System.Collections.Hashtable>, read-only .CustomChildren : <System.Collections.Generic.List`1[Autodesk.Max.StateSets.Entities.Entity]> .DefaultRenderOutputFilePattern : <System.String>, read-only, static .DescendantStateCount : <System.Int32>, read-only .Description : <System.String>, read-only .DynamicInsertTarget : <System.Boolean> .HierarchyIndex : <System.Int32>, read-only .InternalName : <System.String>, read-only .Name : <System.String> .ObjectStateSet : <Autodesk.Max.StateSets.Entities.StateSets.StateSet>, read-only .Parents : <Autodesk.Max.StateSets.Entities.Entity[]>, read-only .RenderOutputFilePattern : <System.String> .StatesWithErrors : <System.Collections.Generic.ICollection`1[Autodesk.Max.StateSets.Entities.StateSets.IState]>, read-only .TypeName : <System.String> .UseNameForTypeName : <System.Boolean>, read-only .CustomChildrenToken : <System.String>, read-only, static .StateNameToken : <System.String>, read-only, static true showMethods stateSets.EntityManager.RootEntity.MasterStateSet .<Autodesk.Max.StateSets.Entities.Entity>AddChild <Autodesk.Max.StateSets.Entities.Entity>entity <System.Boolean>wasAutoGenerated .<Autodesk.Max.StateSets.Entities.Entity>AddChild <Autodesk.Max.StateSets.Entities.Entity>entity <System.Boolean>wasAutoGenerated <System.Boolean>broadcastEvent .AddObjectState() .AddObjectState <System.Nullable`1[[System.UInt16, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]>targetViewId .<Autodesk.Max.StateSets.Entities.StateSets.StateSet>AddState() .<Autodesk.Max.StateSets.Entities.StateSets.StateSet>AddState <System.Nullable`1[[System.UInt16, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]>targetViewId <System.Boolean>addToCompositorView .AssignUniqueName <Autodesk.Max.StateSets.Entities.Entity>state <System.String>baseName .BeginRecordingStateSet <Autodesk.Max.StateSets.Entities.StateSets.StateSet>stateSet <Autodesk.Max.StateSets.Entities.StateSets.StateSet[]>path .CheckForStateErrors() .CollectDescendantStateSets <System.Collections.Generic.List`1[[Autodesk.Max.StateSets.Entities.StateSets.StateSet, Autodesk.Max.StateSets, Version=20.0.966.0, Culture=neutral, PublicKeyToken=null]]>destination .CollectDescendantsWithCustomAttribute <System.Object>customAttribute <System.Collections.Generic.List`1[[Autodesk.Max.StateSets.Entities.Entity, Autodesk.Max.StateSets, Version=20.0.966.0, Culture=neutral, PublicKeyToken=null]]>destination .CreateCompositingView <System.Boolean>includeRenderElements .<System.Runtime.Remoting.ObjRef>CreateObjRef <System.Type>requestedType .<Autodesk.Max.StateSets.Entities.StateSets.IParameter>CreateUserCreatableParameter <System.String>name .DefaultSetup() .Dispose() .<System.Boolean>Equals <System.Object>obj .[static]<System.Boolean>Equals <System.Object>objA <System.Object>objB .GenerateChildrenForTarget <Autodesk.Max.StateSets.Entities.Entity>target .<Autodesk.Max.StateSets.Entities.Entity>GetChild <System.String>name .<T>GetCustomAttribute <System.Object>key <T>defaultValue .<System.Boolean>GetCustomAttributeBoolean <System.Object>key .<Autodesk.Max.StateSets.Entities.Entity>GetDescendant <System.String>name .<Autodesk.Max.StateSets.Entities.Entity>GetDescendant <System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]>hierarchyIndex .<System.Collections.Generic.IEnumerable`1[Autodesk.Max.StateSets.Entities.Entity]>GetDescendants() .<System.Int32>GetDescendantStateSetIndex <System.Collections.Generic.IEnumerable`1[[Autodesk.Max.StateSets.Entities.StateSets.StateSet, Autodesk.Max.StateSets, Version=20.0.966.0, Culture=neutral, PublicKeyToken=null]]>stateSetPath .<System.Collections.Generic.List`1[Autodesk.Max.StateSets.Entities.StateSets.StateSet[]]>GetDescendantStateSetPaths <System.Boolean>includeObjectStateSet .<System.Int32>GetHashCode() .<System.Collections.Generic.List`1[System.String]>GetHierarchyIndex <Autodesk.Max.StateSets.Entities.Entity>descendant .<System.Object>GetLifetimeService() .GetObjectData <System.Runtime.Serialization.SerializationInfo>info <System.Runtime.Serialization.StreamingContext>context .<Autodesk.Max.StateSets.Entities.StateSets.StateSet>GetStateById <System.Int32>id .<System.Type>GetType() .<System.String[]>GetUserCreatableParameterNames() .<System.Boolean>HasCustomAttribute <System.Object>key .<System.Boolean>HasDescendant <Autodesk.Max.StateSets.Entities.Entity>descendant <System.Collections.Generic.HashSet`1[[Autodesk.Max.StateSets.Entities.Entity, Autodesk.Max.StateSets, Version=20.0.966.0, Culture=neutral, PublicKeyToken=null]]>ignoreParents .<System.Boolean>HasDescendant <Autodesk.Max.StateSets.Entities.Entity>descendant <Autodesk.Max.StateSets.Entities.Entity[]>ignoreParents .<System.Object>InitializeLifetimeService() .<Autodesk.Max.StateSets.Entities.Entity>InsertChild <System.Int32>index <Autodesk.Max.StateSets.Entities.Entity>entity .<Autodesk.Max.StateSets.Entities.Entity>InsertChild <System.Int32>index <Autodesk.Max.StateSets.Entities.Entity>entity <System.Boolean>wasAutoGenerated <System.Boolean>broadcastEvent .InvalidateChildren() .<System.Boolean>IsDescendantOf <Autodesk.Max.StateSets.Entities.Entity>ancestor .[static]maxnrAssignStateSetJob <System.Int32[]>stateSetsHandles <System.Int32>numHandles .<System.Boolean>OnCreateChildForIndex <System.String>index <Autodesk.Max.IRepresentation>target .[static]<System.Boolean>ReferenceEquals <System.Object>objA <System.Object>objB .Refresh() .RemoveChild <Autodesk.Max.StateSets.Entities.Entity>entity .RemoveChild <Autodesk.Max.StateSets.Entities.Entity>entity <System.Boolean>entityChange .RemoveChild <Autodesk.Max.StateSets.Entities.Entity>entity <System.Boolean>entityChange <System.Boolean>broadcastEvent .RemoveCustomAttribute <System.Object>key .<System.Boolean>Rename <System.String>newName .RenderAllStates <System.Boolean>forceNetworkRender .RenderStates <System.Collections.Generic.IEnumerable`1[[System.Collections.Generic.IEnumerable`1[[Autodesk.Max.StateSets.Entities.StateSets.StateSet, Autodesk.Max.StateSets, Version=20.0.966.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]>stateSetPaths <System.Boolean>useNetworkRender .Reset() .ResetCompositingView <System.Boolean>includeRenderElements .SetCurrentStateSet <Autodesk.Max.StateSets.Entities.StateSets.StateSet[]>path .SetCustomAttribute <System.Object>key <T>value .SetCustomAttributeBoolean <System.Object>key <System.Boolean>value .SetupRenderOutputsPath <System.String>value .<System.String>ToString() .UpdateHierarchyParents() true |