CommunityImagegithub.com

Rendu studio CAO

Transforme un STEP ou IGES en photos studio, détourages transparents, tournette et embed 3D auto-hébergé.

Qu'est-ce que Rendu studio CAO ?

Pipeline Blender local : associer les matériaux, vérifier un aperçu, puis produire le visuel hero, des PNG transparents, une scène éditable et, au choix, une visionneuse web avec RA mobile. Pas d'image générative : les pixels viennent de la géométrie réelle.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/abchiaravalle/cad-studio-renders/tree/HEAD

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 Rendu studio CAO ?

Transformez un assemblage CAO en tout ce dont une page produit a besoin : photos de studio photoréalistes, découpes transparentes, vidéo tournante et un visualiseur 3D auto-hébergé avec RA sur téléphone. L'ensemble du processus se résume à une commande, et tout s'exécute localement. Le GPU effectue le rendu ; aucune génération d'image par IA n'est impliquée, donc les pixels correspondent à la géométrie réelle.

python3 "${CLAUDE_SKILL_DIR}/scripts/studio.py" model.step --name "Nom du produit"

${CLAUDE_SKILL_DIR} correspond au dossier de cette compétence (Claude Code le renseigne automatiquement). Pour les autres agents, utilisez le dossier contenant ce fichier SKILL.md. Tous les chemins de scripts ci-dessous sont relatifs à ce dossier.

Quand l'utiliser

  • « Faire un rendu de ce fichier STEP », « créer des visuels produits / packshots à partir de CAO », « rendu photoréaliste de cette pièce »
  • « Mettre un modèle 3D de ceci sur notre site web », « le rendre rotatable », « vue RA du produit »
  • « PNG transparent du produit », « découpe pour le catalogue », « vidéo tournante »
  • Un artiste 3D souhaite une scène Blender modifiable pour la terminer à la main

Ne concerne pas : la modélisation d'une pièce de zéro (utilisez un outil CAO), la génération d'image à partir d'un prompt textuel, ou le rendu d'une scène qui n'est pas un produit (intérieurs, personnages).

Installation de cette compétence

  • Claude Code, terminal : claude plugin install cad-studio-renders --marketplace abchiaravalle/cad-studio-renders
  • Claude Code, application de bureau : demandez à Claude de cloner https://github.com/abchiaravalle/cad-studio-renders dans ~/.claude/skills/cad-studio-renders (l'application de bureau et le terminal lisent tous deux ce dossier).
  • Tout autre agent : placez ce dossier dans le répertoire où cet agent charge les dossiers SKILL.md.

Prérequis (vérifier d'abord)

blender --version       # 4.2 ou plus récent. Si manquant : https://www.blender.org/download/
uv --version            # lit le fichier CAO. Si manquant : https://docs.astral.sh/uv/
ffmpeg -version         # nécessaire uniquement pour les vidéos --turntable

Si Blender est installé mais pas dans le PATH, définissez BLENDER=/chemin/vers/blender. Un GPU (Apple Silicon, NVIDIA, AMD) accélère les rendus de 5 à 20 fois ; le CPU fonctionne, mais est plus lent. La première exécution télécharge une bibliothèque CAO (~60 Mo) et un HDRI de studio (24 Mo, CC0) dans ~/.cache/cad-studio-renders/.

Flux de travail

  1. Mapper les matériaux avant de lancer un rendu. Les fichiers CAO portent rarement des finitions réelles.
    python3 "${CLAUDE_SKILL_DIR}/scripts/studio.py" model.step --map-only
    
    Lisez le tableau. Chaque pièce affiche son préréglage et la raison. Les lignes se terminant par (review me) sont des suppositions. Corrigez les mauvaises avec un fichier de règles (section suivante) et relancez --map-only jusqu'à ce que ce soit correct.
  2. Aperçu (environ 10 s) : --preview génère un brouillon de 1000 px. Observez-le avant de passer des minutes sur les rendus finaux. Vérifiez : bon sens, pièces assemblées (rien de flottant), cadrage, matériaux.
  3. Final : retirez --preview. Les valeurs par défaut produisent un cliché héro de 2400 px sur fond, le même cliché en PNG transparent, un fichier .blend modifiable et le package d'intégration web.
  4. Vérifiez la sortie en pleine taille (zoomez sur la région la plus dense) avant de la livrer.

Correction des matériaux : le fichier de règles

{"rules": [
  {"match": "frame|base",    "preset": "powder_coat",  "color": "#2b2f33"},
  {"match": "^Cover",        "preset": "plastic_textured"},
  {"match": "motor",         "preset": "motor_housing"},
  {"match": "logo plate",    "preset": "anodised_color", "color": "#c8102e"},
  {"match": "spindle",       "preset": "steel_polished", "params": {"roughness": 0.05}},
  {"match": "safety guard",  "hide": true},
  {"match": "gantry",        "offset_mm": [0, 0, 80]}
]}

match est une expression rationnelle insensible à la casse testée par rapport au nom de la pièce, au nom de l'instance et au chemin d'assemblage. La première règle correspondante l'emporte. params remplace toute valeur de préréglage (rugosité, aspect métallique, revêtement, anisotropie, chanfrein, relief...). offset_mm définit la position de cette pièce dans la vue éclatée. Les préréglages se trouvent dans assets/presets/materials.json ; ajoutez-en de nouveaux ici.

Sans règles, le mappeur automatique utilise, dans l'ordre : les mots-clés du nom de pièce (fixations, roulements, rails linéaires, vis à billes, moteurs, caoutchouc, verre...), puis la couleur CAO (les couleurs saturées deviennent de la peinture, les pièces partageant une couleur partagent une finition), puis la taille.

Options importantes

OptionEffet
--shots hero,front,side,top,iso,back,square,hero_low,detailAngles de caméra (assets/presets/shots.json)
--lighting studio_soft / high_key / dramatic / hdri_onlyÉclairage (assets/presets/lighting.json)
--backdrop 0.42 ou --backdrop "#1d1f22"Fond gris ou couleur
--size 4000 --aspect 16:9Taille et format de sortie
--samples 768Plus d'échantillons = détails brillants plus nets, rendu plus long
--exposure 0.3, --light-scale 1.2, --env-scale 0.8Luminosité
--hdri photo_studio_01 ou --hdri mon.exr, --hdri-rotation 40Environnement de réflexion
--dof 0 / --dof 2Flou d'arrière-plan désactivé / moins flou
--bevel-scale 0Désactiver l'arrondi des bords (l'arrondi est ce qui rend la CAO réaliste)
`--detail-target "spindlechuck"avec--shots detail`
--no-transparent, --no-backdrop, --no-embed, --no-blendIgnorer les livrables
--clayPassage en gris (vérification de l'éclairage/de la forme, revues de conception)
--passesEXR multicouche : profondeur, normales, occlusion ambiante, brouillard, cryptomatte (ID objet + matériau)
--exploded 0.4Vue éclatée (pièces poussées depuis le centre ; les règles offset_mm priment)
--turntable [--turntable-transparent]MP4 + WebM 360° (alpha optionnel) + images PNG
--up yForcer l'axe vertical si la détection automatique se trompe

Ce que vous obtenez

<model>_studio/
  hero.png                    16 bits, sur fond studio
  hero_transparent.png        16 bits RGBA, ombre portée douce conservée (--shadow none pour la supprimer)
  hero_clay.png, hero_exploded.png, hero_passes.exr       (sur demande)
  <slug>_turntable.mp4 / .webm, turntable_frames/          (sur demande)
  <slug>_scene.blend          lumières, caméras, matériaux, fond, textures intégrées
  materials_map.json          chaque pièce -> préréglage + raison (modifier et relancer via --rules)
  manifest.json               paramètres, temps, liste de fichiers avec tailles et hachages
  embed/                      package de visualisation 3D auto-hébergé (voir ci-dessous)

Le fichier .blend est conçu pour être terminé à la main. Collections : Product (un objet vide par pièce, ce qui permet de déplacer ou d'animer chaque pièce individuellement) et Studio (fond, lumières, caméras). Chaque caméra est liée à un marqueur de timeline, donc le déplacement dans la timeline change de plan. Les matériaux sont des arbres de nœuds Principled BSDF simples. L'arrondi des bords est effectué par un nœud Bevel Shader, donc la géométrie reste exacte.

Le package d'intégration

embed/ est entièrement statique et n'effectue aucune requête externe. Il intègre Google <model-viewer> (Apache-2.0) et le décodeur Draco. Téléchargez le dossier n'importe où et collez snippet.html, ou placez embed.html dans une iframe. Il contient :

  • assets/<slug>.glb : compressé Draco, avec matériaux correspondant aux rendus
  • assets/<slug>.usdz : RA sur iPhone/iPad via Quick Look
  • une image d'affiche
  • le HDRI du studio pour les réflexions
  • index.html : une page de démonstration avec boutons de copie et téléchargements de rendus

Des notes d'hébergement pour WordPress, Shopify, Webflow et autres se trouvent dans embed/README.md.

Pièges (chacun a posé problème lors du développement)

  • Modèle sur le côté ou à l'envers. SolidWorks, Inventor, Creo et Fusion utilisent Y vers le haut par défaut ; la plupart des autres utilisent Z vers le haut. Le convertisseur lit l'en-tête STEP pour deviner et affiche la supposition (up axis: Y (written by Solidworks)). Si c'est faux, passez --up z (ou y, -y, x...).
  • Pièces qui dérivent / « vue éclatée accidentelle ». La cause était des transformations d'assemblage appliquées deux fois. Le constructeur de scène vérifie maintenant que le regroupement des pièces ne déplace pas la géométrie et abandonne si c'est le cas. Si vous modifiez le code de la scène, conservez cette vérification.
  • Métal plat et irréaliste. Généralement l'éclairage, pas les matériaux : sans environnement, le métal n'a rien à réfléchir. Gardez un HDRI même avec des lumières de zone (--env-scale, pas 0).
  • Premier rendu délavé. La puissance des lumières est adaptée à la taille du modèle ; si vous ajoutez des lumières personnalisées dans lighting.json, la puissance est par (rayon du modèle en mètres)². Commencez bas et utilisez --preview.
  • Mauvaise supposition de matériau. Les noms de pièces cryptiques (P-0042, ASSY_7_REV2, noms non anglais translittérés) ne correspondent pas aux mots-clés et se rabattent sur la couleur/la taille. C'est ce que signale (review me). Écrivez des règles pour ces pièces.
  • OCP 8 a cassé le lecteur (TDF_LabelSequence a été déplacé). Le lecteur CAO bloque cadquery-ocp-novtk<8. Ne le débloquez pas sans retester.
  • Le modèle web a un aspect différent du rendu. glTF ne peut pas transporter de relief procédural, de chanfrein ou de bruit de rugosité, donc le modèle web ne reçoit que les valeurs de base. C'est normal ; l'image d'affiche est le vrai rendu.
  • Gros assemblages (>5M triangles) : utilisez --quality web pour les aperçus ; les rendus finaux fonctionnent toujours mais nécessitent de la RAM (environ 1 Go pour 2M triangles dans Blender).

Vérification avant livraison

  1. Ouvrez le PNG héro à 100 % et inspectez la région la plus dense : pas de faces noires, pas de facettes sur les courbes, pas de mouches volantes (points blancs).
  2. Ouvrez le PNG transparent sur un fond sombre et un fond clair : bords nets, ombre uniquement sous le produit.
  3. Servez embed/ localement (python3 -m http.server -d embed 8000), ouvrez-le et confirmez que le modèle se charge, tourne et n'a pas d'erreurs dans la console. Vérifiez sur un téléphone si la RA est importante.
  4. Si materials_map.json contient encore des lignes review me, mentionnez-le dans la remise.

Fichiers

  • scripts/studio.py : point d'entrée (CLI ci-dessus)
  • scripts/cad_to_glb.py : STEP/IGES/BREP vers glTF avec noms d'assemblage et couleurs CAO (script uv)
  • scripts/automap.py : décisions pièce vers matériau (Python pur, exécutable seul)
  • scripts/blender_studio.py : scène, matériaux, lumières, caméras, rendus, .blend, export web
  • scripts/package_embed.py : le package de visualisation auto-hébergé
  • assets/presets/*.json : matériaux, éclairages, plans de caméra
  • examples/make_demo_model.py : construit l'étau de démonstration (géométrie originale, CC0)

Skills associés