Exemplo n.º 1
0
def ClusterCenterTarget(inPntSubComponent=None,
                        inTarget=None,
                        inName="PntCls"):
    if not inPntSubComponent:
        sel = XSI.Selection(0)
        if not sel or not sel.Type == "pntSubComponent":
            XSI.LogMessage(
                "[ClusterCenterTarget] Invalid Selection : Need some points selected ---> Aborted!"
            )
            return
        else:
            inPntSubComponent = sel.SubComponent
    if not inTarget:
        pick = PickElement(constants.siObjectFilter, "Pick Target Object")
        if not pick:
            XSI.LogMessage(
                "[ClusterCenterTarget] Invalid Target : Need one target object ---> Aborted!"
            )
            return
        else:
            inTarget = pick
    obj = inPntSubComponent.Parent3DObject
    geo = obj.ActivePrimitive.Geometry
    elem = inPntSubComponent.ElementArray
    cls = geo.AddCluster(constants.siVertexCluster, inName, elem)
    XSI.ApplyOp("ClusterCenter", str(cls) + ";" + str(inTarget), 0, 0, None, 2)
Exemplo n.º 2
0
def Cloth_ApplySyflexOp(obj):
    syflex_op = obj.ActivePrimitive.ConstructionHistory.Find('syCloth')
    if syflex_op:
        XSI.DeleteObj(syflex_op)

    cloth_cluster = obj.ActivePrimitive.Geometry.Clusters('ClothCls')
    if not cloth_cluster:
        cloth_cluster = Utils.CreateCompleteButNotAlwaysCluster(
            obj, constants.siVertexCluster, 'ClothCls')

    mass_map = Utils.GetWeightMap(obj, 'MassMap', 1, 0, 1, cloth_cluster)
    stiffness_map = Utils.GetWeightMap(obj, 'StiffMap', 1, 0, 1, cloth_cluster)
    restore_map = Utils.GetWeightMap(obj, 'RestoreMap', 0, 0, 1, cloth_cluster)

    XSI.FreezeObj(mass_map.FullName + "," + stiffness_map.FullName)
    syflex_op = XSI.ApplyOp(
        'syCloth', ';'.join(obj.FullName, mass_map.FullName,
                            stiffness_map.FullName), 3, 0, None, 2)(0)
    stf = XSI.ApplyOperator('syProperties', syflex_op)
    start_frame = Utils.GetStartFrame()
    syflex_op.Parameters('FirstFrame').Value = start_frame
    XSI.SaveKey(syflex_op.Parameters('Update'), 1, 1)

    stf.Parameters('Density').Value = 0.5
    stf.Parameters('StretchStiffness').Value = 1
    stf.Parameters('ShearStiffness').Value = 0.2
    stf.Parameters('BendStiffness').Value = 0.1
    stf.Parameters('StretchDamping').Value = 0.1
    stf.Parameters('ShearDamping').Value = 0.02
    stf.Parameters('BendDamping').Value = 0.01

    return syflex_op
Exemplo n.º 3
0
def applyColorizePointTree(model,obj,id):
	oIceTree = XSI.ApplyOp("ICETree", obj, "siNode", "", "", 0)
	oColorize = XSI.AddICECompoundNode("bbpp Colorize Point", oIceTree)
	XSI.ConnectICENodes(str(oIceTree) + ".port1", str(oColorize) + ".Execute")
	oGet1 = XSI.AddICENode("GetDataNode", oIceTree)
	XSI.SetValue(str(oGet1) + ".reference", model.FullName)
	XSI.ConnectICENodes(str(oColorize) + ".TransformationModel", str(oGet1) + ".outname")
	XSI.SetValue(str(oColorize) + ".PointID", id, "")
Exemplo n.º 4
0
def MergeRigCloud(model, clouds, name):
	cloud = model.AddPrimitive("PointCloud", name)
	tree = XSI.ApplyOp("ICETree", cloud, "siNode", "", "", 2)
	idx = 1
	for c in clouds:
		merge = XSI.AddICECompoundNode("MergeRigPointCloud", str(tree))
		XSI.AddPortToICENode(str(tree) + ".port" + str(idx), "siNodePortDataInsertionLocationAfter")
		XSI.ConnectICENodes(str(tree) + ".port" + str(idx), str(merge) + ".execute")
		get = XSI.AddICENode("GetDataNode", str(tree))
		XSI.SetValue(str(get) + ".reference", ReplaceModelNameByThisModel(c), "")
		XSI.ConnectICENodes(str(merge) + ".Cloud", str(get) + ".outname")
		idx += 1
Exemplo n.º 5
0
def bbppTransformation_CreateCorrespondanceIceTree(obj,group,map):
	oModel = PPG.Inspected(0).Parent3DObject
	oIceTree = XSI.ApplyOp("ICETree", obj, "siNode", "", "", 0)
	oCorrespondance = XSI.AddICECompoundNode("bbpp Correspondance Map", oIceTree)
	XSI.ConnectICENodes(str(oIceTree) + ".port1", str(oCorrespondance) + ".Execute")
	oGet1 = XSI.AddICENode("GetDataNode", oIceTree)
	oGet2 = XSI.AddICENode("GetDataNode", oIceTree)
	#sGroupName = replaceModelNameByThisModel(oModel,group.FullName)
	XSI.SetValue(str(oGet1) + ".reference", group.FullName)
	XSI.ConnectICENodes(str(oCorrespondance) + ".PointsGroup", str(oGet1) + ".outname")
	sMapName = replaceObjectNameBySelf(obj,map.FullName)
	XSI.SetValue(str(oGet2) + ".reference", sMapName + ".Colors")
	XSI.ConnectICENodes(str(oCorrespondance) + ".ColorMap", str(oGet2) + ".outname")
Exemplo n.º 6
0
def BuildCurveOnObjectsPosition(inObjects,
                                inDegree=0,
                                inClose=0,
                                inConstraint=1,
                                inOffset=XSIMath.CreateVector3()):
    if len(inObjects) < 2:
        XSI.LogMessage(
            "BuildCurveOnPoints aborted :: Not enough input objects!!",
            constants.siError)
        return

    if len(inObjects) < 4:
        inDegree = 0

    pPos = GetPositions(inObjects)

    aPos = []
    for p in pPos:
        aPos.append(p.X + inOffset.X)
        aPos.append(p.Y + inOffset.Y)
        aPos.append(p.Z + inOffset.Z)
        aPos.append(1)

    if inDegree == 0:
        outCrv = XSI.ActiveSceneRoot.AddNurbsCurve(aPos, None, inClose, 1)

    else:
        outCrv = XSI.ActiveSceneRoot.AddNurbsCurve(aPos, None, inClose, 3)

    if inConstraint == 1:
        crvGeom = outCrv.ActivePrimitive.Geometry
        for p in crvGeom.Points:
            oCluster = crvGeom.AddCluster(constants.siVertexCluster,
                                          "Pnt" + str(p.Index + 1), p.Index)
            XSI.ApplyOp("ClusterCenter",
                        str(oCluster) + ";" + str(inObjects[p.Index]), 0, 0,
                        None, 2)

    return outCrv
Exemplo n.º 7
0
def GetSubdividedMesh(mesh):
    op = XSI.ApplyOp("MeshSubdivide", mesh)
    subd = op(0).Parent3DObject
    subd.Name = mesh.name + "_Subdivided"
    return subd
Exemplo n.º 8
0
def bbppTransformation_BuildOutputMesh_OnClicked( ):
	oPPG = PPG.Inspected(0)
	oModel = oPPG.Parent3DObject
	oStartCloud = oModel.FindChild("StartCloud")
	oEndCloud = oModel.FindChild("EndCloud")
	
	oStartGrp = oModel.Groups("Start");
	oEndGrp = oModel.Groups("End");
	
	# does geometry exists?
	oStartGeomStatic =  bbppTransformation_StartGeometryStaticExist(oPPG)
	oEndGeomStatic =  bbppTransformation_EndGeometryStaticExist(oPPG)
	
	if not oStartGeomStatic or not oEndGeomStatic:
		XSI.LogMessage("bbppTransformation Geometry Does not exist ---> Can't build Output Mesh!", constants.siError)
		return
	
	if oPPG.AnimatedTransformation.Value:
		oStartGeomAnimated =  bbppTransformation_StartGeometryAnimatedExist(oPPG)
		oEndGeomAnimated =  bbppTransformation_EndGeometryAnimatedExist(oPPG)
		
		if not oStartGeomAnimated or not oEndGeomAnimated:
			XSI.LogMessage("bbppTransformation Geometry Does not exist ---> Can't build Output Mesh!", constants.siError)
			return
	
	# create start geometry point cloud
	if not oStartCloud:
		# create emission node
		oStartCloud = XSI.GetPrim("PointCloud", "StartCloud", oModel)
		oIceTree = XSI.ApplyOp("ICETree", oStartCloud, "siNode", "", "", 0)
		oEmit = XSI.AddICECompoundNode("bbpp Emit From Points", oIceTree)
		XSI.ConnectICENodes(str(oIceTree) + ".port1", str(oEmit) + ".add")
		oGet1 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet1) + ".reference", oStartGeomStatic.FullName)
		XSI.ConnectICENodes(str(oEmit) + ".Emiter", str(oGet1) + ".outname")
		XSI.SetValue(str(oEmit) + ".Color_red", 0.9)
		XSI.SetValue(str(oEmit) + ".Color_green", 0.4)
		XSI.SetValue(str(oEmit) + ".Color_blue", 0.1)
		
		# create blend node
		oBlend = XSI.AddICECompoundNode("bbpp Blend Cloud", oIceTree)
		XSI.AddPortToICENode(str(oIceTree) + ".port1", "siNodePortDataInsertionLocationAfter")
		XSI.ConnectICENodes(str(oIceTree) + ".port2", str(oBlend) + ".Execute")
		oGet2 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet2) + ".reference", str(oStartGrp))
		XSI.ConnectICENodes(str(oBlend) + ".Start_Cloud", str(oGet2) + ".outname")
		oGet3 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet3) + ".reference", str(oEndGrp))
		XSI.ConnectICENodes(str(oBlend) + ".End_Cloud", str(oGet3) + ".outname")
		oGet4 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet4) + ".reference", oEndGeomStatic.FullName)
		XSI.ConnectICENodes(str(oBlend) + ".Target_Geometry", str(oGet4) + ".value")
		
		# connect timer
		oTimer = XSI.AddICECompoundNode("bbpp Transformation Timer", oIceTree)
		XSI.ConnectICENodes(str(oBlend) + ".Blend", str(oTimer) + ".Blend")
		oGet5 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet5) + ".reference", oPPG.StartFrame.FullName)
		oGet6 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet6) + ".reference", oPPG.EndFrame.FullName)
		XSI.ConnectICENodes(str(oTimer) + ".Start_Frame", str(oGet5) + ".value")
		XSI.ConnectICENodes(str(oTimer) + ".End_Frame", str(oGet6) + ".value")

	# create end geometry point cloud
	if not oEndCloud:
		# create emission node
		oEndCloud = XSI.GetPrim("PointCloud", "EndCloud", oModel)
		oIceTree = XSI.ApplyOp("ICETree", oEndCloud, "siNode", "", "", 0)
		oEmit = XSI.AddICECompoundNode("bbpp Emit From Points", oIceTree)
		XSI.ConnectICENodes(str(oIceTree) + ".port1", str(oEmit) + ".add")
		oGet1 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet1) + ".reference", oEndGeomStatic.FullName)
		XSI.ConnectICENodes(str(oEmit) + ".Emiter", str(oGet1) + ".outname")
		XSI.SetValue(str(oEmit) + ".Color_red", 0.1)
		XSI.SetValue(str(oEmit) + ".Color_green", 0.9)
		XSI.SetValue(str(oEmit) + ".Color_blue", 0.4)
		
		# create blend node
		oBlend = XSI.AddICECompoundNode("bbpp Blend Cloud", oIceTree)
		XSI.AddPortToICENode(str(oIceTree) + ".port1", "siNodePortDataInsertionLocationAfter")
		XSI.ConnectICENodes(str(oIceTree) + ".port2", str(oBlend) + ".Execute")
		oGet2 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet2) + ".reference", str(oEndGrp))
		XSI.ConnectICENodes(str(oBlend) + ".Start_Cloud", str(oGet2) + ".outname")
		oGet3 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet3) + ".reference", str(oStartGrp))
		XSI.ConnectICENodes(str(oBlend) + ".End_Cloud", str(oGet3) + ".outname")
		oGet4 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet4) + ".reference", oStartGeomStatic.FullName)
		XSI.ConnectICENodes(str(oBlend) + ".Target_Geometry", str(oGet4) + ".value")
		
		# connect timer
		oTimer = XSI.AddICECompoundNode("bbpp Transformation Timer", oIceTree)
		XSI.ConnectICENodes(str(oBlend) + ".Blend", str(oTimer) + ".Blend")
		oGet5 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet5) + ".reference", oPPG.StartFrame.FullName)
		oGet6 = XSI.AddICENode("GetDataNode", oIceTree)
		XSI.SetValue(str(oGet6) + ".reference", oPPG.EndFrame.FullName)
		XSI.ConnectICENodes(str(oTimer) + ".Start_Frame", str(oGet5) + ".value")
		XSI.ConnectICENodes(str(oTimer) + ".End_Frame", str(oGet6) + ".value")
		XSI.SetValue(str(oTimer) + ".Revert", True)
		
	# create Blob Mesh
	# delete it if already exists
	bbppTransformation_BlobGeometryExist(oPPG)
	XSI.SelectObj(str(oStartCloud) + "," + str(oEndCloud))
	XSI.Create_Polygonizer_Polymesh()
	oBlob = XSI.Selection(0)
	oBlob.Name = "OutputMesh"
	oModel.AddChild(oBlob)
	oBlobOp = oBlob.ActivePrimitive.ConstructionHistory.Find("Polygonizer")
	
	
	# create expression for in-between
	#--------------------------------------
	# detail
	sStartFrame = oPPG.StartFrame.FullName
	sEndFrame = oPPG.EndFrame.FullName
	sTimelapse = sEndFrame+" - "+sStartFrame
	oExpr = "(1 - sin(cond(FC>"+sStartFrame+",cond(Fc<"+sEndFrame+",(Fc - "+sStartFrame+")/("+sTimelapse+"),1),0)*180)) *2 + 2"
	oBlobOp.Parameters("Detail").AddExpression(oExpr)
	
	# blur isofield
	oExpr = "sin(cond(FC>"+sStartFrame+",cond(Fc<"+sEndFrame+",(Fc - "+sStartFrame+")/("+sTimelapse+"),1),0)*180)/2"
	oBlobOp.Parameters("BlurIsofieldStrength").AddExpression(oExpr)
	
	# smooth mesh
	oExpr = "sin(cond(FC>"+sStartFrame+",cond(Fc<"+sEndFrame+",(Fc - "+sStartFrame+")/("+sTimelapse+"),1),0)*180)*4+2"
	oBlobOp.Parameters("SmoothMeshStrength").AddExpression(oExpr)
	
	# isolevel
	oBlobOp.Parameters("Isolevel").Value = 1
Exemplo n.º 9
0
def CreateICETree(cloud, name="ICETree", constructionhistory=0):
	tree = XSI.ApplyOp("ICETree", cloud, "siNode", "", "", constructionhistory)
	ICETree = XSI.Dictionary.GetObject(tree)
	ICETree.Name = name
	return ICETree