Guide technique du terrain

Pour obtenir les meilleures performances possibles du système Landscape, certaines restrictions techniques doivent être respectées. Le document suivant vise à attirer votre attention sur ces restrictions et à vous fournir des informations précieuses afin que vous puissiez trouver le meilleur équilibre entre beauté et performance avec votre paysage.

Détails techniques

Les dimensions valides pour les heightmaps de paysage ne sont pas toujours immédiatement évidentes lors de la mise en route. Pouvoir déterminer quelles sont les dimensions valables pour les altitudes et, au-delà, celles qui sont optimales, nécessite une compréhension approfondie de l'architecture sous-jacente du Landscape.

Afin de créer un système permettant des terrains immenses tout en étant efficace en termes de mémoire et de performance, l'architecture applique implicitement des restrictions sur les dimensions de la heightmap, ce qui signifie que certaines dimensions sont valides et d'autres non. Dans les systèmes de terrain précédents d'Unreal Engine, il n'y avait aucune restriction (c'est-à-dire que toutes les dimensions étaient valides et fonctionnaient) ou les restrictions étaient assez simples (c'est-à-dire que seule la puissance carrée de deux heightmaps était autorisée). Les restrictions sur les altitudes pour les paysages sont beaucoup plus complexes et rigides.

Un Landscape Actor est codé en couleur afin qu'il soit plus facile de dire ce que fait chaque section. Les bords du paysage sont surlignés en jaune, le bord de chaque composant est en vert clair, les bords des sections (si elles sont réglées sur 2x2 sections) en vert moyen et les quadrilatères individuels en vert foncé.

CouleurComposant
JauneLandscape Actor Edge
Vert clairLandscape Component Edge
Vert moyenLandscape Section Edge
Vert foncéLandscape Individual Quad
Aperçu de la création d'un terrain
Aperçu de la création d'un terrain.

Composants du terrain

Les paysages sont divisés en plusieurs composants, qui sont l'unité de base du rendu d'Unreal, le calcul de la visibilité et la collision. Les composants d'un paysage sont tous de la même taille et sont toujours carrés. La taille du composant paysage est décidée lors de la création d'un paysage et le choix dépend de la taille et des détails du paysage que vous souhaitez créer.

Les données de hauteur de chaque composant sont stockées dans une texture unique. Pour cette raison, sa taille doit être un nombre de sommets de puissance de deux. La ligne partagée de sommets le long du bord de deux composants voisins est dupliquée et stockée dans chaque composant. Pour cette raison, il est logique de penser au nombre de quads dans chaque composant.

Un paysage très simple est illustré ci-dessous (en vert) contenant quatre composants. Chaque composant est composé d'un seul quad. Un composant a été séparé pour montrer comment les sommets auxquels les composants se rencontrent sont dupliqués.

Chaque composant est composé d'un seul quad
Chaque composant est composé d'un seul quad.

Sections des composants

Les composants peuvent éventuellement être divisés en 1 ou 4 (2x2) sous-sections. Ces sections sont l'unité de base du calcul LOD du paysage.

L'utilisation de l'option 4 (2x2) sous-sections vous donne la même taille heightmap que d'utiliser quatre fois plus de composants avec une seule sous-section chacun, mais en utilisant moins de composants donne généralement de meilleures performances.

La taille de chaque section (en nombre de sommets) doit être une puissance de deux (avec un maximum de 256x256). C'est ainsi que les différents niveaux de LOD peuvent être stockés dans des mipmaps de la texture. Cela conduira au nombre de quads dans un composant soit une puissance de deux moins 1 (si 1 section par composant) ou une puissance de deux moins 2 (si 4 sections par composant).

Un composant individuel est illustré ci-dessous (indiqué en vert) contenant quatre sections. Chaque section est composée de 9 (3x3) quads. Encore une fois, vous pouvez voir que les sommets où les sections se rencontrent sont dupliqués.

Chaque section est composée de 9 (3x3) quads
Chaque section est composée de 9 (3x3) quads.

Calcul des dimensions heightmap

Comme vous pouvez le voir, les dimensions d'un paysage sont basées sur le nombre de quads dans chaque section, le nombre de sections dans chaque composant et le nombre de composants présents dans le paysage. Une fois que vous avez déterminé le nombre de composants et la résolution de chacun de ces composants, le calcul des dimensions du paysage dans son ensemble devient un calcul trivial.

Exemple 1

Si nous commençons avec un composant composé d'une seule section qui contient des sommets 64x64, alors la taille du composant est de 63x63 quads. Disons que nous avons un paysage de 10x10 de ces composants, alors nous avons 630x630 quads au total dans notre paysage. Maintenant, si nous voulions importer les hauteurs d'un tel paysage, nous aurions besoin d'une heightmap de 631x631 sommets, car il y a toujours une rangée de sommets de plus que de quads (pensez à un quad 1x1 - il a besoin de 4 sommets). 631x631 est donc une taille de paysage valide.

Exemple 2

Si nous avons un composant divisé en 4 sous-sections, chacune d'entre elles est composée de sommets 64x64. Cela conduit à 63x63 quads par section et 126x126 quads par composant. Si nous avons 32x32 de ces composants, nous obtenons 126 * 32 = 4032 quads au total dans chaque direction. Ainsi, le paysage total sera de 4033x4033 sommets.

Ces exemples se concentrent sur les paysages carrés. Cependant, vous pouvez créer des paysages qui ne sont pas carrés. Par exemple, dans le premier exemple, le 10x10 n'est pas spécial. En supposant 63 quads par composant, vous pouvez avoir n'importe quel composant Landscape de AxB avec une taille totale en sommets de (A * 63 + 1, B * 63 + 1).

Considérations de performance

Le choix de la taille du composant par rapport au nombre total de composants est un compromis de performance. Des tailles de composants plus petites permettent des transitions LOD plus rapides et permettent également l'occlusion de plus de terrain, mais la plus petite taille nécessite plus de composants.

Chaque composant a un coût de traitement de processeur de thread de rendu et chaque section est un appel draw, essayez donc de garder ces nombres au minimum.

Tailles de paysage recommandées

Afin de faciliter les choses, voici un certain nombre de tailles qui maximisent la superficie tout en minimisant le nombre de composants de paysage.

Taille globale (sommets)Quads / sectionSections / composantTaille du composantTotal des composants
8129x81291274 (2x2)254x2541024 (32x32)
4033x4033634 (2x2)126x1261024 (32x32)
2017x2017634 (2x2)126x126256 (16x16)
1009x1009634 (2x2)126x12664 (8x8)
1009x100963163x63256 (16x16)
505x505634 (2x2)126x12616 (4x4)
505x50563163x6364 (8x8)
253x253634 (2x2)126x1264 (2x2)
253x25363163x6316 (4x4)
127x127634 (2x2)126x1261
127x12763163x634 (2x2)

Mode de débogage des calques

Le mode Layer Debug permet de visualiser le poids des calques spécifiques sur le paysage dans la fenêtre de visualisation. Vous pouvez activer le mode Layer Debug dans le menu View, sous Landscape Visualizers.

Lorsque le mode Layer Debug est activé, les boutons radio permettant la sélection de canaux de couleur individuels sont affichés avec les couches cibles dans la liste.

Le mode Layer Debug
Le mode Layer Debug.

La sélection d'un canal applique un shader au paysage qui indique la zone couverte par le canal du calque cible sélectionné.

Exemple de rendu avec le Layer Debug
Exemple de rendu avec le Layer Debug.

les réactions

Pour laisser un avis, vous devez être inscrit et connecté

Se connecter