OFFRE DE LANCEMENT25 € de crédits offerts à l'inscription sans CBJ'en profite
    TURNA, ferme de rendu Blender
    Retour aux ressources

    BVH : la bounding volume hierarchy de Cycles et le fichier .bvh de motion capture dans Blender

    T
    L'Équipe Technique TURNA
    29 octobre 2026
    13 min

    En bref

    BVH désigne deux choses sans rapport dans Blender. En rendu, c’est la bounding volume hierarchy, l’arbre de boîtes englobantes que Cycles construit au début de chaque rendu (l’étape « Building BVH ») pour trouver vite le triangle que touche chaque rayon. En animation, un fichier .bvh (Biovision Hierarchy) contient un squelette et un mouvement capturé, à importer par File > Import > Motion Capture (.bvh).

    • Réglages du BVH : Render Properties > Performance > Acceleration Structure (panneau absent avec OptiX seul).
    • Animation plus rapide à préparer : Render Properties > Performance > Final Render > Persistent Data.
    • Lancer de rayons matériel : Edit > Preferences > System > Cycles Render Devices (OptiX, HIP RT, Embree on GPU, MetalRT).
    • Fichier de motion capture : File > Import > Motion Capture (.bvh).
    • Transfert sur votre rig : contraintes Copy Rotation, puis Pose > Animation > Bake Action.
    Astuce de Pro

    Ne perdez plus de temps sur vos rendus

    L'optimisation a ses limites. Quand votre scène Blender devient trop lourde, envoyez-la depuis l'add-on : les images de l'animation sont réparties sur plusieurs GPU.

    Obtenir 25 € de crédits

    Les menus, cités en anglais, sont vérifiés dans le manuel et le code source de Blender 5.2.

    BVH : deux sens qui n’ont rien à voir

    Le même sigle recouvre une notion de rendu et un format d’animation. Repérez d’abord lequel vous concerne :

    Bounding volume hierarchyFichier .bvh
    DomaineRendu par lancer de rayonsAnimation de personnages (motion capture)
    NatureUn arbre de boîtes que le moteur calcule en mémoireUn fichier texte : un squelette, puis son mouvement
    Où le croiser dans BlenderMessages « Building BVH » au lancement du rendu, panneau Acceleration StructureFile > Import > Motion Capture (.bvh)

    Qu’est-ce qu’une bounding volume hierarchy ?

    Un moteur de lancer de rayons comme Cycles doit trouver, pour chaque rayon, la première surface qu’il rencontre. Tester chaque triangle pour chaque rayon est hors de portée dès que la scène compte des millions de triangles. La bounding volume hierarchy (BVH, hiérarchie de volumes englobants) évite ce travail : c’est une structure d’accélération, construite une fois avant le rendu, puis parcourue par tous les rayons. Le principe du ray tracing est détaillé dans le guide ray tracing et path tracing.

    Des boîtes imbriquées, et un rayon qui saute des branches entières

    Le BVH est un arbre. Les primitives (triangles, segments de courbes, points) sont rangées dans les feuilles, et chaque nœud stocke la boîte englobante de tout ce qui se trouve sous lui, jusqu’à la racine qui enferme la scène. Le moteur teste la boîte de la racine, puis celles de ses enfants : chaque fois que le rayon manque une boîte, tout le sous-arbre qu’elle contient est écarté sans un seul test de triangle. Seules les primitives des feuilles atteintes sont testées.

    Chaque primitive n’apparaît qu’une fois dans un BVH classique, mais les boîtes de deux nœuds voisins peuvent se chevaucher, et un rayon qui traverse la zone commune visite alors les deux branches.

    Construire l’arbre : la surface area heuristic (SAH)

    Pour couper un groupe de primitives en deux, les constructeurs de BVH utilisent la surface area heuristic, qui estime le coût des tests d’intersection de chaque découpe : la probabilité qu’un rayon qui traverse une boîte traverse aussi une boîte plus petite contenue dedans est proportionnelle au rapport de leurs surfaces. Selon l’ouvrage de référence Physically Based Rendering, Goldsmith et Salmon ont les premiers estimé cette probabilité par la surface en 1987, et MacDonald et Booth ont introduit le SAH en 1990. Le constructeur BVH2 de Cycles choisit ses découpes de cette façon.

    Les spatial splits, décrits par Stich et ses coauteurs en 2009, autorisent en plus à couper une primitive quand le SAH y gagne : un grand triangle peut alors figurer dans plusieurs feuilles. Les boîtes se chevauchent moins et le parcours accélère, mais la construction s’allonge et l’arbre prend plus de mémoire. C’est le compromis de l’option Use Spatial Splits de Cycles.

    Le BVH dans Cycles : qui le construit, sur quel appareil

    Cycles construit le BVH en deux niveaux : un par géométrie (« Updating Geometry BVH » suivi de son nom), puis un BVH de scène qui place les objets (« Updating Scene BVH »). La structure dépend de l’appareil de calcul :

    AppareilStructure utiliséeDepuis
    CPUEmbree, la bibliothèque de lancer de rayons d’IntelBlender 2.90
    NVIDIA, CUDABVH2, l’arbre binaire de Cycles, parcouru en logiciel
    NVIDIA, OptiXStructure construite par OptiX, parcourue en matériel par les cœurs RT sur les cartes RTX
    AMD, HIPHIP RT (lancer de rayons matériel, Radeon RX 6000 et suivantes), sinon BVH2Expérimental en 3.6, actif par défaut en 5.1
    Intel, oneAPIEmbree on GPU (lancer de rayons matériel des Arc), sinon BVH2Blender 3.6
    Apple, MetalMetalRT, sinon BVH2 ; en Auto, MetalRT seulement à partir des puces M3Blender 4.0 (Auto sur M3)

    Ces choix se font dans Edit > Preferences > System > Cycles Render Devices : case HIP RT sous HIP, Embree on GPU sous oneAPI, MetalRT (Off, On ou Auto) sous Metal. Sur une carte RTX, ce parcours du BVH confié aux cœurs RT fait toute la différence entre CUDA et OptiX : voyez le guide OptiX ou CUDA dans Blender.

    Pour un rendu final (F12), Cycles construit un BVH statique, plus long à bâtir mais le plus rapide à parcourir, selon les commentaires de son code. Dans la vue 3D en mode Rendered, il garde un BVH dynamique, qu’il réajuste (« Refitting BVH ») quand vous déplacez un objet.

    Les réglages Acceleration Structure dans Blender 5.2

    Ouvrez Render Properties > Performance > Acceleration Structure. Son contenu change selon l’appareil, et le panneau disparaît quand OptiX est le seul appareil actif, puisqu’OptiX construit sa propre structure.

    • Use Spatial Splits (CPU et GPU, décochée par défaut) : rendu plus rapide dans les scènes qui mêlent grands et petits polygones, au prix d’une construction plus longue et d’un peu plus de mémoire. Avec Embree, elle active au rendu final la qualité de construction la plus haute.
    • Use Compact BVH (CPU, décochée par défaut) : une structure plus compacte, qui réduit la mémoire vive mais rend plus lentement. Elle est optionnelle depuis Blender 3.1.
    • Use Curves BVH (GPU, cochée par défaut) : un BVH aux boîtes non alignées sur les axes, qui épousent mieux les cheveux et les poils. La décocher économise de la mémoire mais ralentit leur rendu.
    • BVH Time Steps (GPU, 0 par défaut, jusqu’à 16) : découpe dans le temps les primitives en mouvement, pour le flou de mouvement ; plus rapide, plus gourmand en mémoire. Grisé quand Use Spatial Splits est coché.

    Les préréglages de l’en-tête du panneau Performance règlent tout d’un coup. Faster Render coche Persistent Data et Use Spatial Splits et passe BVH Time Steps à 2 ; Lower Memory coche Use Compact BVH et réduit les tuiles à 512 pixels.

    Pourquoi « Building BVH » prend du temps au début d’un rendu

    Entre le clic sur Render et le premier échantillon, la ligne d’information du rendu fait défiler la préparation : Synchronizing object (Cycles reçoit les maillages évalués, modificateurs compris), puis Updating Geometry BVH et Building BVH pour chaque géométrie, avec un pourcentage sur le CPU, enfin Updating Scene BVH.

    La durée dépend d’abord de la quantité de primitives. Le modificateur Subdivision Surface a deux niveaux, Viewport et Render : c’est le second qui compte au rendu, et chaque niveau supplémentaire multiplie les faces. Les cheveux et les particules enfants ajoutent quantité de courbes. Use Spatial Splits allonge volontairement la construction, et le BVH statique du rendu final est plus long à bâtir que celui de la vue 3D.

    Réduire le temps de préparation du BVH

    Persistent Data pour les animations

    Par défaut, Cycles libère sa copie de la scène après chaque image pour limiter la mémoire : l’image suivante repart de zéro, BVH compris. Cochez Render Properties > Performance > Final Render > Persistent Data : selon le manuel, les données de rendu restent alors en mémoire pour accélérer les animations, au prix d’une mémoire occupée pendant que vous travaillez. Dans le code de Cycles, seules les géométries modifiées repassent par la construction de leur BVH. Avec plusieurs view layers, un seul est conservé.

    Des instances plutôt que des copies

    Une copie liée (Alt+D) sans modificateur, une collection instanciée ou une instance des Geometry Nodes partagent une seule géométrie dans Cycles, donc un seul BVH de géométrie ; le BVH de la scène se contente de placer chaque exemplaire. Mille arbres instanciés coûtent un arbre à construire, mille copies pleines en coûtent mille. Un objet qui porte des modificateurs actifs au rendu reçoit en revanche sa propre géométrie, même si son maillage est partagé.

    Moins de géométrie au rendu

    • Cochez Render Properties > Simplify et baissez, sous Render, Max Subdivision et Child Particles.
    • Sous Simplify > Culling, Camera Culling écarte les objets hors champ et Distance Culling ceux qui sont trop loin, à condition de cocher Use Camera Cull ou Use Distance Cull dans Object Properties > Visibility > Culling. Un objet écarté n’entre pas dans la scène de Cycles : plus d’ombre, plus de reflet.
    • Gardez Use Spatial Splits décoché pour les rendus d’essai, où la préparation pèse plus que le calcul.

    Les autres leviers, échantillons, rebonds et débruitage, sont réunis dans le guide pour accélérer un rendu Blender.

    Le fichier BVH (Biovision Hierarchy) : la motion capture

    Le second BVH est un format de fichier. Biovision, une société de services en capture de mouvement, l’a créé pour livrer ses données à ses clients, à la place de son ancien format BVA. Il décrit un squelette, puis la valeur de chaque articulation à chaque image. Blender sait l’importer et l’exporter.

    Structure : HIERARCHY, puis MOTION

    Un fichier BVH est un texte en deux sections. Exemple réduit à deux articulations :

    HIERARCHY
    ROOT Hips
    {
      OFFSET 0.00 0.00 0.00
      CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation
      JOINT Spine
      {
        OFFSET 0.00 10.00 0.00
        CHANNELS 3 Zrotation Xrotation Yrotation
        End Site
        {
          OFFSET 0.00 15.00 0.00
        }
      }
    }
    MOTION
    Frames: 2
    Frame Time: 0.033333
    0.00 35.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    0.50 35.10 0.00 1.20 0.00 0.00 2.00 0.00 0.00
    • HIERARCHY décrit le squelette au repos : ROOT nomme la racine, JOINT chaque articulation enfant, imbriquée sous son parent, OFFSET sa position par rapport au parent, et End Site clôt une chaîne.
    • CHANNELS annonce le nombre de valeurs animées et leur ordre : en pratique six pour la racine (position et rotation), trois pour les autres (rotation), souvent dans l’ordre Z, X, Y.
    • MOTION ouvre les données : Frames donne le nombre d’images, Frame Time la durée d’une image (0,033333 seconde, soit 30 images par seconde). Chaque ligne suivante est une image, valeurs dans l’ordre des CHANNELS : ici 6 + 3 = 9.

    L’importeur de Blender lit les rotations en degrés. Le format ne définit que des décalages entre parent et enfant, sans rotation au repos.

    Importer un fichier BVH dans Blender

    L’importeur est l’add-on BioVision Motion Capture (BVH) format, livré avec Blender et activé par défaut. Passez par File > Import > Motion Capture (.bvh) et réglez les options dans le panneau latéral du navigateur de fichiers :

    • Target : Armature (par défaut) crée une armature animée, un os par JOINT, du même nom ; Object, un empty animé par articulation.
    • Scale (1 par défaut) multiplie toutes les distances : c’est ici qu’on corrige un squelette géant ou minuscule.
    • Rotation : Euler (Native) par défaut garde l’ordre des rotations du fichier ; Quaternion ou un ordre d’Euler imposé sont possibles.
    • Forward et Up (-Z et Y par défaut) convertissent les axes : Blender a Z en haut, beaucoup de logiciels Y.
    • Start Frame (1 par défaut) : l’image de Blender où commence le mouvement.
    • Scale FPS ré-échantillonne le mouvement à la cadence de la scène ; sinon, chaque image du fichier devient une image de Blender. Loop fait boucler la lecture.
    • Update Scene FPS règle la cadence de la scène sur celle du fichier (1 divisé par Frame Time), ce qui rend Scale FPS inutile. Update Scene Duration allonge la scène à la durée du fichier, sans jamais la raccourcir.

    Où trouver des fichiers BVH gratuits

    La référence reste la CMU Graphics Lab Motion Capture Database de l’université Carnegie Mellon (mocap.cs.cmu.edu) : 2 605 prises en six catégories, de la marche et la course aux sports, à la danse et aux interactions entre deux personnes. Le site les annonce libres pour tous les usages ; sa FAQ précise que vous pouvez les intégrer à un produit vendu, mais pas revendre les données elles-mêmes, même converties.

    La base est distribuée en ASF/AMC et en C3D ; sa page d’accueil renvoie vers des conversions en BVH réalisées par Bruce Hahn. Selon l’équipe CMU, les orteils et les mains sont souvent bruités et les doigts du squelette ne sont pas capturés.

    Transférer l’animation sur votre personnage (retargeting)

    Le squelette importé bouge, votre personnage non : une action anime des os par leur nom, et les noms du BVH ne sont pas ceux de votre rig. Blender n’a pas d’outil de retargeting dédié, mais les contraintes suffisent :

    1. Mettez l’armature du BVH et votre rig à la même échelle, dans la même pose de repos (T-pose des deux côtés, par exemple), face au même axe.
    2. En mode Pose, donnez à chaque os de votre rig une contrainte Copy Rotation qui vise l’os correspondant du BVH (Target : l’armature, puis le nom de l’os), et une Copy Location à l’os des hanches pour les déplacements.
    3. Sélectionnez les os contraints et lancez Pose > Animation > Bake Action, avec Visual Keying (la pose finale, contraintes comprises) et Clear Local Constraints (les contraintes retirées après coup).

    Si les poses de repos diffèrent (A-pose contre T-pose), la copie directe décale les membres. L’add-on payant Auto-Rig Pro propose alors un outil Remap qui transfère un BVH sur tout type d’armature, devine la correspondance des os d’après leurs noms et peut redéfinir la pose de repos de la source. Le guide Mixamo et Blender traite le cas des animations Mixamo, livrées en FBX, celui du rigging dans Blender la construction du squelette qui recevra le mouvement, et le guide de l’animation dans Blender la retouche des clés obtenues.

    Questions fréquentes

    Que veut dire BVH ?

    BVH a deux sens dans Blender. En rendu, c’est la bounding volume hierarchy (hiérarchie de volumes englobants), la structure d’accélération que Cycles construit avant le rendu pour trouver vite ce que touche chaque rayon. En animation, c’est un format de fichier de capture de mouvement, Biovision Hierarchy, qui décrit un squelette puis son mouvement image par image.

    Qu’est-ce qu’une bounding volume hierarchy ?

    C’est un arbre de boîtes englobantes. Chaque feuille contient quelques primitives (triangles, segments de courbes) et chaque nœud stocke la boîte qui enferme tout ce qui se trouve sous lui. Un rayon qui manque la boîte d’un nœud écarte d’un coup tout ce qu’elle contient : le moteur ne teste que les triangles des feuilles atteintes.

    Pourquoi Blender reste longtemps sur « Building BVH » ?

    Avant le premier échantillon, Cycles construit un BVH par géométrie, puis celui de la scène. La durée suit la quantité de triangles et de courbes : niveaux Render de Subdivision Surface, cheveux, particules enfants. Activez Persistent Data pour une animation, préférez les instances aux copies et limitez la subdivision avec Simplify.

    Faut-il activer Use Spatial Splits ?

    Décochée par défaut, elle allonge la construction du BVH et prend un peu plus de mémoire, en échange d’un rendu plus rapide dans les scènes qui mêlent grands et petits polygones. Elle se justifie quand le calcul des échantillons dure bien plus longtemps que la préparation.

    Comment importer un fichier BVH dans Blender ?

    Passez par File > Import > Motion Capture (.bvh) : l’add-on BioVision Motion Capture (BVH) format est livré avec Blender et activé par défaut. Gardez Target sur Armature pour obtenir un squelette animé, ajustez Scale si sa taille ne convient pas et cochez Update Scene FPS pour caler la cadence de la scène sur celle du fichier.

    Où trouver des fichiers BVH gratuits ?

    La CMU Graphics Lab Motion Capture Database (mocap.cs.cmu.edu) réunit 2 605 prises, utilisables dans un produit commercial mais pas revendables telles quelles. Elle les distribue en ASF/AMC et en C3D ; sa page d’accueil signale des conversions en BVH réalisées par Bruce Hahn.

    Rendre l'animation sur TURNA

    Quand la scène est déjà bien réglée et que c'est le nombre d'images qui prend du temps, le levier restant est de calculer plusieurs images à la fois. TURNA le fait pour Blender : un add-on (Blender 4.0 à 5.2, Cycles et Eevee) envoie la scène en un clic, et les images sont réparties sur 1, 2, 4 ou 8 GPU en parallèle, des RTX 5090 en priorité et des RTX 4090 à défaut. L'add-on affiche le coût estimé avant tout lancement. Le calcul part de 4,90 € l'heure, facturé au temps réellement consommé, 2 minutes minimum (30 secondes jusqu'au 9 novembre), et 25 € sont offerts à l'inscription. Une image fixe reste calculée par une seule machine : le gain porte sur les animations. Les paliers et des exemples chiffrés sont sur la page render farm Blender.

    Pour aller plus loin

    Sans abonnement

    Passez à l'ère du
    Plug & Render.

    Pas d'archive à préparer ni de machine à configurer : l'add-on envoie votre scène Blender et ses textures, et vous voyez le coût estimé avant de lancer.

    • Sans engagement
    • Payez ce que vous consommez

    Crédit offert sans carte bancaire.