示例#1
0
    def __applyActiveMaterial(self):
        if len(base.selectionMgr.selectedObjects) == 0:
            return

        actions = []

        faces = 0

        for obj in base.selectionMgr.selectedObjects:
            if isinstance(obj, Solid):
                # Apply to all faces of solid
                for face in obj.faces:
                    edit = EditFaceMaterial(face)
                    edit.material.material = MaterialPool.ActiveMaterial
                    actions.append(edit)
                    faces += 1
            elif isinstance(obj, SolidFace):
                edit = EditFaceMaterial(obj)
                edit.material.material = MaterialPool.ActiveMaterial
                actions.append(edit)
                faces += 1

        if faces == 0:
            return

        base.actionMgr.performAction(
            "Apply active material to %i face(s)" % faces,
            ActionGroup(actions))
示例#2
0
    def __rotationChanged(self, val):
        actions = []
        for face in self.faces:
            action = EditFaceMaterial(face)
            action.material.setTextureRotation(val)
            actions.append(action)

        base.actionMgr.performAction("Texture rotation", ActionGroup(actions))
示例#3
0
    def __fitTexture(self):
        actions = []

        if self.treatAsOne:
            cloud = self.__getPointCloud(self.faces)
            for face in self.faces:
                action = EditFaceMaterial(face)
                action.material.fitTextureToPointCloud(cloud, 1, 1)
                actions.append(action)
        else:
            for face in self.faces:
                cloud = self.__getPointCloud([face])
                action = EditFaceMaterial(face)
                action.material.fitTextureToPointCloud(cloud, 1, 1)
                actions.append(action)

        base.actionMgr.performAction("Fit texture", ActionGroup(actions))
示例#4
0
    def __yShiftChanged(self, val):
        actions = []
        for face in self.faces:
            action = EditFaceMaterial(face)
            action.material.shift.x = val
            actions.append(action)

        base.actionMgr.performAction("Texture Y shift", ActionGroup(actions))
示例#5
0
    def __xScaleChanged(self, val):
        actions = []
        for face in self.faces:
            action = EditFaceMaterial(face)
            action.material.scale.x = val
            actions.append(action)

        base.actionMgr.performAction("Texture X scale", ActionGroup(actions))
示例#6
0
 def applyActiveMaterial(self):
     objects = self.getObjectsUnderMouse()
     if len(objects) > 0:
         face = objects[0][0]
         if face.material.material != MaterialPool.ActiveMaterial:
             action = EditFaceMaterial(face)
             action.material.material = MaterialPool.ActiveMaterial
             base.actionMgr.performAction("Apply active material", action)
示例#7
0
    def __doAlign(self, mode):
        actions = []

        if self.treatAsOne:
            cloud = self.__getPointCloud(self.faces)
            for face in self.faces:
                action = EditFaceMaterial(face)
                action.material.alignTextureWithPointCloud(cloud, mode)
                actions.append(action)
        else:
            for face in self.faces:
                cloud = self.__getPointCloud([face])
                action = EditFaceMaterial(face)
                action.material.alignTextureWithPointCloud(cloud, mode)
                actions.append(action)

        base.actionMgr.performAction("Align texture %s" % mode.name,
                                     ActionGroup(actions))
示例#8
0
    def __alignFace(self):
        actions = []
        for face in self.faces:
            action = EditFaceMaterial(face)
            action.material.alignTextureToFace(face)
            actions.append(action)
        base.actionMgr.performAction("Align texture to face",
                                     ActionGroup(actions))

        self.updateForSelection()
示例#9
0
    def __changeMaterial(self, filename):
        actions = []

        mat = MaterialPool.getMaterial(filename)
        MaterialPool.setActiveMaterial(mat)
        for face in self.faces:
            action = EditFaceMaterial(face)
            action.material.material = mat
            actions.append(action)

        base.actionMgr.performAction("Change face material",
                                     ActionGroup(actions))

        self.updateMaterialIcon()