Exodus SDK - Placement des objets

Exodus SDK \ Documentation de l'Éditeur \ Pour Commencer \ Placement des objets

+ Exodus SDK

* Documentation de l'Éditeur
	+ Pour Commencer
		- Comment démarrer
		- Lancement de l'éditeur
		- Personnalisation du Exodus SDK
		- Fenêtre de visualisation 3D
		- Configuration de personnage du joueur
		- **Placement des objets**
	+ Modes d'Édition
		- Navigation
		- Scène
			* Barre d'outils (Éditeur)
				+ Principal
					- Outil Scène
						* Properties (Éditeur de niveau)
							+ Object
						* Level Errors
						* Selection Info
						* As Stats Info
						* Objects List
						* Entity List
							+ cover
							+ Decal
							+ dummy
							+ Edit Geom
							+ Effect
							+ Entity Objet
							+ env
								- env zone
								- env game
							+ Groups
							+ Helper
								- text
							+ HUD Object
							+ Lamp
							+ NPC Objet
								- NPC / Enemy
								- NPC / Friend
							+ patrol point
							+ Prefabs
							+ Proxy
							+ Restrictor
							+ static
								- lightmap
								- portal
								- sector
								- Static Baked
							+ Static Movable
							+ Static Prop
							+ Terrain
								- Decal (Terrain)
								- Rabbit Hole (Terrain)
								- Terrain Objet
							+ Visual Script Objet
							+ Wallmark Objet
							+ Weather Zone
							+ AI Objects
								- Obstacle Shape
								- Obstacle Area
						* Entity Filtrer
						* Exposed Properties
						* Vegetation Tool
						* Layers
						* Log
					- Outil
				+ Debug
				+ Utilitaires
					- Summary Info
				+ Entités (Barre d'outils)
				+ Optimiser
			* Utilitaires RMB
		- Modèle
			* Préréglage des matériaux
			* Fenêtres Modèles
				+ Properties Modèle
				+ Level Errors Modèle
				+ Selection Info Modèle
				+ AS Entity Stats
				+ Models List
				+ IK Chains
				+ Bone Parts
					- Ajouter des parties d'os aux PNJ
				+ Bone List
				+ Motions Modèle
				+ Materials Modèle
				+ Motion Bone Curve
				+ Model Explorer
			* Outils de Physique
			* Calcul AO Statique
			* Préréglage de Texture
			* Vertex Paint
		- Particules
			* Particle Tool
		- Flares
		- Éditeur de menu (IU en jeu)
	+ Outils de l'éditeur
		- Outil Terrain
		- Texture Editor
			* Select Texture
		- Material Editor
		- Color Animator
		- Sound Editor
			* Sounds
			* Schemes
			* Speech
			* Types
			* Effects
			* Music
			* Attenuations
		- Localization Manager
		- Foliage Manager
			* Foliage Painter
		- Weather Editor
		- Super Static Tool
		- Track Editor
	+ Éditeur VS
		- Fenêtres de l'éditeur VS
			* Fenêtre principale
			* Object List
			* Scripts
			* Add List
			* Properties (VS Editor)
			* Exposed
			* Debugger
			* All Blocks
			* Nodes
		- Blocs de l'éditeur VS
			* Actions
				+ activate-deactivate
				+ Engine
					- apply tpreset
					- clone
					- clone attaches
					- signal
					- swap model
				+ Entity (actions)
					- play
						* motion
						* motion control
						* motion ex
						* play particles
						* play particles ex
						* play sound
						* play sound ex
					- attach
					- attach vs
					- destroy
					- detach
					- hit (action)
					- model track
					- move
					- override-material
					- set aux value
					- set name
					- xz rotation mode
				+ human
					- active item
					- combat behaviour
				+ npc
					- auto interest group
					- cancel vs
					- choose priority target
					- cover anchor
					- cover group
					- cover task params
					- dispersion\_props
					- goto target
					- play cover path
					- play patrol path
					- queue params
				+ physics (actions)
					- p-force
					- set physics props
				+ play (actions)
					- coloranim
				+ player (actions)
					- lock camera
					- play camera-effect
					- set\_ammo
				+ toggle
				+ Zone (Actions)
					- type
			* Checker
				+ Entity
					- compare distance
					- has refs
					- height
					- is between
					- state
					- visible
				+ game material
			* Covers
				+ invisible
			* debug (VS blocks)
				+ text splash
			* Entities (VS Blocks)
				+ name
				+ player (ref)
				+ ref
				+ self
				+ Filters
					- is alive filter
					- weapon types filter
				+ labeled
				+ active weapon
			* Logic
				+ delay
				+ random
					- random (logic)
					- random-chooser
					- randomex
				+ chooser
				+ lockers
					- easy (lockers)
					- heavy (locker)
				+ select
					- select (logic)
				+ hub
				+ counter
					- counter (logic)
					- ref (counter)
					- sel
				+ switch
					- switch (logic)
				+ BOOL OPS
					- and-2
			* subscript
			* Trade
				+ purge slot
				+ take item
			* Triggers
				+ Engine (Triggers)
					- signal (trigger)
				+ Entity (Triggers)
					- after cloned
					- die
					- hit
					- orientation
					- use (triggers)
				+ Event
					- anim
					- camera-track
				+ Game
					- loaded
					- start
				+ npc (triggers)
					- active state
					- body posture
					- mental state
					- pass cover
					- weapon active state
				+ Player
					- active item (player)
					- binoculars
					- input
					- object is close
				+ vehicles (triggers)
					- check player
				+ Zone
					- generic
					- object (zone)
					- zone/player
				+ Zone Spec
					- generic (zone spec)
	+ Éditeur AS
		- Mode d'emploi de l'Éditeur AS
		- AS Blocks
			* chooser (AS)
				+ random (AS)
			* empty
				+ delta
				+ not\_delta
			* process
				+ blender
				+ bone part
				+ double
				+ filter
				+ fixed blender
				+ gesture\_redirect
				+ IKs
				+ multi\_blender
				+ signal\_blender
			* source
				+ cover\_motion
				+ gesture\_motion
				+ motion (AS)
				+ NN\_motion
				+ one bone motion
				+ param\_motion
				+ pausable\_motion
				+ signal\_motion
				+ subst\_motion
			* state (AS)
				+ detached state
				+ dg\_transition
				+ lock movement
				+ locomotion state
				+ param time transition
				+ placeholder
				+ placeholder
				+ redir
				+ ref (AS)
				+ state (state)
				+ transition
		- Fenêtre AS
			* Main window (AS Editor)
			* Properties (AS Editor)
			* Blocks
			* States
			* Params
			* Requests
			* Preview
			* Motions
			* Bookmarks
		- Debug AS
	+ Animation
		- Plugins
			* Installer des Plugins
				+ Maya (Install)
				+ Motion Builder (Install)
			* Fenêtre d'exportation par lots
				+ Maya
				+ Motion Builder
			* Exporter du contenu dynamique
				+ Maya (Export)
				+ Motion Builder (Export)
	+ Physics
		- Essentiel
			* Options PhysX pour les objets de jeu
		- Collision Groups
		- Joints
		- Advanced
			* Force Fields
			* Friction et restitution
			* Véhicules
				+ Vehicle Tuning Guide
					- Vehicle Telemetry
* Editor Pipeline and Tutorials
	+ Artificial Intelligence
		- Bait Reaction Design
		- Combat Tune
		- Monsters Mental States
		- Movement
		- NPC Combat
		- NPC Mental States
		- Sound AI Types
	+ Importer/Exporter du Contenu
		- Exporter un Modèle
		- Exporter des Textures
		- Importer un Prop statique
		- Importer des Audios
		- Importer des Textures
	+ Configuration du niveau
	+ Guide des petites interactions entre joueurs
	+ Guide des joueurs qui prend l'arme
* CLUF

# Introduction

Ajoutons les objets de la capture d'écran ci-dessous.

Il existe différents types d'objets qui peuvent être placés dans les niveaux. Nous en aborderons trois : les ***entities*** (= *entités*) (objets du monde dynamique), les ***static props*** (= *props statiques*) (objets du monde statique) et les ***effects*** (= *effets*) (objets spéciaux polyvalent).

**Rappel** : vous pouvez ajouter des objets à partir de la fenêtre **Entity List** ou du panneau **Entities** de la barre d'outils principale du menu Scène.

Utilisons le panneau **Entities**. Il contient la liste de tous les objets du jeu qui peuvent être placés dans la scène. En sélectionnant une entité dans cette liste, vous pouvez faire passer l'outil scène en mode *ajout*, ce qui vous permet de placer un objet dans la scène. Voir l'exemple ci-dessous :

# Ajouter une Entité

Commençons par ajouter une **entité**. Par exemple, ajoutons le baril de l'exemple ci-dessus.

Recherchez **General → entity** dans le menu de la barre d'outils *Entities* en haut de l'écran.

Après avoir placé cette **entité** vierge, elle apparaîtra sous la forme d'une boîte violette jusqu'à ce que vous définissiez sa propriété de modèle 3D, qui lui indiquera l'objet 3D qu'elle doit devenir.

* Sélectionnez l'entité récemment placée.
* Allez dans la fenêtre **Properties**.
* Localisez la propriété **Base** et renommez l'objet en quelque chose de plus approprié comme **test\_entity\_\_barrel\_0000.**
* Localisez la propriété **Model** dans la liste (ou tapez le mot ***model*** dans le champ **Find** de la fenêtre).
* Cliquez sur le bouton **|...|** pour accéder à la fenêtre de navigation **Select Model**.
* Réglez-le sur **dynamic\objects\barrels\barrel\_01\_close**
* Si vous voulez que votre baril projette des ombres, assurez-vous de mettre la propriété **Shadow Cast** dans la fenêtre **Properties** est sur **TRUE**.
* Vous voyez maintenant votre baril !

🛈 *Comme le mode **Select** ne permet pas de déplacer, de faire pivoter ou de mettre à l'échelle les objets sélectionnés, il est **HAUTEMENT*** recommandé de continuer à appuyer sur la touche "**S**" de temps en temps lorsque vous vous déplacez dans la scène pour vous assurer que vous restez dans le mode **Select** lorsque vous ne transformez pas activement des objets - cela permet d'éviter les transformations aléatoires dues à des mis-cliques.
Si vous lancez la SIMULATION avec **F5** ou **Ctrl+F5**, vous remarquerez que le baril n'a pas de collision avec le joueur et que les balles le traversent. La configuration des collisions est un sujet avancé à part entière, mais pour l'instant, gardons-la aussi simple et basique que possible.

La capture d'écran ci-dessus montre la section qui régit le comportement **Physique** d'une entité.

Pour l'instant, nous voulons que notre baril soit dynamique, qu'il puisse s'entrechoquer et que le joueur et les autres personnages puissent tirer dessus.

Dans ce cas, vous devez appliquer ces paramètres :

* **Allow** = **TRUE** : autorise le moteur de physique à prendre en compte cet objet.
* **Allow On Detach** = **TRUE** : autorise le moteur physique à prendre en compte cet objet, si jamais il se détache (laissez la valeur par défaut "**TRUE**" ici pour l'instant).
* '**Kinematic = FALSE** : l'objet entrera en collision et sera totalement immobile - ceci est utilisé principalement pour les objets scriptés, par exemple pour éviter les interruptions accidentelles pendant les cinématiques ; pour les besoins de cette leçon, nous ne nous soucions pas de la physique réelle du tonneau, donc nous laisserons la valeur "**FALSE**" pour l'instant.
* **Raycast = TRUE** : les balles, les contrôles d'interaction et l'éclairage entreront en collision ("**hit**) avec l'objet, s'il est réglé sur **TRUE** ; l'objet ressemblera essentiellement à un sprite, s'il est réglé sur **FALSE**.
* **Raycast AI = TRUE** : la vision de l'IA sera obstruée par les objets (normalement désactivé pour les objets en verre et autres).
* **Collision Group = base shell** : utilise le shell de collision dynamique standard pour déterminer la collision avec le joueur ; notez que la valeur par défaut est "no collision shell", ce qui signifie que l'objet n'entrera pas en collision avec quoi que ce soit.
* **Jumpover Allowed = TRUE** : autorise le Player Jumpover Mechanics à prendre en compte cet objet ; par défaut, cette valeur est **FALSE** mais vous pouvez la mettre à **TRUE** pour cet exemple.

🛈 Une fois encore, la configuration des collisions est un sujet approfondi distinct. Si vous êtes à la recherche d'une documentation approfondie sur le sujet, n'hésitez pas à consulter ces pages :

# Ajouter un props statique

Ajoutons un **static prop** - le fauteuil de la capture d'écran ci-dessus.

Cherchez **General → static prop** dans le menu de la barre d'outils *Entities* en haut de l'écran.

Après avoir placé un *props statique* vierge, il apparaîtra sous la forme d'une boîte rouge (violette, s'il est sélectionné) jusqu'à ce que vous définissiez sa propriété de modèle 3D, en lui indiquant quel objet 3D il doit devenir.

* Sélectionnez l'accessoire statique récemment placé.
* Allez dans la fenêtre **Properties**.
* Localisez la propriété **Base** et renommez l'objet en quelque chose de plus approprié, par exemple **test\_static\_prop\_\_armchair\_0000**.
* Localisez la propriété **Model** dans la liste (ou tapez le mot ***model*** dans le champ **Find** de la fenêtre).
* Cliquez sur le bouton **|...|** pour accéder à la fenêtre de navigation **Select Model**.
* Réglez-le sur **static\furniture\armchair\_empire\_01.**
* Si vous voulez que votre fauteuil projette des ombres, assurez-vous de mettre la propriété **Shadow Cast** dans la fenêtre **Properties** sur **TRUE**.
* Vous devriez maintenant voir votre fauteuil !

Si vous lancez la Simulation avec **F5** ou **Ctrl+F5**, vous remarquerez que le fauteuil, contrairement aux entités, **A** par défaut la collision avec le Joueur et que les balles le traversent.

Ceci est dû au fait que c'est normalement le comportement prévu pour la géométrie statique, alors que la géométrie dynamique est supposée être configurée individuellement, pour ses propres objectifs "dynamiques".

La configuration de la collision est un sujet avancé à part entière, mais pour l'instant, gardons-le aussi simple et basique que possible :

* **Raycast = TRUE** : les balles, les contrôles d'interaction et l'éclairage entreront en collision ("*hit*") avec l'objet, si cette option est réglée sur **TRUE** ; l'objet ressemblera essentiellement à un sprites, si cette option est réglée sur **FALSE**.
* **Raycast AI = TRUE** : la vision de l'IA sera obstruée par les objets (normalement désactivé pour les objets en verre et autres).
* **Override Collision Group = FALSE** : utilise le groupe de collision statique standard pour déterminer la collision avec le joueur ; notez que la valeur par défaut est FALSE ce qui, **dans ce cas avec les objets statiques**, signifie "utiliser la forme de collision assignée au modèle dans l'éditeur de modèle", ce qui est, 90% du temps, la valeur prévue ; si vous le mettez à "TRUE", une propriété séparée apparaîtra et vous permettra de spécifier le groupe de collision à utiliser à la place, similaire à la façon dont il est configuré pour les entités.
* **Jumpover Allowed = TRUE** : autorise le Player Jumpover Mechanics à prendre en compte cet objet ; par défaut, c'est **FALSE**, mais vous pouvez le mettre à **TRUE** pour les besoins de cet exemple.

🛈 Une fois encore, la configuration des collisions est un sujet approfondi distinct. Si vous êtes à la recherche d'une documentation approfondie sur le sujet, n'hésitez pas à consulter ces pages :

# Ajouter un Effet

Ajoutons maintenant un **effet**. Par exemple, un panneau d'entrée du métro comme dans la capture d'écran ci-dessus.

Cherchez **General → effect** dans le menu de la barre d'outils *Entities* en haut de l'écran.

Après avoir placé un **effet** vierge, il sera affiché comme une boîte violette jusqu'à ce que vous définissiez sa propriété de modèle 3D, lui indiquant l'objet 3D qu'il doit devenir.

* Sélectionnez l'effet récemment placé.
* Allez dans la fenêtre **Properties**.
* Localisez la propriété **Base** et renommez l'objet en quelque chose de plus approprié, par exemple **test\_effect\_\_metro\_sign\_0000**.
* Localisez la propriété **Model** dans la liste (ou tapez le mot ***model*** dans le champ **Find** de la fenêtre).
* Cliquez sur le bouton **|...|** pour accéder à la fenêtre de navigation **Select Model**.

🛈 *Notez que lorsque vous essayez de sélectionner un modèle pour un type d'objet **effet**, il permet de sélectionner des modèles dynamiques et statiques.*
*C'est parce que les **effets** sont des objets du monde polyvalents spéciaux, généralement utilisés non seulement pour l'art 3D polygonal, dynamique ou statique, mais aussi pour les **particules** et les **sons**, ainsi que pour les éléments scriptés.*
* Réglez-le sur **static\wm\plakats\for\_station\_only\_4.**
* Vous devriez maintenant voir votre panneau d'entrée !

🛈 *Notez que les effets n'ont pas les propriétés **COLLISION** ou **RAYCAST** - ils sont comme des sprites par définition.*
*Donc, si vous voulez que quelque chose puisse entrer en collision avec le joueur, considérez plutôt des entités ou des accessoires statiques !*
# Ajout d'une lampe / d'un objet lumineux

Cherchez **General → lamp** dans le menu de la barre d'outils *Entities* en haut de l'écran.

Après avoir placé une simple **lampe**, elle apparaîtra sous la forme d'une **sphère blanche** lorsqu'elle sera sélectionnée et d'une **icône d'ampoule** lorsqu'elle ne le sera pas.

🛈 *Notez que la configuration correcte de la lumière nécessite un réglage précis de nombreux paramètres, mais nous nous contenterons d'augmenter la **Luminosité** pour les besoins de ce tutoriel afin de voir l'intérieur de la "cabane".*
* Sélectionnez la lampe récemment placée.
* Allez dans la fenêtre **Properties**.
* Localisez la propriété **Base** et renommez la lampe en quelque chose de plus approprié, par exemple **test\_lamp\_\_lamp\_0000**.
* Localisez la propriété **Brightness** dans la liste (ou tapez le mot ***bright*** dans le champ **Find** de la fenêtre).
* Réglez-la à **3.0**.
* Vous pouvez maintenant voir la lumière, même avec le Weather/Environment par défaut qui est actuellement défini sur le niveau.

# Contrôles de manipulation d'objets

Organisons maintenant ces nouveaux objets en une mini-scène sensée.

Tout d'abord, les contrôles pour les interactions avec les objets :

Le clic sur le bouton gauche de la souris (*LMB*) vous permet d'interagir avec les objets et la scène, en fonction du mode de curseur actif dans le panneau d'édition :

# Sélection d'objets

* Appuyez sur la touche **S** pour entrer dans le mode **Sélection** - ou appuyez simplement sur le bouton **Sélection** de la barre d'outils de la scène en haut de l'écran.
* En déplaçant le curseur sur l'objet, celui-ci sera **Surligné** par des marqueurs (boîte de délimitation). De plus, l'astuce pop-up permet un affichage rapide de ses propriétés.
* Pour sélectionner l'objet, cliquez dessus avec un **clique LMB**. Cela le rend **Sélectionné**.
* Il est possible et efficace de **sélectionner** un objet puis de déplacer le curseur sur l'autre - en le **surlignant** et en accédant au menu contextuel par un **clique RMB** :

De cette manière, vous pouvez accéder à des options d'interaction entre deux objets (ou plus). Un choix courant est de **Sélectionné** → **Déplacer vers surligné**.

🛈 *Comme le mode **Select** ne permet pas de déplacer, de faire pivoter ou de mettre à l'échelle les objets sélectionnés, il est **HAUTEMENT*** recommandé de continuer à appuyer sur la touche "**S**" de temps en temps lorsque vous vous déplacez dans la scène pour vous assurer que vous restez dans le mode **Select** lorsque vous ne transformez pas activement des objets - cela permet d'éviter les transformations aléatoires dues à des mis-cliques.
# Sélection des éléments en surbrillance

Utilisez l'option **Highlight Selection** dans l'onglet **Tool** de la fenêtre **Properties** pour contouré l'objet sélectionné avec une couleur violette, vous aidant à voir clairement quels objets sont sélectionnés.

Ce recouvrement est réservé au débogage et, comme toutes les autres fonctions d'aide au débogage, il peut être masqué ou affiché à l'aide du raccourci **Ctrl+E** :

# Incremental Ray Select

Parfois, les objets peuvent être situés aux mêmes coordonnées que plusieurs objets se chevauchant les uns les autres, ce qui rend difficile leur sélection correcte.

Vous pouvez trouver l'option **Incremental Ray Select** dans l'onglet **Tool** de la fenêtre **Properties**. Cette option vous permet de sélectionner alternativement les objets qui se chevauchent dans l'ordre séquentiel jusqu'à ce que vous sélectionniez l'objet que vous souhaitez.

Par défaut, l'objet le plus proche de la caméra sera sélectionné avec le **clique LMB**.

# Déplacer des objets

Appuyez sur **T** ou **W** pour entrer dans le mode **Move** - ou appuyez simplement sur le bouton **Move** de la barre d'outils de la scène en haut de l'écran.

Lorsque l'objet est sélectionné et que le mode **Move** est activé, le **l'axe des coordonnées** apparaît. Faites glisser l'axe avec votre **LMB** afin d'effectuer une action spécifique à cet axe.

# Type de système de coordonnées

Vous pouvez choisir le **Système de coordonnées** à appliquer lors du déplacement ou de la rotation d'un objet - **World**, **Local** ou **Screen**.

Raccourcis - chiffres **1, 2, 3** sur le clavier.

# Déplacement Snap

Il est possible d'accrocher un objet à la grille lors d'un déplacement, c'est-à-dire de le déplacer pas à pas. Pour ce faire, activez le bouton **Move Snap** de la barre d'outils Scène.

"***[**"* et *"**]**"* modifient la taille de la grille.

Raccourci – **Alt+T**.

# Copier / dupliquer un objet

**Maintenez** la touche **Ctrl** tout en faisant glisser l'axe et en déplaçant votre objet. Un objet dupliqué sera ainsi déplacé à la position souhaitée.

🛈 *Les **Ctrl+C** et **Ctrl+V** classiques fonctionnent également. Même entre différents niveaux ou en mode SIMULATION et en mode Éditeur.*
***Ctrl+V** colle les objets aux coordonnées d'où ils ont été copiés.*

***Alt+V** colle les objets à la position actuelle du curseur de la souris.*
# Déplacement lié à la surface

**Maintenir la touche F** tout en déplaçant un objet pour le déplacer le long de la géométrie de surface.

Pour ce faire, sélectionnez un objet, **maintenez la touche F**, puis **cliquez et maintenez LMB** pour commencer à faire glisser l'objet. Si cela fonctionne correctement, toute surface sur laquelle l'objet peut être placé sera affichée (axe vertical lié). Voir l'exemple ci-dessous :

Lorsque l'option **Edge Align** est activée (cherchez le bouton **EA** dans la barre d'outils Scène), votre objet se déplacera le long du bord de la surface.

🛈 Le **déplacement lié**, c'est-à-dire le fait de se déplacer en maintenant la touche *F* enfoncée, peut s'avérer très efficace lorsque vous copiez des objets d'un niveau à un autre, par exemple des éléments de gameplay dans un niveau de test.
*Disons que vous copiez des objets avec **Ctrl+C** dans un niveau, puis que vous allez dans un autre et que vous les collez avec **Ctrl+V**. Les objets que vous collez conserveront leurs coordonnées originales du niveau précédent.*

*Si vous avez besoin d'eux ailleurs, maintenez la touche F enfoncée et commencez à les faire glisser avec LMB - et les nouveaux objets s'y rendront facilement et immédiatement.*

# Rotation des objets

Appuyez sur **E** ou **Y** pour entrer dans le mode **Rotation** - ou appuyez simplement sur le bouton **Rotate** dans la barre d'outils de la scène en haut de l'écran.

Lorsque l'objet est sélectionné et que le mode **Rotation** est activé, **l'axe des coordonnées** s'affiche. Faites glisser l'axe avec **LMB** afin d'effectuer une action relative à cet axe.

# Type de système de coordonnées

Vous pouvez décider du **Système de coordonnées** à appliquer lors du déplacement ou de la rotation d'un objet - **World**, **Local**, ou **Screen**.

Raccourci - chiffres **1, 2, 3** sur le clavier.

# Rotation Snap

Vous pouvez fixer l'angle de rotation par **incréments de 5 degrés** pendant la rotation, c'est-à-dire le déplacer de 5 degrés à la fois. Pour ce faire, activez le bouton **Rotate Snap** dans la barre d'outils de la scène.

Raccourci - **Alt+Y**

🛈 *C'est une bonne pratique de garder l'option **Rotate Snap** réglée sur "**ON**". En effet, la plupart du temps, vous souhaitez que vos rotations soient nettes à 45, 60, 90 et 180 degrés plutôt que quelque chose d'imprécis comme 178 ou 36 degrés, ce qui rendra sans aucun doute votre département artistique fou !*.
# Copier / dupliquer un objet

'*Maintenez la touche Ctrl* enfoncée pendant la rotation. Vous pouvez alors faire glisser un objet dupliqué vers sa nouvelle position de rotation.

🛈 Les **Ctrl+C** et **Ctrl+V** classiques fonctionnent également. Même entre les différents niveaux ou les modes SIMULATION et Éditeur !
***Ctrl+V** colle l'objet aux coordonnées d'où il a été copié.*

***Alt+V** colle l'objet à la position actuelle du curseur de la souris.*
# Mise à l'échelle des objets

Appuyez sur **R** ou **H** pour entrer dans le **Mode Scale** ou appuyez simplement sur le bouton **Scale** de la barre d'outils Scène en haut de l'écran.

Lorsque l'objet est sélectionné et que le mode **Scale** est activé, **l'axe des coordonnées** apparaît. Faites glisser l'axe avec **LMB** afin d'effectuer une action relative à cet axe.

Notez qu'il peut être utile de changer le facteur d'échelle numériquement avec la propriété **Scale** de l'objet sélectionné dans la fenêtre **Properties**.

Le flag **Scale → Uniform** (fixé à **TRUE** par défaut) garantira que lorsque vous modifiez l'échelle **X**, **Y**, ou **Z**, les deux autres axes suivront et maintiendront les proportions de l'objet.

🛈 *Veuillez noter : il est généralement **PAS** conseillé de mettre à l'échelle quoi que ce soit à l'exception des Objets de Zone spéciaux comme les **Restrictors** ou les outils de prototypage adaptés à l'échelle comme les **Edit Geoms**. Ceci dit, il est toujours possible de mettre des choses à l'échelle, même si c'est à des fins de prototypage exceptionnellement rares.*

🛈***NE JAMAIS METTRE À L'ÉCHELLE LES GROUPES OU LES PRÉFABRIQUÉS!***
*Le moteur vous permet "en quelque sorte" de le faire mais **9 fois sur 10 le groupe sera corrompu et/ou disproportionné** de façon inattendue pendant la SIMULATION.*

*Si vous avez besoin que vos objets à l'intérieur du groupe ou d'un Prefab deviennent plus grands, il est toujours préférable de le faire d'une autre manière. Par exemple, demandez à son créateur d'exposer la valeur Scale ou simplement d'implémenter les changements d'échelle des objets à l'intérieur - mais **pas le Groupe d'objet** !*
Maintenant, il est temps de disposer les objets ajoutés de manière judicieuse (par exemple, comme suggéré sur cette capture d'écran) et d'appuyer sur **Ctrl + F5** pour courir dans le rôle d'Artyom et profiter de votre travail.

# Annulation de la sélection et historique de la sélection

🛈 Notez que si vous désélectionnez accidentellement quelque chose, vous pouvez facilement l'annuler mais **PAS** par le biais de la commande habituelle **Ctrl + Z**.
L'éditeur comprend un mécanisme de sélection Undo/Redo entièrement indépendant qui est accessible par les boutons fléchés verts, **Undo Selection** et **Redo Selection**.

**Exodus SDK © 2005-2023, 4A Games Limited. Développé par 4A Games®.**
4A Games® est une marque déposée, et 4A Games Limited, Exodus SDK et leurs logos respectifs sont des marques déposées de 4A Games Limited.

Publié par Deep Silver. Deep Silver est une division de PLAION GmbH, Autriche. Deep Silver et Plaion sont des marques déposées de PLAION GmbH.

Metro Exodus est inspiré des romans METRO 2033 et METRO 2034 de Dmitry Glukhovsky, best-sellers internationaux.

Toutes les autres marques, logos et droits d'auteur appartiennent à leurs propriétaires respectifs. Tous les droits sont réservés.

En utilisant ce site, en téléchargeant ou en utilisant le SDK Exodus ou le contenu connexe, vous acceptez d'être lié par les termes de l'accord de licence de l'utilisateur final.

CLUF