Início > Arquivos Blend, Tutoriais > Dividir a tela do jogo (View Port)

Dividir a tela do jogo (View Port)

Nível: Intermediário
Requer conhecimento em: Logic Brick e Text Editor.

Muitos jogos de computador e de console, com modo multiplayer’s (vários jogadores), utilizam o recurso de “view port” para mostrar todos os jogadores na tela. Esse recurso divide a tela em várias partes, sendo que cada parte mostra as imagens de uma determinada câmera.

No game engine, esse recurso pode ser facilmente configurado e usado, bastando para isso apenas algumas linhas de código em python.

Para configurar, primeiramente, você vai precisar de ter pelo menos duas câmeras no jogo(na verdade você pode configurar usando apenas uma, mas seria uma coisa meio sem lógica🙂 ) .
Defina uma câmera principal, para isso selecione-a e aperte o atalho Control+0.

Agora, em cada câmera que vai mostrar um view port, configure o seguinte logicBrick:

Como você pode ver, no sensor “Always”, as reticências para cima (‘ ‘ ‘) , que poucos sabem de sua utilidade está desmarca (mas vamos deixar esse assunto para um próximo artigo🙂 ). Dessa forma o sensor vai executar apenas uma vez.

O script que o controlador Python está chamando está com o seguinte código:

# Importando o modulo GameLogic
import GameLogic
# Importando o modulo Rasterizer
import Rasterizer
# Buscando o controlador que executou o script
controlador = GameLogic.getCurrentController()
# Buscando o objeto que executou o controlador (no caso a nossa camera)
objeto = controlador.getOwner()
# Ativando o viewport da camera, para desativa, troque o valor 1 para 0
objeto.enableViewport(1)
# Buscando a altura em pixel da tela
altura = Rasterizer.getWindowHeight()
# Buscando a largura da tela em pixel
largura = Rasterizer.getWindowWidth()
# Definindo o tamanho do viewport na tela
objeto.setViewport(largura/2, 0,largura, altura)

Se você é um cara que não se dá muito bem com programação e com python e não quer entender muito desse código, não se preocupe muito, a única linha que vai ser necessário configurar é a última:
objeto.setViewport(largura/2, 0,largura, largura)
Vamos mudar um pouco esse código:
objeto.setViewport(x1, y1,x2, y2)
Substitua os valores x1, x2, y1, y2 por valores númericos, eles vão definir o tamanho do viewport:
Exemplo:
objeto.setViewport(0, 0,400, 600)

Agora, para te ajudar a ter uma pequena noção que valores você deverá colocar no código:

Como você pode ver, o game engine considera a tela de seu computador como um plano cartersiano. Para criar o viewport, você vai precisar definir dois pontos, conforme a figura.

Aqui tem um arquivo de exemplo, para estudos.

  1. fevereiro 3, 2008 às 10:37 am

    Muito legal este tutorial, obrigado e parabéns !

    Fiz uns testes aqui e parece funcionar direitinho.
    Eu reparei que se a câmera que estará sobrepondo não tiver um fundo, ela vai mostrar partes da câmera base, funcionando como uma camada mesmo.

    Eu digo isso porque quando li a primeira vez, achei que funcionasse como as viewports do Blender ou do AutoCAD, mas assim dá até para fazer mapas (em vez de usar Scene Overlays …)

    Uma curiosidade, será que em termos de performance é melhor usar este artifício ao invés de SceneOverlays (claro, nos casos em que os dois recursos gerem resultados similares).

    Abraços,
    Dalai

  2. diegorangel
    fevereiro 5, 2008 às 9:31 pm

    Tudo joia Dalai !
    Bem, se você conseguir fazer um efeito similar usando esse recurso ao invés de SceneOverlays, com certeza vai ficar bem mais leve. Quando você cria uma nova cena, ela precisa ser alocada na memória, com todas suas configurações( gravidade, fundo, objetos, etc ). Com o viewport isso não vai acontecer, já que ele vai trabalhar com a mesma cena.

  3. novembro 16, 2008 às 11:08 pm

    Valeu cara eu estava precissando disso deu certinho eu só não tinha entendido que era pra criar 2 arquivos do python mas com o exemplo eu intendi.

    me add: renanwillianraphaelsouza@hotmail.com

  4. diegorangel
    novembro 17, 2008 às 10:17 am

    Valeu Renan ! É bom ser útil😉

  5. Tiago
    setembro 14, 2009 às 1:25 pm

    Olá, Diego! Tudo bem?

    Estou precisando demonstrar um trabalho sobre view-port mapping na faculdade, pode ser qualquer software, funcionalidade, demonstração, desde que tenha relação com view-port em Computação Gráfica.

    A demonstração que você fez seria legal eu apresentar. Você poderia me dizer como eu posso fazer para demonstrar estas linhas de código na aula e fazer alterações e ver o resultado? Ou seja, que engine de qual game eu posso pegar para poder ir alterando em Python aquelas linhas e ver o resultado diferenciado na tela?

    Muito obrigado.

  6. Elias
    outubro 14, 2009 às 11:09 pm

    ACHO QUE TO FAZENDO MERDA…..POis fiz isso ake mas toda hora da errado o outro objeto fica no meiu da tela.o que esta acontecendo???

  7. Vinicius
    novembro 7, 2009 às 5:41 pm

    tava a um tempão procurando isso pra poder jogar futebol e tiro com o meu primo, o de tiro q fiz ficou muito legal mas a tela eu so botava de cima e esse tutorial resolvel meu problema obrigado!!!!

  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: