Fundamentos de Shape Grammar
Conceptos teóricos fundamentales que sustentan el sistema de diseño generativo.
Historia y Conceptos
Origen (1971)
Presentado por George Stiny y James Gips como el primer sistema formal para crear y comprender diseños a través de formas geométricas.
Componentes Principales
- Reglas de forma: Describen transformaciones geométricas
- Motor de generación: Aplica las reglas de manera sistemática
Definición de Regla
Una regla describe cómo una forma geométrica puede transformarse en otra, compuesta por:
- Formas geométricas primitivas
- Operaciones geométricas específicas
- Notación: Regla con flecha de izquierda a derecha
Motor de Generación
Sistema central que ejecuta las reglas y controla el proceso de generación de formas.
Tipos de Selección de Reglas
🎯 Descriptivo
Reglas predefinidas con criterios específicos de aplicación. Proporciona control total sobre el proceso generativo.
🎲 Aleatorio
Selección al azar entre reglas disponibles. Genera variedad impredecible manteniendo coherencia estructural.
🧠 Aprendido
Basado en patrones identificados en diseños existentes. Utiliza machine learning para optimizar selecciones.
Arquitectura del Sistema
Concepto de "cajas" y estructura modular para diseño de productos complejos.
Concepto de "Cajas"
Definir Arquitectura
Definir arquitectura del producto usando cajas de diferentes tamaños que representan componentes principales.
Llenar Cajas
Llenar las cajas con sólidos simples (primitivas geométricas) que servirán como base para transformaciones.
Aplicar Transformaciones
Aplicar transformaciones a los sólidos según las reglas definidas para cada componente.
Configuración Avanzada
🔒 Partes Fijas
Objetos de Blender que no se modifican durante la generación.
- Nombre debe iniciar con guión bajo (_)
- Para partes estándar o del contexto
- Ejemplo:
_tornillo
,_base_fija
🔧 Operaciones Booleanas
Modificadores aplicados a modelos generados para crear geometrías complejas.
- Objeto de corte nombrado con guión bajo (_)
- Crear modificador en arquitectura de cajas
- Cambiar visibilidad del objeto que corta
- Tipos: Union, Difference, Intersect
🔄 Patrones
Para repetir partes iguales de manera eficiente.
- Modificador aplicado después de la generación
- Usar en arquitectura de cajas de Blender
- Ideal para patas de sillas, elementos decorativos
❓ Partes Opcionales
Partes que aparecen aleatoriamente en las generaciones.
- Configurar con
"optional": true
- Presentes solo en algunas generaciones
- Útil para variaciones de productos
Configuración de Salidas
Control completo sobre formatos de exportación y calidad de renders.
Formatos de Salida
{
"output": {
"blendfile": false, // Archivo .blend nativo de Blender
"values": true, // Archivo JSON con valores usados en generación
"stl": true, // Archivo STL para impresión 3D
"render": false // Imagen renderizada del producto
}
}
Configuración de Render
{
"render_config": {
"render_scene": "one_light", // Escenas: basic, empty, neon, one_light, one_light-top
"material": "clay", // Materiales: clay, clay_red, wood_bamboo
"quality": 50, // Calidad de render (1-100)
"resolution": [400, 400] // Resolución en píxeles [ancho, alto]
}
}
Explicación de Opciones:
Escenas de Render:
- basic: Iluminación simple, fondo neutro
- empty: Sin luces adicionales
- neon: Iluminación colorida, ambiente moderno
- one_light: Una luz principal, sombras suaves
- one_light-top: Luz cenital, sombras marcadas
Materiales Disponibles:
- clay: Material cerámico blanco mate
- clay_red: Material cerámico rojo
- wood_bamboo: Textura de madera bambú
Integración con Blender
Flujo de trabajo completo desde el addon hasta la exportación final.
Addon de Blender
📊 Panel de Propiedades
Panel integrado en las propiedades de cada objeto para configurar directamente las gramáticas de forma.
📦 Instalación Simple
Instalación mediante archivo .zip directamente desde las preferencias de Blender.
🔄 Integración Directa
Integración completa en el workflow de modelado sin necesidad de salir de Blender.
Flujo de Trabajo Completo
Análisis Inicial
Usar Shape Grammar para abstraer reglas apropiadas del producto objetivo.
Definición de Reglas
Definir reglas específicas en configuración JSON basándose en el análisis.
Generación de Alternativas
Generar múltiples variaciones para explorar el espacio de diseño.
Evaluación y Refinamiento
Evaluar resultados y refinar iterativamente las configuraciones.
Análisis de Formas
Shape Grammar como herramienta tanto generativa como analítica.
🎨 Generativo
Generar formas nuevas e innovadoras basadas en reglas definidas. Ideal para exploración creativa y variaciones de producto.
Casos de Uso:
- Variaciones de productos existentes
- Exploración de conceptos de diseño
- Generación masiva para selección
🔍 Descriptivo
Analizar formas existentes para identificar patrones y reglas subyacentes. Útil para ingeniería inversa de diseños.
Casos de Uso:
- Análisis de productos competidores
- Identificación de tendencias de diseño
- Documentación de lenguajes de forma
🧩 Comprensivo
Entender la lógica de diseños previos para aplicar principios similares en nuevos proyectos.
Casos de Uso:
- Transferencia de estilos de diseño
- Mantenimiento de coherencia de marca
- Educación en principios de diseño
Configuración Completa de Ejemplo
Ejemplo integral que demuestra todas las características avanzadas del sistema.
{
"product": "Examples/advanced_lamp.blend",
"samples": 25,
"savepath": "/Users/Designer/ShapeGrammar/Output/",
"output": {
"blendfile": true,
"values": true,
"stl": true,
"render": true
},
"render_config": {
"render_scene": "one_light",
"material": "clay",
"quality": 75,
"resolution": [800, 800]
},
"form_detail": {
"Base": {
"number_transf": 3,
"max_number_forms": 2,
"optional": false,
"forms": {
"cylinder": {"use": true},
"cube": {"use": true},
"polygon": {
"max_vertice": 8,
"use": true
}
},
"transformations": {
"bevel": {"factor": 0.4, "max_segments": 5},
"scale": {"axis": "z", "factor": 0.8},
"twist": {"axis": "z", "max_twist": 0.6},
"array_rotation": {"max_count": 6}
},
"rules": [
"bevel always *",
"twist only_with cylinder",
"array_rotation except polygon"
]
},
"Cuerpo": {
"number_transf": 2,
"max_number_forms": 1,
"optional": false,
"forms": {
"cylinder": {"use": true},
"cube_loft": {
"max_displacement": 0.5,
"factor": 0.3,
"shape": "convex",
"use": true
}
},
"transformations": {
"taper": {"axis": "z"},
"texture": {
"strength_factor": 0.4,
"scale_factor": 0.8
}
},
"rules": [
"texture only_with cube_loft"
]
},
"Pantalla": {
"number_transf": 1,
"max_number_forms": 1,
"optional": true,
"forms": {
"sphere": {"use": true},
"dome_cut": {"use": true}
},
"transformations": {
"scale": {"axis": "x", "factor": 1.5}
}
}
}
}