{"id":4488,"date":"2026-06-22T14:12:14","date_gmt":"2026-06-22T12:12:14","guid":{"rendered":"https:\/\/myrdil.com\/?p=4488"},"modified":"2026-06-22T14:35:39","modified_gmt":"2026-06-22T12:35:39","slug":"tree-and-bush-generator","status":"publish","type":"post","link":"https:\/\/myrdil.com\/?p=4488","title":{"rendered":"Tree and bush generator"},"content":{"rendered":"<p>Ca devient le d\u00e9lire, au lieu d&#8217;importer des mod\u00e8les d&#8217;arbres et de buissons,<a href=\"https:\/\/www.youtube.com\/watch?v=umKOW2-WZoc\"> on peut maintenant construire les siens<\/a>.<br \/>\nAucune id\u00e9e de l&#8217;impact sur les performances, mais \u00e7a para\u00eet cool.<\/p>\n<p>Ah, on me dit en r\u00e9gie qu&#8217;<a href=\"https:\/\/www.youtube.com\/watch?v=5poZBLdlr1o\">il existe une autre vid\u00e9o int\u00e9ressant<\/a>e, et, accessoirement, que le moteur est capable de bien tourner avec les nouvelles v\u00e9g\u00e9tations en laissant les virtual shadow maps actives pour autant de garder le WPO au minimum, fa\u00e7on brise et encore, uniquement sur certaines herbes.<\/p>\n<p><!--more--><\/p>\n<p data-path-to-node=\"1\">Par d\u00e9faut, Unreal essaie de projeter l&#8217;ombre exacte de chaque feuille. C&#8217;est \u00e7a qui met les Virtual Shadow Maps (VSM) \u00e0 genoux. Si tu veux juste une silhouette d&#8217;arbre globale, propre, et qui p\u00e8se <b data-path-to-node=\"1\" data-index-in-node=\"198\">z\u00e9ro<\/b> sur le GPU, voici comment faire en deux clics :<\/p>\n<h3 data-path-to-node=\"2\">Le Saint-Graal : &#8220;Shadow Proxy&#8221; (ou l&#8217;ombre d&#8217;un LOD simplifi\u00e9)<\/h3>\n<p data-path-to-node=\"3\">Tu as une option native dans les param\u00e8tres de ton Mesh (dans l&#8217;\u00e9diteur de l&#8217;arbre) qui s&#8217;appelle <b data-path-to-node=\"3\" data-index-in-node=\"98\">Shadow Mesh<\/b> (ou <i data-path-to-node=\"3\" data-index-in-node=\"114\">Override Shadow Mesh<\/i>).<\/p>\n<ol start=\"1\" data-path-to-node=\"4\">\n<li>\n<p data-path-to-node=\"4,0,0\"><b data-path-to-node=\"4,0,0\" data-index-in-node=\"0\">La m\u00e9thode :<\/b> Tu prends ton arbre hyper d\u00e9taill\u00e9 (g\u00e9n\u00e9r\u00e9 proc\u00e9duralement ou non). Tu cr\u00e9es ou tu g\u00e9n\u00e8res un LOD tr\u00e8s bas de cet arbre (ou une version simplifi\u00e9e \u00e0 l&#8217;extr\u00eame : un tronc basique avec une grosse sph\u00e8re ou un c\u00f4ne low-poly pour la canop\u00e9e, sans aucune feuille individuelle).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"4,1,0\"><b data-path-to-node=\"4,1,0\" data-index-in-node=\"0\">L&#8217;astuce :<\/b> Tu assignes ce mod\u00e8le ultra-simplifi\u00e9 dans la case <b data-path-to-node=\"4,1,0\" data-index-in-node=\"62\">Shadow Mesh<\/b> de ton bel arbre.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"4,2,0\"><b data-path-to-node=\"4,2,0\" data-index-in-node=\"0\">Le r\u00e9sultat :<\/b><\/p>\n<ul data-path-to-node=\"4,2,1\">\n<li>\n<p data-path-to-node=\"4,2,1,0,0\">Le joueur voit \u00e0 l&#8217;\u00e9cran ton magnifique arbre d\u00e9taill\u00e9, avec ses branches au poil de cul.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"4,2,1,1,0\">La lumi\u00e8re (le soleil, les VSM) ne calcule l&#8217;ombre <b data-path-to-node=\"4,2,1,1,0\" data-index-in-node=\"51\">qu&#8217;\u00e0 partir du mod\u00e8le ultra-simplifi\u00e9<\/b>.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"5\">Pourquoi c&#8217;est magique pour ton framerate ?<\/h3>\n<ul data-path-to-node=\"6\">\n<li>\n<p data-path-to-node=\"6,0,0\"><b data-path-to-node=\"6,0,0\" data-index-in-node=\"0\">Le cache des VSM devient immortel :<\/b> Comme ton <i data-path-to-node=\"6,0,0\" data-index-in-node=\"46\">Shadow Mesh<\/i> n&#8217;a pas de feuilles individuelles et <b data-path-to-node=\"6,0,0\" data-index-in-node=\"95\">surtout pas de WPO (pas de vent)<\/b>, son ombre est un bloc de g\u00e9om\u00e9trie pure et simple. La VSM calcule l&#8217;ombre une seule fois \u00e0 la premi\u00e8re frame, la met en cache, et n&#8217;y touche plus jamais.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"6,1,0\"><b data-path-to-node=\"6,1,0\" data-index-in-node=\"0\">Plus aucun probl\u00e8me d&#8217;opacit\u00e9 :<\/b> Ton mesh d&#8217;ombre \u00e9tant opaque (juste une forme globale), le moteur n&#8217;a pas besoin de faire de rast\u00e9risation programmable ou de calculs de transparence compliqu\u00e9s pour les ombres.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"6,2,0\"><b data-path-to-node=\"6,2,0\" data-index-in-node=\"0\">Visuellement parfait :<\/b> Au sol, tu obtiens une belle ombre douce, diffuse et coh\u00e9rente avec la forme de l&#8217;arbre. En jeu, personne ne va aller v\u00e9rifier si la forme de l&#8217;ombre correspond exactement \u00e0 la feuille num\u00e9ro 432 de la branche haute.<\/p>\n<\/li>\n<\/ul>\n<p data-path-to-node=\"7\">C&#8217;est typiquement le genre d&#8217;optimisation intelligente qui te permet de regagner 15 \u00e0 20 FPS d&#8217;un coup sur une sc\u00e8ne foresti\u00e8re, tout en gardant un visuel impeccable au premier plan. Tu passes d&#8217;un gouffre technique \u00e0 un syst\u00e8me ultra-l\u00e9ger.<\/p>\n<p data-path-to-node=\"1\">Voici la m\u00e9thode la plus rapide et &#8220;clic-bouton&#8221; pour cr\u00e9er un shadow mesh :<\/p>\n<h3 data-path-to-node=\"2\">\u00c9tape 1 : G\u00e9n\u00e9rer la version simplifi\u00e9e (Le LOD &#8220;Gros Bloc&#8221;)<\/h3>\n<p data-path-to-node=\"3\">Ouvre ton arbre d\u00e9taill\u00e9 dans le <b data-path-to-node=\"3\" data-index-in-node=\"33\">Static Mesh Editor<\/b> d&#8217;Unreal.<\/p>\n<ol start=\"1\" data-path-to-node=\"4\">\n<li>\n<p data-path-to-node=\"4,0,0\">Va dans le panneau <b data-path-to-node=\"4,0,0\" data-index-in-node=\"19\">Details<\/b> \u00e0 droite, section <b data-path-to-node=\"4,0,0\" data-index-in-node=\"45\">LOD Settings<\/b>.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"4,1,0\">Change le <b data-path-to-node=\"4,1,0\" data-index-in-node=\"10\">LOD Group<\/b> pour le mettre sur <b data-path-to-node=\"4,1,0\" data-index-in-node=\"39\">LargeProp<\/b> ou <b data-path-to-node=\"4,1,0\" data-index-in-node=\"52\">Foliage<\/b> (cela configure des r\u00e9ductions automatiques).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"4,2,0\">Plus bas, dans <b data-path-to-node=\"4,2,0\" data-index-in-node=\"15\">Reduction Settings<\/b> pour le LOD 1 ou 2, tu peux cocher une option magique : <b data-path-to-node=\"4,2,0\" data-index-in-node=\"90\">Bake Out Materials<\/b> ou utiliser le <b data-path-to-node=\"4,2,0\" data-index-in-node=\"124\">Mesh Remerging \/ Simplification<\/b>.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"4,3,0\">Tu peux aussi utiliser l&#8217;outil natif de r\u00e9duction de polygones (Percent Triangles) et le pousser \u00e0 fond (ex: <code data-path-to-node=\"4,3,0\" data-index-in-node=\"109\">1%<\/code> ou <code data-path-to-node=\"4,3,0\" data-index-in-node=\"115\">2%<\/code> des triangles d&#8217;origine). Le but est d&#8217;obtenir une forme ultra-low-poly qui ressemble de loin \u00e0 un nuage sur un piquet.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"4,4,0\">Clique sur <b data-path-to-node=\"4,4,0\" data-index-in-node=\"11\">Apply Changes<\/b>. Ton LOD simplifi\u00e9 est cr\u00e9\u00e9 dans le m\u00eame asset.<\/p>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"5\">\u00c9tape 2 : Assigner ce LOD aux ombres<\/h3>\n<p data-path-to-node=\"6\">Une fois ton LOD simplifi\u00e9 g\u00e9n\u00e9r\u00e9 (disons que c&#8217;est le LOD 3), tu vas dire au moteur : <i data-path-to-node=\"6\" data-index-in-node=\"87\">&#8220;N&#8217;utilise que lui pour les ombres&#8221;<\/i>.<\/p>\n<ol start=\"1\" data-path-to-node=\"7\">\n<li>\n<p data-path-to-node=\"7,0,0\">Toujours dans les d\u00e9tails de ton maillage, cherche la section <b data-path-to-node=\"7,0,0\" data-index-in-node=\"62\">General Settings<\/b> ou fais une recherche sur le mot &#8220;Shadow&#8221;.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"7,1,0\">Cherche l&#8217;option <b data-path-to-node=\"7,1,0\" data-index-in-node=\"17\">LOD For Shadows<\/b>.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"7,2,0\">Par d\u00e9faut, elle est sur <code data-path-to-node=\"7,2,0\" data-index-in-node=\"25\">0<\/code> (l&#8217;arbre parfait). Change cette valeur pour la mettre sur l&#8217;index de ton LOD simplifi\u00e9 (par exemple <code data-path-to-node=\"7,2,0\" data-index-in-node=\"127\">3<\/code>).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"7,3,0\"><b data-path-to-node=\"7,3,0\" data-index-in-node=\"0\">Variante (si tu as peur du WPO) :<\/b> Si ton arbre de base a du vent (WPO) dans son mat\u00e9riau, d\u00e9coche simplement la case <b data-path-to-node=\"7,3,0\" data-index-in-node=\"117\">Evaluate World Position Offset in Shadows<\/b> sur l&#8217;asset. L&#8217;ombre se figera instantan\u00e9ment, et ton GPU arr\u00eatera de souffrir.<\/p>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"8\">Alternative encore plus radicale : Le &#8220;Proxy&#8221; s\u00e9par\u00e9<\/h3>\n<p data-path-to-node=\"9\">Si ton maillage est tellement complexe (par exemple un asset Megascans mal foutu \u00e0 la base) que le g\u00e9n\u00e9rateur de LOD gal\u00e8re \u00e0 faire une forme propre et opaque, tu peux utiliser l&#8217;outil <b data-path-to-node=\"9\" data-index-in-node=\"185\">Merge Actors<\/b> (ou <i data-path-to-node=\"9\" data-index-in-node=\"202\">Geometry Tools<\/i> dans l&#8217;UE5) :<\/p>\n<ul data-path-to-node=\"10\">\n<li>\n<p data-path-to-node=\"10,0,0\">Tu s\u00e9lectionnes ton arbre dans le niveau.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"10,1,0\">Tu cliques sur <i data-path-to-node=\"10,1,0\" data-index-in-node=\"15\">Tools -&gt; Merge Actors -&gt; Approximation<\/i> (ou <i data-path-to-node=\"10,1,0\" data-index-in-node=\"58\">Simplify<\/i>).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"10,2,0\">Le moteur te sort un tout nouvel asset .uasset qui est une &#8220;coque&#8221; ferm\u00e9e, super l\u00e9g\u00e8re.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"10,3,0\">Il te suffit d&#8217;aller sur ton bel arbre, et dans sa case <b data-path-to-node=\"10,3,0\" data-index-in-node=\"56\">Override Shadow Mesh<\/b>, tu glisses cette coque.<\/p>\n<\/li>\n<\/ul>\n<p data-path-to-node=\"11\">C&#8217;est pli\u00e9, c&#8217;est gratuit en performances, et \u00e7a prend litt\u00e9ralement 30 secondes par type d&#8217;arbre. C&#8217;est l&#8217;outil parfait pour un dev solo qui veut du r\u00e9sultat sans y passer ses nuits.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ca devient le d\u00e9lire, au lieu d&#8217;importer des mod\u00e8les d&#8217;arbres et de buissons, on peut maintenant construire les siens. Aucune id\u00e9e de l&#8217;impact sur les performances, mais \u00e7a para\u00eet cool. Ah, on me dit en r\u00e9gie qu&#8217;il existe une autre &hellip; <a href=\"https:\/\/myrdil.com\/?p=4488\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-4488","post","type-post","status-publish","format-standard","hentry","category-technical"],"_links":{"self":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/posts\/4488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4488"}],"version-history":[{"count":0,"href":"https:\/\/myrdil.com\/index.php?rest_route=\/wp\/v2\/posts\/4488\/revisions"}],"wp:attachment":[{"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/myrdil.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}