Subdivide a map french

From Gnoll's Wiki

Jump to: navigation, search

This page is available in english.

Contents

Introduction

Avec Gnoll, il est parfois nécessaire de diviser vos propres "maps" en carrés appellés "pages", de manière à optimiser son affichage entre autres. Cette méthode est surtout utile pour les grands espaces, à l'extérieur.

Pour des raisons techniques, chaque zone doit correspondre à un objet (un fichier), qui doivent s'assembler sans heurts. Faire ce découpage à la main est assez fastidieux et trop imprécis, de surcroît. Pour faciliter cette tâche, un script a été écrit, qui fonctionne avec Blender. Son fonctionnement est décrit ci-dessous.

Utilisation

Un exemple de map coupée.

Installation

Le script est disponible sur le dépôt de Gnoll : gnoll/tools/blender/scripts.

Copier les fichiers gnoll-export.py, gnollTools.py et knife.py dans le répertoire des scripts de Blender : sous Windows, c'est probablement C:\Blender Foundation\Blender\scripts, sous GNU/Linux c'est souvent ~/.blender/scripts. Lancer Blender. Le script est accessible dans le menu File -> Export -> Scene for Gnoll engine....

Utilisation

Fonctionnalités principales

Le script est encore instable, sauvegarder son travail avant de l'utiliser est une bonne chose.

Le script permet de diviser l'objet représentant le sol en carrés et de générer des fichiers XML qui peuvent être utilisés avec Gnoll pour mettre en place la scène. La génération de ces fichiers ne peut pas être séparée du découpage du sol (pour générer des fichiers, il faut nécessairement couper un objet).

Le script ne fonctionne qu'avec un objet de sol qui n'a aucune transformation (rotation, déplacement, mise à l'échelle). Si l'objet est soumis à des transformations, elles seront supprimées (sans changer la disposition de la scène). Pour visualiser les transformations d'un objet, utiliser la fenêtre View Properties (touche N).

Le seul objet sélectionné doit être l'objet à couper (le sol). Les objets qui sont posés sur le sol seront détectés par le script et inclus dans les pages.

Définir la taille des zones (appellées carrés ou pages) : changer Size of pages. Cette taille est exprimée en BU (Blender Units). Essayer avec plusieurs valeurs différentes est une bonne idée. Il est aussi possible d'utiliser les boutons 1/2, 1/3 et 1/4 pour définir automatiquement une taille qui générera X pages.

Pour générer les fichiers de scène pour Gnoll, activer le bouton Generate Gnoll files (il faut le faire avant le découpage du sol). Le bouton Add an initial page permet d'ajouter une page générique en marge de la scène pour pallier à certains problèmes d'affichage. Dans la plupart des cas, elle n'est pas nécessaire.

Choisir la version des fichiers XML à générer. Le choix par défaut devrait convenir si les fichiers sont utilisés avec une version récente de Gnoll.

Correspondance des versions

- Version 1 : Pages définies avec des static objects (tout est dans les fichiers de pages)

- Version 2 : Pages définies avec des game objects et des game objects components (tout est dans les fichiers de pages)

Conventions sur les noms des objets

Lors de la découpe d'un objet nommé initialement "Sol", les pages générées porteront le nom Sol-Page-X, où X est le numéro de la page. Lors de la détection des objets pour la création des fichiers de scène, tout objet ayant un suffixe (du type MonObjet.001) sera considéré comme faisant référence au fichier Ogre MonObjet.mesh, ce qui permet de placer plusieurs fois le même objet dans une scène sans avoir à créer des fichiers inutilement.

Didacticiel détaillé

Pré-requis : Vous disposez d'une scène modélisée, comportant un objet représentant le sol et d'autres objets répartis sur le sol (bâtiments, items, etc). La scène doit être orientée ave l'axe Z comme axe vertical. Si ce n'est pas le cas, une simple rotation devrait suffire à résoudre le problème.

Tout d'abord, assurez vous que le script est bien installé (cf première section). Lancez Blender et chargez le fichier Blend contenant la scène. Avant de lancer le script, il serait judicieux de créer une zone où l'interface sera affichée (pour éviter les mauvaises surprises) : clic droit sur une séparation entre deux zones, puis split area, et enfin affichez la fenêtre "Script Window" dans la zone créée. Lancez le script : File -> Export -> Scene for Gnoll engine....

Sélectionnez l'objet du sol. Maintenant il faut choisir la taille des pages (champ Size of pages). Ce choix dépend de la géométrie de la scène et de ses besoins d'optimisations. Dans de petites scènes, il n'est pas nécessaire de créer beaucoup de pages, contrairement aux espaces ouverts et larges, en extérieur. Il est possible d'essayer différentes valeurs pour ce paramètre : choisissez une valeur, cliquez sur Subdivide, et si le résultat ne convient pas, appuyer sur Ctrl + Z dans la fenêtre 3D.

Une fois que vous avez trouvé la taille optimale, il vous reste à activer la génération de fichiers de scènes Gnoll (bouton Generate Gnoll files). Changez le chemin du dossier dans lequel les fichiers doivent être écrits (ce chemin est un chemin absolu). Enfin, cliquez sur Subdivide.

Maintenant, vous avez vos pages et vos fichiers. Pour utiliser ces résultats avec Gnoll, il faut exporter les objets créés dans le format Mesh d'Ogre (extension .mesh). Avant tout, supprimez dans chaque page les doublons : en Edit mode, appuyez sur W -> Remove doubles. Ensuite, téléchargez l'exporteur d'Ogre depuis Ogre3D.org. Avec cet exporter vous allez obtenir des fichiers XML, qui devront être convertis au format .mesh par un petit utilitaire : OgreXMLConverter, qui est inclus dans les sources d'Ogre.

Les fichiers de scène définissant les pages doivent être copiés dans le répertoire data de votre projet. Les objets 3D doivent être placés dans le dossier data/models, et leurs textures et matériaux dans data/materials/textures et data/material/scripts. Enfin, éditez le fichier gSceneManager en changeant le champ nommé initialPage : remplacez le par le nom d'une de vos pages (par ex. Sol-Page-1).

Lancez Gnoll. La scène devrait s'afficher.

A propos du script

Ce script a été écrit par Antonin <Wetneb> Delpeuch. Il est distribué sour la Blender Artistic Licence (cf cette page).

L'algorithme est fondé sur le Blender Knife Tool, par Stefano <S68> Selleri.

Bugs connus et améliorations

- Permettre l'export vers Ogre directement avec le script;

- Ajouter le support du mutli-texturing : permet la création de lumières et de jolies textures;

- Faire en sorte que le script supprime automatiquement les points en doublons;

- Séparer la génération de fichiers XML de la découpe de l'objet. Permet de générer des fichiers sans avoir à couper le sol;

- Ajouter un outil pour sélectionner plus facilement le répertoire d'export;

- Une idée ? Un bug à corriger ? Contactez Wetneb.

Algorithme

La description de l'algorithme est dans l'en-tête de son code source, qui lui-même est suffisament documenté pour être compréhensible (en anglais).

--Wetneb 09:44, 21 May 2009 (UTC)