Mostrando postagens com marcador blender. Mostrar todas as postagens
Mostrando postagens com marcador blender. Mostrar todas as postagens

quarta-feira, 16 de julho de 2014

Selecionar camada no blender

Incluir a seguinte função:


def selectLayer(layer): 

    layers = [False] * 20 

    layers[layer - 1] = True 

    bpy.context.scene.layers = layers 

E no código:


selectLayer(20)

 Referência.

sexta-feira, 9 de agosto de 2013

Configurações 3D utilizando Blender

    O objetivo do post é expôr a minha solução para sobrepor duas cenas diferentes em uma aplicação 3D no Blender. Neste caso a camada inferior é um vídeo já em 3d (lado a lado) e a camada superior é um game que deveria ser adaptado em 3D, para que houvesse um casamento entre os efeitos.

Imagem 1: Vídeo 3D lado a lado e game sobreposto

    Após alguns testes com a aplicação direta do plugin do desenvolvedor noeol, sendo este código sendo usado juntamente com o controle add overlay scene do blender obtive um certo sucesso com a cena do game ficando 3d juntamente com o video. No entando, neste game o cursor colorido atira o projétil para "dentro" da tela, e este efeito estava completamente errado na aplicação que fiz.


Imagem 2: Controles para sobrepor a cena 'game' na cena principal
    A solução do problema foi alcançada com a aplicação de viewports, que dividem a cena verticalmente (ou horizontalmente) de modo que cada câmera que filma o game seja exibida em exatamente metade da tela.

Imagem 3: Blocos lógicos para o viewport


    Para o vídeo usado o viewport foi aplicado com uma divisão vertical, e deste modo, o efeito 3D do game foi alcaçado pois cada visão do game foi colocada em cima da metade do vídeo, de modo que quando uma tv compatível fizer a composição das imagens o game também ficará em 3D.



Imagem 4: Cursores duplicados, compatíveis com o vídeo
 
    O código utilizado para configurar os viewports foi obtido aqui, referente a este vídeo.

sexta-feira, 26 de abril de 2013

Blender + pyserial

Algumas considerações sobre utilizar o Blender + pyserial : 

    Utilizando um arduino UNO a porta serial  utilizada no Ubunto está em /dev/ttyACM0, e para se poder escrever nesta porta temos que executar o seguinte comando:

        
     sudo adduser user dialout

    Este comando adiciona o usuário "user" ao grupo dialout, para se poder escrever na serial.
   
    Em seguida deve-se reiniciar a sessão para a alteração ter efeito.

    O script de comunicação serial a linha deve ficar assim:


           G.SerialPort = serial.Serial('/dev/ttyACM0',9600)

sexta-feira, 12 de abril de 2013

Engine selecionada : Blender


    Apesar do Blender não ter sido um dos programas que inicialmente planejei testar acabei por usar ele pois descobri que seu engine é muito eficiente nos aspectos que desejo implementar, além de ser também muito intuitivo.

 
    Digo que o Blender Game Engine é eficiente não somente pelo fato de incorporar elementos que outras engines possuem, mas por incorporar o python com linguagem de scripting ele amplia as possibilidades de aplicação com o uso de módulos incluídos no python.

Tudo isso foi conseguido com uma instalação muito fácil, e com uma interface muito user-friendly. (Instalei a versão 2.66)
 
    Do post anterior, eu gostaria de uma engine que:

    1. Tivesse possibilidade de tocar video
    2. Possibilitasse uma layer com animaçao (game) sobre o uma layer com um video
    3. Colher posição atual do video
    4. Conseguir enviar comandos para porta serial


    Todos esses requisitos foram alcançados pelo Blender, que juntamente com o python, facilitou a o desenvolvimento do teste que descreverei a seguir.

   A técnica para tocar video é criar uma textura a partir do vídeo desejado que é dinamicamente atualizada a cada frame pelo blender. Desta forma o video é executado, porém sem som.

   O som deve ser tocado em paralelo, sincronizado com o video. Abaixo estão algumas imagens do projeto e o código-fonte está anexo e os controles relacionados para se tocar o video.

   Neste projeto também existe um mini-game que roda em cima(literalmente) do video. Para este teste, segui o tutorial deste video do youtube.
 
O código para o video foi adaptado do código neste site, cujos créditos (aparentemente) vão para Dalai Felinto.

Sensores e controladores do minigame


Sensores e controladores do video e envio de sinais
 
    Um ponto crucial deste teste foia  integração com um hardware externo, comunicando-se por uma porta serial.
    Para isso utilizei o módulo pyserial, que permite uma comunicação descomplicada com a porta serial.

    Inicialmente tive problemas para a instalação deste módulo, uma vez que apesar de ele funcionar com o python 3.3 (python que vem com o Blender 2.66) ele é escrito para um python anterior.

    Para contornar esse problema, instalei o pip para windows deste link e segui o tutorial de instalação do pyserial para o pip, e deu tudo certo.

    Só como observação: você deve ter a versão do python 3.3 instalada no seu sistema para poder gerar o pacote do pyscript que você depois colocará na pasta do python para ser utilizada dentro do  Blender.

    Finalmente, utilizei um arduino mega para poder fazer os testes com a comunicação serial. O código para o arduino pode ser baixado aqui. O arquino em teste foi testado com uma shield com leds e reles.
 

Baixe aqui o arquivo .blend para testar o projeto.