BGE Python

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.

GLParticles – Particle System BGE

Postado em Atualizado em

Esses dias estive brincando um pouco com partículas na BGE(Blender Game Engine), e acabei criando um modulo capaz de criar partículas em tempo real usando o modulo bgl. Por enquanto só é possível mudar a posição da emissão partículas de cor sólida, tamanho, tamanho randômico. Mas logo implementarei métodos para mudar acor a direção que emitira as partículas etc… Para testar uma versão simples clique aqui.

Simples Fogo
Simples Fogo
Simples Fogo
Simples Fogo
Simples Fumaça
Simples Fumaça

Navigation Mesh – Pathfinding BGE

Postado em

Essa semana passada estive estudando o algoritmo A * (A Star) Pathfinding, e obtive bons resultados, acabei criando um modulo chamado navmesh. Esse modulo é baseado na Navigation Mesh, para usalo é necessário criar uma malha por todo o senário onde somente os se pode passar. Creio eu que o modulo tem serca de 98% de precisão em achar o caminho mais curto, porem o grande problema é o desempenho. Agora estou pensando em meios para optimizar o desempenho do modulo. Se ficou curioso baixe um simples exemplo clicando aqui. E fiquem a vontade para comentar.

Nav_Mesh
Nav_Mesh

Grade na BGE com o módulo BGL

Postado em Atualizado em

Há diferentes métodos de se criar uma grade na BGE. O mais comum é usar um plano com textura de grade. Mais hoje vou mostrar como fazer uma grade de verdade com o OpenGL integrado da BGE. Bem vamos lá, a baixo temos o script que cria a grade.

################################################
# Script Grid.py
# By Walberti Evaristo
# Info https://criacoesblender.wordpress.com
################################################

import bge
import bgl

# As seguintes variaveis devem ser alteradas para atender melhor as
#nesicidades do usuario

Size = 20 # Tamanho da grade
LineWidth = 1 # Largura da linha
LineSmooth = False # Remove o serrilhado da linha
ShowAxis = True # Mostrar eixos ou nao
Color = [0.051, 0.051, 0.051, 1] # Cor da grade [Vermelho, Verde, Azul, Transparencia]

def drawGrid():
	bgl.glEnable(bgl.GL_BLEND)
	bgl.glBlendFunc(bgl.GL_SRC_ALPHA, bgl.GL_ONE_MINUS_SRC_ALPHA)
	bgl.glDisable(bgl.GL_LIGHTING)

	if LineSmooth:
		bgl.glEnable(bgl.GL_LINE_SMOOTH)

	bgl.glLineWidth(LineWidth)
	bgl.glPushMatrix()

	bgl.glBegin(bgl.GL_LINES)

	for Index in range(-Size, Size + 1):
		bgl.glColor4f(Color[0], Color[1], Color[2], Color[3])

		if ShowAxis:
			if Index == int(Size - Size):
				bgl.glColor4f(1, 0, 0, 1)

		bgl.glVertex3f(Size, Index, 0)
		bgl.glVertex3f(-Size, Index, 0)

		if ShowAxis:
			if Index == int(Size - Size):
				bgl.glColor4f(0, 1, 0, 1)

		bgl.glVertex3f(Index, Size, 0)
		bgl.glVertex3f(Index, -Size, 0)

	bgl.glEnd()

	bgl.glPopMatrix()
	bgl.glEnable(bgl.GL_LIGHTING)
	bgl.glLineWidth(1)
	bgl.glDisable(bgl.GL_LINE_SMOOTH)

def main():
	Scene = bge.logic.getCurrentScene()
	Scene.post_draw.append(drawGrid)

main()

Para que o script funcione basta ligar um sensor “Always” em um controlador “Python” como na imagem a baixo.

Logíca
Logica

Vejam a imagem de como fica a grade.

Grid
Grid

O script tem as seguintes variáveis “Size, LineWidth, LineSmooth, ShowAxis, Color que são as configurações da grade, basta ler os comentários no script. Aqui

Editor Nodal HTML – Funções Basicas

Postado em

Hoje consegui terminar o sistema básico do editor. Como por exemplo adcionar nodes, apargar, ligar, remover ligação, arrastar visão da camera etc… O próximo passo é fazer o sistema que ira compilar os nodes para a pagina .html e implementar mais tags e CSS, e também temos que melhorar os menus.

Editor HTML Nodal
Editor HTML Nodal
Editor HTML Nodal
Editor HTML Nodal

Novo Template: Mouse Look

Postado em Atualizado em

Acabei de fazer mais um template para ajudar os Blenderianos, é o famoso Mouse Look, é aquele sisteminha que controla acamera e o personagem com o mouse. Bem é isso ai quando der vou colocando mais, espero que façam um bom proveito :).

Mouse Look >> Download

MouseLook
MouseLook