Materiales, iluminación y renderizado en Blender
Trabajas en el Blender del usuario a través de la conexión BlenderLab. La captura del viewport y el render final son cosas diferentes: la captura muestra el modo de sombreado en el que está el viewport; el render usa el motor de renderizado, las luces y el mundo. La mayoría de los problemas de "se veía bien pero el render está mal" provienen de ahí.
Tu conexión Blender
Trabajas a través de BlenderLab, el servidor oficial de Blender Lab; sus herramientas son
blenderlab_…:
- Qué hay en la escena:
get_objects_summary; un objeto en detalle:get_object_detail_summary(porname). El archivo, guardado o no, y su ruta:get_blendfile_summary_path_info. - Ejecutar Python:
execute_blender_code. Nada persiste entre llamadas (lleva tus ayudantes en cada script); lo que el script imprime regresa, y un diccionario asignado aresultregresa como datos. Su guardián rechaza unos pocos operadores (salir de Blender, restablecer valores de fábrica). - Ver el viewport 3D:
get_screenshot_of_area_as_imageconarea_ui_type: "VIEW_3D"(la ventana completa:get_screenshot_of_window_as_image); apúntalo a un objeto:jump_to_view3d_object_by_name. - Consultar la API de Python:
get_python_api_docs(un identificador comobpy.types.BevelModifier),search_api_docs; el manual:search_manual_docs. - Render rápido:
render_thumbnail_to_path,render_viewport_to_path; la imagen va a la carpeta temporal de Blender y el resultado da la ruta real. - Exportar: código (
bpy.ops.export_scene.gltf,bpy.ops.export_scene.fbx). - Bibliotecas de assets y generadores 3D: ninguna. Construye el objeto, o pide al usuario un archivo para importar.
Si estas herramientas no están disponibles, detente y dilo: el usuario debe instalar la conexión BlenderLab (Herramientas → Conexiones), dársela a este agente, y tener Blender abierto con el servidor del add-on iniciado. No describas el trabajo como hecho cuando no pudiste realizarlo.
Orden de trabajo
- Observa: la herramienta de escena; qué objetos, cuáles ya tienen materiales, ¿hay una
cámara, una luz, un mundo? Lee
bpy.app.version_stringy el motor de render actual. - Materiales, uno por superficie distinta, nombrados por lo que son (
Oak_Wood,Brushed_Steel), reutilizados entre objetos. - Luz y mundo antes de juzgar cualquier material: un material no puede evaluarse en la oscuridad.
- Cámara: encuadrada sobre el sujeto, distancia focal sensata.
- Render de prueba pequeño (25-50 % de resolución, pocas muestras), míralo, corrige.
- Render final a un archivo, e informa la ruta, el motor, la resolución y el tiempo.
El código para cada paso está en references/shading-and-render.md. Ábrelo antes de escribir el primer script.
Materiales: qué sale mal
- Color puesto en el lugar equivocado.
material.diffuse_coloryobject.colorson colores de visualización del viewport solamente: no renderizan. El color que renderiza es la entrada Base Color del nodo Principled BSDF. Configura ambos si quieres que el viewport en modo sólido coincida. - Los nombres de las entradas cambiaron en Blender 4.0.
Transmissionpasó a serTransmission Weight,Emissionpasó a serEmission Color,Specularpasó a serSpecular IOR Level,Clearcoatpasó a serCoat Weight,Subsurfacepasó a serSubsurface Weight. Busca una entrada por nombre y comprueba que existe antes de configurarla; usa la herramienta API de tu conexión cuando no estés seguro. - Material creado pero nunca asignado. Añádelo a
obj.data.materials; para diferentes materiales en partes de una malla, asignapolygon.material_index. - Encuentra el nodo por tipo, no por nombre. El nodo se llama "Principled BSDF" solo en
una interfaz en inglés. Usa
next(n for n in nodes if n.type == 'BSDF_PRINCIPLED').
| Superficie | Ajustes de Principled BSDF |
|---|---|
| Pintado, plástico | Base Color; Roughness 0.3-0.6; Metallic 0 |
| Metal | Metallic 1.0; Base Color = el color del metal; Roughness 0.15-0.5 |
| Vidrio | Transmission Weight 1.0; Roughness 0-0.05; IOR 1.45; necesita un mundo o luces para tener algo que refractar |
| Brillante | Emission Color + Emission Strength (1-20) |
| Goma, tela, mate | Roughness 0.8-1.0 |
| Pintura de coche, barniz | Coat Weight 1.0; Coat Roughness 0.05 |
Metallic es 0 o 1, casi nunca intermedio. Los colores base negro puro (0, 0, 0) y blanco puro (1, 1, 1) se ven mal bajo la luz: mantente dentro de aproximadamente 0.03-0.9.
Iluminación y mundo
- Sin mundo y sin luz significa un render negro, y el vidrio o el cromo renderizados contra un mundo vacío salen negros incluso con luces, porque no hay nada que reflejar o refractar. Dale al mundo un color y una intensidad, o un HDRI.
- Un inicio fiable: una luz de área grande como clave (45° a un lado y arriba), un relleno más suave en el otro lado, una luz de borde detrás, y un mundo con intensidad baja (0.2-0.5).
- La potencia de la luz de área está en vatios y debe ser grande: una luz de área de 1 m a 2 m de un objeto pequeño quiere aproximadamente 100-500 W. La intensidad de un sol es diferente: 2-5.
- Un plano de suelo debajo del objeto da sombras de contacto; sin él, el objeto flota.
- Un HDRI proporciona luz y reflejos realistas en un solo paso. La conexión Blender (MCP para Blender) puede descargar uno de Poly Haven: es contenido de terceros y requiere aprobación en HydraOps, así que pregunta primero. En BlenderLab, pide al usuario un archivo HDRI.
Motores
| EEVEE | Cycles | |
|---|---|---|
| Velocidad | Segundos | Segundos a minutos |
| Úsalo para | Previsualizaciones, estilizado, animación | Imágenes finales, vidrio, luz precisa |
| Cuidado con | Los reflejos y refracciones necesitan trazado de rayos activado; sin él, el vidrio y las superficies brillantes se ven planos o granulados | Ruido: aumenta las muestras y mantén el desnoisado activado; usa la GPU solo si el usuario la configuró |
El identificador del motor para EEVEE difiere según la versión (BLENDER_EEVEE_NEXT en 4.2-4.5,
BLENDER_EEVEE antes y después): la referencia muestra cómo configurarlo sin adivinar.
No cambies el dispositivo de render ni las preferencias del usuario.
Cámara
- Crea una si no hay ninguna y conviértela en la cámara de la escena; no muevas una cámara que el usuario ya haya colocado a menos que te lo pida.
- Apúntala con una restricción Track To al sujeto o a un vacío; 50-85 mm para objetos, 24-35 mm para habitaciones y entornos.
- Comprueba el encuadre con un pequeño render de prueba, no con la captura de pantalla del viewport (el viewport no es la cámara a menos que cambies a la vista de cámara).
Renderizado
- Renderiza a un archivo con una ruta absoluta en una carpeta que el usuario pueda encontrar (junto al .blend si está guardado, si no, pregunta o usa la carpeta temporal del usuario) e informa la ruta completa. Nunca sobrescribas un archivo existente sin decirlo. Hazlo con código (la referencia lo tiene): las propias herramientas de render de BlenderLab son para comprobaciones rápidas y escriben en la carpeta temporal de Blender cualquier ruta que les des; informa la ruta que sus resultados nombran.
- Prueba primero en pequeño. Un render Cycles a resolución completa puede llevar minutos y bloquea Blender mientras se ejecuta; avisa al usuario antes de iniciar uno largo.
- Mira el resultado antes de declarar éxito: una captura del viewport no muestra un render. Si no puedes ver el archivo renderizado tú mismo, dilo claramente y describe lo que configuraste en lugar de cómo "se ve" la imagen.
- Gestión de color: la transformación de vista predeterminada (AgX o Filmic) desatura los colores fuertes
para lograr realismo; para colores gráficos planos que deben coincidir exactamente, usa
Standard.
Solución de problemas
| Síntoma | Causa habitual |
|---|---|
| El render es negro | Sin luz y sin mundo; cámara dentro de un objeto; objeto oculto del render |
| El objeto es gris o blanco | Material no asignado, o color configurado en diffuse_color en lugar de Base Color |
| El vidrio es negro | Mundo vacío; en EEVEE, trazado de rayos desactivado |
| Rosa o magenta | Archivo de textura de imagen faltante |
| Granulado | Cycles: pocas muestras o sin desnoisador. EEVEE: trazado de rayos desactivado o sombras suaves con pocas muestras |
| Plano, sin profundidad | Solo una luz de mundo: añade una luz clave y un plano de suelo |
| Colores lavados | Transformación de vista: prueba Standard, o baja la exposición |
| Superficies curvas con bloques | Sombreado plano: activa el sombreado suave |
Antes de decir que está listo
- Cada objeto visible tiene un material asignado cuyo Base Color está configurado en el nodo.
- Hay una luz o un mundo iluminado, y una cámara que encuadra el sujeto.
- Se escribió un render en un archivo, y diste la ruta, el motor y la resolución.
- Solo cambiaste lo que se pidió: ningún objeto eliminado, ninguna preferencia modificada.