Fr/Cubemaps: Difference between revisions

From Valve Developer Community
< Fr
Jump to navigation Jump to search
No edit summary
m (Derp)
 
(26 intermediate revisions by 7 users not shown)
Line 1: Line 1:
[[Image:Env_cubemap.png|left]][[Image:Specular.jpg|thumb|right|Specular reflections.]]
{{LanguageBar}}
{{Todo|[[Fr/Cubemaps (Source 2)]], like [[Cubemaps (Source 2)|english version]].}}


'''Cubemaps - Kesako?'''
[[File:Env_cubemap.png|left]][[File:Specular.jpg|thumb|right|Specular reflections.]]
 
Dans la réalité les matériaux reflètent leur l'environnement. Réaliser ceci dans un moteur 3D en temps réel demande beaucoup de ressources. Une technique a été développée pour simuler les reflets sans demander trop de ressources matérielles : le ''cubemapping''. Il s'agit de projeter une texture sur un objet et de calculer sa position par rapport au joueur. Il en résulte des reflets rapides à calculer mais qui ne sont pas en temps réel.
Dans la réalité les matériaux reflette l'environnement autour. Réaliser ceci dans un moteur 3D en temps réel, demande beaucoup de ressources. Une technique à été développée pour simuler les reflets sans demandé trop de ressources matérielles : les cubemaps.
Il s'agit de projeter sur un objet une texture et de calculer sa position par rapport au joueur. Cette texture d'environnement est calculée, puis plaquée sur les objets avec du reflet. Il en résulte des faux reflets, non en temps réel, qui on l'avantage de demander peu de ressource, mais l'inconvenient d'une qualité moindre et de ne pas refleter les joueurs en temps réelles. Cette technique est applicable dans le secteur du jeux video avec les moteur en temps réelle, mais aussi dans le milieu de l'animation avec par exemple 3DS max lors des rendus.
 
Beaucoup de matériaux spéculaire et d'environement font appell à des données externe pour calculer leur apparence. Ces données prennent la forme d'un "cubemap", une texture
qui represnte une arène de 360°.En utilisant le cubmap en un point de prélevement, les matériaux seront en mesure de rstituer plus fidèlement leur environement. Définir des cubemaps et leur position dans l'espace est facile, mais il est important de bien les placer pour des raison d'esthetiques et de performances. <br clear="all" />


Beaucoup de matériaux spéculaires et d'environnement font appel à des données externes pour calculer leur apparence. Ces données prennent la forme d'un ''cubemap'', une texture qui représente une vue fixe sur 360°. Définir des ''cubemaps'' et leur position dans l'espace est facile, mais il est important de bien les placer pour des raison d'esthétique et de performances. <br clear="all" />


== Placement ==
== Placement ==
Pour définir la position d'un cubemap dans l'espace dans une map, nous utilisons l'entité [[env_cubemap|env_cubemap]]. Qhand la map est compilé avec[[vbsp|VBSP]], les surface de la geometrie de la map sont automatiquement associer au cubemap le plus proches.
Pour définir la position d'un ''cubemap'' dans l'espace dans une map, nous utilisons l'entité {{L|env_cubemap}}. Quand la map est compilée avec{{L|vbsp|VBSP}}, les faces des blocs de la map sont automatiquement associés au ''cubemap'' le plus proche.


Il est important de noter que les cubemaps peuvent avoir de multiples usages qui dependent de leur placement au sein de la map. Certains cubemap sont placé pour les reflection de la geometrie du monde statique. D'autre sont placer pour les reflections des entités commme les NPC ou le joueur. Le placement de ces cubemap dois suivre quelque règles simples suivant leur utilité pour avoir une qualité graphique optimal.
Il est important de noter que les ''cubemaps'' peuvent avoir de multiples usages qui dépendent de leur placement au sein de la map. Certains ''cubemap'' sont placés pour les reflets des objets statiques, d'autres sont placés pour les reflets des entités comme les NPC ou le joueur. Le placement de ces ''cubemap'' doit suivre quelques règles simples suivant leur utilité pour avoir une qualité graphique optimale.


* If a cubemap is intended for NPCs or the player, it should be placed 64 units above the ground so that it most accurately represents the world at that point in space for a standing creature.
* Si le ''cubemap'' est destiné au NPC ou au joueur, celui-ci doit être placé à 64 unités au dessus du sol afin d'être au niveau des yeux.
* Si le cubemap est destiné à la geometrie static du monde, il doit être palcé à au moins 16 unité de toutes les surface du monde.
* Si le ''cubemap'' est destiné à la géométrie statique du monde, il doit être placé à au moins 16 unités de toutes les surfaces du monde.
* Les cubemap doivent être placer dans toutes les arène avec un contraste visuelle differents. Un couloir avec une lumière jaune vif aura besoin d'un cubemap, surtout si cette pièce est à coter d'une pièce avec une faible lumière bleue.
* Les ''cubemaps'' doivent être placés dans toutes zones visuellement contrastées. Un couloir avec une lumière jaune vif aura besoin d'un ''cubemap'', surtout si cette pièce est à côté d'une pièce avec une faible lumière bleue.


== Building ==
== Building ==
Once a map has been compiled and lit by [[Vbsp|VBSP]] and [[Vrad|VRAD]] (respectively), the cubemaps can be built. Run the map and allow the any node graphs or other pre-process activities to finish. Then use the <code>buildcubemaps</code> [[Developer_Console|console]] command to begin building the cubemaps for the level. In the upper left-hand corner of the screen you’ll be able to see each facet of the cubemap (six per cubemap) render. Depending on your video card, driver and complexity of your scenes, this can take seconds or minutes to complete. Once finished, the map must be restarted for the cubemaps to properly be applied to all surfaces.
Contrairement au reste (éclairage, BSP, ...), les ''cubemaps'' de votre map ne sont pas calculés lors de la compilation. Vous aurez à la place de vos ''cubemaps'' une seule texture par défaut : la skybox de votre map.
 
Une fois que la map a été compilée, les ''cubemaps'' peuvent être calculés avec la commande <code>buildcubemaps</code>. Ce calcul peut varier de quelques secondes à plusieurs minutes. Une fois fini vous devrez relancer votre map pour que les textures soient rechargées.
{{note|If the game crashes when you try to build cubemaps, this probably means your game resolution is set too low. Before you try to build cubemaps you must ensure your game width and height are over 512 pixels. This means that the minimal standard resolution to build is 800X600. The video resolution can be changed from the Video tab, found under the game Options menu.}}


{{note|If the map bsp file is renamed after the cubemaps have been built the cubemaps will no longer work and default to the sky cubemap. You must rebuild cubemaps again each time a map is renamed. However each time a map is renamed and the cubemaps rebuilt they will not replace the old cubemaps but rather a new set of cubemaps will be added to the bsp. Each time you rename a map and build cubemaps the bsp size will increase. It is best that your final compile of the vmf have the release name of the map so that only 1 copy of the cubemaps will reside in the bsp.}}
{{note|Votre résolutions minimale doit être de 800*600 pour calculer les ''cubemaps''.}}


{{note|For multiplayer maps, you may need to enable cheats (<code>sv_cheats 1</code>) before running the <code>buildcubemaps</code> command.}}
{{note|Si vous renommez votre .bsp les ''cubemaps'' ne fonctionneront plus, vous devrez les re-calculer mais les nouveaux ''cubemaps'' viendront s'ajouter au bsp sans supprimer les anciens, ce qui augmentera le poids de la map.}}


=== Cubemaps and HDR ===
=== Les Cubemaps et le HDR ===


If the map has been compiled with the [[HDR|HDR]] lighting option enabled in [[Vrad|VRAD]], cubemaps '''must''' be built in both HDR '''and''' LDR (non-HDR) modes. Building cubemaps in only one mode will mean that cubemaps will not be present the other mode. For information on how to build cubemaps under HDR, see [[HDR Lighting Basics]].
Dans le cas d’une map supportant le HDR (High Dynamic Range), la compilation des cubemaps doit se faire en deux temps : en mode LDR(Low Dynamic Range) et en mode HDR. Entre ces deux étapes, les textures se doivent d’être rechargées avec la commande mat_reloadallmaterials 1 (demande sv_cheats 1) ou en relançant le jeu/la map.  


Cubemaps should be built for LDR and HDR maps. Presuming you are already in HDR mode and have your map loaded fresh from compilation (VRAD must have the '<code>-both</code>' parameter enabled). Go to the console and execute the following commands:
Pour compiler en mode HDR, l'option '<code>-both</code>' doit être activée pour VRAD. Une fois votre compilation avec le HDR terminée, disons que votre carte se lance avec le mode HDR d'activé (s'il ne l'est pas vous pouvez l'activer dans les options vidéos ou avec la commande console mat_hdr_level 2). Vous devrez donc dans un premier temps calculer les cubemaps de la versions HDR puis passer en mode LDR et calculer les cubemaps de cette version. Depuis la console exécutez les commandes suivantes :


buildcubemaps
NOTE : La map a été compilée en HDR et le mode HDR est activé dans le jeu
mat_hdr_level 0 ''(to go to LDR)''
map mapname ''(to reload map)''
buildcubemaps
mat_hdr_level 2 ''(to go back to HDR)''
map mapname ''(to reload map)''


== Testing ==
buildcubemaps  ''(on compile les cubemaps en mode HDR)'
Cubemaps are best tested by using the <code>[[impulse]] 81</code> console command. This replaces the current weapon model with the "[[weapon_cubemap|cubemap weapon]]"; a set of spheres, each with different reflective surfaces. By moving around the level it is possible to see what cubemap is being applied at that position in space at any given time, as well as if that cubemap accurately describes the area’s lighting and color. This is the best way to assess the validity of your cubemaps.
mat_hdr_level 0 ''(activer le mode LDR)''
map mapname ''(relancer la map)''
buildcubemaps  ''(on compile les cubemaps en mode LDR)'
mat_hdr_level 2 ''(retourner au mode HDR)''
map mapname ''(relancer la map)''


For some reason, Team Fortress 2 does not have the "[[weapon_cubemap|cubemap weapon]]". The Sniper's primary weapon, however, has a slightly reflective lens on the scope and the Demoman's Bottle, and thus will reflect the cubemap.
== Teste == (NOT WORKS)
Cubemaps are best tested by using the <code>{{L|impulse}} 81</code> console command. This replaces the current weapon model with the "{{L|weapon_cubemap|cubemap weapon}}"; a set of spheres, each with different reflective surfaces. By moving around the level it is possible to see what cubemap is being applied at that position in space at any given time, as well as if that cubemap accurately describes the area’s lighting and color. This is the best way to assess the validity of your cubemaps.


== Performance ==
== Performance ==
The <code>[[env_cubemap|env_cubemap]]</code> entity allows the user to define how large the target cubemap’s texture resolution is. While a larger texture resolution will provide more accurate and “sharp” results when sampled, it also incurs a cost in texture memory. Most cubemaps should only use the default setting in the <code>[[env_cubemap|env_cubemap]]</code> entity for their texture resolution (32x32 pixels for each surface). This is generally acceptable in normal conditions. Some exceptions may be necessary for areas of high reflectivity or detail, such as set-pieces for acting.
L'entité <code>{{L|env_cubemap}}</code> permet de définir la résolutions du ''cubemap''. La résolutions par défaut est généralement acceptable (32*32 pour chaque surface), vous pouvez l'augmenter si vous avez besoin reflets plus précis.  
Parcque les surfaces sont des aproximations de leur environement par des cubemap, trop en mettre dans une petite salle causera des discontinuité quand vosu bougerez autour.


Because surfaces must approximate their surroundings via cubemaps, using too many cubemaps in a small area can cause noticeable visual discontinuities when moving around. For areas of high reflectivity, it is generally more correct to place one cubemap in the center of the surface and no more. This avoids seams or popping as the view changes.
Pour une salle avec beaucoup de reflet, il est generalement preferable de placer un seul cubemap au centre de la pièce, ce qui evitera les coupures et autre discontinuité graphique.
Pour determiner les ressource utiliser par vos cubemaps, tapez <code>{{L|showbudget|+showbudget}}</code> dasn la console et regardez le paramètre "World Rendering". Si cela utilise trop de ressource c'est probablement que vous en avez placez trop à un endroit. Pour verifier cela vous avez 2 solutions, soit dans hammer vosu cacher tous les cubemap et vous compilez, soit dans la console vous desactivez les cubemap dans le jeux en tapant <code>mat_specular 0/1</code>.


To determine the cost of cubemaps in any one area, first look at the World Rendering category using the <code>[[showbudget|+showbudget]]</code> console command. If this category is registering an unusually high cost, it may be due to using too many cubemaps in an area. A simple solution to check for this scenario is to use Hammer to Hide all the cubemaps in the map, and then compile and run the map again. If the performance is noticeably better, cubemap density or resolution may need to be reduced.
{{ACategory|Lighting System}}
Eventually this can also be checked by turning off cubemaps, by using <code>r_specular 0</code> to disable it, however this needs confirmation.
[[Category:French]]


[[Category:Level Design]]
{{ACategory|Level Design}}

Latest revision as of 19:29, 6 April 2025

English (en)Español (es)Français (fr)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)
À Faire: Fr/Cubemaps (Source 2), like english version.
Env cubemap.png
Specular reflections.

Dans la réalité les matériaux reflètent leur l'environnement. Réaliser ceci dans un moteur 3D en temps réel demande beaucoup de ressources. Une technique a été développée pour simuler les reflets sans demander trop de ressources matérielles : le cubemapping. Il s'agit de projeter une texture sur un objet et de calculer sa position par rapport au joueur. Il en résulte des reflets rapides à calculer mais qui ne sont pas en temps réel.

Beaucoup de matériaux spéculaires et d'environnement font appel à des données externes pour calculer leur apparence. Ces données prennent la forme d'un cubemap, une texture qui représente une vue fixe sur 360°. Définir des cubemaps et leur position dans l'espace est facile, mais il est important de bien les placer pour des raison d'esthétique et de performances.

Placement

Pour définir la position d'un cubemap dans l'espace dans une map, nous utilisons l'entité env_cubemap(en). Quand la map est compilée avecVBSP(en), les faces des blocs de la map sont automatiquement associés au cubemap le plus proche.

Il est important de noter que les cubemaps peuvent avoir de multiples usages qui dépendent de leur placement au sein de la map. Certains cubemap sont placés pour les reflets des objets statiques, d'autres sont placés pour les reflets des entités comme les NPC ou le joueur. Le placement de ces cubemap doit suivre quelques règles simples suivant leur utilité pour avoir une qualité graphique optimale.

  • Si le cubemap est destiné au NPC ou au joueur, celui-ci doit être placé à 64 unités au dessus du sol afin d'être au niveau des yeux.
  • Si le cubemap est destiné à la géométrie statique du monde, il doit être placé à au moins 16 unités de toutes les surfaces du monde.
  • Les cubemaps doivent être placés dans toutes zones visuellement contrastées. Un couloir avec une lumière jaune vif aura besoin d'un cubemap, surtout si cette pièce est à côté d'une pièce avec une faible lumière bleue.

Building

Contrairement au reste (éclairage, BSP, ...), les cubemaps de votre map ne sont pas calculés lors de la compilation. Vous aurez à la place de vos cubemaps une seule texture par défaut : la skybox de votre map. Une fois que la map a été compilée, les cubemaps peuvent être calculés avec la commande buildcubemaps. Ce calcul peut varier de quelques secondes à plusieurs minutes. Une fois fini vous devrez relancer votre map pour que les textures soient rechargées.

Note.pngNote:Votre résolutions minimale doit être de 800*600 pour calculer les cubemaps.
Note.pngNote:Si vous renommez votre .bsp les cubemaps ne fonctionneront plus, vous devrez les re-calculer mais les nouveaux cubemaps viendront s'ajouter au bsp sans supprimer les anciens, ce qui augmentera le poids de la map.

Les Cubemaps et le HDR

Dans le cas d’une map supportant le HDR (High Dynamic Range), la compilation des cubemaps doit se faire en deux temps : en mode LDR(Low Dynamic Range) et en mode HDR. Entre ces deux étapes, les textures se doivent d’être rechargées avec la commande mat_reloadallmaterials 1 (demande sv_cheats 1) ou en relançant le jeu/la map.

Pour compiler en mode HDR, l'option '-both' doit être activée pour VRAD. Une fois votre compilation avec le HDR terminée, disons que votre carte se lance avec le mode HDR d'activé (s'il ne l'est pas vous pouvez l'activer dans les options vidéos ou avec la commande console mat_hdr_level 2). Vous devrez donc dans un premier temps calculer les cubemaps de la versions HDR puis passer en mode LDR et calculer les cubemaps de cette version. Depuis la console exécutez les commandes suivantes :

NOTE : La map a été compilée en HDR et le mode HDR est activé dans le jeu

buildcubemaps  (on compile les cubemaps en mode HDR)'
mat_hdr_level 0 (activer le mode LDR)
map mapname (relancer la map)
buildcubemaps  (on compile les cubemaps en mode LDR)'
mat_hdr_level 2 (retourner au mode HDR)
map mapname (relancer la map)

== Teste == (NOT WORKS) Cubemaps are best tested by using the impulse(en) 81 console command. This replaces the current weapon model with the "cubemap weapon(en)"; a set of spheres, each with different reflective surfaces. By moving around the level it is possible to see what cubemap is being applied at that position in space at any given time, as well as if that cubemap accurately describes the area’s lighting and color. This is the best way to assess the validity of your cubemaps.

Performance

L'entité env_cubemap(en) permet de définir la résolutions du cubemap. La résolutions par défaut est généralement acceptable (32*32 pour chaque surface), vous pouvez l'augmenter si vous avez besoin reflets plus précis. Parcque les surfaces sont des aproximations de leur environement par des cubemap, trop en mettre dans une petite salle causera des discontinuité quand vosu bougerez autour.

Pour une salle avec beaucoup de reflet, il est generalement preferable de placer un seul cubemap au centre de la pièce, ce qui evitera les coupures et autre discontinuité graphique. Pour determiner les ressource utiliser par vos cubemaps, tapez +showbudget(en) dasn la console et regardez le paramètre "World Rendering". Si cela utilise trop de ressource c'est probablement que vous en avez placez trop à un endroit. Pour verifier cela vous avez 2 solutions, soit dans hammer vosu cacher tous les cubemap et vous compilez, soit dans la console vous desactivez les cubemap dans le jeux en tapant mat_specular 0/1.