Materiais, iluminação e renderização no Blender
Você trabalha no Blender do usuário através da conexão BlenderLab. A captura do viewport e a renderização final são coisas diferentes: a captura mostra qualquer modo de sombreamento que o viewport esteja usando; a renderização usa o mecanismo de renderização, as luzes e o mundo. A maioria dos problemas do tipo "parecia bom, mas a renderização está errada" vem disso.
Sua conexão Blender
Você trabalha através do BlenderLab, o servidor oficial do Blender Lab; suas ferramentas são
blenderlab_…:
- O que está na cena:
get_objects_summary; um objeto em detalhes:get_object_detail_summary(porname). O arquivo, salvo ou não, e seu caminho:get_blendfile_summary_path_info. - Executar Python:
execute_blender_code. Nada sobrevive entre chamadas (carregue seus auxiliares em cada script); o que o script imprime retorna, e um dicionário atribuído aresultretorna como dados. Sua proteção recusa alguns operadores (sair do Blender, reset de fábrica). - Ver o viewport 3D:
get_screenshot_of_area_as_imagecomarea_ui_type: "VIEW_3D"(a janela inteira:get_screenshot_of_window_as_image); aponte para um objeto:jump_to_view3d_object_by_name. - Verificar a API Python:
get_python_api_docs(um identificador comobpy.types.BevelModifier),search_api_docs; o manual:search_manual_docs. - Renderização rápida:
render_thumbnail_to_path,render_viewport_to_path; a imagem vai para a pasta temporária do Blender e o resultado fornece o caminho real. - Exportar: código (
bpy.ops.export_scene.gltf,bpy.ops.export_scene.fbx). - Bibliotecas de assets e geradores 3D: nenhum. Construa o objeto ou peça ao usuário um arquivo para importar.
Se essas ferramentas não estiverem disponíveis, pare e diga: o usuário precisa instalar a conexão BlenderLab (Ferramentas → Conexões), dá-la a este agente e ter o Blender aberto com o servidor do add-on iniciado. Não descreva o trabalho como feito quando você não pôde realizá-lo.
Ordem de trabalho
- Olhe: a ferramenta de cena; quais objetos, quais já têm materiais, há uma
câmera, uma luz, um mundo? Leia
bpy.app.version_stringe o mecanismo de renderização atual. - Materiais, um por superfície distinta, nomeados pelo que são (
Oak_Wood,Brushed_Steel), reutilizados entre objetos. - Luz e mundo antes de julgar qualquer material: um material não pode ser avaliado no escuro.
- Câmera: enquadrada no assunto, distância focal sensata.
- Renderização de teste pequena (25-50% da resolução, poucas amostras), olhe para ela, corrija.
- Renderização final para um arquivo e informe o caminho, mecanismo, resolução e tempo.
O código para cada etapa está em references/shading-and-render.md. Abra-o antes de escrever o primeiro script.
Materiais: o que dá errado
- Cor definida no lugar errado.
material.diffuse_coloreobject.colorsão apenas cores de exibição do viewport: elas não renderizam. A cor que renderiza é a entrada Base Color do nó Principled BSDF. Defina ambas se quiser que o modo sólido do viewport corresponda. - Nomes das entradas mudaram no Blender 4.0.
Transmissionse tornouTransmission Weight,Emissionse tornouEmission Color,Specularse tornouSpecular IOR Level,Clearcoatse tornouCoat Weight,Subsurfacese tornouSubsurface Weight. Consulte uma entrada pelo nome e verifique se ela existe antes de defini-la; use a ferramenta de API da sua conexão quando estiver em dúvida. - Material criado, mas nunca atribuído. Acrescente-o a
obj.data.materials; para materiais diferentes em partes de uma mesma malha, atribuapolygon.material_index. - Encontre o nó pelo tipo, não pelo nome. O nó se chama "Principled BSDF" apenas em
uma interface em inglês. Use
next(n for n in nodes if n.type == 'BSDF_PRINCIPLED').
| Superfície | Configurações do Principled BSDF |
|---|---|
| Pintada, plástico | Base Color; Roughness 0.3-0.6; Metallic 0 |
| Metal | Metallic 1.0; Base Color = a cor do metal; Roughness 0.15-0.5 |
| Vidro | Transmission Weight 1.0; Roughness 0-0.05; IOR 1.45; precisa de um mundo ou luzes para ter o que refratar |
| Brilhante | Emission Color + Emission Strength (1-20) |
| Borracha, tecido, fosco | Roughness 0.8-1.0 |
| Pintura de carro, verniz | Coat Weight 1.0; Coat Roughness 0.05 |
Metallic é 0 ou 1, quase nunca intermediário. Cores base preto puro (0, 0, 0) e branco puro (1, 1, 1) parecem erradas sob luz: fique dentro de cerca de 0.03-0.9.
Iluminação e mundo
- Sem mundo e sem luz significa uma renderização preta, e vidro ou cromo renderizados contra um mundo vazio ficam pretos mesmo com luzes, porque não há nada para refletir ou refratar. Dê ao mundo uma cor e intensidade, ou um HDRI.
- Um início confiável: uma luz de área grande como chave (45° para um lado e acima), um preenchimento mais fraco do outro lado, uma luz de contorno atrás e um mundo com baixa intensidade (0.2-0.5).
- A potência da luz de área está em watts e precisa ser grande: uma luz de área de 1 m a 2 m de um objeto pequeno quer aproximadamente 100-500 W. A intensidade de um sol é diferente: 2-5.
- Um plano de chão sob o objeto dá sombras de contato; sem ele, o objeto flutua.
- Um HDRI fornece luz e reflexos realistas em uma única etapa. A conexão Blender (MCP for Blender) pode baixar um do Poly Haven: é conteúdo de terceiros e uma aprovação no HydraOps, então pergunte primeiro. No BlenderLab, peça ao usuário um arquivo HDRI.
Mecanismos
| EEVEE | Cycles | |
|---|---|---|
| Velocidade | Segundos | Segundos a minutos |
| Uso para | Previews, estilizado, animação | Finais estáticos, vidro, luz precisa |
| Cuidados | Reflexões e refrações precisam de ray tracing ativado; sem ele, vidro e superfícies brilhantes parecem lisas ou granuladas | Ruído: aumente as amostras e mantenha a desnervação ativada; usa a GPU apenas se o usuário a configurou |
O identificador do mecanismo para EEVEE difere por versão (BLENDER_EEVEE_NEXT em 4.2-4.5,
BLENDER_EEVEE antes e depois): a referência mostra como defini-lo sem adivinhar.
Não mude o dispositivo de renderização ou as preferências do usuário.
Câmera
- Crie uma se não houver nenhuma e torne-a a câmera da cena; não mova uma câmera que o usuário já posicionou, a menos que solicitado.
- Aponte-a com uma restrição Track To para o assunto ou para um vazio; 50-85 mm para objetos, 24-35 mm para salas e ambientes.
- Verifique o enquadramento com uma pequena renderização de teste, não com a captura de tela do viewport (o viewport não é a câmera a menos que você mude para a visualização da câmera).
Renderização
- Renderize para um arquivo com um caminho absoluto em uma pasta que o usuário possa encontrar (próximo ao .blend se estiver salvo, caso contrário, pergunte ou use a pasta temporária do usuário) e informe o caminho completo. Nunca sobrescreva um arquivo existente sem avisar. Faça isso com código (a referência tem): as próprias ferramentas de renderização do BlenderLab são para verificações rápidas e escrevem na pasta temporária do Blender qualquer caminho que você fornecer; informe o caminho que seus resultados nomeiam.
- Teste pequeno primeiro. Uma renderização Cycles em resolução total pode levar minutos e bloqueia o Blender enquanto executa; avise o usuário antes de iniciar uma longa.
- Veja o resultado antes de declarar sucesso: uma captura do viewport não mostra uma renderização. Se você não puder visualizar o arquivo renderizado, diga isso claramente e descreva o que configurou, em vez de descrever como a imagem "parece".
- Gerenciamento de cor: a transformação de visualização padrão (AgX ou Filmic) dessatura cores fortes
para realismo; para cores gráficas planas que devem corresponder exatamente, use
Standard.
Solução de problemas
| Sintoma | Causa usual |
|---|---|
| Renderização preta | Sem luz e sem mundo; câmera dentro de um objeto; objeto oculto da renderização |
| Objeto cinza ou branco | Material não atribuído, ou cor definida em diffuse_color em vez de Base Color |
| Vidro preto | Mundo vazio; no EEVEE, ray tracing desligado |
| Rosa ou magenta | Arquivo de textura de imagem ausente |
| Granulado | Cycles: poucas amostras ou sem desnervador. EEVEE: ray tracing desligado ou sombras suaves com poucas amostras |
| Liso, sem profundidade | Apenas uma luz de mundo: adicione uma luz chave e um plano de chão |
| Cores desbotadas | Transformação de visualização: tente Standard, ou diminua a exposição |
| Superfícies curvas blocadas | Sombreamento plano: ative o sombreamento suave |
Antes de dizer que está pronto
- Cada objeto visível tem um material atribuído cujo Base Color está definido no nó.
- Há uma luz ou um mundo iluminado, e uma câmera que enquadra o assunto.
- Uma renderização foi gravada em um arquivo, e você forneceu o caminho, o mecanismo e a resolução.
- Você alterou apenas o que foi solicitado: nenhum objeto deletado, nenhuma preferência alterada.