Logo Raspberry Pi en pixel-art 3d.
Distribution de travail : Kubuntu 11.10
1) Répertoire de travail :
[~] ➔ mkdir GRAPH3D
2) Téléchargement de Blender v2.69 :
[~/GRAPH3D] ➔ wget http://ftp.halifax.rwth-aachen.de/blender/release/Blender2.69/blender-2.69-linux-glibc211-i686.tar.bz2
3) Décompression
[~/GRAPH3D] ➔ tar xvfj blender-2.69-linux-glibc211-i686.tar.bz2
4) Lancement de Blender :
[~/GRAPH3D] ➔ cd blender-2.69-linux-glibc211-i686/ [~/GRAPH3D/blender-2.69-linux-glibc211-i686] ➔ ./blender
5) Ouvrir la fenêtre d’édition des images :
– [UV/Image Editor]
– [Image]
– [Open Image]
6) Charger l’image :
Logo : raspberrypi_logo_mini_blanc.png
Logo original : raspberrypi_logo_big.png
– Sélectionner : raspberrypi_logo_mini_blanc.png
– [Open Image]
Le format de l’image est en .png avec une taille de 53×64 px.
Le fond est blanc.
7) Ouvrir la fenêtre de l’éditeur de script :
– [Text Editor]
8) Script de pixel-art :
Script : pixelart.txt
Ouvrir :
pixelart.txt
Ajouter :
import bpy D = bpy.data # Specify your image here, open it inside Blender Image Editor panel image_file = 'raspberrypi_logo_mini_blanc.png' img = D.images[image_file] pixels = list(img.pixels) grouped_list = [pixels[ipx:ipx+4] for ipx in range(0, len(pixels), 4)] # Get width and height of image (in pixel) w = width = img.size[0] h = height = img.size[1] print("------LENGTH------") print( len(img.pixels)//4) print("------PIXEL------") print(pixels) print("---GROUPED-PIXEL---") print(len(grouped_list)) # Create LIST of GRID XY value rowColList=[] for i in range(height): for j in range(width): rowColList.append(i) rowColList.append(j) # SPLIT the LIST of XY origList = rowColList splitList = [origList[i:i+2] for i in range(0,len(origList),2)] for number in range(len(grouped_list)): # separate RGBA into each own variables r = grouped_list[number][0] g = grouped_list[number][1] b = grouped_list[number][2] a = grouped_list[number][3] # separate XY coordinate x=splitList[number][0] y=splitList[number][1] # create cube at location XY bpy.ops.mesh.primitive_cube_add(location=(x-width/2, y-width/2, 0)) selectedObject = bpy.context.selected_objects selectedObject[0].name = 'pixelcube.%s' % number selectedObject[0].scale = 0.45, 0.45, 0.45 # add material with RGB color as sampled for every pixel mat = bpy.data.materials.new('pixelColor') mat.diffuse_color = (r,g,b) mat.diffuse_shader = 'LAMBERT' mat.diffuse_intensity = 1.0 #mat.emit=0.5 bpy.context.object.data.materials.append(mat) print ('PixelCube {number} created at:'.format(number=number), x, y, ', with RGB color', r, g, b)
9) Ouvrir le script :
– [Text]
– [Open Text Block]
– Sélectionner le script : pixelart.txt
– [Open Text Block]
10) Lancer le script :
– [Text]
– [Run Script]
Le traitement se déroule dans la console.
11) Visualiser le résultat :
– [3d View]
Sans modifications des éléments de la scène :
– Premier rendu de test de l’image :
Avec modifications de la position de la caméra :
Rendu :
12) Le fichier .blend :
Original : raspberrypi_logo_pixelart.orig.blend.tar.gz
Modifier : raspberrypi_logo_pixelart.v1.blend.tar.gz
13) Prochaine amélioration :
– Ajouter une lumière ambiante.
– Changer la position de la caméra.
– Faire une animation.
14) Lien :
http://blendersushi.blogspot.fr/2013/03/python-pixel-art-in-blender.html