http://jerome.le.chat.free.fr

les fichiers LIB

les fichiers .lib ne sont nécessaires que pour placer et construire un bâtiment dans une ville, et ils demandent un peu d'expérience en programmation, tout du moins en édition de fichier texte.

si vous avez crée des objets destinés aux rues, ou si vous souhaitez juste mettre a contribution des éléments de bâtiments que d'autres auteurs pourront emboiter grâce à la programmation, ne perdez pas votre temps ici et passez à l'article suivant sur les fichiers .blend.

des modèles de fichiers .lib seront publiés, les plus curieux pourront faire des tests en partant des fichiers lib existants.

ce fichier texte construit un bâtiment à l'intérieur du lot imparti par Blended Cities pendant la création. c'est en quelque sorte l'architecte et le chef de chantier du bâtiment. (ce qui pourra sembler contre-nature et révoltant à certains architectes et chefs de chantier, j'en suis désolé.). je l'appellerai l'archichef, plus loin, quand l'envie m'en prendra.

  • le fichier .lib permet de catégoriser les bâtiments qu'il est capable de construire : des lotissements, des bureaux, des gratte-ciels etc.
  • il regroupe plusieurs sections délimitées par des balises à la manière d'xml. l'entète est par exemple délimitée par <header> et </header>.
  • la procédure de création est écrit en python. le code est délimité par les balises <functions>. il peut y avoir plusieurs fonctions de création.
  • il peut y avoir plusieurs fichier .lib dans une même librairie.
  • le fichier .lib peut utiliser des fonctions purement procédurales pour créer un bâtiment,
  • ou emboiter des objets préfabriqués, contenus dans n'importe quel .blend situés dans n'importe quel sous répertoire de la librairie,
  • ou mélanger les deux techniques.
  • chaque .lib peut disposer de sa propre interface dans le script, de ses propres variables, et accéder à l'ensemble des fonctions et des variables de Blended Cities.

effacez le fichier commerce.lib et ouvrez le fichier building.lib que nous avons crée précedemment dans un éditeur de texte. on y trouve plusieurs sections :

<header>
<var>
<gui>
<mats>
<function default>
<function residential>

ici le fichier comprend deux catégories de bâtiments : default et residential. il pourrait n'y avoir qu'une seule section <function>

après avoir mis a jour le fichier, vous pourrez rafraichir l'interface de Blended Cities comme précedemment pour voir les changements. (les boutons R)

 

la section header

l'entète du fichier .lib permet de définir l'auteur, la version, etc.. et la catégorie à laquelle appartient le bâtiment :

  • libName est le nom interne de l'archichef,
  • libAuthor est le nom de l'auteur,
  • libtag est un diminutif de l'archichef,
  • libCat lire plus bas,
  • libComment affiche des informations à propos de la librarie dans l'interface de Blended Cities. le point-virgule permet d'aller à la ligne ou de sauter une ligne.
  • libVersion est le numéro de version,
  • libDate est la date de création,
  • libGui (boléen, True ou False) précise au script principal qu'il faudra afficher une interface pour cette librairie.

remplacez maintenant :

libAuthor=Piiichan

par

libAuthor=Lecorbusier

et rafraichissez l'interface :

il en est de même pour chaque variable.

 

libCat

libCat est le champ qui permet de définir la ou les catégories du bâtiment qui est construit par ce fichier lib.

cette variable détermine quelle(s) catégorie(s) de bâtiment la librairie est capable de construire. ici, default et residential.
c'est cette variable qui permet d'afficher cette librairie dans les catégories default et residential de l'interface des catégories de bâtiment :

ci-dessus, dans la catégorie default. jerome/building apparait également dans residential.

ces deux noms de catégories correspondent aux noms des deux sections <function default> et <function residential>. MAIS le code pourrait être commun aux deux catégories : dans ce cas il n'y aurait qu'une seule section <function> qui serait exécuté pour les deux catégories.

  • si pour une catégorie x défini par libCat, il n'y a pas de section <function x> correspondante, le script executera le code trouvé dans <function>.
  • on pourrait tout aussi bien créer deux fichiers lib, l'un pour la catégorie default et l'autre pour la catégorie residential, avec chacun une seule section <function>. dans ce cas, les variables et la configuration des matériaux ne seraient pas partagées, et les deux .lib auraient chacune leur interface.

remplacez :

libCat=default, residential

par :

libCat=industrial, residential

et rafraichissez l'interface depuis l'onglet Catégories.

jerome/building apparait maintenant dans industrial et residential, et a disparu de default.

il faut également remplacer :

<function residential>

par :

<function industrial>

sinon, la section <function default> aurait été utilisé pour les deux catégories, et on ne verrait aucune différence entre les deux catégories de bâtiments crées (dans cet exemple précis).

 

remplacez maintenant :

libCat=industrial, residential

par

libCat=industrial, residential, commercial

puis copiez-collez toute la section <function industrial> (sans oublier </function> a la fin) a la fin du fichier. puis renommez la section :

<function commercial>

rafraichissez :

vous avez crée une nouvelle catégorie de bâtiment.
c'est assez anarchique mais très flexible : Blended Cities n'impose pas un carcan de catégorie de bâtiment. ce sont les différentes libraries  installées qui définissent les catégories. lorsque le nombre de libraries s'étoffera, une table de référence des catégories sera publiée. en attendant, il me paraît plus pratique d'utiliser l'anglais pour le nom des catégories.

remplacez :

libGui=True

par :

libGui=False

toute l'interface de la librarie a été cachée dans l'onglet Bâtiments/Librarie. remettez la valeur True car nous allons maintenant nous occuper de l'interface de la librairie.

 

les sections var et gui

<var> défini les variables, et <gui> les affiche.

dans <var>, chaque variable est définie par une ligne constituée de plusieurs champs séparés par des points-virgules :

nom de la variable=valeur par défaut ; type de bouton ; options ; texte bouton ; texte info-bulle

dans notre fichier, 4 variables ont été définies : flatRoofProb, smoothProb, roofBorder et chimneyProb. elles sont toutes de types slider.

 

juste avant </var>, ajoutez la ligne :

maVariable=0.75;slider;0.0;1.0;test   ;test de bouton

si vous rafraichissez maintenant il n'y a pas de nouveau bouton. la variable n'a pas été ajoutée à l'interface. mais elle existe,et sa valeur est 0.75

dans la section <gui>, sous la ligne :

*smoothProb,col22,pos,sx,sy

ajoutez :

pos -=sy
*maVariable,col1,pos,sx,sy

l'asterisque est importante, elle annonce la création d'un bouton. signification :

* nom de la variable défini dans <var> , colonne, ligne , dimension x , dimension y

raffraichissez :

le bouton test est apparu. la valeur de maVariable est à 0.75 par défaut, et sa valeur peut varier entre 0.0 et 1.0.


les fichiers modules fonctionnent d'une manière similaire aux fichiers .lib sauf qu'ils portent l'extension .plugin et qu'ils sont situés dans le répertoire plugins. le plugin demo_gui affiche la plupart des différents types de variables et de boutons que l'on peut générer avec <var> et <gui> :

ouvrez le fichier plugins/demo_gui/demo_gui.plugin et inspectez sa section <var> et <gui>. mis a part les variables de type push/run, les autres types (text, slider, toggle, layers, checkboxes, menu) sont utilisables dans les fichiers .lib

 

variables de mise en page

les valeurs de ces variables sont recalculées par le script principal à chaque redimensionnement de l'espace donné au script dans Blender.

  • pos est la position y du curseur,
  • sy correspond à la hauteur d'une ligne,
  • col suivi d'un ou deux chiffres est la position x d'une colonne :
    col1 est la 1ere colonne,
    col22 est la 2nd colonne sur un total de deux colonnes,
    col34 est la 3eme colonne sur un total de 4 colonnes etc
  • sx suivi ou non d'un chiffre défini la dimension x d'un bouton :
    sx est la largeur d'un bouton lorsqu'il y a 2 colonnes,
    sx3 est la largeur d'un bouton lorsqu'il y a 3 colonnes,
    et sx4 pour 4.

 

Mise à jour le Mardi, 10 Août 2010 05:36