Desde que fui apresentando à Game Engine do Blender, uma dúvida que vejo com uma certa freqüência nos fóruns de discussão e de algumas pessoas que me procuram é sobre como criar uma caixa de textos. Porém, essa dúvida não era só deles, era minha também…após já ter criado gigantescos scripts python que faziam esse papel, descobri que a tão árdua caixinha de texto era uma das coisas mais simples de serem implantadas na engine.
Para evitar que muitas entusiastas do blender passem pelo mesma situação que passei, vou ensinar neste artigo, como criá-la.
Definição:
A caixa de textos consiste em um campo que captura os caracteres digitado no teclado, armazenando a sequência e mostrando-a na tela.
Como Fazer:
A primeira coisa a se fazer é criar um texto do game engine. Caso haja alguma dúvida sobre como fazer, visite esse meu outro artigo sobre Textos no Game Engine
.

Nosso objeto texto já tem uma variável com o nome de Text. Vamos criar outra variável do tipo lógico(boolean) com um nome qualquer.
Adicione um sensor do tipo Keyboard e deixe o botão "All Keys" ativado
. No campo "LogToggle", coloque o nome da nossa variável lógica que criamos. No campo "Target", coloque a variável Text.
Prontinho faça o teste. Aperte (P) e digite alguma coisa. Como você pode ver, o que for digitado irá para variável Text enquanto a variável lógica define se a caixa de texto esta ativa ou não: Se o valor for True ela funciona, se for False não.
Veja na figura abaixo como ficaria nossa configuração:

Agora é só dar uma implementada ao seu gosto!
Alguns dias atrás me vi obrigado há modificar um projeto já terminado para alterar um texto errado. Na ocasião, usei o Blender versão 2.44, e, meu projeto tinha sido feito na versão 2.43, na qual havia o suporte a caracteres especiais (ç, é, ó, etc…), se fosse acessado via python. Até ai tudo bem, mas quando gerei o arquivo executável, percebi que as letras comumente usadas em nosso idioma haviam sumido! Verifiquei novamente o arquivo blend e cheguei conclusão que essa nova versão do blender havia perdido esse suporte…
Decidi não ficar esperando uma boa alma entre os desenvolvedores do blender incorporar a suporte no game engine do nosso idioma e procurei uma solução mais rápida, que se resume basicamente em editar a imagem da fonte, substituindo as letras que não vão ser usadas pelas que eu preciso usar.
Neste tutorial simples, irei substituir o caractere #(ao qual não me interessa, pelo menos para mim), pelo ç (que quase sempre preciso usar) utilizando o programa de edição de imagens Gimp. Então quando quiser escrever por exemplo a palavra “esperança” no game engine, a nova grafia usada será “esperan#a”.
Então vamos lá:
1º Passo: Crie uma fonte bitmap para o game engine do blender, mas é necessário que seja uma fonte no formato português. Caso haja alguma dúvida, dê uma olhada neste artigo sobre como criar textos para o Game Engine do BlenderTexto no Game Engine
2º Passo: Abra o arquivo da fonte bitmap no Gimp e com a ferramenta para seleção de regiões retangulares (atalho:R), selecione o caractere especial, no meu caso, eu selecionei o ç:
3º Passo: Copie e cole a seleção. Vai ser criada uma “Seleção Flutuante”, aperte o ícone da folha, como indica a figura, para transformar em uma camada.

4º Passo: Agora com a ferramenta de “Mover camadas e seleções” (atalho: M), mova a caractere até sobrepor (#) o outro caractere que será substituído, certifique-se que esteja bem alinhado com as outras letras.

5º Passo: Agora, na janela de camadas, selecione a camada onde se encontra a letra ç com o botão direito e clique na opção “Merge Down”.
Faça as mesmas operações para as outras letras que você deseja substituir. Agora é só salvar o arquivo (Atalho: Ctrl+S)!
Até a próxima!!!!
No Blender, temos a possibilidade de escrever textos no Game Engine usando uma imagem no formato targa(tga) com a textura da fonte desejada. Criar essa imagem usando um editor de imagens é um pouco complicado, já que existem algumas regrinhas básicas que devem ser seguidas para que não haja problemas (A imagem tem que ser em 8 bits, em tons de cinza etc…). Abaixo um exemplo de como ficaria essa imagem:

Criando sua fonte bitmap
Já existe uma ferramenta chamada ftBlender, que cria essa imagem a partir de uma fonte True Type. Esse programa é executado em linha de texto, através de parâmetros, e a fonte que você deseja converter tem que estar no mesmo diretório do programa.
Para algumas pessoas, que não estão acostumadas a trabalhar em linha de comando, o ftBlender se torna um pouco complicado. Pensando nessas pessoas, desenvolvi uma interface gráfica para esse programa: “Ftblender Interface”. Ele, em conjunto com o ftBlender, consegue criar as texturas sem ter que digitar uma linha de comando. Lembrando que o FtBlender Interface, como o próprio nome já disse, é apenas uma interface, sendo que o mérito da conversão fica todo para o FtBlender.
Abaixo uma imagem do programa em ação:
Ele é totalmente alto explicativo, bastando apenas seguir as instruções para criar sua fonte com sucesso!
O link para download do programa:
Download FtBlender Interface
Inserindo Textos no Game Engine
1 -- Adicione um plano (Plane);

2 – Agora você vai fazer um mapeamento UV deste plano usando a textura que você criou com o Programa “FtBlender”. O mapeamento deverá ficar em cima do primeiro caractere arroba, conforme as imagens abaixo:

O plano deverá ficar assim:

3- Nos botões “Texture Face” (F9), abilite as opções “Tex”, “Text” e “Alpha”:

4 – Agora adicione uma propriedade com o nome de “Text” (com a primeira letra em Maiúscula). Essa propriedade pode ser de qualquer tipo (float, integer, string etc…), ela é que vai definir o texto que será escrito. No nosso caso, criamos a propriedade do tipo String e colocamos o se valor como “Testando”:

Faça o teste (P). Pode acontecer de sua imagem ficar com as letras viradas, como na figura:

Se isso acontecer, você deve selecionar o plano e em “Modo de Edição”, rotacionar a malha de forma que fique na posição correta.

Criamos nosso texto no game engine. Para você modificar esse texto em tempo real, é só criar um logicbrick de forma que modifique o valor da propriedade.