CommunityImagengithub.com

Visualización científica con POV-Ray

Crea diagramas técnicos/científicos e iconos conceptuales con POV-Ray: átomos, enlaces, estructuras cristalinas/moleculares, flechas de campos vectoriales, conectores ondulatorios en oscilación, efectos brillantes/energéticos, acabados metálicos y renders con fondo transparente listos para insertar en artículos, presentaciones, pósteres y figuras de subvenciones.

¿Qué es Visualización científica con POV-Ray?

Esta habilidad proporciona un conjunto de bloques de construcción y convenciones para POV-Ray, desarrollados y refinados en un proyecto real de visualización científica que incluyó desde renders de estado fundamental magnético hasta iconos conceptuales para propuestas de financiación. Su objetivo es generar diagramas e iconos independientes de alta calidad, listos para ser insertados en documentos, presentaciones o figuras de subvenciones, sin necesidad de que el usuario mencione explícitamente 'POV-Ray' o 'render 3D'. Al ser POV-Ray un sistema basado en texto plano, los escenarios son fáciles de parametrizar, componer a partir de macros reutilizables y renderizar a diferentes resoluciones sin rehacer el trabajo. La habilidad incluye macros especializadas como `sv_atom`, `sv_bond` y `sv_arrow` para estructuras moleculares; `sv_wave_tube` para ondas y conectores de interacción abstracta; `sv_glow_sphere` para efectos brillantes; y `sv_orientation_colour` para mapear direcciones a colores. Además, proporciona un script de renderizado (`render.sh`) que configura automáticamente el canal alfa, el antialiasing y las rutas de inclusión, evitando errores comunes como el fondo opaco o la geometría recortada. Incluye cinco plantillas de escenas listas para adaptar (láser, corriente de partículas, red térmica, triángulo de interacción) y una guía de diseño con convenciones probadas visualmente, como el uso de un rig de iluminación de 3 puntos para un acabado profesional, la distorsión deliberada de arreglos genéricos para que parezcan sistemas reales, y la diferenciación visual entre conexiones físicas (enlaces rígidos) y abstractas (ondas brillantes).

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/richard-evans/research-skills/tree/HEAD/scientific-visualisation

Installed? Explore more Imagen skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Visualización científica con POV-Ray?

Esta habilidad incluye un conjunto de bloques de construcción y convenciones de POV-Ray desarrolladas para un proyecto real (cuatro renders de estado fundamental magnético más cinco iconos conceptuales para una propuesta de subvención), refinadas tras varias rondas de revisión visual. Recurre a ella cada vez que el entregable sea un diagrama o icono independiente destinado a un documento que otra persona leerá, no una interfaz de usuario, una página web o una imagen renderizada genérica.

Por qué POV-Ray y qué te aporta esto

Las escenas de POV-Ray son texto plano, lo que significa: son fáciles de parametrizar (bucle sobre N átomos, generar un cristal, barrer un parámetro), fáciles de componer a partir de macros reutilizables y fáciles de re-renderizar a diferente resolución sin rehacer ningún trabajo. La salida es una imagen raster plana y de control preciso (no una escena 3D interactiva), exactamente el formato que los artículos, diapositivas y PDFs de subvenciones necesitan.

Inicio rápido

  1. #include "common.inc" primero: configura la cámara, un sistema de iluminación suave de 3 puntos, fondo/transparencia y preajustes de acabado compartidos. Míralo una vez; los comentarios explican el por qué de cada elección (importante si necesitas desviarte de ello).
  2. Incorpora los que necesites:
    • molecule.inc - átomos (sv_atom), enlaces (sv_bond), flechas vectoriales (sv_arrow)
    • wave.inc - tubos oscilantes: ondas propagantes y conectores "abstractos de interacción" difusos son la misma macro (sv_wave_tube) con diferentes parámetros
    • glow.inc - el truco de halo en capas para cualquier cosa que deba leerse como brillante/caliente/energética (sv_glow_sphere)
    • orientation_color.inc - mapea una dirección/ángulo a un color perceptualmente distinto (sv_orientation_colour / sv_colour_wheel), para cuando la dirección en sí misma es el dato (ángulo de espín, dirección de flujo, fase)
  3. Renderiza con scripts/render.sh <escena.pov> [W] [H] [salida.png] en lugar de llamar a povray directamente: establece +UA (canal alfa real), antialiasing sensato, apunta a POV-Ray a assets/ de esta habilidad para que tus #include se resuelvan sin copiar archivos, y te advertirá si el canal alfa sale mal (ver el problema a continuación: ya ha afectado a una sesión real, silenciosamente).
  4. Mira el resultado antes de darlo por terminado. Lee el PNG (herramienta Read) y mira de verdad: POV-Ray renderizará felizmente algo sutilmente incorrecto (recortado por el encuadre de la cámara, color incorrecto, flechas superpuestas) sin ningún error.

Las cinco plantillas de widgets

assets/widgets/ contiene cinco escenas listas para adaptar, cada una un ejemplo práctico de los bloques de construcción anteriores:

ArchivoQué muestraConstruido a partir de
laser.povUna onda oscilante que se propaga + flecha de dirección (luz, sonido, cualquier señal)sv_wave_tube (abierto, sin afilado)
particle_current.povUna fila de N partículas, cada una con una propiedad vectorial, a la deriva en una dirección de flujosv_atom + sv_arrow + una flecha de flujo
thermal_grid.povUna red NxN con pequeña fluctuación posicional, brillante de caliente a frío según la distancia al centrosv_glow_sphere + un bucle de red con fluctuación
interaction_triangle.povN objetos unidos por líneas de "interacción" difusas, brillantes y no rígidas (distintas de un enlace físico)sv_atom + sv_wave_tube (afilada, fluctuante, brillante)

Copia la más cercana a lo que necesitas y cambia los parámetros declarados al principio (colores, cantidades, espaciado, amplitud) antes de tocar la geometría en sí: las cuatro están escritas para que los "ajustes" estén arriba.

Para una molécula/estructura cristalina real (no un icono conceptual), salta los widgets y ve directamente a molecule.inc: itera sobre tus coordenadas de átomos llamando a sv_atom y sv_bond, usando sv_arrow para cualquier vector por átomo (espín, dipolo, desplazamiento) y sv_orientation_colour si la dirección de ese vector es en sí misma un dato significativo que merece codificación por color.

Convenciones de diseño que vale la pena mantener

Estas no son arbitrarias: cada una surgió de una ronda real de revisión visual:

  • Fondo blanco, canal alfa real (+UA). Los renders caen directamente sobre una diapositiva/página/figura sin un recuadro visible y se combinan limpiamente junto a otros paneles sin importar lo que haya detrás.
  • El sistema de iluminación de 3 puntos en common.inc, no una luz puntual única. Una luz fuerte se lee como un objeto 3D renderizado ("clip art"); el sistema suave de clave+relleno+relleno se lee como una ilustración impresa, pulida y mate. Mantén el mismo sistema en todos los paneles de una figura multipanel para que se lean como una familia: un panel iluminado de manera diferente a sus vecinos parece una pegatina que no encaja, incluso si el estilo de geometría coincide.
  • Los enlaces/conectores rígidos reciben un pequeño desplazamiento en z lejos de la cámara (el parámetro ZOffset de sv_bond) siempre que un enlace y una flecha puedan correr casi paralelos a través de la misma región; de lo contrario, se produce conflicto de profundidad o el enlace corta visiblemente la punta de flecha. Lo suficientemente pequeño (0.15-0.25 unidades en una escala de escena típica) para que nadie note conscientemente que está allí.
  • Las flechas son un 10-20% más cortas de "tocar". Si dos flechas vectoriales se encuentran en un punto compartido, reduce Scale hasta que sus puntas se despejen mutuamente: las puntas tocándose se leen como un fallo de renderizado, no como un dato.
  • Las conexiones abstractas vs. físicas obtienen un lenguaje visual diferente. Un enlace real (sv_bond): rígido, nítido, mate. Un acoplamiento/fuerza/ correlación abstracto (sv_wave_tube con Glow=true): ondulado, de bordes suaves, brillante. No dibujes una interacción para la que no puedas señalar un solapamiento orbital átomo-átomo literal como si fuera una varilla física.
  • Distorsiona ligeramente los arreglos "genéricos". Un triángulo equilátero perfecto o una red perfectamente regular se leen como clip art. Una pequeña irregularidad deliberada (ver el triángulo de interaction_triangle.pov o la fluctuación de thermal_grid.pov) se lee como "un sistema real", incluso en un icono esquemático que no es resultado de simulación.

Cuando renderizas datos de simulación real, no un icono

Si las posiciones/vectores de los átomos provienen de una simulación real (DFT, dinámica molecular, micromagnética, etc.), las convenciones de iconos-widget anteriores siguen aplicándose, pero estás poblando las llamadas a sv_atom/ sv_bond/sv_arrow a partir de datos de coordenadas reales en lugar de seleccionar valores manualmente. Notas prácticas:

  • Genera enlaces mediante un corte de distancia entre pares de átomos, no a mano.
  • Si quieres mostrar un parche teselado periódico físicamente real (una región más grande que una celda de simulación) sin volver a ejecutar una simulación costosa, y la propiedad se tesela uniformemente (cierto para la mayoría de los estados fundamentales ordenados simples), a menudo es válido replicar el resultado de celda pequeña ya convergido geométricamente en lugar de resimular un sistema más grande; solo verifica primero que la propiedad realmente no varíe de celda a celda en tu caso.
  • Recorta a un límite físicamente significativo (por ejemplo, una esfera de coordinación completa/motivo unitario), no a un rectángulo arbitrario: el recorte en sí debe decir algo verdadero sobre la estructura.

Solución de problemas

Lee references/troubleshooting.md antes de dedicar tiempo a depurar un error de análisis sintáctico de POV-Ray o un render que se vea mal: enumera los problemas concretos ya encontrados al construir esta habilidad (palabras SDL reservadas que parecen nombres de variables ordinarias, el error silencioso de transparencia alfa, la lateralidad de la cámara en POV-Ray, peculiaridades de ámbito de sphere_sweep/ array). La mayoría de los mensajes de error de POV-Ray son honestos sobre el problema de sintaxis pero poco útiles sobre por qué se ve así desde las expectativas de un programador normal; ese archivo existe para que no tengas que redescubrir el mismo puñado de trampas.

Para explicaciones más detalladas de cada parámetro de macro y la justificación de su diseño (con más ejemplos de llamadas de los que caben aquí), consulta references/techniques.md.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills relacionados