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"

1

Definir Arquitectura

Definir arquitectura del producto usando cajas de diferentes tamaños que representan componentes principales.

2

Llenar Cajas

Llenar las cajas con sólidos simples (primitivas geométricas) que servirán como base para transformaciones.

3

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

1

Análisis Inicial

Usar Shape Grammar para abstraer reglas apropiadas del producto objetivo.

2

Definición de Reglas

Definir reglas específicas en configuración JSON basándose en el análisis.

3

Generación de Alternativas

Generar múltiples variaciones para explorar el espacio de diseño.

4

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}
      }
    }
  }
}