예제 #1
0
    def process(self):
        if not (self.inputs['vertices'].is_linked):
            return

        has_matrices = self.inputs['matrix'].is_linked
        mverts, mradii, mtwist, mmatrices = self.get_geometry_from_sockets(has_matrices)

        out_objects = []
        for obj_index, Verts in enumerate(mverts):
            if not Verts:
                continue

            matrix = mmatrices[obj_index] if has_matrices else []

            if self.selected_mode == 'Multi':
                curve_args = obj_index, self, Verts, matrix, mradii[obj_index], mtwist[obj_index]
                new_obj = make_curve_geometry(*curve_args)
                out_objects.append(new_obj)
            else:
                if matrix:
                    mverts = [multiply_vectors(*mv) for mv in zip(mmatrices, mverts)]
                new_obj = make_curve_geometry(0, self, mverts, [], mradii, mtwist)
                out_objects.append(new_obj)
                break

        # warning: uses possibly undefined index..
        remove_non_updated_objects(self, obj_index, kind='CURVE')
        self.set_corresponding_materials()

        self.outputs['object'].sv_set(out_objects)
예제 #2
0
    def process(self):
        if not (self.inputs['vertices'].is_linked):
            return

        has_matrices = self.inputs['matrix'].is_linked
        mverts, mradii, mtwist, mmatrices = self.get_geometry_from_sockets(
            has_matrices)

        out_objects = []
        for obj_index, Verts in enumerate(mverts):
            if not Verts:
                continue

            matrix = mmatrices[obj_index] if has_matrices else []

            if self.selected_mode == 'Multi':
                curve_args = obj_index, self, Verts, matrix, mradii[
                    obj_index], mtwist[obj_index]
                new_obj = make_curve_geometry(*curve_args)
                out_objects.append(new_obj)
            else:
                if matrix:
                    mverts = [
                        multiply_vectors(*mv) for mv in zip(mmatrices, mverts)
                    ]
                new_obj = make_curve_geometry(0, self, mverts, [], mradii,
                                              mtwist)
                out_objects.append(new_obj)
                break

        # warning: uses possibly undefined index..
        remove_non_updated_objects(self, obj_index, kind='CURVE')
        self.set_corresponding_materials()

        self.outputs['object'].sv_set(out_objects)
예제 #3
0
    def process(self):
        if not self.activate:
            return

        if not self.inputs['vertices'].is_linked:
            return

        has_matrices = self.inputs['matrix'].is_linked
        mverts, mradii, mtwist, mmatrices = self.get_geometry_from_sockets(
            has_matrices)

        with self.sv_throttle_tree_update():
            out_objects = []
            for obj_index, Verts in enumerate(mverts):
                if len(Verts) == 0:
                    continue

                matrix = mmatrices[obj_index] if has_matrices else []

                if self.selected_mode == 'Multi':
                    curve_args = obj_index, self, Verts, matrix, mradii[
                        obj_index], mtwist[obj_index]
                    new_obj = make_curve_geometry(*curve_args)
                    out_objects.append(new_obj)
                else:
                    if matrix:
                        mverts = [
                            multiply_vectors(*mv)
                            for mv in zip(mmatrices, mverts)
                        ]
                    new_obj = make_curve_geometry(0, self, mverts, [], mradii,
                                                  mtwist)
                    out_objects.append(new_obj)
                    break

            last_index = len(mverts) - 1
            if self.selected_mode == 'Single':
                last_index = 0

            self.remove_non_updated_objects(last_index)
            self.set_corresponding_materials()

            if self.grouping:
                self.to_collection(self.get_children())

            self.outputs['object'].sv_set(out_objects)