[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