Source code for cPy.cScene

from __future__ import annotations
import cPy.cTypes
import cPy.ClassArray
import cPy.cCore
import cPy.cModel
#cScene
import Coat_CPP
import typing
from typing import ClassVar
from typing import TypeAlias
from typing import Any
from enum import Enum


[docs] class VoxMethadata(): ''' Base class for voxel metadata extensions. Allows attaching additional data or logic to a specific VoxTreeBranch. '''
[docs] @staticmethod def dynamic_cast(pObject : any)->VoxMethadata: ''' An analogue of the dynamic_cast function from C++, it checks whether the object pObject is a VoxMethadata class or its descendant, and if so, returns the specified object, but of the VoxMethadata type. ''' pass # cpp source
[docs] @staticmethod def ProcessMethadata(): pass # cpp source
[docs] @staticmethod def SetZeroCur(): pass # cpp source
Parent: any #: VoxTreeBranch * (T)
[docs] def OnActivateVolume(self, T: any): ''' Called when the associated volume becomes active. ''' pass # cpp source
[docs] def OnDeactivateVolume(self, T: any): pass # cpp source
[docs] class CutsCollector(): ''' Utility class for collecting intersection curves and processing boolean edges. Used for operations like creating curves from volume intersections, generating tubes along intersections, or splitting mesh boundaries. ''' edges: list #: cListcVec3, cVec3>>(T) preferred_name: cPy.cTypes.cStr #: cStr (T)
[docs] def transform(self, m: cPy.cTypes.cMat4): pass # cpp source
[docs] def fromVolumesIntersection(self, volume1: any, volume2: any): ''' Collects intersection edges between two voxel volumes. ''' pass # cpp source
[docs] def makeCurves(self): ''' Collects intersection edges between a voxel volume and a mesh. ''' pass # cpp source
[docs] def relaxInTube(self, volume: any, radius: float, symm: bool = True): ''' Relaxes the collected curves inside a tubular volume. ''' pass # cpp source
[docs] def createWeightsVolume(self, dest: cPy.cModel.VolumeObject, radius: float, edges_transform: cPy.cTypes.cMat4): pass # cpp source
[docs] def mergeTubeTo(self, dest: any, radius: float): pass # cpp source
[docs] class VoxTreeBranch(): ''' Hierarchical layers (voxel and surface) which you see in the SculptRoom. Every item in this object contains transform matrix and reference to the item in `VTree`. It refers `VolumeObject`. There may be multiple references on same `VolumeObject` from separate `VoxTreeBranch`-es. Root of all `VoxTreeBranches` kept in `RootVTree`. \see VolumeObject ''' def __init__(self): pass # CPP source def __init__(self): pass # CPP source Parent: VoxTreeBranch #: VoxTreeBranch * (T) Obj: cPy.cModel.VolumeObject #: VolumeObject * (T) Pointer to the actual volumetric or surface data. StoreMode: bool = Coat_CPP.VoxTreeBranch.StoreMode #: static bool (T) cStr Name; ///< name in tree Ghost: bool #: bool (T) bool Visible; ///< visibility pVoxSurf: bool #: bool (T) < ghosting mode VoxSurf: bool #: bool (T) < was in surface mode on previous frame? HideInViewport: bool #: bool (T) < true if object is in Surface mode, false if in Voxel mode. Procesed: bool #: bool (T) < Hidden in viewport, but pickable/visible in tree. IsRef: bool #: bool (T) bool OpenState; ///< branch is open IsActive: bool #: bool (T) IsInTransform: bool #: bool (T) ToDestroy: bool #: bool (T) InCache: bool #: bool (T) < should be destroyed. Don't delete leafs manually, just set this flag! Instance: bool #: bool (T) < is in cache SkipPick: bool #: bool (T) < is Instance. It does not mean that it was actually instanced. Current selected object is never instance! It gives instance flag to other non-current leaf. Inverse: bool #: bool (T) SelectionTime: int #: int (T) bool Selected; CacheName: cPy.cTypes.cStr #: cStr (T) ExData: cPy.cTypes.cStr #: cStr (T) < reference to cache name SymmetryData: cPy.cTypes.cStr #: cStr (T) < metadata string SpaceID: int #: int (T) < symmetry data kept to be stored in undo routine ProxyScale: float #: float (T) int Level; ///< deph in VoxTree structure Transform: cPy.cTypes.cMat4 #: cMat4 (T) InvTransform: cPy.cTypes.cMat4 #: cMat4 (T) < transform for local to global scale LocalTransform: cPy.cTypes.cMat4 #: cMat4 (T) \todo ??? GizmoCenter: cPy.cTypes.cVec3 #: cVec3 (T) Last used transform gizmo parameters. GizmoCenrtified: bool #: bool (T) GizmoDirected: bool #: bool (T) GizmoX: cPy.cTypes.cVec3 #: cVec3 (T) GizmoY: cPy.cTypes.cVec3 #: cVec3 (T) GizmoZ: cPy.cTypes.cVec3 #: cVec3 (T) Methadata: any #: ClassPtr<VoxMethadata>(T) LockedVolumeChanged: VoxTreeBranch = Coat_CPP.VoxTreeBranch.LockedVolumeChanged #: static VoxTreeBranch * (T) tmpLinkedObjects: any #: ClassArray<LinkedObject>* (T)
[docs] def GetLinkedObjects(self) -> any: pass # cpp source
SceneNGObjects: cPy.ClassArray.ClassArray_NGObject = Coat_CPP.VoxTreeBranch.SceneNGObjects #: static ClassArray_NGObject (T) NGObjectIdx: int #: int (T)
[docs] def GetNodeSystem(self) -> any: pass # cpp source
LastTransformTick: int #: int (T) MergeDisplacement: float = Coat_CPP.VoxTreeBranch.MergeDisplacement #: static float (T)
[docs] def ChildObjects(self, i: int) -> VoxTreeBranch: ''' ClassArray<VoxTreeBranch> ChildObjects; ''' pass # cpp source
[docs] def ChildObjectsCount(self) -> int: pass # cpp source
[docs] def GetObjectsCountRecursive(self) -> int: pass # cpp source
[docs] def ChildObjectsAdd(self, tb: VoxTreeBranch): pass # cpp source
[docs] def ChildObjectsInsert(self, Pos: int, tb: VoxTreeBranch): pass # cpp source
[docs] def ChildObjectsClear(self): pass # cpp source
[docs] def ChildObjectsDel(self, idx: int, count: int): pass # cpp source
[docs] def ChildObjectsDelElement(self, idx: int): pass # cpp source
[docs] def TransformedRecently(self) -> bool: pass # cpp source
[docs] def NotifyTransformed(self): pass # cpp source
PrimPresets: any #: ClassArray<OnePreset>(T) primitives usage history
[docs] def Delete(self): ''' \see Del() ''' pass # cpp source
def _Add(self): pass # cpp source
[docs] def CreateRmbMenu(self, Prop: any): ''' overrides from ItemsTree ''' pass # cpp source
[docs] def DropTreeStructureToUndo(self): pass # cpp source
[docs] def OnDuplicate(self, CopyPtr: any): pass # cpp source
[docs] def AdditionalElementRenderingInUI(self, BaseBox: any): pass # cpp source
[docs] def IgnoreAltIsolate(self) -> bool: pass # cpp source
[docs] def ApplyBooleans(self, Source: any, shift: bool, ctrl: bool, Keep: bool): pass # cpp source
[docs] def ChangeParentItem(self, NewParent: any): pass # cpp source
[docs] def NotifyParentChange(self, NewParent: any): pass # cpp source
[docs] def ProcessItem(self): ''' end of overrides from ItemsTree ''' pass # cpp source
def Add(self, T: cPy.cTypes.cMat4, Name: str, undo: bool = True, ToSubtree: bool = True) -> VoxTreeBranch: ''' Adds a new child branch. Args: T (cMat4): Transform matrix. Name (str): Name of the new layer. undo (bool): If true, registers undo action. ToSubtree (bool): If true, adds to the current object's subtree. Returns: VoxTreeBranch: Pointer to the new branch. ''' pass # cpp source
[docs] def Add(self, name: str, CheckExisting: bool, T: cPy.cTypes.cMat4 = None) -> VoxTreeBranch: pass # cpp source
[docs] def CheckPresenceInSubTree(self, Element: VoxTreeBranch) -> bool: ''' Restores the child structure from a helper list. ''' pass # cpp source
[docs] def InstanceToParentInstances(self): pass # cpp source
[docs] def Insert(self, idx: int): pass # cpp source
[docs] def EditShader(self) -> bool: pass # cpp source
[docs] def ApplyNodes(self) -> bool: pass # cpp source
[docs] @staticmethod def CreateNewShader(BaseShader: str, NewShaderName: str = None, Activate: bool = True): pass # cpp source
[docs] def Rename(self): pass # cpp source
def _Save3B(self, subtree: any) -> bool: ''' IO & caching ''' pass # cpp source
[docs] def Save3B(self, subtree: bool, name: str, sel: bool = False): ''' Saves the volume data to a 3B file. ''' pass # cpp source
def _Merge3B(self) -> bool: pass # cpp source
[docs] def Merge3B(self, name: str): ''' Merges a 3B file into the scene. ''' pass # cpp source
[docs] def CheckInstanceRemoving(self): pass # cpp source
[docs] def Add1(self) -> bool: pass # cpp source
[docs] def Decompose(self): pass # cpp source
[docs] def DecomposeFrozen(self): pass # cpp source
def _Resample(self): pass # cpp source
[docs] def Resample(self, scale: float, Q: int): ''' Resamples the volume (changes resolution). ''' pass # cpp source
[docs] def TransformIt(self) -> bool: pass # cpp source
[docs] def Del(self, onlythis: bool) -> bool: pass # cpp source
[docs] def DelSelected(self) -> bool: pass # cpp source
[docs] def DelNoUndo(self) -> bool: pass # cpp source
[docs] @staticmethod def validate_cur(): pass # cpp source
[docs] def ImportPointsCloud(self) -> bool: ''' Import/Export ''' pass # cpp source
[docs] def ImportModel(self) -> bool: pass # cpp source
[docs] def ExportScene(self) -> bool: pass # cpp source
[docs] def ExportObject(self) -> bool: pass # cpp source
[docs] def ExportPatternForMerge(self, idx: any) -> bool: pass # cpp source
[docs] def ExportPatternAsPen(self) -> bool: pass # cpp source
[docs] def ExportCurveProfile(self) -> bool: pass # cpp source
def Approve(self, p: any) -> VoxTreeBranch: ''' Merging & Geometry ''' pass # cpp source
[docs] def Approve(self, p: VoxTreeBranch) -> VoxTreeBranch: pass # cpp source
[docs] def CheckMultiselectionCancel(self) -> bool: pass # cpp source
[docs] def GetSelHighlight(self) -> cPy.cTypes.cVec4: pass # cpp source
[docs] def HighlightIt(self, IfPassive: bool): pass # cpp source
[docs] def Highlighted(self) -> bool: pass # cpp source
[docs] def MergeObj(self, p: VoxTreeBranch) -> bool: pass # cpp source
[docs] def PlainMergeObj(self, p: VoxTreeBranch) -> bool: pass # cpp source
[docs] def Flip(self, x: any, y: any, z: any): ''' Flips the object along specified axes. ''' pass # cpp source
[docs] def FlipSel(self, x: any, y: any, z: any): pass # cpp source
[docs] @staticmethod def ApplyTransformToInstances(M: cPy.cTypes.cMat4, vo: cPy.cModel.VolumeObject, InstOnly: bool = False, R: bool = False, applyNGScale: bool = True): pass # cpp source
[docs] def CombineChildren(self): pass # cpp source
[docs] def FlipNormals(self): pass # cpp source
[docs] def MakeUniform(self): pass # cpp source
[docs] def MakeUniform2(self): pass # cpp source
[docs] def AllUniform(self): pass # cpp source
[docs] def isUniform(self) -> bool: pass # cpp source
[docs] def MoveObj(self, p: VoxTreeBranch, KeepSource: bool) -> bool: ''' Boolean Operations ''' pass # cpp source
[docs] def PlainMoveObj(self, p: VoxTreeBranch) -> bool: pass # cpp source
[docs] def SubObj(self, p: VoxTreeBranch, KeepSource: bool) -> bool: pass # cpp source
[docs] def IntrsObj(self, p: VoxTreeBranch, KeepSource: bool) -> bool: pass # cpp source
[docs] def RemIntrsObj(self, p: VoxTreeBranch) -> bool: pass # cpp source
[docs] def SplitObj(self, p: VoxTreeBranch) -> bool: pass # cpp source
[docs] def MakeHull(self) -> bool: ''' Hull & Repair ''' pass # cpp source
[docs] def MakeHull2(self) -> bool: pass # cpp source
[docs] def CloseHoles(self) -> bool: pass # cpp source
[docs] def CloseTunnels(self) -> bool: pass # cpp source
[docs] def Extrude(self) -> bool: pass # cpp source
[docs] def SetDirty(self): pass # cpp source
[docs] def SetVoxShader(self, obj: any, id: any) -> bool: pass # cpp source
[docs] def ApplyAxialSymmetry(self) -> bool: pass # cpp source
[docs] def ChangeParent(self, p: VoxTreeBranch) -> bool: pass # cpp source
[docs] def ShowHideButThis(self): ''' Visibility & Ghosting ''' pass # cpp source
[docs] def GhostButThis(self): pass # cpp source
[docs] def UnghostWithSubtree(self): pass # cpp source
[docs] def GhostWithSubtree(self): pass # cpp source
[docs] def InvertGhostWithSubtree(self): pass # cpp source
[docs] def InvertVisibleWithSubtree(self): pass # cpp source
[docs] def BakeColorsThere(self): pass # cpp source
[docs] def ShowAll(self) -> bool: pass # cpp source
[docs] def ShowSubtree(self) -> bool: pass # cpp source
[docs] def PutOnGroundEx(self, minvt: cPy.cTypes.cVec3, cm: cPy.cTypes.cVec3): ''' Positioning ''' pass # cpp source
[docs] def PutOnGround(self): pass # cpp source
[docs] def LayOnGround(self): pass # cpp source
[docs] def GlueToGround(self): pass # cpp source
[docs] def InvertHiddenFaces(self): pass # cpp source
[docs] def DeleteHiddenFaces(self, invert: bool): pass # cpp source
[docs] def CalcHash(self, d: int = 1) -> int: pass # cpp source
@staticmethod def valid(tb: VoxTreeBranch) -> bool: pass # cpp source
[docs] @staticmethod def valid(ctb: any) -> bool: pass # cpp source
[docs] def GetRoot(self) -> VoxTreeBranch: pass # cpp source
[docs] def DeselectAll(self, R: VoxTreeBranch = None) -> bool: pass # cpp source
[docs] def StoreSymm(self): pass # cpp source
[docs] def RestoreSymm(self): pass # cpp source
[docs] def GetUniqueName(self, takethisname: bool, suffix: str) -> cPy.cTypes.cStr: pass # cpp source
[docs] def CreateUniqSpace(self, safe: bool, suffix: str) -> VoxTreeBranch: pass # cpp source
[docs] def Clone(self, Recursive: bool = False, dest: VoxTreeBranch = None, Inst: bool = False, Subtree: bool = False, T: cPy.cTypes.cMat4 = cPy.cTypes.cMat4.Identity, ChangeTool: bool = True, CopyData: bool = True, SetCurr: bool = True, ForceReplaceDest: bool = False, SelectedOnly: bool = False) -> VoxTreeBranch: ''' Clones the object/branch. Args: Recursive (bool): Clone children recursively. dest (VoxTreeBranch): Destination branch (parent). Inst (bool): Create as an instance (share volume data). Subtree (bool): Include full subtree. T (cMat4): Optional transform offset. Returns: VoxTreeBranch: Pointer to the cloned branch. ''' pass # cpp source
[docs] def Clone2(self): pass # cpp source
[docs] def CloneInst2(self): pass # cpp source
[docs] def CloneDegrade(self, Undo: bool) -> bool: pass # cpp source
[docs] def CloneAndDegradeCur(self): pass # cpp source
[docs] def SeparateHidden(self): pass # cpp source
[docs] def MergeVisible(self): pass # cpp source
[docs] def PlainMergeVisible(self): pass # cpp source
[docs] def MergeSelected(self): pass # cpp source
[docs] def PlainMergeSelected(self): pass # cpp source
[docs] def MergeSubtree(self): ''' void MergeDown(); // implementation not found ''' pass # cpp source
[docs] def PlainMergeSubtree(self): pass # cpp source
[docs] def MergeTo(self, Dest: VoxTreeBranch, sub: int, ClearThis: bool, NoUndo: bool): pass # cpp source
[docs] def PlainMergeTo(self, Dest: VoxTreeBranch, NoUndo: bool): pass # cpp source
def find(self, vo: cPy.cModel.VolumeObject) -> VoxTreeBranch: ''' Merges a mesh into the voxel/surface volume. ''' pass # cpp source
[docs] def find(self, gu: int, NonInstance: bool = True) -> VoxTreeBranch: pass # cpp source
[docs] def GetParent(self, tb: VoxTreeBranch) -> VoxTreeBranch: pass # cpp source
[docs] def CloneSpaceVT(self, changetool: bool = True, subtree: bool = False) -> VoxTreeBranch: pass # cpp source
[docs] @staticmethod def Current() -> VoxTreeBranch: pass # cpp source
[docs] def SeekByUserInt(self, val: int) -> VoxTreeBranch: pass # cpp source
[docs] def SetupNewNodeSystem(self): pass # cpp source
[docs] def CloneSpace(self) -> bool: pass # cpp source
[docs] def IncDencity2X(self) -> bool: pass # cpp source
[docs] def DecDencity2X(self) -> bool: pass # cpp source
[docs] def CloneSymm2(self): pass # cpp source
[docs] def CloneInstSymm2(self): pass # cpp source
[docs] def SelectCurrent(self): pass # cpp source
[docs] def SelectCurrentOnScreen(self): pass # cpp source
[docs] def SimpleSelect(self): pass # cpp source
[docs] def QuadrangulateAndMergeDP(self) -> bool: ''' Retopology / Quadrangulation ''' pass # cpp source
[docs] def DecToRetopo(self): pass # cpp source
[docs] def DecToRetopoAll(self): pass # cpp source
[docs] def PushMatrix(self): pass # cpp source
[docs] def PopMatrix(self): pass # cpp source
[docs] def UnIstance(self, copy: bool = True): pass # cpp source
def SaveTransforms(self, name: str): pass # cpp source def LoadTransforms(self, name: str): pass # cpp source
[docs] def BlendTransforms(self, name1: str, name2: str, blend: float): pass # cpp source
[docs] def SaveTransforms(self): pass # cpp source
[docs] def LoadTransforms(self): pass # cpp source
[docs] def SetTransform(self, m: cPy.cTypes.cMat4): pass # cpp source
[docs] @staticmethod def BestCurentCandidate() -> VoxTreeBranch: pass # cpp source
[docs] def SelectVisibleSubtree(self): pass # cpp source
[docs] def ChooseRefColor(self): pass # cpp source
[docs] def TopologyLocked(self) -> bool: pass # cpp source
[docs] def OnChangeMember(self, mc: cPy.cCore.BaseClass, mp: any, me: any, mn: str) -> bool: pass # cpp source
[docs] def OnScriptRecorder(self, mc: cPy.cCore.BaseClass, mp: any, me: any, mn: str) -> bool: pass # cpp source
[docs] def ApproveThis(self) -> bool: pass # cpp source
[docs] def OnModifyControl(self, Name: str, BW: any, Context: any): pass # cpp source
[docs] def RMBHotkeysActiveForThisItem(self) -> bool: pass # cpp source
[docs] def GetClassMask(self) -> int: pass # cpp source
[docs] def GetElementLevel(self, name: str) -> int: pass # cpp source
[docs] def ProcessNodeCleanup(self): pass # cpp source
[docs] def ProcessNodeVisibility(self, MakeInvisible: bool = False): pass # cpp source
[docs] def UpdateHash(self, H: any, data: any = None, extra: any = None): pass # cpp source
[docs] def IsNameUniq(self, name: str) -> bool: pass # cpp source
[docs] def StoreVOTree(self, B: any, bin: bool): pass # cpp source
[docs] def CheckIfParent(self, child: VoxTreeBranch) -> bool: pass # cpp source
[docs] def FindParent(self, root: VoxTreeBranch, index: int) -> VoxTreeBranch: pass # cpp source
[docs] def RefreshLevels(self): pass # cpp source
[docs] def SetupLevels(self, L: int): pass # cpp source
[docs] def SetupVOMat(self): pass # cpp source
[docs] def RestoreVOTree(self, B: any, Clear: bool = True): pass # cpp source
[docs] def SetDestroyState(self): pass # cpp source
[docs] def SetVIDS(self): pass # cpp source
[docs] def SetInvM(self): pass # cpp source
[docs] def FindVOBS(self): pass # cpp source
[docs] def GetMainAxis(self, X: cPy.cTypes.cVec3, Y: cPy.cTypes.cVec3, Z: cPy.cTypes.cVec3, SelectedOnly: bool) -> cPy.cTypes.cVec3: pass # cpp source
[docs] def ScrollTo(self): pass # cpp source
[docs] def CheckLockedVolume(self) -> bool: pass # cpp source
[docs] def removeThis(self): pass # cpp source
[docs] def duplicate(self) -> any: pass # cpp source
[docs] def setTransform(self, m: cPy.cTypes.cMat4): pass # cpp source
[docs] def setTransformRecursive(self, m: cPy.cTypes.cMat4): pass # cpp source
[docs] def duplicateAsInstance(self) -> any: pass # cpp source
[docs] def instancingSupported(self) -> bool: pass # cpp source
[docs] def getTransform(self) -> cPy.cTypes.cMat4: pass # cpp source
[docs] def SemiBoolean(self, other: VoxTreeBranch, op_type: int): pass # cpp source
[docs] @staticmethod def ApplySurfaceChangesToVoxelsVolumes(): ''' static float GetCut(cVec2& minmax, const Vector3D& p, VolumeObject* except, float* unitlen); // implementation not found ''' pass # cpp source
[docs] def createIntersectionCurveWith(self, with_vtb: VoxTreeBranch): pass # cpp source
[docs] class HullParams(cPy.cCore.BaseClass): def __init__(self): pass # CPP source EdgeThickness: float #: float (T)
[docs] class VoxVisualTree(VoxTreeBranch): ''' The root class representing the visual object tree structure. Manages global tree operations like adding new volumes, deleting selected, and cloning spaces. ''' def __init__(self): pass # CPP source
[docs] def AddNewVolume(self): pass # cpp source
[docs] def DeleteSelectedVolumes(self): pass # cpp source
[docs] def DuplicateSelectedVolumes(self): pass # cpp source
[docs] def CloneSpaceDencity(self): pass # cpp source
[docs] def SymmCopy(self): pass # cpp source
[docs] def EditShader(self): pass # cpp source
[docs] def IncRes(self): pass # cpp source
[docs] def ClearCurrLayer(self): pass # cpp source