Espelhos

Espelhos são superfícies refletoras que permitem aos usuários ver um reflexo espelhado de seu avatar, ao lado de outros usuários e/ou do mundo em que estão, dependendo das configurações do mundo. Muitos mundos contêm espelhos destinados a que os usuários se sentem em frente a eles enquanto socializam. Essa atividade é coloquialmente chamada de "habitação no espelho". Os usuários também podem optar por invocar um espelho próprio, embora visível apenas para eles.
Tipos de espelhos

Espelho Pessoal
Um espelho pessoal é um tipo de espelho que pode ser invocado e movido por um usuário e que só pode ser visto por ele.
Pode ser ativado e configurado através do Menu de Ação ou na página Configurações do Menu Principal.
Espelho Facial


Um espelho facial é um tipo de espelho que exibe o rosto do avatar do usuário em seu HUD. Os Espelhos faciais são projetados para ajudar o usuário a ficar atento às expressões faciais do seu avatar, especialmente se elas forem controladas por gestos. Ao contrário de um espelho tradicional, o espelho facial não retrata profundidade. No modo desktop, a resolução do Espelho Facial se ajusta de acordo com o tamanho da exibição, até 2048×2048 pixels. Ao transmitir via Spout, a renderização é sempre feita na resolução máxima.
Pode ser ativado e configurado através do Menu de Ação ou na página Configurações do Menu Principal.
Espelho de Calibração
Um espelho de calibração é um tipo de espelho que é ativado automaticamente quando o usuário pressiona o botão "Calibrar FBT". Ele é visível apenas para o usuário que está realizando a calibração e desaparece assim que a calibração é concluída. O espelho de calibração exibe apenas o avatar do usuário, os controladores e o modelo do rastreador FBT, que podem ser definidos nas Configurações do Menu Principal. Se a opção "Exibir visuais de calibração" estiver ativada em Rastreamento e IK, o espelho de calibração também refletirá esses elementos, mostrando quais pontos de rastreamento os rastreadores irão rastrear quando a calibração for concluída.
Ele pode ser ativado através do Menu de Ação ou no página Configurações do Menu Principal, mas não há opções de configuração para o espelho de calibração.
Configurações comuns
O prefab do espelho permite selecionar quais camadas serão exibidas no reflexo. Portanto, é comum que os mundos tenham configurado vários espelhos diferentes para alternar entre eles. É por isso que geralmente se divide em três opções: espelho de alta qualidade, baixa qualidade e transparente. Alguns mundos oferecem configurações ainda mais especializadas além dessas.
Alta qualidade
Um espelho de alta qualidade funciona como um espelho na vida real, refletindo o mundo e os avatares ao seu redor a partir da perspectiva do espelho.
Baixa Qualidade
Um espelho de baixa qualidade geralmente reflete os avatares ao seu redor com uma resolução mais baixa e substitui o reflexo do mundo pela skybox
Transparente
Um espelho transparente geralmente reflete os avatares ao seu redor enquanto age como uma janela, mostrando o que aparece atrás do espelho e também tendo um reflexo fraco do mundo a partir da perspectiva do espelho. Ele requer uma configuração especial, que também está disponível através dos prefabs de espelhos transparentes da comunidade.
Problemas de desempenho
Cada objeto refletido em um espelho precisa ser renderizado novamente, separadamente do que o usuário vê no mundo jogável. Um espelho que reflete o mundo inteiro duplicará o custo de desempenho da renderização do mundo. A ocultação por oclusão não funciona em reflexos de espelho, portanto, um espelho voltado para uma parede ainda tentará renderizar tudo o que está atrás da parede também.
Os criadores podem reduzir o custo de desempenho dos espelhos de várias maneiras, tais como:
- Desativar todos os espelhos por padrão. Ativar um espelho apenas quando o usuário apertar um botão ou se aproximar fisicamente dele.
- Desativar os espelhos quando um usuário sair da área. Isso removerá o custo de renderização de um espelho quando um jogador não estiver usando-o. Os usuários muitas vezes não fazem isso por conta própria, então use um script para fazer isso por eles.
- Considerar a localização dos espelhos. Um espelho voltado para longe do centro do mundo terá que renderizar menos do que um voltado para dentro.
- Alterar as Camadas que um espelho reflete. Um espelho renderiza apenas os objetos nas camadas definidas. Por exemplo, se você tiver um grande mundo ao ar livre com uma casa no meio, poderá definir os objetos do ambiente externo na camada de ambiente e, em seguida, desativar essa camada nos espelhos dentro da casa. Isso impedirá que os espelhos tentem renderizar o ambiente que não conseguem ver.
Ao interagir com um Espelho em um mundo, os usuários poderão ativar ou alternar entre diferentes opções para economizar desempenho, tais como:
- Usar apenas um espelho por vez.
- Escolher uma opção de menor qualidade para o espelho, se disponível.
- Alternativamente, substituir o seu Espelho Pessoal por um espelho do mundo.
- Ajustar a resolução do espelho em Configurações Gráficas.
SDK
Prefab do mundo
O SDK do VRChat contém um prefab para um espelho pronto para usar que pode ser arrastado para uma cena. Este prefab encontra-se no seguinte caminho:
Packages\com.vrchat.worlds\Samples\UdonExampleScene\Prefabs\VRCMirror.prefab
Detalhes Técnicos
Os espelhos são renderizados durante Camera.onPreCull. Os criadores de mundos que utilizam scripts dependentes do tempo de renderização dos espelhos devem levar isso em consideração.