Logo Raspberry Pi en pixel-art 3d

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.

raspi_pa02

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]

raspi_pa03

10) Lancer le script :

[Text]
[Run Script]

Le traitement se déroule dans la console.

raspi_pa04

11) Visualiser le résultat :

[3d View]

Sans modifications des éléments de la scène :

raspi_pa05

– Premier rendu de test de l’image :

raspi_pa06

Avec modifications de la position de la caméra :

raspi_pa07

Rendu :

raspi_pa08

12) Le fichier .blend :

Original : raspberrypi_logo_pixelart.orig.blend.tar.gz

Modifier : raspberrypi_logo_pixelart.v1.blend.tar.gz

capture020

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *