示例#1
0
    def process(self):
        if self.inputs['vertices1'].is_linked and self.inputs[
                'vertices2'].is_linked:
            prop1_ = self.inputs['vertices1'].sv_get()
            prop1 = Vector_generate(prop1_)
            prop2_ = self.inputs['vertices2'].sv_get()
            prop2 = Vector_generate(prop2_)

        elif self.inputs['matrix1'].is_linked and self.inputs[
                'matrix2'].is_linked:
            propa = self.inputs['matrix1'].sv_get()
            prop1 = Matrix_location(propa)
            propb = self.inputs['matrix2'].sv_get()
            prop2 = Matrix_location(propb)
        else:
            prop1, prop2 = [], []

        if prop1 and prop2:
            if self.outputs['distances'].is_linked:
                # print ('distances input', str(prop1), str(prop2))
                if self.Cross_dist:
                    output = self.calcM(prop1, prop2)
                else:
                    output = self.calcV(prop1, prop2)
                self.outputs['distances'].sv_set(output)

                # print ('distances out' , str(output))
        else:
            self.outputs['distances'].sv_set([])
示例#2
0
    def process(self):
        if self.inputs['vertices1'].is_linked and self.inputs[
                'vertices2'].is_linked:
            prop1_ = SvGetSocketAnyType(self, self.inputs['vertices1'])
            prop1 = Vector_generate(prop1_)
            prop2_ = SvGetSocketAnyType(self, self.inputs['vertices2'])
            prop2 = Vector_generate(prop2_)

        elif self.inputs['matrix1'].is_linked and self.inputs[
                'matrix2'].is_linked:
            propa = SvGetSocketAnyType(self, self.inputs['matrix1'])
            prop1 = Matrix_location(Matrix_generate(propa))
            propb = SvGetSocketAnyType(self, self.inputs['matrix2'])
            prop2 = Matrix_location(Matrix_generate(propb))
        else:
            prop1, prop2 = [], []

        if prop1 and prop2:
            if self.outputs['distances'].is_linked:
                #print ('distances input', str(prop1), str(prop2))
                if self.Cross_dist:
                    output = self.calcM(prop1, prop2)
                else:
                    output = self.calcV(prop1, prop2)
                SvSetSocketAnyType(self, 'distances', output)

                #print ('distances out' , str(output))
        else:
            SvSetSocketAnyType(self, 'distances', [])
示例#3
0
    def process(self):
        if not self.outputs['distances'].is_linked:
            return
        inputs = self.inputs
        if inputs['vertices1'].is_linked and inputs['vertices2'].is_linked:
            prop1_ = self.inputs['vertices1'].sv_get()
            prop1 = Vector_generate(prop1_)
            if inputs['matrix1'].is_linked:
                m = inputs['matrix1'].sv_get(deepcopy=False, default=[Matrix()])
                verts, matrix = list_match_func[self.list_match_global]([prop1, m])
                prop1 = [[mx @ v for v in vs] for mx, vs in zip(matrix, verts)]

            prop2_ = self.inputs['vertices2'].sv_get()
            prop2 = Vector_generate(prop2_)
            if inputs['matrix2'].is_linked:
                m = inputs['matrix2'].sv_get(deepcopy=False, default=[Matrix()])
                verts, matrix = list_match_func[self.list_match_global]([prop2, m])
                prop2 = [[mx @ v for v in vs] for mx, vs in zip(matrix, verts)]

        elif inputs['matrix1'].is_linked and inputs['matrix2'].is_linked:
            propa = self.inputs['matrix1'].sv_get()
            prop1 = Matrix_location(propa)
            propb = self.inputs['matrix2'].sv_get()
            prop2 = Matrix_location(propb)
        else:
            prop1, prop2 = [], []

        if prop1 and prop2:
            if self.Cross_dist:
                output = self.calcM(prop1, prop2)
            else:
                output = self.calc_vectors_distance(prop1, prop2)
            self.outputs['distances'].sv_set(output)
        else:
            self.outputs['distances'].sv_set([])
示例#4
0
    def process(self):
        if 'Matrix' in self.inputs and self.inputs['Matrix'].is_linked:
            matrixes_ = SvGetSocketAnyType(self, self.inputs['Matrix'])
            matrixes = Matrix_generate(matrixes_)

            if 'Location' in self.outputs and self.outputs[
                    'Location'].is_linked:
                locs = Matrix_location(matrixes, list=True)
                SvSetSocketAnyType(self, 'Location', locs)

            if 'Scale' in self.outputs and self.outputs['Scale'].is_linked:
                locs = Matrix_scale(matrixes, list=True)
                SvSetSocketAnyType(self, 'Scale', locs)

            if ('Rotation' in self.outputs and self.outputs['Rotation'].is_linked) \
               or ('Angle' in self.outputs and self.outputs['Angle'].is_linked):

                locs = Matrix_rotation(matrixes, list=True)
                rots = []
                angles = []
                for lists in locs:
                    rots.append([pair[0] for pair in lists])
                    for pair in lists:
                        angles.append(degrees(pair[1]))
                SvSetSocketAnyType(self, 'Rotation', rots)
                SvSetSocketAnyType(self, 'Angle', [angles])
        else:
            matrixes = [[]]
示例#5
0
 def process(self):
     L, S, R, A = self.outputs
     M = self.inputs[0]
     if M.is_linked:
         matrixes = M.sv_get()
         if L.is_linked:
             locs = Matrix_location(matrixes, list=True)
             L.sv_set(locs)
         if S.is_linked:
             locs = Matrix_scale(matrixes, list=True)
             S.sv_set(locs)
         if R.is_linked or A.is_linked:
             locs = Matrix_rotation(matrixes, list=True)
             rots, angles = [], []
             for lists in locs:
                 rots.append([pair[0] for pair in lists])
                 for pair in lists:
                     angles.append(degrees(pair[1]))
             R.sv_set(rots)
             A.sv_set([angles])