CommunityImagegithub.com

Visualisation scientifique avec POV-Ray

Créez des diagrammes et icônes conceptuels scientifiques/techniques avec POV-Ray — atomes, liaisons, structures cristallines/moléculaires, flèches de champ vectoriel, connecteurs ondulés, effets lumineux/énergétiques, finitions métalliques et rendus sur fond transparent prêts à être intégrés dans des articles, présentations, posters et figures de subventions.

Qu'est-ce que Visualisation scientifique avec POV-Ray ?

Cette compétence fournit un ensemble de blocs de construction et de conventions POV-Ray pour générer des diagrammes scientifiques et des icônes conceptuels de haute qualité. Elle est conçue pour les chercheurs, ingénieurs et développeurs ayant besoin de représentations visuelles précises de concepts physiques ou chimiques — atomes, liaisons, réseaux cristallins, champs vectoriels, ondes propagatoires, ou interactions abstraites — sans avoir à maîtriser les détails complexes du rendu 3D. La compétence inclut des fichiers d'inclusion pré-construits (`molecule.inc`, `wave.inc`, `glow.inc`, `orientation_color.inc`), des macros paramétrables (`sv_atom`, `sv_bond`, `sv_arrow`, `sv_wave_tube`, `sv_glow_sphere`) et cinq modèles de widgets prêts à l'emploi (laser, courant de particules, réseau thermique, triangle d'interaction, etc.) dans `assets/widgets/`. Elle fonctionne sur n'importe quel système avec POV-Ray installé et se pilote via un script `render.sh` qui gère automatiquement le canal alpha, l'anti-aliasing et les chemins d'inclusion. Les conventions de conception — fond blanc avec transparence, éclairage trois points, décalages anti-artefacts, distinction visuelle entre connexions physiques et abstraites — sont documentées et justifiées par des retours d'expérience réels. La compétence excelle aussi bien pour des icônes conceptuels simples que pour des visualisations de données de simulation réelles (DFT, dynamique moléculaire, micro-magnétisme).

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

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Visualisation scientifique avec POV-Ray ?

Cette compétence regroupe un ensemble de blocs de construction et de conventions POV-Ray mises au point pour une figure héroïque réelle (quatre rendus d'état fondamental magnétique plus cinq widgets d'icônes conceptuels pour une proposition de subvention), affinés sur plusieurs cycles de révision visuelle. Utilisez-la dès que le livrable est un diagramme ou une icône autonome destiné(e) à figurer dans un document que quelqu'un d'autre lira — pas une interface utilisateur, pas une page web, une image rendue.

Pourquoi POV-Ray et ce que cela vous apporte

Les scènes POV-Ray sont en texte brut, ce qui signifie : elles sont faciles à paramétrer (boucler sur N atomes, générer un réseau, balayer un paramètre), faciles à composer à partir de macros réutilisables, et faciles à rendre à nouveau à une résolution différente sans refaire tout le travail. Le résultat est une image raster plate et précisément contrôlée (pas une scène 3D interactive) — exactement le format que les articles, diapositives et PDF de subventions veulent.

Démarrage rapide

  1. #include "common.inc" en premier — configure la caméra, un éclairage doux à 3 points, fond/transparence, et des presets de finition partagés. Regardez-le une fois ; les commentaires expliquent le pourquoi de chaque choix (important si vous devez vous en écarter).
  2. Incluez ceux dont vous avez besoin :
    • molecule.inc — atomes (sv_atom), liaisons (sv_bond), flèches vectorielles (sv_arrow)
    • wave.inc — tubes oscillants : ondes propagatoires et connecteurs "d'interaction abstraite" flous sont la même macro (sv_wave_tube) avec différents paramètres
    • glow.inc — l'astuce des halos superposés pour tout ce qui doit être perçu comme lumineux/chaud/énergétique (sv_glow_sphere)
    • orientation_color.inc — mapper une direction/angle à une couleur perceptuellement distincte (sv_orientation_colour / sv_colour_wheel), pour quand la direction elle-même est la donnée (angle de spin, direction d'écoulement, phase)
  3. Rendez avec scripts/render.sh <scene.pov> [W] [H] [out.png] plutôt que d'appeler povray directement — il définit +UA (canal alpha réel), un anti-aliasing raisonnable, pointe POV-Ray vers assets/ de cette compétence pour que vos #includes se résolvent sans copier de fichiers, et vous avertira si le canal alpha est incorrect (voir l'astuce ci-dessous — cela a déjà causé un problème dans une session réelle, silencieusement).
  4. Regardez le résultat avant de le considérer terminé. Lisez le PNG (outil Read) et regardez réellement — POV-Ray rendra volontiers quelque chose de subtilement erroné (coupé par le cadre de la caméra, mauvaise couleur, flèches qui se chevauchent) sans aucune erreur.

Les cinq modèles de widgets

assets/widgets/ contient cinq scènes prêtes à être adaptées, chacune étant un exemple concret des blocs de construction ci-dessus :

FichierCe qu'il montreConstruit à partir de
laser.povUne onde oscillante propagatoire + flèche de direction (lumière, son, tout signal)sv_wave_tube (ouvert, sans effilement)
particle_current.povUne rangée de N particules chacune portant une propriété vectorielle, dérivant dans une direction d'écoulementsv_atom + sv_arrow + une flèche d'écoulement
thermal_grid.povUn réseau NxN avec un faible jitter positionnel, lumineux du chaud au froid selon la distance au centresv_glow_sphere + une boucle de grille avec jitter
interaction_triangle.povN objets reliés par des lignes d'"interaction" floues, lumineuses, non rigides (distinctes d'une liaison physique)sv_atom + sv_wave_tube (effilé, avec jitter, lumineux)

Copiez celui qui se rapproche le plus de ce dont vous avez besoin et modifiez les paramètres déclarés en haut (couleurs, nombres, espacement, amplitude) avant de toucher à la géométrie elle-même — les quatre sont écrits de sorte que les "boutons" soient en haut.

Pour une vraie molécule/structure cristalline (pas une icône conceptuelle), ignorez les widgets et allez directement dans molecule.inc : bouclez sur vos coordonnées d'atomes en appelant sv_atom et sv_bond, en utilisant sv_arrow pour tout vecteur par atome (spin, dipôle, déplacement) et sv_orientation_colour si la direction de ce vecteur est elle-même une donnée significative qui mérite un code couleur.

Conventions de conception à conserver

Elles ne sont pas arbitraires — chacune est issue d'un véritable cycle de révision visuelle :

  • Fond blanc, canal alpha réel (+UA). Les rendus se placent directement sur une diapositive/page/figure sans cadre visible et se composent proprement à côté d'autres panneaux, indépendamment de ce qui se trouve derrière eux.
  • L'éclairage trois points dans common.inc, pas une seule source lumineuse ponctuelle. Une lumière dure donne l'impression d'un objet 3D rendu ("clip art") ; l'éclairage doux clé+remplissage+remplissage donne l'impression d'une illustration polie, mate, imprimée. Gardez le même éclairage sur tous les panneaux d'une figure multi-panneaux pour qu'ils soient perçus comme une seule famille — un panneau éclairé différemment de ses voisins ressemble à un autocollant dépareillé même si le style géométrique correspond.
  • Les liaisons/connecteurs rigides reçoivent un petit décalage z loin de la caméra (paramètre ZOffset de sv_bond) chaque fois qu'une liaison et une flèche pourraient être quasiment parallèles dans la même zone — sinon elles entrent en conflit de profondeur, ou la liaison coupe visiblement une pointe de flèche. Assez petit (0,15-0,25 unités sur une échelle de scène typique) pour que personne ne remarque consciemment sa présence.
  • Les flèches sont 10-20 % plus courtes que "touchantes". Si deux flèches vectorielles se rencontrent à un point commun, réduisez Scale jusqu'à ce que leurs pointes se dégagent l'une de l'autre — des pointes qui se touchent donnent l'impression d'un bug de rendu, pas d'une donnée.
  • Les connexions abstraites vs. physiques utilisent un langage visuel différent. Une vraie liaison (sv_bond) : rigide, nette, mate. Une couplage/force/corrélation abstraite (sv_wave_tube avec Glow=true) : ondulée, à bords doux, lumineuse. Ne dessinez pas une interaction que vous ne pouvez pas attribuer à un chevauchement orbital atome-atome littéral comme s'il s'agissait d'une tige physique.
  • Déformez légèrement les agencements "génériques". Un triangle équilatéral parfait ou une grille parfaitement régulière donne l'impression d'un clip art. Une petite irrégularité délibérée (voir le triangle de interaction_triangle.pov ou le jitter de thermal_grid.pov) donne l'impression d'"un système réel", même dans une icône schématique qui n'est pas le résultat d'une simulation.

Quand vous rendez des données de simulation réelles, pas une icône

Si les positions/vecteurs d'atomes proviennent d'une simulation réelle (DFT, dynamique moléculaire, micro-magnétisme, etc.), les conventions des widgets d'icônes ci-dessus s'appliquent toujours, mais vous peuplez les appels à sv_atom/sv_bond/sv_arrow à partir de données de coordonnées réelles plutôt que de choisir des valeurs à la main. Notes pratiques :

  • Générez les liaisons par un seuil de distance entre paires d'atomes, pas à la main.
  • Si vous voulez montrer une vraie tuile périodique physiquement (une région plus grande qu'une cellule de simulation) sans relancer une simulation coûteuse, et que la propriété se répète uniformément (vrai pour la plupart des états fondamentaux ordonnés simples), il est souvent valide de répliquer géométriquement le résultat de la petite cellule déjà convergé plutôt que de resimuler un système plus grand — vérifiez simplement d'abord que la propriété ne varie vraiment pas d'une cellule à l'autre dans votre cas.
  • Recadrez sur une frontière physiquement significative (par exemple une sphère de coordination/un motif unité complet), pas sur un rectangle arbitraire — le recadrage lui-même doit dire quelque chose de vrai sur la structure.

Dépannage

Lisez references/troubleshooting.md avant de passer du temps à déboguer une erreur d'analyse POV-Ray ou un rendu qui semble incorrect — il répertorie les pièges spécifiques déjà rencontrés lors de la construction de cette compétence (mots réservés SDL qui ressemblent à des noms de variables ordinaires, le bug silencieux de transparence alpha, la latéralité de la caméra POV-Ray, les bizarreries de portée de sphere_sweep/array). La plupart des messages d'erreur POV-Ray sont honnêtes sur le problème syntaxique mais peu utiles sur le pourquoi il se présente ainsi du point de vue d'un programmeur normal ; ce fichier existe pour que vous n'ayez pas à redécouvrir les mêmes quelques pièges.

Pour des explications plus complètes des paramètres de chaque macro et de leur justification conceptuelle (avec plus d'exemples d'appels que ce qui tient ici), consultez references/techniques.md.

Individual skills in this repo

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

Skills associés