[Blender] nochwas zum meetup gestern (23.11.12)

Nikolaus Morawitz niko at emptygraphics.com
Sat Nov 24 11:49:12 CET 2012


Hat mich sehr gefreut dass wieder soviele da waren!

Hier ein paar Sachen die ich noch loswerden möchte:

* Den Ablauf trag ich immer auf https://metalab.at/wiki/Blender ein. Das ist aber nur
  ein Vorschlag von mir. Jeder und jede kann sich da dazu eintragen oder einen anderen
  Ablauf vorschlagen.

* Wünsche und Anregungen bitte hier auf der Liste posten. Dazu einfach ein mail an
  blender at lists.metalab.at schicken und es bekommen alle die sich in die Liste
  eingetragen haben.

* Auf http://www.meetup.com/Blender/Vienna-AT/ könnt ihr euch eintragen dass ihr
  kommt (RSVP - répondez s'il vous plaît). Damit wir wissen ob wir einen größeren
  Raum das nächste Mal brauchen. Vielleicht mach ich auch Muffins für alle. Das
  nächste Treffen ist ja das letzte in diesem Jahr und das letzte vor Weihnachten. Da
  wärs schön zu wissen mit wievielen Leuten zu rechnen ist.

* Zu den Blender-Python Kurztipps nochwas: bin mir nicht sicher ob sichs soviel
  gebracht hat, wenn man gar noch nix gemacht hat mit bpy. Da wart ich besser auf den
  Workshop wo ich alles von Anfang an, langsam und genau erklären werd.

* Das nächste Treffen findet am 14.12.2012 um 16 Uhr, wieder im Metalab statt.

* Mich hat gestern noch jemand was bzgl bpy. Ich hab leider deinen Namen
  vergessen. Waren dann doch zuviele Namen auf einmal. Jedenfalls: du wolltest wissen
  wie man ein Mesh (Parabel) hinzufügt und interaktiv die Parameter ändern kann. Das
  geht nicht mit Modal-Operators so wie wir gestern geglaubt haben sondern viel viel
  einfacher. Schau dir mal das operator_mesh_add.py-template (blender 2.64) an:

### CODE START HERE ###

import bpy
import bmesh


def add_box(width, height, depth):
    """
    This function takes inputs and returns vertex and face arrays.
    no actual mesh data creation is done here.
    """

    verts = [(+1.0, +1.0, -1.0),
             (+1.0, -1.0, -1.0),
             (-1.0, -1.0, -1.0),
             (-1.0, +1.0, -1.0),
             (+1.0, +1.0, +1.0),
             (+1.0, -1.0, +1.0),
             (-1.0, -1.0, +1.0),
             (-1.0, +1.0, +1.0),
             ]

    faces = [(0, 1, 2, 3),
             (4, 7, 6, 5),
             (0, 4, 5, 1),
             (1, 5, 6, 2),
             (2, 6, 7, 3),
             (4, 0, 3, 7),
            ]

    # apply size
    for i, v in enumerate(verts):
        verts[i] = v[0] * width, v[1] * depth, v[2] * height

    return verts, faces


from bpy.props import FloatProperty, BoolProperty, FloatVectorProperty


class AddBox(bpy.types.Operator):
    """Add a simple box mesh"""
    bl_idname = "mesh.primitive_box_add"
    bl_label = "Add Box"
    bl_options = {'REGISTER', 'UNDO'}

    width = FloatProperty(
            name="Width",
            description="Box Width",
            min=0.01, max=100.0,
            default=1.0,
            )
    height = FloatProperty(
            name="Height",
            description="Box Height",
            min=0.01, max=100.0,
            default=1.0,
            )
    depth = FloatProperty(
            name="Depth",
            description="Box Depth",
            min=0.01, max=100.0,
            default=1.0,
            )

    # generic transform props
    view_align = BoolProperty(
            name="Align to View",
            default=False,
            )
    location = FloatVectorProperty(
            name="Location",
            subtype='TRANSLATION',
            )
    rotation = FloatVectorProperty(
            name="Rotation",
            subtype='EULER',
            )

    def execute(self, context):

        verts_loc, faces = add_box(self.width,
                                   self.height,
                                   self.depth,
                                   )

        mesh = bpy.data.meshes.new("Box")

        bm = bmesh.new()

        for v_co in verts_loc:
            bm.verts.new(v_co)

        for f_idx in faces:
            bm.faces.new([bm.verts[i] for i in f_idx])

        bm.to_mesh(mesh)
        mesh.update()

        # add the mesh as an object into the scene with this utility module
        from bpy_extras import object_utils
        object_utils.object_data_add(context, mesh, operator=self)

        return {'FINISHED'}


def menu_func(self, context):
    self.layout.operator(AddBox.bl_idname, icon='MESH_CUBE')


def register():
    bpy.utils.register_class(AddBox)
    bpy.types.INFO_MT_mesh_add.append(menu_func)


def unregister():
    bpy.utils.unregister_class(AddBox)
    bpy.types.INFO_MT_mesh_add.remove(menu_func)

if __name__ == "__main__":
    register()

    # test call
    bpy.ops.mesh.primitive_box_add()
  répondez s'il vous plaît

### END ###

Freu mich schon aufs nächste Treffen,
niko



More information about the Blender mailing list