Inicio Ejemplos Capturas de pantalla Manual de usuario Logotipo de Bluesky YouTube
OghmaNano Simule células solares orgánicas/de perovskita, OFETs y OLEDs DESCARGAR

Tutorial de la base de datos de formas (Parte B): Generación de imágenes 2D y mallas

En la Parte A creaste una nueva entrada en la base de datos de formas y construiste tu primera malla a partir de un patrón simple de estilo cristal fotónico. En esta parte nos centramos en cómo se generan en primer lugar esas imágenes 2D, y cómo se convierten en estructuras 3D útiles para trazado de rayos y simulaciones de dispositivos.

La base de datos de formas está pensada para geometrías que son difíciles de describir con funciones analíticas simples: imágenes AFM, interfaces rugosas, teselados complejos y mallas, así como piezas CAD importadas. Todo ello se maneja de forma coherente partiendo de una imagen 2D y extruyéndola después en 3D.

1. La cinta 2D Image

Abra el editor de formas para cualquier entrada de la base de datos (por ejemplo la forma demo de la Parte A) y cambie a la cinta 2D Image. Debería ver una barra de herramientas similar a la que aparece en ??.

Cinta 2D Image que muestra botones para Image, Generate Honeycomb, Generate Xtal, Generate lens, Generate Gaussian, Saw wave, Checkerboard y Perlin noise.
La cinta 2D Image. Cada generador crea una nueva imagen en escala de grises que puede extruirse en 3D.

Cada botón genera un nuevo mapa de alturas en escala de grises en el panel derecho del editor de formas: un panal, un cristal fotónico (etiquetado Generate Xtal), un perfil tipo lente, una mancha gaussiana, una onda diente de sierra, un patrón de tablero de ajedrez o una superficie rugosa con ruido de Perlin. Cada vez que haga clic en un botón, la imagen se regenera con la configuración actual.

Cada generador también tiene una pequeña flecha debajo. Al hacer clic se abre una ventana de Configure específica para ese patrón. A continuación veremos algunos ejemplos concretos.

No está restringido a imágenes sintéticas. El botón Image de la izquierda le permite importar datos AFM reales o cualquier otro mapa de bits. El discretizador interpreta la imagen como un mapa de alturas: los píxeles blancos corresponden a la altura máxima, los negros a la altura mínima, y los grises intermedios producen alturas intermedias. Para obtener los mejores resultados, los datos AFM deben convertirse a una escala de grises lineal; las paletas coloreadas de tipo “mapa de calor” no son adecuadas porque el brillo deja de codificar la altura de una manera sencilla.

Por último, si hace clic con el botón izquierdo del ratón sobre la imagen de la derecha, puede “pintar” píxeles negros para eliminar material. Esta es una forma sencilla de recortar regiones no deseadas o abrir aperturas sin tener que regenerar todo el patrón.

2. Ejemplo: Patrones de contacto en panal

Las estructuras en panal son útiles como contactos transparentes, mallas conductoras flexibles o soportes mecánicos. Para generar una, haga clic en Generate Honeycomb. El panel derecho se actualizará a una red hexagonal. Cuando haga clic en Build Mesh, el patrón se extruye en una estructura 3D como se muestra en ??.

Patrón de panal y su malla 3D correspondiente en el editor de formas.
Un patrón de panal generado desde la cinta 2D Image y extruido en 3D.
Ventana de configuración del panal que muestra dx, dy, desplazamientos, ancho de línea y rotación.
Opciones de configuración del panal. Puede ajustar el espaciado, los desplazamientos, el ancho de línea y la rotación en unidades de píxel.

La ventana de configuración le permite cambiar el espaciado característico en las direcciones x e y, desplazar el patrón respecto a la rejilla subyacente, fijar el ancho de línea y rotar el patrón. Pequeños ajustes aquí pueden marcar una gran diferencia en cómo encaja la malla en una estructura de dispositivo, por lo que merece la pena experimentar un poco.

Una vez que esté satisfecho con el patrón 2D, pulse Build Mesh de nuevo para actualizar la vista 3D. Si la malla parece demasiado complicada, puede hacer clic en Edit mesh y reducir el número de triángulos. El objetivo es siempre utilizar el menor número de triángulos que siga representando fielmente la geometría: cada triángulo adicional incrementa el coste del trazado de rayos, y en la práctica la ralentización suele ser superlineal y no lineal.

3. Ejemplo: Rugosidad tipo AFM a partir de ruido de Perlin

Las interfaces reales suelen ser rugosas, y es útil poder generar superficies “AFM falsas” con estadísticas similares para experimentos ópticos rápidos. OghmaNano utiliza ruido de Perlin, un campo aleatorio suave empleado habitualmente en gráficos por ordenador (véase Wikipedia), para imitar este comportamiento.

Haga clic en Perlin noise en la cinta 2D Image. Aparecerá un patrón de ruido en escala de grises en el panel derecho. Puede ajustar los parámetros del ruido mediante el menú desplegable de configuración y volver a hacer clic en el icono para regenerarlo hasta obtener el tipo de rugosidad que desea.

Imagen de ruido de Perlin y su malla con reducción irregular de triángulos.
Superficie generada con ruido de Perlin con reducción de nodos activada. La densidad de triángulos se adapta a la curvatura local.
Superficie de ruido de Perlin mallada con una rejilla triangular regular.
La misma superficie mallada con una rejilla regular (sin reducción de nodos). Suele ser una buena elección para datos tipo AFM.

Después de elegir un patrón, pulse Build Mesh para crear la superficie 3D. Para estructuras tipo AFM suele ser mejor utilizar una malla regular en lugar del algoritmo predeterminado de reducción de nodos. Una rejilla regular proporciona un muestreo más uniforme de la altura de la superficie y facilita el control del número total de triángulos. Puede cambiar entre estas opciones en el cuadro de diálogo Edit mesh y experimentar con distintas resoluciones de triángulo hasta encontrar un buen compromiso entre fidelidad y velocidad.

4. Posprocesado con Filters

Una vez generada una imagen 2D, puede refinarla aún más mediante la cinta Filters, mostrada en ??. Estas herramientas actúan directamente sobre la imagen de la derecha, antes del mallado.

Cinta Filters que muestra herramientas de blur, Normalize y, Normalize z, Threshold, Rotate y Boundary.
Filtros de procesamiento de imagen. Estos modifican el mapa de alturas antes de la generación de la malla.

El filtro Blur suaviza escalones y esquinas pronunciadas; las opciones Normalize reescalan la distribución de alturas a un intervalo controlado; Threshold puede convertir un patrón en escala de grises en una estructura binaria; y Boundary puede añadir un borde sólido alrededor del patrón. Todos ellos actúan sobre la imagen subyacente, de modo que puede combinarlos libremente y después pulsar Build Mesh para ver el efecto sobre la superficie 3D.

Como ejemplo concreto, empiece con un patrón de onda diente de sierra generado con el botón Saw wave. Después de construir la malla podría ver algo similar a ??. Aplicar un filtro de desenfoque suaviza los bordes y produce la superficie más suave de ??.

Patrón generado con onda diente de sierra y su malla 3D.
Un patrón de onda diente de sierra extruido en 3D. La imagen subyacente muestra crestas triangulares pronunciadas.
Patrón de onda diente de sierra desenfocado y malla 3D suavizada.
El mismo patrón después de aplicar un filtro de desenfoque. Las crestas son más suaves y la malla es más adecuada para óptica.

La estrategia general es siempre la misma: generar o importar una imagen 2D, aplicar los filtros que necesite y después reconstruir la malla. Si la malla resultante sigue pareciendo demasiado pesada, utilice Edit mesh para reducir el número de triángulos manteniendo intactas las características clave de la superficie.

5. Importación de archivos CAD (Wavefront OBJ)

Además de formas basadas en imágenes, OghmaNano puede importar modelos CAD simples mediante el formato Wavefront OBJ (enlace a Wikipedia). Esto resulta útil si ya dispone de diseños mecánicos o geometrías de lentes definidas en un paquete CAD externo.

Para importar un modelo CAD, haga clic en Import CAD file en la parte superior izquierda del editor de formas y seleccione un archivo OBJ. El analizador soporta la versión en texto plano del formato, compuesta principalmente por definiciones de vértices y caras. Otros formatos CAD no se reconocen actualmente.

Al importar geometría CAD es especialmente importante mantener bajo control el número de triángulos. Un OBJ muy detallado con decenas de miles de triángulos puede ser perfectamente válido para visualización, pero para trazado de rayos será dolorosamente lento y puede dominar fácilmente el tiempo de ejecución de una simulación completa. Si es posible, simplifique o decime la malla en su herramienta CAD antes de incorporarla a OghmaNano.

6. Una nota sobre superficies cerradas

Independientemente de si una forma procede de una imagen 2D o de un archivo CAD importado, todas las formas utilizadas por OghmaNano se tratan como superficies cerradas. De manera informal, una superficie es cerrada si encierra completamente un volumen sin huecos ni aberturas. En términos de malla, cada arista de la malla debe pertenecer exactamente a dos triángulos.

La razón de este requisito es que el solucionador óptico necesita saber sin ambigüedad cuándo un rayo está “dentro” o “fuera” de una estructura. Si una malla tiene aristas abiertas, caras ausentes o autointersecciones, los rayos pueden escaparse por los huecos o quedar atrapados en regiones mal definidas. Esto puede dar lugar a artefactos numéricos o incluso provocar el fallo del trazador de rayos.

Las mallas generadas a partir de imágenes 2D son siempre cerradas por construcción: el plano base y las paredes laterales se añaden automáticamente. Las importaciones CAD, sin embargo, solo son tan buenas como el archivo original. Si encuentra problemas con una forma derivada de CAD, merece la pena comprobar en un visor CAD si el objeto forma realmente una envolvente sellada y repararlo si es necesario antes de utilizarlo en OghmaNano.