3D Skybox

From Valve Developer Community
Jump to: navigation, search
English (en)Deutsch (de)Italiano (it)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)

A criação de uma “skybox 3D” pode ser uma adição poderosa ao tratamento visual de um nível. A skybox 3D é uma área extra construída pelo designer de níveis que está fora dos limites da parte de jogabilidade do mapa. Quando o mapa é carregado, o Source amplia os objetos na área da skybox 3D e os coloca fora dos limites do nível atual, entre a skybox(en) e o jogador. Isso é usado para dar a aparência de um mundo muito mais amplo fora da sua fase, sem ser muito caro para o orçamento devido à escala 1:16 (por padrão). As skyboxes 3D não são interativas: o jogador e outras entidades não podem se mover para o espaço da skybox 3D.

A geometria da skybox 3D pode ser indistinguível da geometria de nível normal. As transições perfeitas entre a geometria de nível normal e a skybox 3D são muito possíveis e são usadas em muitos dos mapas dos jogos oficiais da Source, como Counter-Strike: Source(en).

Icon-Bug.pngErro:Em Portal Portal, as skyboxes 3D não são renderizadas corretamente quando observadas através de portais. - [[Pt-br/
Image:3dSkyboxProb.png|see here]](en).  [todo tested in?]
Icon-Important.pngImportante:Uma skybox 3D não substitui uma skybox 2D(en). Em vez disso, um skybox 3D deve ser considerado um “skyroom”, que é sempre desenhado atrás da geometria regular do nível, e do qual o skybox regular (2D) é sempre desenhado atrás.
Note.pngNota:
  • Em Left 4 Dead Left 4 Dead, a escala padrão é 1:32, NÃO 1:16 (mas 1:16 funciona corretamente!)
  • Para evitar problemas de iluminação, não use light(en) (ou qualquer outra luz sem o prefixo Env_) na skybox
Why?: Quais são os tipos de problemas? Você pode ter um light_environment(en) separado no skyroom e ele funcionará bem.
  • Em Portal 2 Portal 2 algumas geometrias de skybox não serão visíveis, a menos que você defina o cvar r_skybox_draw_last como 0.

Benefícios

As skyboxes padrão são imagens 2D simples, mapeadas em um cubo para que circundem o nível. Os skyboxes 3D são uma geometria totalmente em 3D e são devidamente paralaxe à medida que o jogador se move pelo nível. Como são renderizadas em tempo real, elas são dimensionadas de acordo com a resolução da placa de vídeo e também suportam efeitos de sombreamento em tempo real que não são possíveis em skyboxes 2D.

A principal vantagem de usar uma skybox 3D é que ela permite que o designer de níveis faça o mapa parecer muito maior do que é possível com a geometria padrão do mundo. O maior mapa que pode ser criado sem uma skybox 3D é de 32768 unidades em cada lado. Usando uma skybox 3D, o mapa pode ser estendido para 16 vezes essa quantidade.

Mapas desse tamanho são possíveis porque as skyboxes 3D são criadas no Hammer Editor em uma escala de 1/16 da escala dos mapas padrão. Em tempo de execução, o mecanismo as dimensiona novamente para corresponder à escala do restante do mapa. Isso não apenas economiza espaço nas exibições do editor, mas também é muito mais econômico para compilar e renderizar.

Devido à sua escala, os skyboxes 3D têm uma resolução de mapa de luz e textura muito menor. Isso torna a geometria de skybox 3D menos dispendiosa em termos de desempenho do que a geometria padrão do mundo.

As skyboxes 3D podem ser usadas para superar as limitações de distância de desenho, se você criar uma skybox com poucos detalhes idêntica à do mapa principal. Uma equipe de mods que queira fazer isso teria que desenvolver um código para facilitar a transição entre as versões do mapa.

Características básicas

As Skyboxes 3D têm as seguintes características:

  • São construídos (por padrão) em escala 1/16 no editor Hammer e, em seguida, renderizados em tamanho 16 vezes maior no mecanismo para corresponder à geometria do mundo.
  • Suporte a materiais com efeitos de sombreamento, como mapeamento normal, água, mapeamento de ambiente, proxies, etc.
  • Não são interativos - os jogadores e outras entidades do mundo não podem entrar nas skyboxes 3D. A skybox 3D é apenas uma extensão visual das extensões do mapa.
  • Pode ser construído com pincéis, deslocamentos, adereços estáticos e dinâmicos, luzes, entidades de pincel e entidades de ponto (como env_sprite).
  • Todos os modelos que forem colocados na skybox 3D devem ser criados em escala 1/16. Os modelos padrão (props(en)) não são dimensionados adequadamente para o skybox 3D. Devem ser usadas versões especiais em escala 1/16. Para Half-Life 2 Half-Life 2, esses adereços podem ser encontrados no diretório models/props_skybox.
  • Não deve conter info_player_start, NPCs ou monstros.
  • Têm menor resolução de lightmap e textura devido à escala em que são criados.
  • Devem ter suas próprias fontes de iluminação, embora um light_environment na seção sem skybox também seja usado para a iluminação do skybox 3D.
  • Use a entidade sky_camera para controlar como elas se alinham com a geometria do mundo sem skybox.
  • As skyboxes 3D têm seus próprios parâmetros de neblina, ajustáveis na entidade sky_camera.
  • A geometria na skybox 3D não é ocluída ou eliminada como o restante da geometria do nível. Se você adicionar muitos modelos ou geometrias de pincel detalhadas à skybox 3D, especialmente com materiais translúcidos, o desempenho poderá ser seriamente afetado.
  • Um mapa deve ter um light_environment nele, caso contrário os modelos na skybox 3D serão iluminados incorretamente. Um light_environment na parte não skybox do mapa elimina a necessidade de um na skybox 3D.

Construção de skyboxes 3D

  • Uma observação sobre a entidade sky_camera: as entidades de ponto não diminuem a escala.

A maneira mais eficiente de criar um skybox 3D que combine ou “se alinhe” com o mapa atual é usar parte da geometria na parte principal do nível. Siga estas etapas depois que você tiver criado a geometria do nível principal:

  1. Adicione uma entidade sky_camera na origem do mundo (coordenadas 0, 0, 0), o centro da grade do mapa. A sky_camera é um ponto de referência usado pelo renderizador para alinhar a skybox 3D com a parte principal do mapa. Em outras palavras, ele funciona como um marcador que informa ao renderizador como a origem da skybox 3D e a origem do mundo se relacionam entre si. Você pode pensar nesse processo como sendo semelhante à seleção de toda a geometria do skybox 3D e, em seguida, alinhar a entidade sky_camera nessa seleção com a origem do mundo (0,0,0). A geometria é “traduzida” de volta para essa posição no mundo. Esse é o mesmo conceito usado quando o skybox é renderizado no mecanismo.
  2. Selecione algumas partes distintas do nível que você possa usar como diretriz para escala e posição na skybox 3D. Os elementos comuns a serem selecionados para essa finalidade seriam algumas das estruturas maiores, bem como paredes, penhascos, colinas etc. que definem as bordas do mapa. Certifique-se de que a sky_camera que você criou também esteja selecionada. {É importante que você “não” selecione nenhuma entidade de modelo, apenas pincéis. Os modelos não podem ser usados como geometria de referência, pois prop_static não pode ser reduzido no editor Hammer (em {csgobranch)Strata Source|prefix=except}}.}}
  3. Escolha Copy (Copiar) no menu Edit (Editar) ou pressione CTRL-C.
  4. Selecione Paste Special no menu Edit. Defina o Number of copies to paste (Número de cópias a serem coladas) como 1 e todos os outros valores como 0. Clique em OK. Isso cria uma duplicata da geometria que você havia selecionado.
  5. Ative o Scaling Texture Lock na barra de ferramentas, se ainda não estiver ativado. Seu ícone se assemelha a <tl>. Isso reduzirá as texturas junto com a geometria.
  6. Deixando a geometria selecionada, escolha Transform no menu Tools'. Selecione o botão de opção ao lado de Scale. Digite um valor de .0625 para X, Y e Z. Esse é o equivalente decimal a 1/16 - a escala da skybox 3D. Clique em OK.
    Note.pngNota:Se você quiser que as texturas na geometria sejam dimensionadas de acordo, certifique-se de que o bloqueio de textura de dimensionamento esteja ativado.
  7. Agora você tem uma versão em escala 1/16 da sua geometria de referência. Agora, arraste-a (mova-a) para outra parte do mapa onde você deseja construir o skybox 3D. Não importa onde ela esteja, desde que não esteja tocando nenhuma parte da área de geometria do nível principal.
  8. Exclua a entidade sky_camera da área normal do mapa do mundo em que você começou. Importante: somente a entidade sky_camera no skybox 3D deve permanecer no mapa. No L4D2 (e possivelmente em outros jogos da Source), se você esquecer essa etapa (tendo várias sky_cameras no mapa), todas as áreas de navegação serão bloqueadas.
  9. Você pode criar sua geometria de skybox 3D em torno da geometria de referência, usando-a como guia. Você pode criar uma geometria de skybox que atenda perfeitamente à geometria de referência. Você pode usar pincel e geometria de deslocamento. Você também pode colocar modelos, mas como a skybox 3D está em escala 1/16, todos os modelos também devem estar em escala 1/16. O modelo hl2\models\props_skybox\coast01.mdl é um modelo de amostra em escala 1/16. Tente posicionar a câmera de visualização 3D perto da altura do jogador. Isso dará a você uma boa ideia de como a skybox 3D ficará quando for renderizada no mecanismo.
  10. Adicione um cubo oco de pincéis ao redor de sua geometria de referência e atribua o material tools\toolsskybox a ele. O skybox cúbico 2D padrão aparecerá nessas superfícies. A área do skybox 3D deve ser selada com esses pincéis.
  11. Quando você terminar, exclua ou oculte toda a geometria de referência, “exceto” a entidade sky_camera. Talvez você ache melhor adicionar a geometria de referência ao seu próprio visgroup para que ela possa ser ativada e desativada ou recolocada. Apenas certifique-se de desativá-la antes de salvar e compilar o nível, ou ela será compilada no skybox 3D.
  12. Se você tiver pincéis dentro da skybox 3D que não sejam a geometria de referência, transforme todos esses brushes em brushes func_detail.
    Note.pngNota:A única exceção a isso são os displacements. Por motivos óbvios, não vincule os displacements a uma entidade.
  13. Seu mapa original ainda precisa do material tools\toolsskybox onde quer que você queira ver o céu, mas agora ele mostrará o skybox 3D e também o skybox 2D (que era o que fazia anteriormente).
  14. Se você quiser que uma parte do seu mapa mostre apenas a skybox 2D e não a geometria da skybox 3D, use a textura tools\toolsskybox2d, que desenha apenas a skybox 2D. Não há restrições para essa textura e ela pode ser usada junto com a textura normal do skybox sem problemas. Esse recurso é útil quando você tem, por exemplo, uma janela e deseja ver apenas o céu a partir dela, como se você estivesse em um prédio muito alto.

Testando

Se você selou adequadamente seu skybox 3D e seu mapa não tem um vazamento(en), agora você pode compilar o mapa e verificar seu novo skybox 3D no mecanismo.

Exemplos

Como criar um Skybox 3D no 3ds Max

Você também pode criar seu Skybox 3D de uma maneira muito mais simples do que o método Hammer tradicional se construir seu nível dentro do 3ds Max(en) com Wall Worm Model Tools(en). O Wall Worm permite que você crie o 3D Skybox na escala do mapa e evita a necessidade de reduzir o skybox.

Para fazer isso, basta “marcar” a geometria do skybox com as funções Tag nas ferramentas Anvil que acompanham o Wall Worm.

Veja uma demonstração e faça o download de uma cena de amostra aqui.

Veja também

Environment articles:
Skies and environment maps Skybox (2D)Skybox (3D)HDR SkiesSkybox with TerragenSkybox with Terragen - AdvancedList of skies
Terrain and displacement mapping DisplacementsCreating Holes in DisplacementsDigital Elevation ModelsCreating custom terrain with Worldmachine