And if NOT ? What append ?

Voir le sujet précédent Voir le sujet suivant Aller en bas

And if NOT ? What append ?

Message  Didier1963 le Dim 1 Mar 2015 - 19:06

Bonjour à tous,

Bon, c'est écris dans le titre du sujet,

J'aurais besoin d'éclaircissement, vu que je suis à la ramasse en maths, sur l'utilisation des fonction logique AND, IF, NOT et les petits frères.

J'essaie d'animer ça:


MAIS, car il y a un GROOOOOOOS mais, sans une seule ligne de Nasal...... atchoum... auquel je suis allergique pour l'instant.

Donc là, j'en suis aux différents écrans affichables en bas, aussi bien à gauche qu'a droite.
Prenons le premier (oupsss, désolé, c'est le second, ha y en a qui ont l'oeil !!),dans la série de 10, la gestion carburant:

ATTENTION, ce sont les textures temporaires empruntée sur le Net, les miennes sont en cours d'élaboration.

Afin d'éviter de faire deux ensembles d'objets pour l'écran d'affichage de la gestion du carburant (il peux s'afficher aussi bien en bas à gauche, qu'en bas à droite), j'appelle le même ensemble d'objet, la différence se situant dans les onglets s'affichant à côté des boutons correspondants.

Dans mon fichier principal "mfd.xml", j'ai crée une variable qui change par action sur le bouton rotatif et mis un pas de 0.1 (0.5 c'est encore trop rapide), de façon à éviter les tâtonnements en tournant et avoir le bon écran (on à donc 10 clics molette entre deux écrans).
Les valeurs "instrumentation/avio-mfd/screen-down-left" et "instrumentation/avio-mfd/screen-down-right" varient donc, comme il y a 10 écrans différents à afficher, de 0 à 9.

Puis j'appelle mon sous- ensemble "fuel.xml", en lui donnant selon le bouton droite et gauche, la position voulue.

Ca donne ça :
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>

<PropertyList>

  <path>mfd.ac</path>

  <animation>
    <object-name>A1</object-name>
...............................
<!-- Variables setup -->
  <params>
...........................
    <screen-down-left>instrumentation/avio-mfd/screen-down-left</screen-down-left> <!-- pour créer une variable bouton de gauche -->
    <screen-down-right>instrumentation/avio-mfd/screen-down-right</screen-down-right> <!-- pour créer une variable bouton de droite -->
................
  </params>
...................
<!-- Screen Lower Left Selector -->

  <animation>
    <type>pick</type>
    <object-name>A6</object-name>
    <visible>true</visible>
    <action>
      <button>3</button>
      <binding>
        <command>property-adjust</command>
        <property alias="../../../../params/screen-down-left"/>
        <step>0.1</step>
        <min>0</min>
        <max>8</max>
        <wrap>0</wrap>
      </binding>
    </action>
  </animation>

  <animation>
    <type>pick</type>
    <object-name>A6</object-name>
    <visible>true</visible>
    <action>
      <button>4</button>
      <binding>
        <command>property-adjust</command>
        <property alias="../../../../params/screen-down-left"/>
        <step>-0.1</step>
        <min>0</min>
        <max>8</max>
        <wrap>0</wrap>
      </binding>
    </action>
  </animation>

  <animation>
    <type>rotate</type>
    <object-name>A6</object-name>
    <property>instrumentation/avio-mfd/screen-down-left</property>
      <interpolation>
        <entry><ind>0</ind><dep>0</dep></entry>
        <entry><ind>8</ind><dep>270</dep></entry>
      </interpolation>
    <center>
     <x-m>  0.00491 </x-m>
     <y-m> -0.14924 </y-m>
     <z-m> -0.08181 </z-m>
    </center>
    <axis>
      <x> -1 </x>
      <y>  0 </y>
      <z>  0 </z>
    </axis>
  </animation>
........................

<!-- Call Fuel Left Screen-->

  <model>
    <name>Fuel</name>
    <condition>
      <and>
        <greater-than>
        <property>instrumentation/avio-mfd/screen-down-left</property>
          <value>0.5</value>
        </greater-than>
        <less-than>
        <property>instrumentation/avio-mfd/screen-down-left</property>
          <value>1.5</value>
        </less-than>
      </and>
    </condition>
    <path>Aircraft/Eclipse-550/Models/Interior/Cockpit/AVIO-mfd/Fuel/fuel.xml</path>
    <offsets>
      <x-m>  0.002 </x-m>
      <y-m> -0.0716 </y-m> <!-- là il va le mettre à gauche -->
      <z-m> -0.0373 </z-m>
    </offsets>
  </model>

<!-- Call Fuel Right Screen-->

  <model>
    <name>Fuel</name>
    <condition>
      <and>
        <greater-than>
        <property>instrumentation/avio-mfd/screen-down-right</property>
          <value>0.5</value>
        </greater-than>
        <less-than>
        <property>instrumentation/avio-mfd/screen-down-right</property>
          <value>1.5</value>
        </less-than>
      </and>
    </condition>
    <path>Aircraft/Eclipse-550/Models/Interior/Cockpit/AVIO-mfd/Fuel/fuel.xml</path>
    <offsets>
      <x-m>  0.002 </x-m>
      <y-m>  0.040 </y-m>  <!-- là il va le mettre à droite -->
      <z-m> -0.0373 </z-m>
    </offsets>
  </model>
...................
</PropertyList>
Seulement, justement suivant sa position droite ou gauche, les onglets des boutons seront à gauche pour l'affichage de l'écran en position droite, et vice versa.
La copie écran vous montre mon ensemble "Fuel" dans Blender, avec ses deux onglets.

Je sèche donc sur la manière de n'afficher qu'un seul des deux.
Quand les deux boutons rotatif sont à des positions différentes, pas de problème. Mais si ils sont dans la même tranche (entre 0.5 et 1.5 pour le fuel), ça pose problème puisque j'ai mes conditions valables des deux côté :
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>

<PropertyList>

  <path>fuel.ac</path>

  <animation>
    <object-name>EstRemain-1</object-name>
.......................
  </animation>
......................

<!-- Fuel Left Tabs -->

  <animation>
    <type>select</type>
    <object-name>Tabs-Lh</object-name>
    <visible type="bool">true</visible>
    <condition>
      <and>
        <greater-than>
        <property>instrumentation/avio-mfd/screen-down-left</property>
          <value>0.5</value>
        </greater-than>
        <less-than>
        <property>instrumentation/avio-mfd/screen-down-left</property>
          <value>1.5</value>
        </less-than>
      </and>
      <not>
        <greater-than>
        <property>instrumentation/avio-mfd/screen-down-right</property>
          <value>0.5</value>
        </greater-than>
        <less-than>
        <property>instrumentation/avio-mfd/screen-down-right</property>
          <value>1.5</value>
        </less-than>
      </not>
    </condition>
  </animation>

<!-- Fuel right Tabs -->

  <animation>
    <type>select</type>
    <object-name>Tabs-Rh</object-name>
    <visible type="bool">true</visible>
    <condition>
      <and>
        <greater-than>
        <property>instrumentation/avio-mfd/screen-down-right</property>
          <value>0.5</value>
        </greater-than>
        <less-than>
        <property>instrumentation/avio-mfd/screen-down-right</property>
          <value>1.5</value>
        </less-than>
      </and>
    </condition>
  </animation>
....................
</PropertyList>
Comme vous le voyez, j'ai essayé avec d'utiliser la fonction NOT sur le morceau de code de l'onglet de gauche, l'onglet de droite ayant la prog initiale. Mais je ne maîtrise pas.

QU'EST-CE QUE QUOI JE FAIT-JE ?????????

Merki buckets

Didier1963
Le baron rouge

Messages : 409
Date d'inscription : 22/02/2012
Age : 52
Localisation : Bourgogne, LFLH

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: And if NOT ? What append ?

Message  F-Sig le Lun 2 Mar 2015 - 0:56

Bonsoir,
je sais pas si j'ai tout bien compris scratch
si p.ex le gauche est affiché, tu ne veux pas que le droit s'affiche si le bouton droit passe par là? et vice-versa, j'ai bon?
essaie ça:
Code:
<!-- Fuel Left Tabs -->

  <animation>
    <type>select</type>
    <object-name>Tabs-Lh</object-name>
    <visible type="bool">true</visible>
    <condition>
      <and>
        <greater-than>
        <property>instrumentation/avio-mfd/screen-down-left</property>
          <value>0.5</value>
        </greater-than>

        <less-than>
        <property>instrumentation/avio-mfd/screen-down-left</property>
          <value>1.5</value>
        </less-than>
      
      <not>
        <greater-than>
           <property>instrumentation/avio-mfd/screen-down-right</property>
           <value>0.5</value>
        </greater-than>
      </not>

      <not>
        <less-than>
        <property>instrumentation/avio-mfd/screen-down-right</property>
          <value>1.5</value>
        </less-than>
      </not>

   </and>

    </condition>
  </animation>
Sans garantie, mais tu ne pourrais pas mettre un <factor>0.1 dans le "property-adjust" du "pick" pour t'affranchir des décimales?

F-Sig
Pilote d'hélico

Messages : 972
Date d'inscription : 21/09/2010
Age : 69
Localisation : LFIM - LFBT

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: And if NOT ? What append ?

Message  Didier1963 le Lun 2 Mar 2015 - 1:09

Merci m'sieur,

j'essaie ça dès que j'ai fini ma checklist.

Juste une précision, dans mon ensemble d'objet "Fuel Screen", j'ai un objet plan central servant de fond pour les chiffres, et de chaque côté, un objet plan servant à afficher les étiquettes (ON, L Pump AUTO, R Pump ON, XFEED L<R, ECB Link).
Si j’appelle mon ensemble pour être affiché côté gauche, je ne montre que les étiquettes de droite.
Si j’appelle mon ensemble pour être affiché côté droite, je ne montre que les étiquettes de gauche.

C'est vrai que je n'ai pas choisi forcement le meilleur screenshot, mais si tu regarde les deux PDF de chaque côté du MFD, il ont bien leurs étiquettes en face des boutons de fonction (Active, Monitor, Com1, Com2, Timer pour celui de gauche, et Vide, Vide, Fréquance, Replay, vide, Next pour celui de gauche).

A+


[EDIT]
Ca ne fonctionne pas.
j'ai soit ça avec ton code:


soit ça avec le miens:


Je devrais avoir ça :

l'écran de gauche puisque à droite c'est la page de gestion électricité qui n'as pas d'étiquettes.

Didier1963
Le baron rouge

Messages : 409
Date d'inscription : 22/02/2012
Age : 52
Localisation : Bourgogne, LFLH

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: And if NOT ? What append ?

Message  F-Sig le Lun 2 Mar 2015 - 11:29

Mon bout de code n'est qu'un exemple, il faut peut-être affiner encore et bien sûr faire le verrouillage réciproque sur les deux côtés.
Il me semble pourtant que ça devrait le faire.
Selon la doc la condition not ne doit contenir qu'une sous-condition. voir dans "/data/Docs/README.conditions"
Mais ces trucs en xml ont parfois des réactions bizarres, surtout la fonction not (interprétation d'un code interprété, ça accumule les aléas)

Mais sans avoir le truc sous la main pour tester... à toi de jouer Wink

Peut-être:
Code:
<!-- Fuel Left Tabs -->

  <animation>
    <type>select</type>
    <object-name>Tabs-Lh</object-name>
    <visible type="bool">true</visible>
    <condition>
      <and>
        <greater-than>
        <property>instrumentation/avio-mfd/screen-down-left</property>
          <value>0.5</value>
        </greater-than>

        <less-than>
        <property>instrumentation/avio-mfd/screen-down-left</property>
          <value>1.5</value>
        </less-than>
      
        <or>     
        <greater-than>
           <property>instrumentation/avio-mfd/screen-down-right</property>
           <value>1.5</value>
        </greater-than>
    
        <less-than>
        <property>instrumentation/avio-mfd/screen-down-right</property>
          <value>0.5</value>
        </less-than>
       /or  

   </and>

    </condition>
  </animation>
Pour plus de clarté j'essaierais d' obtenir des valeurs entières dans les props "screen-down-l/r", ça sera à faire une fois et le traitement ultérieur sera facilité, sinon il faudra répéter le binz pour chaque écran.

Pour l'affichage à gauche ou à droite des boutons, je pense que le plus simple serait de scinder ton écran en 2 objets distincts ( schéma, boutons)

Pour l'affichage de textes voir aussi: http://wiki.flightgear.org/OSG_Text
voir dans les mfd g/d du m2000, un canvas "boutons" pourrait afficher divers textes selon l'écran.
Les solutions ne manquent pas, suffit de comprendre la question Very Happy

F-Sig
Pilote d'hélico

Messages : 972
Date d'inscription : 21/09/2010
Age : 69
Localisation : LFIM - LFBT

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: And if NOT ? What append ?

Message  Didier1963 le Lun 2 Mar 2015 - 14:34

Merci M'sieur pour les conseils.

En fait ctte nuit quand je me suis arrêté de m'arracher le peu de cheveux qui me reste et suis passé en position 144, j'ai trouvé une solution (dont tu me parle aussi), de tout bêtement traiter les deux zones d'étiquettes comme chaque écran, c'est à dire de créer un sous ensemble "Étiquette gauche" et un "Étiquette droite". Ce qui résous le problème avec la texture qui va bien et la fonction textranslate.

Pour le Canvas, je me doute bien qu'il y a moyen, mais celà fait partie du challenge que je me suis fixé : faire un instrument uniquement en Xml, sans une seule ligne de Nasal ou Canvas.

Masochiste ???? Oui, un peu quand même. Mais c'est surtout que je ne veux pas me mettre à étudier encore un langage de plus quand je peux faire les choses avec celui que je connaît. Je parle là du Xml, pas du français-anglais-serbo-croate !!

J'avais déjà parcouru la doc FG (beaucoup de gens n'y pense pas avant de poser leur questions sur les forum), mais je n'avait pas pratiqué en même temps, du coup c'était passé à coté de mon neurone.

Je vais donc opter pour la séparation, mais en espérant qu'une bonne qui maîtrise m'indique la marche à suivre pour tout avoir dans le même fichier, n'étant pas trop adepte des fichiers qui renvoient à un autre fichier, qui renvoie à un autre fichier, etc......

A+

PS: je ne met pas "résolu" dans le titre du sujet car il y a une solution, je le mettrai quand j'aurai trouvé ou que quelqu'un m'aura soufflé le démarche.

Didier1963
Le baron rouge

Messages : 409
Date d'inscription : 22/02/2012
Age : 52
Localisation : Bourgogne, LFLH

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: And if NOT ? What append ?

Message  F-Sig le Lun 2 Mar 2015 - 15:12

Didier1963 a écrit:
Pour le Canvas, je me doute bien qu'il y a moyen, mais celà fait partie du challenge que je me suis fixé : faire un instrument uniquement en Xml, sans une seule ligne de Nasal ou Canvas.
Oups, confusion, je ne pensais pas du tout a "canvas" de fg. simplement à un fond d'image.

Didier1963 a écrit:
Masochiste ???? Oui, un peu quand même. Mais c'est surtout que je ne veux pas me mettre à étudier encore un langage de plus quand je peux faire les choses avec celui que je connaît. Je parle là du Xml, pas du français-anglais-serbo-croate !!
Tant que tu n'as pas de fonctions mathématiques à faire...
Mais même pour la logique 5 lignes de nasal peuvent remplacer 20 lignes de xml et parfois sauver quelques cheveux  Very Happy . aucune idée quand à la répercussion sur les fps.

F-Sig
Pilote d'hélico

Messages : 972
Date d'inscription : 21/09/2010
Age : 69
Localisation : LFIM - LFBT

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: And if NOT ? What append ?

Message  Didier1963 le Lun 2 Mar 2015 - 18:06

Il y a eu des débats sur le forum GF.org à ce sujet.
http://forum.flightgear.org/viewtopic.php?f=66&t=19721

Je pense avoir compris que Nasal simplifie pas mal de chose, et fait gagner beaucoup de temps en programmation, mais aussi temps d'accès processeur. Donc plus de FPS.

Je vais voir ce que j'arrive à faire simplement avec Xml pour l'instant.
L'idée de se mettre au Nasal est à travailler.

Merci pour l'info OSG text, je vais voir de ce côté aussi car je pourrait avoir besoin de ça sur d'autres choses dans l'avion (Eclipse-550, mais aussi mon Tu-444).

Didier1963
Le baron rouge

Messages : 409
Date d'inscription : 22/02/2012
Age : 52
Localisation : Bourgogne, LFLH

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: And if NOT ? What append ?

Message  Contenu sponsorisé Aujourd'hui à 15:39


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum