Game Engine

Exemplo – Script Print Screen

Postado em

Possivelmente muitos iniciantes devem ter se perguntado como tirar um print screen na bge(Blender Game Engine)? Pois bem existe uma função do modulo “bge.render” que se chama “makeScreenshot(filename)”. Essa função tira uma print da tela do jogo(via Python é claro). Para demonstrar fiz um simples exemplo, segue o link para download clicando aqui. O script checa se a pasta existe se existe ele salva a imagem da tela, do contrario ele cria a pasta e salva. O script também contem duas variáveis de configurações.


prefix = # Nome do prefixo da imagem a ser salva

folder_name = # Nome da pasta onde as imagens serão salvas

Para que o script funcione basta adicionar um sensor keyboard com a tecla que quiser e ligar o mesmo em um controlador Python em modo de ‘Modulo’ e colocar o nome do script .main exemplo “Screenshot.main”. Veja a imagem a baixo.

Logic Screenshot
Logic Screenshot

A baixo o script completo mais o link para download.

##############################################
# Script Screenshot.py
# By Walberti Evaristo
# Info https://criacoesblender.wordpress.com
# Veja os comentarios para mais configuracoes
##############################################

import bge
import os

prefix = 'Img_' # Prefixo do nome da imagem a salvar
folder_name = 'Screenshots' # Nome da pasta

def main():
	cont = bge.logic.getCurrentController()
	sensor = cont.sensors[0]

	if sensor.positive:
		local_path = bge.logic.expandPath('//')
		path = (local_path + '/' + folder_name)
		os.chdir(local_path)

		if not os.path.exists(path):
			os.makedirs(path)

		file_count = str(len(os.listdir(path)) - 1)
		bge.render.makeScreenshot('//' + folder_name + '/' + prefix + file_count + '.png')

Download

Caracteres Especiais – BGE

Postado em Atualizado em

 Até um tempo atras não era possível exibir textos com caracteres especiais usando o modulo BLF. Mas a gora se você usar a codificação # -*- coding: latin-1 -*- isso sera possível. Para demostar isso fiz um pequeno exemplo para baixar clique aqui.

Blender BGL: Testes

Postado em Atualizado em

O Blender contem um modulo chamado bgl, que serve para a manipulação do OpenGL no Blender, mais esse modulo tem andado esquecido já a um bom tempo pelos usuarios, por esse motivo venho demonstrar algumas funcionalidades do bgl. Com o bgl podemos desenhar Verteces, Triangulos, Polygonos, e Pontos, também podemos carregar imagens em planos desenhados com o mesmo, e tem uma vantagem você só precisa executar apenas uma vez o Script isso evita que ocupe logica de mais na BGE, então chega de bla..bla..bla.

Esse é um simples exemplo de de um triângulo com pontos.

BGL Exemplo 1
BGL Exemplo 1

 

BGL Exemplo 2
BGL Exemplo 2

Exemplos:

BGL_Simples_Triangulo >> Download

BGL_Simples_Esferas_Dinamicas >> Download

Metodos BGE – Part 2

Postado em Atualizado em

Cansado de ficar adicionando muitos sensores de Keyboard para “andar para frente, andar para traz, direita, esquerda, pular” bem pensando nisso decidi fazer um pequeno exemplo que mostra como detectar eventos do teclado via python, o usuário só ira precisar adicionar um Sensor Keyboard, e não varios.

KeyStatus >> Download

Em dúvidas envie nos um comentário, e bom estudos!

BGE 2.5 – Novos Métodos

Postado em Atualizado em

Muitos ainda não entenderam como ficou as modificações das novas funções Python na Blender Game Engine, por esse motivo venho a explicar como esta ficando, pois ainda ira sofrer modificações até a versão 2.6 final.

Antes se usava o modulo GameLogic para usar suas ferramentas, agora devesse importar primeiro o modulo BGE.


import bge

#Depois se usa suas ferramentas.

import GameLogic >> bge.logic

import Rasterizer >> bge.render

import GameKeys >> bge.events

import PhysicsConstraints >> bge.constraints

import VideoTexture >> bge.texture

#Mudou se alguns métodos para os objetos na cena, por exemplo:

Objeto.has_key(‘Prop_Nome’) >> Objeto.get(‘Prop_Nome’)

#Também foram adicionados novos métodos como por exemplo:

#Antes para definir uma para o objeto tinha que se fazer o seguinte:

import GameLogic as GL

Cont = GL.getCurrentController()

Own = Cont.owner

Mesh = Own.meshes[0]

VertexsIndex = Mesh.getVertexArrayLength(0)

for Index in range(VertexsIndex):

Vertex = Mesh.getVertex(0, Index)

Vertex.setRGBA([1, 0, 0, 1])

# Agora só usar o seguinte método:

Objeto.color = [1, 0, 0, 1]

#No caso 1 = Vermehlo

#0 = Verde

#0 = Azul

#1 = Transparência

#Esse é o padrão RGB

#Também temos no modulo bge.logic o método mouse, onde pode se mostrar o mouse ou pegar a posição atual do mouse “X, Y’

#Mostar Mouse

import bge

Bge.logic.mouse.visible = True

#Agora não precisamos usar o atuador Game para salvar o globalDict, basta usar o seuginte método.

import bge

Bge.logic.saveGlobalDict()

#Ou para carregar

Bge.logic.loadGlobalDict()

#Podemos também encerrar o jogo ou iniciar um novo .blend via Python.

import bge

bge.logic.startGame(‘Meujogo.blend’)

#Ou encerrar

bge.logic.endGame()

#Agora o Blender também tem carregamento dinâmico, com isso é possível carregar arquivos externamente e até fazer uma barra de progresso para informar o progresso atual.

#Pode carregar uma “Cena”, “Aimação” ou “Malha” de um arquivo .blend

#Cena >> ‘Scene’

#Malha >>’ Meshs’

#Animação >> ‘Action’

import bge

bge.logic.LibLoad(‘//Arquivo.blend’, ‘Scene’)

#Também podemos excluir um lib carregada.

import bge

if bge.logic.LibList():

for Lib in bge.logic.LibList():

#Deleta todas as Libs

bge.logic.LibFree(Lib)

Bem por hoje é só, logo mostrarei mais funções e métodos. Caso tenha alguma dúvida poste um comentário,  :).

Mais um Template!

Postado em Atualizado em

Mais um template Alteração de Pitch em tempo real, só que dessa vez para o Blender 2.5, junto um botão Slider(Botão deslizante) onde se define o valor do Pitch. o Problema é um devido bug da GE(Acredito eu) quando você abre a primeira vez o template ele não executa o son, você tem que reabrir o arquivo blend sem fechar, também pode ser pelo fato do arquivo de audio que usei no Template ser muito grande.

Slider
Slider