예제 #1
0
    def deformWithMapping(self):
        print('DEFORM WITH MAPPING (UPLIFTING)')
        c = bpy.context
        owner_mesh = self.id_data
        try:
            map_to = c.scene.objects[self.map_to_mesh]
            apply_on_mesh = owner_mesh

            if (self.apply_on_duplicate):
                try:
                    apply_on_mesh = c.scene.objects[
                        "%s-%s-%s" %
                        (owner_mesh.name, self.mapping_name, map_to.name)]
                except KeyError:
                    apply_on_mesh = getDuplicatedObject(
                        c,
                        owner_mesh,
                        meshname="%s-%s-%s" %
                        (owner_mesh.name, self.mapping_name, map_to.name))

            mapped_positions = deformWithMapping(c, owner_mesh, map_to,
                                                 apply_on_mesh,
                                                 self.mapped_points)
            return apply_on_mesh, mapped_positions

        except KeyError:
            print('MAP TO MESH NEEDS TO BE SET BEFORE CONSTRUCTING A MAPPING')
            raise
예제 #2
0
    def getSpectralShape(self,
                         context,
                         mesh,
                         eigen_k=5,
                         need_A=False,
                         eigenvectors=False):
        try:
            dup_mesh = context.scene.objects["%s-spectral-shape" % (mesh.name)]
        except KeyError:
            dup_mesh = getDuplicatedObject(context,
                                           mesh,
                                           meshname="%s-spectral-shape" %
                                           (mesh.name))
            bpy.ops.object.select_all(action="DESELECT")
            context.scene.objects.active = mesh
            mesh.select = True

        if (need_A):
            vpos, A = doLowpassFiltering(context,
                                         mesh,
                                         eigen_k,
                                         a_matrix=need_A)
            setMeshVPOS(dup_mesh, vpos)
            return dup_mesh, vpos, A
        if (eigenvectors):
            vpos, UT = doLowpassFiltering(context,
                                          mesh,
                                          eigen_k,
                                          eigenvectors=True)
            setMeshVPOS(dup_mesh, vpos)
            return dup_mesh, vpos, UT
        else:
            vpos = doLowpassFiltering(context, mesh, eigen_k, a_matrix=need_A)
            setMeshVPOS(dup_mesh, vpos)
            return dup_mesh, vpos
예제 #3
0
 def applySpectralShape(self, context, mesh, eigen_k=5):
     try:
         dup_mesh = context.scene.objects["%s-spectral-shape"%(mesh.name)];
     except KeyError:
         dup_mesh = getDuplicatedObject(context, mesh, meshname="%s-spectral-shape"%(mesh.name));
         bpy.ops.object.select_all(action="DESELECT");
         context.scene.objects.active = mesh;
         mesh.select = True;
         
     vpos = doLowpassFiltering(context, mesh, eigen_k);
     setMeshVPOS(dup_mesh, vpos);