Fr/Howto:Configurer cameras, vues et fenêtres

From FlightGear wiki
Jump to navigation Jump to search

Voir aussi CompositeViewer Support and Canvas_Development#Supporting_Cameras

$FG_ROOT/Docs/README.multiscreen [1]

Cet article explique comment configurer la gestion multi-écran basée sur les fenêtres, les vues et les caméras. Les fonctionnalités d'affichage multiple de FlightGear sont très puissantes, et il est étonnant de voir à quelle vitesse les choses fonctionnent sur du matériel de gamme moyenne et même inférieure.

Principaux modes de fonctionnement

Le système de vue de caméra configurable XML de FlightGear prend en charge deux modes de fonctionnement principaux :

  1. Si vous avez plusieurs moniteurs connectés à votre ordinateur et configurés comme des écrans indépendants séparés (c'est-à-dire que vous ne pouvez pas faire glisser une fenêtre entre les moniteurs et ne pouvez pas créer une fenêtre qui s'étend sur plusieurs moniteurs), vous pouvez configurer FlightGear pour ouvrir une fenêtre séparée sur chaque écran et dessiner une perspective de vue unique dans chaque fenêtre. (Et si vous le souhaitez, vous pouvez configurer l'équipement de vol pour ouvrir plusieurs fenêtres sur un seul écran).
  2. Si vous avez plusieurs moniteurs connectés en un seul écran virtuel plus grand, vous pouvez configurer FlightGear pour ouvrir une grande fenêtre qui couvre tous vos écrans, mais ensuite séparer cette grande fenêtre en caméras individuelles et toujours dessiner une perspective unique sur chaque écran.

De plus, chaque vue est hautement configurable, quelle que soit la configuration de vos écrans.

  • Vous pouvez configurer un champ de vision distinct pour chaque écran, afin de créer un monde extérieur homogène avec des moniteurs de différentes tailles.
  • Si vous le souhaitez, vous pouvez définir chaque vue en termes de paramètres de troncs de vue de bas niveau, afin que vous puissiez mesurer soigneusement la disposition de votre moniteur/affichage et configurer chaque vue pour qu'elle corresponde exactement à votre disposition physique... y compris des troncs de vue asymétriques si nécessaire . Sinon, vous pouvez toujours définir vos vues en termes de schéma de champ de vision horizontal/vertical plus simple (mais moins flexible).
  • Vous pouvez spécifier le décalage horizontal et vertical à partir du centre pour chaque écran. Cela vous permet d'étaler vos moniteurs pour tenir compte de l'écart physique entre les écrans... cela vous permet de créer un monde virtuel encore plus transparent où les lignes de piste et les lignes d'horizon commencent au bon endroit sur le moniteur suivant lorsqu'elles sortent du bord du premier. Imaginez que vous preniez une grande affiche, que vous la découpiez en morceaux, puis que vous les sépariez un peu les unes des autres... aucune des lignes droites de l'image originale ne passera directement dans la version séparée/étirée. Imaginez maintenant que vous preniez cette même image et que vous en coupiez des bandes, mais en laissant les sections là où elles se trouvaient à l'origine. Les lignes droites sont conservées entre les pièces adjacentes. C'est de cela qu'il s'agit.

Cas d'utilisation

  • ATI (qui fabrique des puces et des cartes graphiques) a utilisé une version simplifiée (pré-version) de cette fonctionnalité pour faire la démonstration de 8 écrans pilotés à partir d'un seul ordinateur à SigGraph.
  • Choisissez le Matrox Triple Head to Go (faites une recherche Google si vous n'en avez pas entendu parler.) Ce n'est qu'une petite interface, mais pour l'ordinateur, cela ressemble à un écran géant de largeur 3x. Il se branche sur votre ordinateur coté entrée, et, côté sortie, vous branchez 3 moniteurs. Ainsi, vous obtenez jusqu'à 3 moniteurs sans que votre ordinateur ait besoin de savoir quoi que ce soit à ce sujet, et même sur des cartes vidéo avec un seul connecteur d'affichage externe (comme un ordinateur portable). En utilisant le 2ème mode de fonctionnement décrit ci-dessus, j'ai divisé ma seule grande fenêtre en 3 vues de caméra et a pu dessiner un champ de vision d'environ 120 degrés sur 3 écrans.

Changements requis dans preferences.xml

Remarque : Les modifications de preferences.xml suggérées ici sont à ajouter dans un fichier XML personnel qui peut être appelé avec l'option de ligne de commande --config=chemin-absolu-fichier.xml. Pour plus de détails sur le pourquoi et le comment, voir FlightGear configuration via XML#Adding your own settings.


Depuis la version 1.9, FlightGear utilise OpenSceneGraph (OSG) pour le rendu de la scène. OSG a déjà une implémentation pour configurer différentes caméras regardant la scène et elles sont configurées dans $FG ROOT/preferences.xml.

Les caméras esclaves sont créées à l'aide des propriétés dans preferences.xml. Un esclave est toujours créé et aligné avec les paramètres de visualisation d'une caméra maître. D'autres peuvent être ouverts dans différentes fenêtres graphiques, éventuellement sur d'autres affichages et écrans. Une caméra esclave est actuellement créée dans sa propre fenêtre. La fermeture de l'une des fenêtres fermera FlightGear dans son ensemble.

Les paramètres de l'esclave sont actuellement assez limités ; ils comprennent:

  • Les dimensions et la position de la fenêtre.
  • valeurs de "cisaillement" dans l'espace de projection.
  • "heading-deg" (un décalage de cap qui a été ajouté spécifiquement pour LinuxTag).

Chaque version amène ses améliorations, pour cela, consulter le ficher README.multiscreen dans $FG_ROOT/data/Docs

Les valeurs de cisaillement (shear-x et shear-y) ne sont vraiment utiles que pour configurer un affichage de type "mur vidéo" où les moniteurs disposés autour de la "vue principale" affichent une vue dans un tronc de décalage avec le même rapport d'aspect et le même fov que le maître.

Regardons d'abord un exemple, mettant en place deux fenêtres supplémentaires. Ajoutez quelque chose comme le code suivant à la section <rendering> de votre fichier preferences.xml :

   <camera>
    <host-name type="string"></host-name>
    <display>0</display>
    <screen>0</screen>
    <shear-x>2</shear-x>
    <shear-y>1</shear-y>
    <width>320</width>
    <height>240</height>
    <fullscreen type="bool">false</fullscreen>
   </camera>
   <camera>
    <host-name type="string"></host-name>
    <display>0</display>
    <screen>0</screen>
    <shear-x>-2</shear-x>
    <shear-y>1</shear-y>
    <width>320</width>
    <height>240</height>
    <fullscreen type="bool">false</fullscreen>
   </camera>

Pour simplifier la maintenance, vous pouvez également enregistrer ces modifications dans un PropertyList XML file séparé (par essence, le nœud XML de niveau supérieur doit être nommé "PropertyList") et le référencer simplement dans preferences.xml en utilisant le l'attribut d'inclusion dans la section <rendering>.

Preferences.xml ressemblera à ce qui suit :

  <rendering include="camera-views.xml">
  ...
  </rendering>

Et le fichier camera-views.xml à ,créer pourra, par exemple, avoir le contenu suivant ::

 <?xml version="1.0"?>
 <PropertyList>
   <camera>
    <host-name type="string"></host-name>
    <display>0</display>
    <screen>0</screen>
    <shear-x>2</shear-x>
    <shear-y>1</shear-y>
    <width>320</width>
    <height>240</height>
    <fullscreen type="bool">false</fullscreen>
   </camera>
   <camera>
    <host-name type="string"></host-name>
    <display>0</display>
    <screen>0</screen>
    <shear-x>-2</shear-x>
    <shear-y>1</shear-y>
    <width>320</width>
    <height>240</height>
    <fullscreen type="bool">false</fullscreen>
   </camera>
 </PropertyList>

Enfin, vous feriez peut-être mieux d'exécuter une instance FlightGear distincte sur le deuxième moniteur et de l'asservir. L'idée derrière une configuration à plusieurs écrans comme twinview est qu'elle imite une zone continue sans limites. Remettre ces limites d'écran lorsque le sous-système vidéo a travaillé si dur pour les éliminer est une collision de métaphores et un problème de conception, voir Property Tree/Native Protocol Slaving.

Contenu connexe

Articles Wiki

Fils de la liste de diffusion

Fichers Readme

Liens externes