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

Leave a Reply

You must be logged in to post a comment.