Blender PT

Blender 3D, Modelação, Renderização, Arte tudo em Português

Você não está autenticado.

#1 2013-11-03 16:29:29

jnascimento
Membro
De: Coimbra
Registado: 2013-02-24
Mensagens: 327

Bandeira de Portugal (concurso Gorila)

No decorrer do mês de Junho, resolvi tentar a minha sorte num concurso que a Gorila fez no Facebook, onde seria necessário criar uma bandeira de Portugal com alusão à marca Gorila.
Embora gostasse de ganhar, o meu objectivo principal foi ficar a conheçer um pouco mais o API do Blender.

O resultado final foi:

(IMAGEM 1)
5m09.jpg


Embora não tenha ganho (lightning não é o meu forte), achei que algúem poderia usar o que aprendi. Sendo que aqui fica uma pequena explicação do processo:


1. Mastigar muitas pastilhas gorila e fazer a digitalização dos invólucros. (IMAGEM 2)
2. Criar um modelo Hightpoly de uma pastilha. (IMAGEM 2 - baixo centro)
3. Criar um modelo lowpoly e gerar as normais usando a diferença entre ambos os modelos. (IMAGEM 2 - baixo direita e centro direira)
4. Criar uma imagem usando a bandadeira portuguesa como referência. Em que cada pixel corresponde a uma pastilha(objecto). (IMAGEM 3)
5. Criar um script em python que leia cada pixel da imagem e dependendo da cor em RGB, faça uma cópia do modelo que tem uma textura correspondente à cor.


(IMAGEM 2)
p7yt.png


(IMAGEM 3)
nwna.png




=============== CÓDIGO PYTHON ===============


import bpy
import random

D = bpy.data
image_name = 'flag_small_55_big.png'


cube_object_red = D.objects["gum_morango_low"]
cube_object_blue = D.objects["gum_maracuja_low"]
cube_object_green = D.objects["gum_menta_low"]
cubo_object_darkyellow = D.objects["gum_tropicool_low"]
cubo_object_yellow = D.objects["gum_banana_low"]
cubo_object_vintage = D.objects["gum_coke_limon_low"]


image_object = D.images[image_name]
imgWid = image_object.size[0]
imgHei = image_object.size[1]

pix = image_object.pixels
cubo_w = cube_object_red.dimensions[0]
cubo_h = cube_object_red.dimensions[1]


startPosX = int((imgWid*cubo_w) /2)
startPosY = int((imgHei*cubo_h) /2)

for h in range(0,imgHei):
    for w in range(0,imgWid):

     
        r = int(pix[4 * (w + (imgWid * h)) + 0]*255)
        g = int(pix[4 * (w + (imgWid * h)) + 1]*255)
        b = int(pix[4 * (w + (imgWid * h)) + 2]*255)
       
        if r >= 200 and g >= 200 and b >= 200:       
            continue
       
        objName = "tempCubos_"+str(w)+"_"+str(h)+"__"+str(r)+"_"+str(g)+"_"+str(b)
        # Create new mesh
        mesh = bpy.data.meshes.new(objName)
     
        # Create new object associated with the mesh
        ob_new = bpy.data.objects.new(objName, mesh)

       
       
        if b > r and b > g:
            ob_new.data = cube_object_blue.data.copy()
            ob_new.scale = cube_object_blue.scale   
            ob_new.location.z = cube_object_blue.location.z   
        elif r >= 239 and g >= 200  and r < 243 and g < 215:             
            ob_new.data = cubo_object_yellow.data.copy()
            ob_new.scale = cubo_object_yellow.scale   
            ob_new.location.z = cubo_object_yellow.location.z                 
        elif r >= 190 and g >= 120 and r < 200 and g < 130:   
            ob_new.data = cubo_object_darkyellow.data.copy()
            ob_new.scale = cubo_object_darkyellow.scale   
            ob_new.location.z = cubo_object_darkyellow.location.z
        elif r >= 140 and r < 150 and g >= 10 and g < 15:
            ob_new.data = cubo_object_vintage.data.copy()
            ob_new.scale = cubo_object_vintage.scale   
            ob_new.location.z = cubo_object_vintage.location.z                                     
        elif r > g and r > b:
            ob_new.data = cube_object_red.data.copy()
            ob_new.scale = cube_object_red.scale   
            ob_new.location.z = cube_object_red.location.z
        elif g > r and g > b:
            ob_new.data = cube_object_green.data.copy()
            ob_new.scale = cube_object_green.scale   
            ob_new.location.z = cube_object_green.location.z       

           
        ob_new.location.x = (w * cubo_w) - startPosX
        ob_new.location.y = (h * cubo_h) - startPosY   
        bpy.data.scenes["Scene"].objects.link(ob_new)


NOTA: Podem usar o script para o que quiserem, só relembro que a marca Gorila detém todos os direitos sobre a sua imagem e não deve ser usada para quaisquer fins sem o conhecimento da mesma.


Atualmente a brincar com: Blender, Substance Designer & Painter, UE4

Offline

#2 2013-11-04 10:45:36

Utopia780
Membro
De: Lisboa
Registado: 2013-02-24
Mensagens: 814
Website

Re: Bandeira de Portugal (concurso Gorila)

Acho que está uma ideia muito boa mas falta-lhe um pouco de caos. Está tudo muito alinhado e isso quebra um pouco o interesse da imagem.
Provavelmente uma distancia focal mais curta também lhe daria um outro sabor.. para deformar um pouco a imagem.
Também acho que podias ter feito alguma pós-produção, principalmente ao nível da cor.

Isso de usar um script para colocar as pastilhas com base nos pixeis da imagem da bandeira foi genial. Gostava de aprender algum python para fazer brincadeiras dessas mas a programação desmotiva-me rapidamente..

Offline

#3 2013-11-04 11:00:07

jnascimento
Membro
De: Coimbra
Registado: 2013-02-24
Mensagens: 327

Re: Bandeira de Portugal (concurso Gorila)

Obrigado pelo comentário Utopia780, sou mesmo uma nódoa na parte de composição smile, gosto muito mais da modelação e texturas.

Não tinha mencionado antes mas se alguêm quiser uma breve explicação do script é só pedir. Se quiserem, posso também disponibilizar o ficheiro blend mas com as texturas ligeiramente alteradas (por uma questão de direitos de autor).


Atualmente a brincar com: Blender, Substance Designer & Painter, UE4

Offline

#4 2013-11-04 11:03:13

renatogsousa
Membro
De: Vila do Conde
Registado: 2013-02-24
Mensagens: 263
Website

Re: Bandeira de Portugal (concurso Gorila)

Muito bem. quanto a mim o principal problema é não se perceber a alusão à marca Gorila, a não ser pelo texto do canto inferior direito. Mesmo fazendo zoom na imagem, não dá para perceber que são invólucros das pastilhas, o que tira valor ao trabalho e à ideia que tiveste.

Utopia, quando re-abrir este curso faz. Para além de didático os formadores são bastante divertidos: https://www.coursera.org/course/interactivepython
entretanto, podes ir fazendo este e depois sim, se a programação te continuar a desmotivar, avisa smile http://www.codecademy.com/pt/tracks/python

Última edição por renatogsousa (2013-11-04 11:03:33)

Offline

#5 2013-11-04 15:04:45

Tintasmen
Membro
De: Coimbra
Registado: 2013-02-28
Mensagens: 437

Re: Bandeira de Portugal (concurso Gorila)

A ideia em si é brilhante é preciso muito lógica e raciocinio para incorporar as várias cores de pastilhas nos sitios certos jnascimento. A primeira vez que vi a imagem se não fosse as letras a dizer gorila em baixo nem sabia que era, deverias ou ter colocado maior as pastilhas ou deixa-las mais identificadas.


Com o Blender até fa fume!

Offline

Rodapé do site