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([])
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', [])
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([])
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 = [[]]
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])