Colocar um presepe para fora do cage em Blender
O problema que todo mundo encontra quando monta uma cena de presépio (ou qualquer diorama natalino) em Blender é que os modelos, por mais que você tente encaixá-los, ficam cortados ou rejeitados pelo cage de renderização. O cage nada mais é do que a caixa delimitadora que o engine ou o render engine usa como fronteira para saber o que processar. Se o seu boneco do pastor está fora dessa caixa, ele simplesmente desaparece. Já vi gente gastando horas ajustando posição por posição até entender que o problema não era o modelo, era a configuração do cage.
presep outside the cage no Blender
Essa expressão aparece com frequência em fóruns porque descreve exatamente a situação em que você quer exportar ou renderizar um presepe cujos elementos estão posicionados além dos limites do cage atual. A solução envolve mexer em três coisas: o limite da bounding box do objeto, o clipping do camera frustum, e as configurações do exportador se você estiver mandando para outro software. Vou explicar na ordem em que eu resolvi isso na minha última vez, que foi numa cena com cerca de 40 peças espalhadas por uma área de dois metros quadrados. A primeira coisa que você precisa verificar é se o problema é realmente o cage ou se é outra coisa. Muito frequente eu ver gente confundindo clipping de camera com clipping de cage. Se a câmera corta o modelo antes mesmo dele entrar na cena, nenhum ajuste no cage vai resolver. O teste rápido é simples: desligue a option "Clipping" no editor de camera e veja se o modelo aparece. Se aparecer, o problema é o near/far plane da câmera, não o cage.
Chegando aqui, o caminho é outro. Vá até o objeto que contém toda a sua cena do presépio. No modo object, pressione Ctrl+A e aplique a rotação e escala. Isso é crucial porque o cage é calculado a partir das transformações aplicadas. Se você deixar a escala deformada, o bounding box vai ficar distorcido e o cálculo do limite vai falhar. No meu caso, eu tinha aplicado scale mas esqueci de checar a rotação do objeto pai que agrupava todas as peças. A rotação não-aplicada gerava um cage rotacionado que não cobria a área real de ocupação. Depois de aplicar as transformações, você precisa estender o cage manualmente. Selecione todas as peças do presépio, entre no modo edit, e use o menu Object > Transform > Bounds to New. Isso cria um novo objeto que representa exatamente a caixa que envolve tudo. O próximo passo é ajustar esse bounds para ser o cage de render. Vá até as propriedades do mundo ou do render engine — no Cycles, isso fica em World Settings > Surface > Volume, onde você define o tamanho do volume de clipping. No Eevee, o clipping é controlado pelas configurações da camera, então você aumenta o far clip do frustum.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Aqui entra o ponto que ninguém explica direito e que me custou duas horas de troubleshooting numa produção real: o bounding box do objeto agregado não respeita automaticamente a new bounds que você criou. Você precisa vincular o bounds criado como filho do objeto principal e usar o modifier "Bounding Box" no objeto agregado, configurando para Use Parent Bounds. Sem esse passo, o renderer continua usando o cage antigo e seu presépio continua sendo cortado. Eu descobri isso porque estava vendo as peças do presépio aparecendo e sumindo conforme eu movia a câmera, o que indicava que o clipping era dinâmico e não estático como eu pensava. Se você estiver exportando para Unity ou Unreal, o processo é ainda mais chato porque cada engine tem seu próprio conceito de world bounds. No Unity, você precisa ajustar o "World Boundary" no inspector do Terrain ou do GameObject raiz, e configurar o culling mask para incluir as layers do presépio. No Unreal, o problema é o Lod Distance e o HLOD — peças muito pequenas num presépio grande tendem a ser culladas pelo sistema de occlusion. A solução prática que eu uso é dividir o presépio em sectores menores, cada um com seu próprio bounds, e usar o sistema de streaming de cena para carregar só o sector visível. Isso resolve o problema de clipping e ainda melhora a performance.
Outro detalhe que merece atenção é o scale do modelo em si. Modelos de presépio vindos de bibliotecas gratuitas muitas vezes vêm em unidades centímetro, enquanto o Blender trabalha em metro. Se você não converter antes de montar a cena, o cage vai ser calculado em centímetros e o renderer vai interpretar tudo como sendo minúsculo, cortando bordas que na verdade estão perfeitamente dentro do bounds. Eu já perdi tempo demais com isso. A conversão é simples: seleccione tudo, entre em Object > Scale > Apply, e mude a unidade no Scene Properties para meters. O importante é fazer isso antes de posicionar qualquer peça. Quando eu finalmente consegui resolver aquele presépio com 40 peças, o passo final que faltava era ajustar o shadow bounds. O Blender calcula sombras baseado no volume de luz, e se o presépio está fora do shadow bounds, as sombras não são geradas para aquelas peças. Isso cria aquele efeito estranho onde algumas partes do presépio têm sombra e outras não, mesmo estando na mesma luz. A solução é ir até a luz que ilumina a cena e aumentar o Shadow Bounds Size no painel de constraints da luz.
O limitação mais importante que eu preciso mencionar é que nenhuma dessas soluções funciona se o seu render engine for o Workbench ou o Eevee com ray tracing desligado. Nesse caso, o clipping é puramente geometrico e o bounds pode não ser recalculado em tempo real. Se você estiver usando Eevee e precisar de shadows precisas, o ideal é migrar para Cycles ou ativar o ACES color management no render engine. Fora isso, o resto do fluxo descrito aqui funciona para a maioria dos casos.