Iluminação e Câmeras Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)
Iluminação A iluminação de uma cena pode mudar a forma como a mesma é percebida Exemplos: Uma luz brilhante, levemente amarelada faz a cena parecer um dia quente e ensolarado A mesma cena com uma iluminação de cor azul e de baixa intensidade vai criar um clima sombrio A cor das luzes deverá interagir com as cores do céu
Iluminação Quando se quer um efeito realístico e/ou dramático a utilização da iluminação é fundamental Unity: as luzes não são objetos, mas componentes Quando você adiciona uma iluminação à cena, você está adicionando um objeto com um componente de luz Esse componente pode ser de vários tipos
Ponto de Luz Tipo de iluminação básico Pense nele como uma lâmpada a qual emite luz em todas direções, a partir de um ponto central Para adicionar um: GameObject > Light > Point Light
Ponto de Luz Propriedade Type Baking Range Color Intensity Bounce Intensity Shadow Type Cookie Draw Halo Outras... Breve Descrição Tipo da iluminação, nesse caso Point. Pode ser alterado Como luz e sombra serão adicionados em texturas e objetos Distância alcançada pelo brilho da luz Cor da luz. A cor é aditiva: luz vermelha em um objeto azul à roxo O quão brilhante será a luz Unity 5 suporta a iluminação global intensidade após a reflexão Como será calculada a sombra para esta fonte de luz Define um cubemap e como será o seu brilho através do mesmo Determina se um halo brilhante aparecerá em torno da luz Flare, Render Mode (importância) e Culling Mask (camadas afetadas)
Ponto de Luz Experimento: 1. Crie uma nova cena e remova a luz direcional 2. Adicione um plano - GameObject > 3D Object > Plane 1. Posição = (0, 0.5, 0) e Rotação = (270, 0, 0) 3. Adicione dois cubos em - ( 1.5, 1, 5) e (1.5, 1, 5) 4. Adicione a luz - GameObject > Light > Point Light 1. Posição = (0, 1, 7) 5. Altere o tipo de sombras para Hard 6. Experimente ver em torno e alterar as propriedades
Ponto de Luz Resultado do experimento:
Foco de Luz (Spotlight) Semelhante a iluminação de uma lanterna Inicia em um ponto central e irradia na forma de cone Adicionado em: GameObject > Create Other > Spotlight Uma propriedade adicional: Spot Angle determina o raio do cone da luz emitida
Foco de Luz (Spotlight) Experimento: 1. Use o resultado do experimento anterior 2. Duplique a cena criada - Edit > Duplicate 3. Altere o tipo e o nome da luz para Spotlight 4. Posicione em (0, 1, 13) 5. Experimente alterar as propriedades e confira o efeito proporcionado
Iluminação Direcional Último tipo de iluminação Já vem por padrão ao criar uma nova cena Ou pode ser adicionada em: GameObject > Light > DirectionalLight Se assemelha a forma da iluminação de um Spotlight, com a diferença que ilumina toda a cena Pode pensar uma luz direcional como o sol
Iluminação Direcional Uma propriedade adicional: Cookie Size tamanho e quantas vezes o mesmo é repetido na cena Experimento: 1. Duplique a cena em que usou Spotlights 2. Altere o tipo da luz para direcional e posição - (75, 0, 0) 3. Perceba como a luz interage com os objetos em cena 4. Altere a posição para (50, 50, 50) e veja as mudanças 5. Experimente alterar as propriedades da luz direcional, conferindo os resultados
Outros Tipos de Iluminação 1. Luz em área (area light) Característica do processo de lightmap baking Produzem efeitos muito especializados e pouco usuais 2. Materiais que emitem luz (emissive materials) Alguns materiais podem ter o efeito de emitir luz Útil em casos específicos ex.: tela de TV e luzes de indicação (em um painel)
Iluminação e Objetos Como iluminação é um componente, qualquer objeto em uma cena pode ser a luz Para adicionar luz a um objeto 1. Selecione um objeto 2. Na visão de inspeção clique em Add Component 3. Selecione Rendering, e então Light O objeto não bloqueia a luz, mesmo que esteja nele. Da mesma forma, este não fica brilhante
Halos São círculos brilhantes que aparecem ao redor da luz em condições nebulosas ou com névoa Este efeito acontece se a opção Draw Halo estiver selecionada
Halos
Halos Propriedades aplicadas a todos os halos da cena Acessadas em - Window > Lighting > Scene
Halos Halo Strength - determina o quão grande o halo irá aparecer com base na área da luz Exemplo: se a área (range) da luz for 10 E essa propriedade for definida como 1, o halo irá se estender por todas as 10 unidades Se essa propriedade for definida como 0,5, o halo Irá se estender por 5 unidades Halo Texture especifica uma forma diferente para a exibição do halo
Cookies Imaginemos uma mascara, a qual deixa passar parte da luz, mas retém uma outra parte Cookies são texturas especiais que você pode adicionar a uma fonte de luz Texturas preto e branco que definem como a luz irradia Se diferenciam um pouco para cada tipo de iluminação Spotlights não repetem o cookie, mas a luz direcional sim Para pontos de luz, o cookie precisa ser adicionado em um cubemap (a mesma textura em cada face de um cubo)
Cookies
Cookies Experimento: 1. Crie um novo projeto ou cena e adicione um plano 2. Posicione o mesmo em (0, 1, 0), com rotação (270, 0, 0) 3. Adicione um Spotlight à câmera principal, selecionando a mesma e então Component > Rendering > Light 4. Defina do Range em 18, o Spot Angle para 40 e a Intesity para 3 5. Busque por uma textura como biohazard.png 6. Adicione esse textura ao Cookie, selecionando a opção Alpha fromgrayscale 7. Experimente diferentes áreas e intensidades de luz
Cookies
Câmeras Representam a visão do jogador no mundo criado para o jogo
Câmeras Todos os jogos têm pelo menos uma câmera Ao criar uma nova cena é criada uma por padrão Main Camera acessível na visão de hierarquia As propriedades de uma câmera definem como ele deverá se comportar
Propriedades de Câmera PROPRIEDADE Clear Flags Background Culling Mask Projection Field of View Clipping Planes View Port Rect DESCRIÇÃO O Que será mostrado em áreas sem objetos do jogo Define a cor de fundo se nenhum skybox for definido Define quais as camadas visíveis para a câmera Determina como a câmera verá o mundo. As opções são: Perspective (3D) e Orthographic (ignora a profundidade) Define o campo de visão da câmera Define a distância em que os objetos presentes na cena passam a ser visíveis Define qual parte da cena é enquadrada pela câmera
Propriedades de Câmera PROPRIEDADE Depth Rendering Path Target Texture Occlusion Culling HDR DESCRIÇÃO Define a prioridade no caso de múltiplas câmeras. As de números menores são desenhadas primeiro Define como a câmera renderiza é recomendado escolher a opção: Use Player Settings Permite que seja especificada uma textura a ser visualizada pela câmera ao invés da tela normal Permite desabilitar a rederização de objetos quando os mesmos não estiverem sendo visualizados A propriedade Hyper-Dynamic Range define se os cálculos de luz estão restritos as cores básicas
Propriedades de Câmera Embora com muitas propriedades uma vez definidas, não se preocupará mais com elas As câmeras também possuem outros componentes: Camada de interface com o usuário (GUI) Camada de flare Escutador (listener) de áudio (só podendo haver um por cena)
Múltiplas Câmeras Muitos efeitos dos jogos modernos não seriam possíveis sem múltiplas câmeras Para adicionar uma nova câmera, use: GameObject > Camera ou É possível selecionar um objeto e clicar em Add Component, e escolher Rendering > Camera Nesse último caso, não são criados automaticamente os componentes extra
Múltiplas Câmeras Experimento: 1. Crie um novo projeto, ou cena, e adicione dois cubos 2. Posicione os cubos em ( 2, 1, 5) e (2, 1, 5) 3. Mova a câmera principal para ( 3, 1, 8) e altere a sua rotação para (0, 45, 0) 4. Adicione uma nova câmera no jogo com GameObject > Camera, e posicione em (3, 1, 8) 5. Altere a rotação da nova câmera para (0, 315, 0) 6. Desabilite o audio listener da nova câmera 7. Execute a cena. Qual a câmera a ser exibida? Altere a propriedade Depth da câmera principal (=1) e execute.
Visualizando Múltiplas Câmeras A propriedade View Port Rect pode ser usada para criar os efeitos de dividir a tela e picture-in-picture Nessa visão, a tela é tratada como um retângulo O canto esquerdo baixo é identificado por (0, 0) O canto direito alto é identificado por (1, 1) 1 = 100%, e consequentemente 0.5 = 50% Por padrão, o enquadramento inicia no (0, 0) e possui altura e lagura de 1
Visualizando Múltiplas Câmeras Experimento: 1. Abra a cena criada anteriormente 2. Garanta que a câmera principal tenha Depth = -1 3. Na propriedade View Port Rect, defina X e Y = 0, W = 1 e H = 0.5 4. Garanta que a segunda câmera tenha Depth = -1 5. Na propriedade View Port Rect, defina X = 0, Y = 0.5, W = 1 e H = 0.5 6. Execute a cena e veja o resultado.
Visualizando Múltiplas Câmeras
Visualizando Múltiplas Câmeras Experimento: 1. Abra a cena criada anteriormente 2. Garanta que a câmera principal tenha Depth = -1 3. Na propriedade View Port Rect, defina X e Y = 0, W e H = 1 4. Garanta que a segunda câmera tenha Depth = 0 5. Na propriedade View Port Rect, defina X e Y = 0.75, W e H = 0.2 6. Execute a cena e veja o resultado.
Visualizando Múltiplas Câmeras
Camadas Com muitos objetos em cena a organização passa a ser uma tarefa complexa Algumas vezes você que itens sejam vistos apenas por certas câmeras ou iluminados por certas luzes Algumas vezes você quer que as colisões ocorram apenas entre certos tipos de objetos Reposta: organização em camadas
Camadas Pode ser utilizada para agrupar objetos similares ou objetos a serem tratados de forma semelhante Existem 8 camadas já inclusas e 24 camadas possíveis de serem definidas pelo programador
Trabalhando com Camadas Todo objeto do jogo inicia em uma camada padrão Na janela de inspeção um objeto pode ser movido para uma dada camada, na opção Layer
Trabalhando com Camadas Na visualização da cena, podemos também escolher uma camada em particular Clicando em Layers e escolhendo Edit Layers será aberto o gerente de camadas
Trabalhando com Camadas O qual também pode ser aberto através das propriedades do projeto: Edit > Project Settings > Tags and Layers
Usando Camadas Primeira utilidade: esconder da visão do projeto camadas não relevantes no momento Segunda utilidade: excluir objetos de serem iluminados por uma dada luz Importante na criação da interface gráfica com o usuário Para evitar que uma camada seja iluminada por uma luz, seleciona a luz e a opção Culling Mask desmarcar as camadas em que não deseja a incidência da luz
Usando Camadas Terceira utilidade: definir que objetos interagem uns com outros Isso pode ser definido através da opção Edit > Project Settings > Physics através da propriedade Layer Collision Matrix
Usando Camadas
Usando Camadas Experimento: 1. Crie um novo projeto, ou nova cena, e adicione dois cubos, posicionando-os em ( 2, 1, 5) e (2, 1, 5) 2. Acesse o gerente de tags e camadas e adicione duas novas camadas IgnoreLights e IgnoreCameras 3. Mova cada um dos cubos para uma das camada 4. Adicione um ponto de luz e posicione em (0, 1, 7), defina a intensidade em 2 5. Na propriedade Culling Mask da luz, desmarque a camada IgnoreLights 6. Selecione a câmera principal e remova a camada IgnoreCameras da sua propriedade de CullingMask 7. Execute a cena e veja o resultado.
Exercício 1. Crie uma nova cena, ou projeto 2. Remova a luz direcional 3. Adicione uma esfera, posicionando em (0, 0, 0) 4. Adicione quatro pontos de luz, posicionando-os em ( 4, 0, 0), (4, 0, 0), (0, 0, 4) e (0, 0, 4) 5. Dê uma cor diferente a cada um deles 6. Altere os raios e intensidades como queira 7. Remova a câmera principal da cena
Exercício 8. Adicione quatro câmeras à cena, removendo o listener de áudio de três delas, posicionadas em (2, 0, 0), ( 2, 0, 0), (0, 0, 2) e (0, 0, 2) 9. Rotacione as mesmas no eixo Y até que estejam visualizando a esfera 10. Altere as propriedades View Port Rect das quatro câmeras para que cada uma delas seja exibida em um dos cantos da tela (simultaneamente) 11. Confira o resultado.
Resultado do Exercício