Objet template pour le workshop (voir gallerie), rassemblant plusieurs difficultés:
- jonctions entre géométries différentes
- utilisation de modifiers
- duplication d'objets
- travail sur des objects creux
Voir http://polymorph.cool/wp-content/uploads/stupid-and-difficult-object.zip pour le fichier blender.
Démo animation: http://wiki.frankiezafe.org/index.php?title=Glitch_3D#bizarros_priants
Pour lancer blender à partir du terminal sur mac osx:
- aller dans les apllications
- trouver blender
- cliquer droit et choisir: "Afficher le contenu du paquet"
- Rentrer dans le dossier "Content/MacOS"
- Cliquer droit sur "blender" et choisir "Ouvrir avec terminal"
Documentation de l'API python de blender:
Materials:
Fluids:
Notes
source: http://piratepad.be/p/blender-modelling
Retrouver tous les raccourcis claviers de blender:
https://duckduckgo.com/?q=blender+cheat+sheet&t=lm&ia=cheatsheet&iax=1
demandes
- tee de golf et la balle
- verre à cocktail avec goutte
- plante avec pot
- monture de lunettes
- animation de texte 2D < outils d'animation
- importation de scan
- game VR -> threejs
- cnc > pieds de meubles
- bouteille klein
- python programming
painting
pour travailler avec le paint mode de blender:
- créer un dépliage UV pour l'objet
- créer une nouvelle image de 102x1024 dans l'image editor
- ajouter un material à l'objet (de préférence SHADELESS)
- ajouter une texture de type image au material
- lier l'image créée à cette texture
- passer en mode de rendu "material" dans la vue 3D
- passer en mode d'édtion "TEXTURE PAINT"
/// example 1, duplication d'objets
import bpy
for z in range( 0,1 ):
for y in range( 0,1 ):
for x in range( 0,10 ):
bpy.ops.mesh.primitive_cube_add(view_align=False, enter_editmode=False,
location=( x * 3, y * 3, z * 3 ), layers=(False, False, False, False,
False, False, False, False, False, False, False, True, False, False,
False, False, False, False, False, False))
/// example 2, duplication d'objets avec décallage une ligne sur 2
import bpy
for z in range( 0,1 ):
for y in range( 0,10 ):
for x in range( 0,10 ):
cx = x * 3
if ( y / 2 ) == round( y / 2 ):
cx = cx + 1.5
bpy.ops.mesh.primitive_cube_add(view_align=False, enter_editmode=False,
location=( cx, y * 3, z * 3 ), layers=(False, False, False, False,
False, False, False, False, False, False, False, True, False, False,
False, False, False, False, False, False))
// example 3, duplication d'objets avec positionnement aléatoire
import bpy
import mathutils
for z in range( 0,1 ):
for y in range( 0,10 ):
for x in range( 0,10 ):
cx = x * 3 + (( mathutils.noise.random() - 0.5 ) * 2 )
cy = y * 3 + (( mathutils.noise.random() - 0.5 ) * 2 )
cz = z * 3 + (( mathutils.noise.random() - 0.5 ) * 2 )
rx = (( mathutils.noise.random() - 0.5 ) * 2 ) * 180
ry = (( mathutils.noise.random() - 0.5 ) * 2 ) * 180
rz = (( mathutils.noise.random() - 0.5 ) * 2 ) * 180
r = 1 + mathutils.noise.random() * 2.5
bpy.ops.mesh.primitive_cube_add( radius=r, view_align=False,
enter_editmode=False, rotation=( rx, ry, rz), location=( cx, cy, cz ),
layers=(False, False, False, False, False, False, False, False, False,
False, False, True, False, False, False, False, False, False, False,
False))
// example 4 - with spheres
import bpy
import mathutils
for z in range( 0,1 ):
for y in range( 0,10 ):
for x in range( 0,10 ):
cx = x * 3 + (( mathutils.noise.random() - 0.5 ) * 2 )
cy = y * 3 + (( mathutils.noise.random() - 0.5 ) * 2 )
cz = z * 3 + (( mathutils.noise.random() - 0.5 ) * 2 )
rx = (( mathutils.noise.random() - 0.5 ) * 2 ) * 180
ry = (( mathutils.noise.random() - 0.5 ) * 2 ) * 180
rz = (( mathutils.noise.random() - 0.5 ) * 2 ) * 180
r = 1 + mathutils.noise.random() * 2.5
#bpy.ops.mesh.primitive_cube_add( radius=r, view_align=False,
enter_editmode=False, rotation=( rx, ry, rz), location=( cx, cy, cz ),
layers=(False, False, False, False, False, False, False, False, False,
False, False, True, False, False, False, False, False, False, False,
False))
bpy.ops.mesh.primitive_uv_sphere_add( size=r, segments=10,
ring_count=5,view_align=False, enter_editmode=False, rotation=( rx, ry,
rz), location=( cx, cy, cz ), layers=(False, False, False, False, False,
False, False, False, False, False, False, True, False, False, False,
False, False, False, False, False))
// example 5 - randomise mesh
import bpy
import mathutils
ob = bpy.context.scene.objects.active
#print( ob )
#bpy.ops.object.mode_set(mode='EDIT')
#print( ob.data.vertices )
for v in ob.data.vertices:
print( v.co )
v.co.z = v.co.z + mathutils.noise.random() * 0.1
//example 6 - randomise mesh
import bpy
import mathutils
ob = bpy.context.scene.objects.active
#print( ob )
#bpy.ops.object.mode_set(mode='EDIT')
#print( ob.data.vertices )
for v in ob.data.vertices:
print( v.co )
pusher = mathutils.Vector( v.normal )
pusher *= mathutils.noise.random() * 0.2
v.co = v.co + pusher