Refactor documentation for Blender GS Framework and Squirrel integration

- Updated titles and descriptions for shader and animation panels to reflect new naming conventions.
- Enhanced explanations in the shader panel documentation, emphasizing automatic saving and loading of material properties.
- Revised the squirrel tab documentation to clarify its functionality and integration with the animation system.
- Added new sections for LOD properties and ScriptedObject properties in the custom properties reference.
- Adjusted object types and asset types documentation to align with the latest naming and categorization standards.
- Improved tutorial content for animations, materials, and physics, ensuring consistency with the updated interface.
- Updated index page to reflect the new structure and provide clearer navigation for users.
This commit is contained in:
2026-06-12 15:57:12 +02:00
parent 7f9175598e
commit 78befca3bd
31 changed files with 859 additions and 566 deletions

View File

@ -34,10 +34,10 @@ export default defineConfig({
{ {
label: 'Interface', label: 'Interface',
items: [ items: [
{ label: 'Onglet GSEdit', slug: 'blender/interface/gsedit-tab' }, { label: 'Onglet GS Scene', slug: 'blender/interface/export-tab' },
{ label: 'Onglet NMS Export', slug: 'blender/interface/export-tab' }, { label: 'Onglet GS Object', slug: 'blender/interface/gsedit-tab' },
{ label: 'Onglet Squirrel', slug: 'blender/interface/squirrel-tab' }, { label: 'Onglet GS Animation', slug: 'blender/interface/squirrel-tab' },
{ label: 'Panneau Shader (GS Edit)', slug: 'blender/interface/shader-panel' }, { label: 'Onglet GS Material', slug: 'blender/interface/shader-panel' },
], ],
}, },
{ {
@ -60,6 +60,13 @@ export default defineConfig({
{ label: 'Import d\'objects depuis la librairie d\'asset', slug: 'blender/tutoriels/asset-library' }, { label: 'Import d\'objects depuis la librairie d\'asset', slug: 'blender/tutoriels/asset-library' },
], ],
}, },
{
label: 'Exemples concrets',
items: [
{ label: 'Exporter road_highway (composite)', slug: 'blender/exemples/export-road-highway' },
{ label: 'Exporter les props de road_highway', slug: 'blender/exemples/export-props-road-highway' },
],
},
{ {
label: 'Intégration', label: 'Intégration',
items: [ items: [

BIN
src/assets/import-menu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 838 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

BIN
src/assets/tab-gs-scene.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

View File

@ -0,0 +1,143 @@
---
title: Exporter les props de road_highway
description: Exemple pas à pas — exporter les props dynamiques de road_highway en NML + GLTF vers le simulateur.
---
import { Aside, Steps } from '@astrojs/starlight/components';
Ce guide reprend l'export des **props** de la scène **road_highway** : les objets dynamiques (arbres, mobilier, décor) qui ne font **pas** partie de la géométrie composite. Il fait suite à l'[export composite de road_highway](/blender/exemples/export-road-highway/).
<Aside type="note">
**`<simu>`** désigne le dossier d'installation du simulateur, par défaut :
```
C:/Users/simulateur/Desktop/Simulateur-Develter
```
</Aside>
---
## Props : c'est quoi ?
Les **props** sont les objets dynamiques de la scène — typiquement les arbres, les murs, le mobilier et les éléments de décor (les objets de type `tree`, `prop`, `building`, `character`, `wall`). L'addon les exporte à part :
- un fichier **NML** (`props.nml`) qui contient le **placement** de chaque prop (position, rotation, échelle) et une référence vers sa géométrie ;
- un dossier **`props_gltf/`** qui contient les **géométries uniques** (regroupées en fichiers GLTF) et leurs textures.
Plusieurs props identiques partagent la même géométrie : elle n'est exportée qu'une seule fois.
---
## 1. Ouvrir la scène et la console
<Steps>
1. Ouvrez le fichier `.blend` de **road_highway** (le même que pour l'export composite).
2. Ouvrez la console système : **Window → Toggle System Console**. Gardez-la ouverte pour suivre la progression.
</Steps>
---
## 2. Lancer l'export des props
<Steps>
1. Ouvrez la sidebar du viewport 3D (touche `N`) et allez dans l'onglet **GS Scene**.
2. Dépliez le panneau **Export Props**. Il affiche un récapitulatif :
- **Prop objects** : nombre total de props détectés dans la scène
- **Unique geometries** : nombre de géométries distinctes à exporter
3. Cliquez sur le bouton **Export Props NML + GLTF**.
</Steps>
<Aside type="note">
Si le bouton est grisé, c'est qu'aucun prop n'a été détecté dans la scène. Vérifiez que vos objets dynamiques sont bien typés (`tree`, `prop`, etc.) via le [système de nommage](/blender/tutoriels/nommage/).
</Aside>
---
## 3. Régler les options
Un navigateur de fichiers s'ouvre avec, à droite, les options d'export. Configurez-les ainsi :
| Option | Valeur | Détail |
|---|---|---|
| **Export GLTF Geometry/Materials** | ✅ Activé (défaut) | Exporte bien la géométrie et les matériaux, pas seulement le placement. |
| **Geometries per GLTF** | **200** | Nombre de géométries uniques regroupées par fichier GLTF. Par défaut `10` → passez-le à `200`. Moins de fichiers, export plus rapide. |
| **Dynamic Texture Sizing** | ✅ **Activez-la** | C'est le « scaling » des textures : chaque texture est redimensionnée à la résolution juste nécessaire selon la taille des objets qui l'utilisent. Décochée par défaut. |
| **Min Size** | **512** | Plancher de résolution. Par défaut `128` → passez-le à `512` pour garder une qualité minimale correcte sur les props. |
| **Max Size** | 1024 (défaut) | Plafond de résolution. Laissez tel quel. |
| **Texel Density** | 48 (défaut) | Pixels par mètre utilisés pour calculer la résolution cible. Laissez tel quel. |
Laissez **Convert Textures to DDS (BC7)** décoché.
<Aside type="tip">
**Geometries per GLTF** et le « scaling » sont indépendants : le premier regroupe les fichiers, le second optimise le poids des textures. On active les deux ici pour un export propre et léger.
</Aside>
<Aside type="caution">
Les champs **Min Size**, **Max Size** et **Texel Density** ne sont modifiables que si **Dynamic Texture Sizing** est cochée. Activez d'abord la case, puis réglez **Min Size** sur `512`.
</Aside>
Le dialogue d'export, options réglées et fichier nommé `props.nml` dans `…/scenes/trees/road_highway/` :
![Dialogue d'export des props configuré pour road_highway](../../../../assets/road-highway-props-dialog.png)
---
## 4. Choisir la destination
<Steps>
1. Dans le navigateur de fichiers, naviguez jusqu'au dossier :
```
<simu>/app/scenes/trees/road_highway/
```
(créez le sous-dossier `road_highway` s'il n'existe pas encore)
2. Dans le champ **nom de fichier**, saisissez :
```
props.nml
```
3. Cliquez sur **Export Props NML + GLB**.
</Steps>
---
## 5. Résultat
Suivez la progression dans la console. À la fin, le dossier contient :
```
app/scenes/trees/road_highway/
├── props.nml ← placement des props + références de géométrie
└── props_gltf/ ← géométries uniques (par paquets de 200) + textures
├── ....gltf / .bin
└── textures/
```
Le dossier `props_gltf/` est toujours créé **à côté** du fichier `props.nml`, peu importe le nom que vous donnez au NML.
<Aside type="tip">
Si vous corrigez seulement le placement des props (sans toucher à la géométrie), vous pouvez relancer l'export en **décochant** *Export GLTF Geometry/Materials* : seul le `props.nml` est réécrit, ce qui est bien plus rapide.
</Aside>
---
## Récapitulatif road_highway
Une fois les deux exports faits, le simulateur dispose de tout pour road_highway :
| Étape | Sortie |
|---|---|
| [Export composite](/blender/exemples/export-road-highway/) | `app/scenes/safety_driving/road_highway/` (manifeste + sous-scènes) |
| Export des props (ce guide) | `app/scenes/trees/road_highway/` (`props.nml` + `props_gltf/`) |

View File

@ -0,0 +1,154 @@
---
title: Exporter road_highway (composite)
description: Exemple pas à pas — exporter la scène road_highway en scène composite GLTF vers le simulateur.
---
import { Aside, Steps } from '@astrojs/starlight/components';
Ce guide reprend, étape par étape, l'export complet de la scène **road_highway** vers le simulateur. C'est un exemple concret : suivez-le tel quel pour cette scène, ou adaptez les chemins et le nom pour une autre.
<Aside type="note">
Dans tout ce guide, **`<simu>`** désigne le dossier d'installation du simulateur. Par défaut il s'agit de :
```
C:/Users/simulateur/Desktop/Simulateur-Develter
```
Le dossier `app/` (vers lequel pointe le **Dossier Projet** dans les préférences de l'addon) se trouve directement à l'intérieur.
</Aside>
---
## Ce que vous allez produire
L'export composite découpe la scène en **sous-scènes GLTF** (une par collection) et écrit un fichier **manifeste** `.scene.json` qui décrit l'assemblage. À la fin, le dossier de destination contiendra :
```
app/scenes/safety_driving/road_highway/
├── road_highway.scene.json ← le manifeste (porte le nom de la scène)
├── subscenes/ ← un GLTF par collection
└── textures/ ← textures partagées (déduplication activée)
```
---
## 1. Ouvrir la scène
<Steps>
1. Ouvrez le fichier `.blend` de la scène **road_highway** dans Blender.
2. Vérifiez que le **Dossier Projet** est bien configuré sur le `app/` du simulateur dans **Edit → Preferences → Add-ons → Blender-GS**. Sans ça, les textures originales ne seront pas retrouvées (voir [Configuration](/blender/getting-started/configuration/)).
</Steps>
---
## 2. Ouvrir la console
Avant de lancer l'export, ouvrez la **console système** : c'est elle qui affiche la progression de l'export et les éventuelles erreurs (textures manquantes, fichiers verrouillés, etc.).
<Steps>
1. Menu **Window → Toggle System Console**.
2. Une fenêtre noire s'ouvre à côté de Blender. Laissez-la ouverte pendant tout l'export.
</Steps>
![Window → Toggle System Console et la console ouverte](../../../../assets/road-highway-console.png)
<Aside type="tip">
L'export d'une grande scène peut prendre plusieurs minutes. Tant que des lignes défilent dans la console, l'addon travaille — ne fermez pas Blender.
</Aside>
---
## 3. Lancer l'export composite
Deux accès équivalents, au choix :
- **File → Export → Composite Scene (.gltf + .scene.json)**
- ou, dans la sidebar du viewport 3D (touche `N`), onglet **GS Scene** → panneau **Export de Scène** → bouton **Export Composite Scene**.
Un navigateur de fichiers s'ouvre.
---
## 4. Choisir la destination et le nom
<Steps>
1. Dans le navigateur de fichiers, naviguez jusqu'au dossier :
```
<simu>/app/scenes/safety_driving/road_highway/
```
2. Dans le champ **nom de fichier** (en bas du navigateur), saisissez :
```
road_highway
```
3. Dans le panneau d'options à droite (**Export Options**), repérez le champ **Scene Name** et saisissez **exactement la même chose** :
```
road_highway
```
</Steps>
<Aside type="caution" title="Le nom doit être « road_highway »">
Le **nom de fichier (save)** *et* le champ **Scene Name** doivent tous les deux contenir `road_highway` (avec l'underscore, comme le nom du dossier). C'est ce nom que le simulateur utilise pour charger la scène : une faute de frappe ici et la scène ne sera pas trouvée côté moteur.
</Aside>
---
## 5. Régler les options d'export
Dans le panneau **Export Options** à droite, configurez :
| Option | État | Pourquoi |
|---|---|---|
| **Apply Modifiers** | ✅ Activé | Fige les modifiers (Array, Mirror, Subdivision…) dans le GLTF, comme dans le viewport. Vos objets Blender ne sont pas modifiés. |
| **Deduplicate Textures** | ✅ Activé | Regroupe les textures identiques dans un dossier `textures/` partagé au lieu de les copier dans chaque sous-scène. Indispensable pour ne pas exploser la taille de l'export. |
| **Keep Original Texture Files** | ✅ Activé | Remet les fichiers de texture **d'origine** (DDS, TGA…) à la place des PNG ré-encodés par Blender, et corrige les liens dans les GLTF. Préserve la compression et les mipmaps que Blender perdrait sinon. |
Laissez les autres options sur leur valeur par défaut (décochées) : **Convert Textures to DDS**, **Single Subscene Mode**, **Skip Unchanged Subscenes**, **Include Dynamic Objects in GLTF**.
<Aside type="note">
**Apply Modifiers** est coché par défaut — vérifiez simplement qu'il l'est toujours. Les deux autres cases (**Deduplicate Textures** et **Keep Original Texture Files**) sont décochées par défaut : c'est à vous de les activer.
</Aside>
<Aside type="caution">
**Include Dynamic Objects in GLTF** doit rester **décoché**. Les arbres, props et autres objets dynamiques de road_highway ne font pas partie de l'export composite : ils sont exportés séparément (voir [Exporter les props de road_highway](/blender/exemples/export-props-road-highway/)). S'il est coché, ces objets seraient figés dans le GLTF et exportés en double.
</Aside>
Une fois le dossier, le nom et les options réglés, le dialogue ressemble à ceci :
![Dialogue d'export composite configuré pour road_highway](../../../../assets/road-highway-composite-dialog.png)
---
## 6. Exporter
Cliquez sur **Export Composite Scene**.
Suivez la progression dans la console. À la fin, vous obtenez dans `app/scenes/safety_driving/road_highway/` :
- le manifeste `road_highway.scene.json` (nommé d'après le champ Scene Name) ;
- le dossier `subscenes/` avec un GLTF par collection ;
- le dossier `textures/` avec les textures partagées.
<Aside type="tip">
Si vous relancez l'export plus tard et que rien n'apparaît à l'écran, supprimez l'ancien `road_highway.scene.json` puis recommencez — le manifeste sert aussi de cache pour l'option *Skip Unchanged Subscenes*.
</Aside>
---
## Étape suivante
Les objets statiques de la scène sont exportés. Il reste à exporter les **props dynamiques** (arbres, mobilier, décor) qui ne font pas partie de la géométrie composite :
➡️ [Exporter les props de road_highway](/blender/exemples/export-props-road-highway/)

View File

@ -72,6 +72,18 @@ Le champ **Squirrel Bridge Build Path** indique le chemin vers le module C++ com
Ce paramètre n'est nécessaire que si vous utilisez le système d'animations scriptées. Si vous faites uniquement de la modélisation et de l'import/export, vous pouvez l'ignorer. Ce paramètre n'est nécessaire que si vous utilisez le système d'animations scriptées. Si vous faites uniquement de la modélisation et de l'import/export, vous pouvez l'ignorer.
</Aside> </Aside>
## Conversion de textures (texconv.exe)
Le champ **texconv.exe Path** indique le chemin vers l'outil Microsoft `texconv.exe`, utilisé pour convertir les textures au format **DDS BC7** lors de l'export.
<Aside>
Nécessaire uniquement si vous activez l'option **Convert Textures to DDS** lors d'un [export composite](/blender/tutoriels/export/) ou d'un export de props. Sans ce chemin, la conversion DDS est tout simplement ignorée.
</Aside>
## Sources de log (rappel)
Les quatre cases **Log Sources** des préférences activent ou coupent le détail des logs par étape d'import (scène / géométrie / matériaux / objets dynamiques) — voir la section *Logging* ci-dessus.
## Étape suivante ## Étape suivante
Votre addon est configuré. Passons à votre [premier import](/getting-started/premier-import/). Votre addon est configuré. Passons à votre [premier import](/blender/getting-started/premier-import/).

View File

@ -18,7 +18,7 @@ L'addon fonctionne avec toutes les versions de Blender à partir de la 3.0. Nous
<Steps> <Steps>
1. **Téléchargez** le fichier `.zip` de l'addon BlenderEdit (fourni par votre équipe ou généré via le script `make_zip.py`). 1. **Téléchargez** le fichier `.zip` de l'addon BlenderEdit (fourni par votre équipe).
2. **Ouvrez Blender** et allez dans **Edit → Preferences** (ou `Ctrl+,`). 2. **Ouvrez Blender** et allez dans **Edit → Preferences** (ou `Ctrl+,`).
@ -40,19 +40,26 @@ Une fois l'addon activé, vous devriez voir :
- De nouveaux menus dans **File → Import** : - De nouveaux menus dans **File → Import** :
- NMS Scene (.nms) - NMS Scene (.nms)
- NMS Scene Unpacked (.nms)
- NMG Geometry (.nmg) - NMG Geometry (.nmg)
- NMM Material (.nmm) - NMM Material (.nmm)
- Un menu dans **File → Export** : - Un menu dans **File → Export** :
- Composite Scene (.gltf + .scene.json) - Composite Scene (.gltf + .scene.json)
- Un nouvel onglet **GSEdit** dans la sidebar du viewport 3D (touche `N`) - Trois nouveaux onglets dans la sidebar du **viewport 3D** (touche `N`) :
- Un onglet **NMS Export** dans la sidebar du viewport 3D - **GS Scene** — outils qui agissent sur toute la scène (export, props, textures, intégrité…)
- Un onglet **Squirrel** dans la sidebar du viewport 3D - **GS Object** — propriétés de l'objet sélectionné (nommage, physique, tracks, LOD…)
- **GS Animation** — animations scriptées Squirrel
- Un onglet **GS Material** dans la sidebar de l'**éditeur de shaders** (Shader Editor)
![Menu File → Import avec les entrées NMS, NMG et NMM](../../../../assets/import-menu.png)
<Aside> <Aside>
Si vous ne voyez pas la sidebar, appuyez sur `N` dans le viewport 3D pour la faire apparaître, puis cherchez les onglets **GSEdit**, **NMS Export** et **Squirrel**. Si vous ne voyez pas la sidebar, appuyez sur `N` dans le viewport 3D pour la faire apparaître, puis cherchez les onglets **GS Scene**, **GS Object** et **GS Animation**. L'onglet **GS Material**, lui, n'apparaît que dans le Shader Editor.
</Aside>
<Aside type="note">
L'entrée **NMS Scene (.nms)** importe la scène en mode « unpacked » (un fichier `.blend` par sous-scène) — c'est le seul mode d'import de scène. Voir [Import NMS Unpacked](/blender/import/nms-unpacked/).
</Aside> </Aside>
## Étape suivante ## Étape suivante
Avant de commencer à importer, il est important de [configurer les préférences de l'addon](/getting-started/configuration/). Avant de commencer à importer, il est important de [configurer les préférences de l'addon](/blender/getting-started/configuration/).

View File

@ -11,7 +11,7 @@ Ce guide vous accompagne dans l'import d'un fichier de géométrie NMG — le ca
<Steps> <Steps>
1. Assurez-vous que le [dossier projet est configuré](/getting-started/configuration/) dans les préférences de l'addon. 1. Assurez-vous que le [dossier projet est configuré](/blender/getting-started/configuration/) dans les préférences de l'addon.
2. Allez dans **File → Import → NMG Geometry (.nmg)**. 2. Allez dans **File → Import → NMG Geometry (.nmg)**.
@ -39,21 +39,20 @@ Après l'import, vous verrez dans votre scène Blender :
{/* ![Résultat d'un import NMG dans le viewport](../../../assets/placeholder-nmg-result.png) */} {/* ![Résultat d'un import NMG dans le viewport](../../../assets/placeholder-nmg-result.png) */}
<Aside type="tip"> <Aside type="tip">
Si les matériaux apparaissent noirs ou manquants, vérifiez que le **Dossier Projet** est correctement configuré dans les [préférences de l'addon](/getting-started/configuration/). Activez le **Verbose Logging** pour voir les tentatives de résolution de chemins dans les logs. Si les matériaux apparaissent noirs ou manquants, vérifiez que le **Dossier Projet** est correctement configuré dans les [préférences de l'addon](/blender/getting-started/configuration/). Activez le **Verbose Logging** pour voir les tentatives de résolution de chemins dans les logs.
</Aside> </Aside>
## Comprendre les propriétés importées ## Comprendre les propriétés importées
Sélectionnez l'objet importé et ouvrez l'onglet **GSEdit** dans la sidebar (touche `N`). Vous y trouverez : Sélectionnez l'objet importé et ouvrez la sidebar (touche `N`). Vous y trouverez deux onglets utiles :
- Le **panneau Items Actifs** : indique si l'objet est actif dans la scène - Onglet **GS Object** : le **Nommage** (type + nom), le **Type d'Asset**, et — si le fichier source en contenait — les **propriétés physiques**.
- Le **panneau Propriétés Communes** : type d'asset, système de nommage - Onglet **GS Scene** : le panneau **Items Actifs**, qui indique si l'objet est actif dans la scène.
- D'éventuelles **propriétés physiques** si le fichier source en contenait
Pour en savoir plus sur chaque panneau, consultez la section [Interface](/interface/gsedit-tab/). Pour en savoir plus sur chaque panneau, consultez la section Interface : [GS Scene](/blender/interface/export-tab/) et [GS Object](/blender/interface/gsedit-tab/).
## Et ensuite ? ## Et ensuite ?
- Pour importer un matériau seul : [Import NMM](/import/nmm/) - Pour importer un matériau seul : [Import NMM](/blender/import/nmm/)
- Pour importer une scène complète avec sous-scènes : [Import NMS Unpacked](/import/nms-unpacked/) - Pour importer une scène complète avec sous-scènes : [Import NMS Unpacked](/blender/import/nms-unpacked/)
- Pour comprendre le système de nommage : [Tutoriel Nommage](/tutoriels/nommage/) - Pour comprendre le système de nommage : [Tutoriel Nommage](/blender/tutoriels/nommage/)

View File

@ -56,7 +56,7 @@ Quand cette option est activée, l'addon :
Si l'option est désactivée, le mesh est importé sans matériaux — vous pouvez les ajouter manuellement plus tard. Si l'option est désactivée, le mesh est importé sans matériaux — vous pouvez les ajouter manuellement plus tard.
<Aside type="caution"> <Aside type="caution">
Si les matériaux ne sont pas trouvés, vérifiez que le **Project Folder** est correctement configuré. Activez le [Verbose Logging](/getting-started/configuration/) pour voir les chemins de recherche tentés. Si les matériaux ne sont pas trouvés, vérifiez que le **Project Folder** est correctement configuré. Activez le [Verbose Logging](/blender/getting-started/configuration/) pour voir les chemins de recherche tentés.
</Aside> </Aside>
--- ---

View File

@ -82,7 +82,7 @@ Le matériau porte des propriétés custom préfixées `nmm_` contenant toutes l
- `nmm_double_sided`, `nmm_shadeless`, `nmm_alpha_blend` : flags de rendu - `nmm_double_sided`, `nmm_shadeless`, `nmm_alpha_blend` : flags de rendu
<Aside type="tip"> <Aside type="tip">
Ces propriétés custom sont lues par l'[exporteur composite](/tutoriels/export/) et le [panneau Shader GS Edit](/interface/shader-panel/). Elles préservent les informations nécessaires pour un aller-retour (import → modification → export) sans perte de données. Ces propriétés custom sont lues par l'[exporteur composite](/blender/tutoriels/export/) et le [panneau GS Material](/blender/interface/shader-panel/). Elles préservent les informations nécessaires pour un aller-retour (import → modification → export) sans perte de données.
</Aside> </Aside>
--- ---
@ -91,7 +91,7 @@ Ces propriétés custom sont lues par l'[exporteur composite](/tutoriels/export/
- **Tester un matériau** : sélectionnez un objet, importez un NMM — le matériau est immédiatement appliqué - **Tester un matériau** : sélectionnez un objet, importez un NMM — le matériau est immédiatement appliqué
- **Inspecter les paramètres** : importez un NMM pour voir comment il est configuré dans le Shader Editor - **Inspecter les paramètres** : importez un NMM pour voir comment il est configuré dans le Shader Editor
- **Modifier et réassigner** : importez, modifiez les textures ou paramètres dans le [panneau GS Edit](/interface/shader-panel/), puis exportez - **Modifier et réassigner** : importez, modifiez les textures ou paramètres dans le [panneau GS Material](/blender/interface/shader-panel/), puis exportez
<Aside> <Aside>
En général, l'import de matériaux se fait automatiquement lors de l'import NMG (avec l'option **Import Materials** activée). L'import NMM direct est utile pour travailler sur un matériau individuel. En général, l'import de matériaux se fait automatiquement lors de l'import NMG (avec l'option **Import Materials** activée). L'import NMM direct est utile pour travailler sur un matériau individuel.

View File

@ -5,9 +5,9 @@ description: Importer une scène NMS en fichiers .blend séparés par sous-scèn
import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components'; import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components';
L'import **NMS Unpacked** est le mode d'import recommandé pour les scènes complexes. Contrairement à l'import NMS classique qui charge tout dans un seul fichier, le mode Unpacked **crée un fichier `.blend` séparé pour chaque sous-scène**, puis les lie ensemble via le système d'assets de Blender. L'import **NMS** est le seul mode d'import de scène de l'addon. Il fonctionne en mode « unpacked » : plutôt que de tout charger dans un seul fichier, il **crée un fichier `.blend` séparé pour chaque sous-scène**, puis les lie ensemble via le système d'assets de Blender.
**Menu** : File → Import → **NMS Scene Unpacked (.nms)** **Menu** : File → Import → **NMS Scene (.nms)**
{/* ![Boîte de dialogue d'import NMS Unpacked](../../../assets/placeholder-import-unpacked-dialog.png) */} {/* ![Boîte de dialogue d'import NMS Unpacked](../../../assets/placeholder-import-unpacked-dialog.png) */}
@ -48,6 +48,8 @@ Le résultat est une arborescence de fichiers `.blend` qui reflète la structure
| **Import Materials** | ✅ | Importer les matériaux référencés | | **Import Materials** | ✅ | Importer les matériaux référencés |
| **Import Cameras** | ✅ | Importer les caméras de la scène | | **Import Cameras** | ✅ | Importer les caméras de la scène |
| **Import Lights** | ✅ | Importer les lumières de la scène | | **Import Lights** | ✅ | Importer les lumières de la scène |
| **Import Block Bis Decors** | ✅ | Importe les blocs originaux avec leurs arbres / rochers / props (redirige `bis/` vers `save_bis/`). Ces collections sont toujours masquées dans le viewport. |
| **Import Marks** | ✅ | Importe les *marks* (points de placement) des fichiers `marks.nms`. Crée un parent empty masqué pour les marks de chaque bloc. |
| **Round Rotations** | ❌ | Arrondir les rotations aux angles courants | | **Round Rotations** | ❌ | Arrondir les rotations aux angles courants |
| **Rotation Threshold** | `10.0°` | Seuil d'arrondi (visible uniquement si Round Rotations est activé) | | **Rotation Threshold** | `10.0°` | Seuil d'arrondi (visible uniquement si Round Rotations est activé) |
@ -141,9 +143,9 @@ Après l'import, vous obtenez :
<Steps> <Steps>
1. Vérifiez que le [dossier projet est configuré](/getting-started/configuration/). 1. Vérifiez que le [dossier projet est configuré](/blender/getting-started/configuration/).
2. Allez dans **File → Import → NMS Scene Unpacked (.nms)**. 2. Allez dans **File → Import → NMS Scene (.nms)**.
3. Sélectionnez votre fichier `.nms` racine. 3. Sélectionnez votre fichier `.nms` racine.

View File

@ -6,11 +6,11 @@ hero:
tagline: Importez et exportez vos scènes GS Framework directement dans Blender — géométrie, matériaux, physique, tracks et animations. tagline: Importez et exportez vos scènes GS Framework directement dans Blender — géométrie, matériaux, physique, tracks et animations.
actions: actions:
- text: Commencer - text: Commencer
link: /getting-started/installation/ link: /blender/getting-started/installation/
icon: right-arrow icon: right-arrow
variant: primary variant: primary
- text: Tutoriels - text: Tutoriels
link: /tutoriels/nommage/ link: /blender/tutoriels/nommage/
variant: minimal variant: minimal
--- ---
@ -36,17 +36,17 @@ import { Card, CardGrid, LinkCard } from '@astrojs/starlight/components';
## Par où commencer ? ## Par où commencer ?
<CardGrid> <CardGrid>
<LinkCard title="Installation" href="/getting-started/installation/" description="Installer et activer l'addon dans Blender." /> <LinkCard title="Installation" href="/blender/getting-started/installation/" description="Installer et activer l'addon dans Blender." />
<LinkCard title="Configuration" href="/getting-started/configuration/" description="Configurer les préférences essentielles." /> <LinkCard title="Configuration" href="/blender/getting-started/configuration/" description="Configurer les préférences essentielles." />
<LinkCard title="Premier import" href="/getting-started/premier-import/" description="Importer votre premier fichier en 5 minutes." /> <LinkCard title="Premier import" href="/blender/getting-started/premier-import/" description="Importer votre premier fichier en 5 minutes." />
<LinkCard title="Système de nommage" href="/tutoriels/nommage/" description="Comprendre les conventions de nommage." /> <LinkCard title="Système de nommage" href="/blender/tutoriels/nommage/" description="Comprendre les conventions de nommage." />
</CardGrid> </CardGrid>
## Sections principales ## Sections principales
<CardGrid> <CardGrid>
<LinkCard title="Interface" href="/interface/gsedit-tab/" description="Découvrir les panneaux et onglets de l'addon." /> <LinkCard title="Interface" href="/blender/interface/gsedit-tab/" description="Découvrir les panneaux et onglets de l'addon." />
<LinkCard title="Import" href="/import/nmg/" description="Importer de la géométrie, des matériaux et des scènes." /> <LinkCard title="Import" href="/blender/import/nmg/" description="Importer de la géométrie, des matériaux et des scènes." />
<LinkCard title="Tutoriels" href="/tutoriels/nommage/" description="Guides pratiques pas à pas." /> <LinkCard title="Tutoriels" href="/blender/tutoriels/nommage/" description="Guides pratiques pas à pas." />
<LinkCard title="Référence" href="/reference/proprietes-custom/" description="Propriétés, types et constantes." /> <LinkCard title="Référence" href="/blender/reference/proprietes-custom/" description="Propriétés, types et constantes." />
</CardGrid> </CardGrid>

View File

@ -1,165 +1,105 @@
--- ---
title: Workflow d'export de scène title: Workflow d'export de scène
description: Guide complet pour exporter une scène Blender vers le format GSFramework — GLTF composite, marks NML et props NML+GLTF. description: Vue d'ensemble du processus d'export d'une scène Blender vers GS Framework — GLTF composite + props NML/GLTF.
--- ---
import { Aside, Steps, Badge } from '@astrojs/starlight/components'; import { Aside, Steps } from '@astrojs/starlight/components';
Ce guide décrit les trois étapes d'un export complet d'une scène : la géométrie statique via l'export composite, les marks de jeu en NML, et les props dynamiques en NML + GLTF. Exporter une scène vers le moteur se fait en **deux temps** : d'abord la géométrie statique (export composite), puis les objets dynamiques (props).
<Aside type="tip">
Pour un exemple **concret et chiffré** suivez les deux guides dédiés :
[Exporter road_highway (composite)](/blender/exemples/export-road-highway/) et
[Exporter les props de road_highway](/blender/exemples/export-props-road-highway/).
</Aside>
--- ---
## Vue d'ensemble ## Vue d'ensemble
Un export complet produit trois artefacts distincts : | Étape | Opérateur | Ce qu'elle produit |
| Artefact | Opérateur | Destination |
|---|---|---| |---|---|---|
| Subscènes GLTF + manifeste | **Export Composite Scene** | Dossier de sortie choisi | | 1. Géométrie statique | **Export Composite Scene** | Sous-scènes GLTF (une par collection) + manifeste `.scene.json` |
| Marks | **Export Marks NML** | `app/scenes/marks/<nom_de_scene>.nml` | | 2. Objets dynamiques | **Export Props NML + GLTF** | Un fichier `props.nml` (placement) + un dossier `props_gltf/` (géométries + textures) |
| Props géométrie | **Export Props NML + GLTF** | `app/scenes/trees/<nom_de_scene>/` |
Les deux exports se lancent depuis l'onglet **GS Scene** de la sidebar (touche `N`), ou depuis le menu **File → Export**.
--- ---
## Étape 1 — Export Composite Scene ## Étape 1 — Export Composite Scene
L'export principal se lance depuis **File → Export → Composite Scene (.gltf + .scene.json)** ou depuis le panel latéral *NMS Export → Composite Scene Export*. L'export composite décompose la scène en **sous-scènes** (une par collection instanciée) et génère un manifeste `.scene.json` qui décrit l'assemblage.
Il décompose la scène en **subscènes** (une par collection linkée) et génère un fichier manifeste `.scene.json` qui décrit l'assemblage. **Accès** : **File → Export → Composite Scene (.gltf + .scene.json)**, ou onglet **GS Scene → Export de Scène → Export Composite Scene**.
### Options disponibles ### Options principales
#### Scene Name | Option | Défaut | Rôle |
Nom logique de la scène. Il est utilisé comme préfixe pour tous les fichiers générés (manifeste, subscènes, NML…). Si laissé vide, le nom du fichier `.blend` courant est utilisé. |---|---|---|
| **Scene Name** | (nom du `.blend`) | Nom de la scène. Sert à nommer le manifeste (`<nom>.scene.json`). |
<Aside type="tip"> | **Apply Modifiers** | ✅ | Applique les modifiers (Array, Mirror…) avant l'export. |
Notez bien ce nom : vous l'utiliserez pour nommer les fichiers NML aux étapes suivantes. | **Deduplicate Textures** | ❌ | Regroupe les textures identiques dans un dossier `textures/` partagé. |
</Aside> | **Convert Textures to DDS (BC7)** | ❌ | Convertit les textures en DDS BC7 via `texconv.exe`. Disponible seulement si *Deduplicate Textures* est activé. |
| **DDS Max Resolution** | 1024 | Taille max des textures DDS. Visible si la conversion DDS est activée. |
#### Apply Modifiers | **Single Subscene Mode** | ❌ | Exporte toute la scène en **une seule** sous-scène, sans découpage par collection. |
Si activé (défaut), les modifiers Blender (Subdivision, Mirror, etc.) sont appliqués avant l'export. Les objets du fichier Blender source ne sont pas modifiés. | **Skip Unchanged Subscenes** | ❌ | Ignore les sous-scènes dont le `.blend` source n'a pas changé (export incrémental). Indisponible en mode single subscene. |
| **Include Dynamic Objects in GLTF** | ❌ | Force l'inclusion des objets dynamiques (props) dans le GLTF au lieu de les exporter séparément en NML (étape 2). |
#### Deduplicate Textures | **Keep Original Texture Files** | ❌ | Restaure les fichiers texture d'origine (DDS, TGA, EXR…) à la place des PNG ré-encodés par Blender. Préserve compression et mipmaps. |
Fusionne les textures identiques (comparaison par hash XXH3) dans un dossier `textures/` partagé plutôt que de les dupliquer dans chaque subscène. Recommandé pour les scènes avec de nombreuses collections réutilisant les mêmes matériaux.
<Aside type="caution"> <Aside type="caution">
Cette option est marquée *expérimentale*. Sur des scènes très larges, le post-traitement peut prendre plusieurs minutes. Laissez **Include Dynamic Objects in GLTF** décoché si vous comptez exporter les props à l'étape 2 : sinon ils seraient exportés en double.
</Aside> </Aside>
#### Convert Textures to DDS (BC7) ### Structure de sortie
*Disponible uniquement si Deduplicate Textures est activé.*
Convertit et redimensionne les textures vers le format **DDS BC7_UNORM** à l'aide de `texconv.exe`. Le chemin vers `texconv.exe` doit être configuré dans les préférences de l'addon. Le manifeste et ses dossiers atterrissent dans le dossier que vous avez choisi :
#### DDS Max Resolution ```
*Disponible uniquement si la conversion DDS est activée.* <dossier choisi>/
├── <scene name>.scene.json ← le manifeste
├── subscenes/ ← un GLTF (+ .bin) par collection
└── textures/ ← textures partagées (si déduplication activée)
```
Résolution maximale (largeur et hauteur) des textures converties. Les textures plus grandes seront réduites à cette taille. Valeur par défaut : **1024 px** ; plage : 64 8192. Le détail des options et des bonnes pratiques est dans le [tutoriel Export composite](/blender/tutoriels/export/).
#### Single Subscene Mode ---
Exporte l'intégralité de la scène comme **une seule subscène** sans décomposition par collection. Utile pour les scènes qui ne contiennent pas de collections linkées, ou lorsque vous souhaitez conserver toute la hiérarchie et toutes les données dans un unique fichier GLTF.
<Aside> ## Étape 2 — Export Props NML + GLTF
En mode Single Subscene, l'option *Skip Unchanged Subscenes* est désactivée.
Les **props** sont les objets dynamiques (arbres, décor, mobilier, murs…). Ils ne font pas partie de la géométrie composite : on les exporte à part, sous forme d'un fichier NML de placement + une bibliothèque de géométries GLTF.
**Accès** : onglet **GS Scene → Export Props → Export Props NML + GLTF**, ou **File → Export**.
### Options principales
| Option | Défaut | Rôle |
|---|---|---|
| **Export GLTF Geometry/Materials** | ✅ | Exporte géométrie + matériaux. Décochez pour réécrire **uniquement** le placement (NML), sans re-générer la géométrie. |
| **Geometries per GLTF** | 10 | Nombre de géométries uniques par fichier GLTF. Plus haut = moins de fichiers. |
| **Dynamic Texture Sizing** | ❌ | « Scaling » : redimensionne chaque texture partagée à la résolution juste nécessaire. |
| **Min / Max Size**, **Texel Density** | 128 / 1024 / 48 | Bornes et densité du scaling (mêmes réglages que le panneau *Optimisation Textures*). |
| **Convert Textures to DDS (BC7)** | ❌ | Convertit les textures finales en DDS BC7 via `texconv.exe`. |
### Destination et structure
Vous choisissez l'emplacement et le nom du fichier NML (ex : `props.nml`). Le dossier `props_gltf/` est **toujours créé à côté** :
```
<dossier choisi>/
├── props.nml ← placement des props + références de géométrie
└── props_gltf/ ← géométries uniques regroupées + textures/
```
<Aside type="tip">
Pour ne corriger que le placement (après un ajustement de coordonnées par exemple), relancez l'export en décochant **Export GLTF Geometry/Materials** : seul le `.nml` est réécrit, c'est bien plus rapide.
</Aside> </Aside>
#### Skip Unchanged Subscenes
En mode standard (pas Single Subscene), compare le hash XXH3 du fichier `.blend` source de chaque collection avec celui enregistré dans le manifeste précédent. Les subscènes non modifiées sont ignorées, ce qui accélère les exports incrémentaux.
--- ---
## Étape 2 — Export Marks NML ## Quels objets vont où ?
Les marks sont des points de placement (spawn points, triggers, zones d'intérêt…) associés aux blocs de la scène. Ils sont exportés séparément de la géométrie. - Les **instances de collection** et les objets locaux statiques → **export composite** (étape 1).
- Les **objets dynamiques** (type `tree`, `prop`, `building`, `character`, `wall`, ou marqués comme objets NML) → **export des props** (étape 2).
### Lancer l'export Le panneau **Export Props** affiche en permanence combien de props et de géométries uniques seront exportés — un bon moyen de vérifier que vos objets sont bien typés avant de lancer l'export.
Dans le panel *NMS Export → Dynamic Objects (NML)*, cliquez sur **Export Marks NML**.
Ou via **File → Export → Export Marks NML**.
### Destination et nommage
<Steps>
1. Dans le file browser, naviguez vers `app/scenes/marks/`.
2. Nommez le fichier en reprenant **exactement** le nom de scène utilisé à l'étape 1.
```
app/scenes/marks/<nom_de_scene>.nml
```
*Exemple :* si la scène s'appelle `city_01`, le fichier sera `app/scenes/marks/city_01.nml`.
3. Cliquez **Export Marks NML**.
</Steps>
### Contenu généré
Le fichier NML produit contient un bloc `BlocksExtraction` avec, pour chaque bloc de la scène, la liste de ses marks (`<Marks=…>`). Les coordonnées sont converties automatiquement de l'espace Blender (Z-up) vers l'espace NMS (Y-up).
---
## Étape 3 — Export Props NML + GLTF
Les props sont des objets géométriques dynamiques (mobilier, éléments de décor, véhicules…) qui ne font pas partie de la géométrie statique. Ils sont exportés sous la forme d'un fichier NML de références + un fichier GLTF contenant la bibliothèque de géométries uniques.
### Lancer l'export
Dans le panel *NMS Export → Dynamic Objects (NML)*, cliquez sur **Export Props NML + GLTF**.
Ou via **File → Export → Export Props NML + GLTF**.
### Destination et nommage
<Steps>
1. Créez (si nécessaire) le dossier `app/scenes/trees/<nom_de_scene>/`.
2. Dans le file browser, naviguez dans ce sous-dossier et nommez le fichier NML :
```
app/scenes/trees/<nom_de_scene>/<nom_de_scene>.nml
```
Le fichier GLTF est généré automatiquement au même emplacement avec le même nom de base :
```
app/scenes/trees/<nom_de_scene>/<nom_de_scene>.gltf
```
*Exemple :* pour la scène `city_01` :
```
app/scenes/trees/city_01/city_01.nml
app/scenes/trees/city_01/city_01.gltf
```
3. Cliquez **Export Props NML + GLTF**.
</Steps>
### Contenu généré
- **NML** : un bloc `BlocksExtraction` avec les entrées `<Trees=…>` — chaque prop référence son index de géométrie dans le GLTF et sa transformation dans l'espace NMS.
- **GLTF** : bibliothèque des géométries uniques (dédupliquées par nom de mesh). Seules les géométries effectivement référencées sont incluses.
---
## Récapitulatif des chemins de sortie
```
app/
└── scenes/
├── marks/
│ └── <nom_de_scene>.nml ← Étape 2
└── trees/
└── <nom_de_scene>/
├── <nom_de_scene>.nml ← Étape 3
└── <nom_de_scene>.gltf ← Étape 3
```
Le dossier de sortie de l'export composite (Étape 1) est libre — choisissez-le selon votre pipeline.
---
## Objets exclus de l'export GLTF
Certains objets Blender sont automatiquement **exclus** de l'export GLTF composite car ils sont gérés par les étapes 2 et 3 :
- Objets portant la custom property `nml_source`
- Objets portant `nms_mark` ou `nms_marks_container`
- Objets dont le nom commence par `tree`, `prop`, `building`, `character` ou `wall`
Ces objets apparaissent dans le compteur *NML dynamic objects* de la section *Scene Analysis* du panel.

View File

@ -1,79 +1,114 @@
--- ---
title: Onglet NMS Export title: Onglet GS Scene
description: Présentation de l'onglet d'export composite dans la sidebar du viewport 3D. description: Présentation de l'onglet GS Scene de la sidebar du viewport 3D — outils qui agissent sur toute la scène.
--- ---
import { Aside } from '@astrojs/starlight/components'; import { Aside } from '@astrojs/starlight/components';
L'onglet **NMS Export** se trouve dans la **sidebar du viewport 3D** (touche `N`) et regroupe les outils d'export vers le moteur GS Framework. L'onglet **GS Scene** se trouve dans la **sidebar du viewport 3D** (touche `N`). Il regroupe tous les outils qui agissent sur **l'ensemble de la scène** : export vers le moteur, export des props, optimisation des textures, gestion des objets actifs, vérification d'intégrité et script de scène.
{/* ![Onglet NMS Export](../../../assets/placeholder-export-tab.png) */} ![Vue d'ensemble de l'onglet GS Scene](../../../../assets/tab-gs-scene.png)
---
## Composite Scene Export
### Bouton d'export
Le bouton **Export Composite Scene** lance l'export de la scène en fichiers GLTF modulaires accompagnés d'un manifeste `.scene.json`. C'est l'équivalent de **File → Export → Composite Scene**, accessible directement depuis la sidebar.
### Analyse de la scène
Sous le bouton, un encadré affiche une analyse en temps réel de votre scène :
| Information | Description |
|---|---|
| **Collections** | Nombre de collections uniques détectées |
| **Instances** | Nombre d'instances de collections (objets liés à des collections) |
| **Objets locaux** | Nombre d'objets qui ne font partie d'aucune collection instanciée |
Ces chiffres vous donnent un aperçu de la complexité de l'export avant de le lancer.
### Propriétés custom reconnues
L'encadré d'aide liste les propriétés custom que l'exporteur reconnaît et intègre dans le manifeste `.scene.json` :
| Propriété | Type | Rôle |
|---|---|---|
| `replaceable` | Booléen | Marque l'objet comme remplaçable dans le moteur |
| `slot_id` | Texte | Identifiant de slot pour le placement dynamique |
| `tags` | Texte | Tags séparés par des virgules (convertis en liste dans le JSON) |
| `lod_group` | Texte | Groupe de niveau de détail |
| `collision` | Booléen | Indique si l'objet a de la collision |
| `static` | Booléen | Indique si l'objet est statique |
Toute autre propriété custom présente sur l'objet est également exportée dans un champ `custom_properties` du manifeste.
---
## Instance Properties
Ce sous-panneau n'apparaît que lorsque l'objet sélectionné est une **instance de collection** (un objet qui référence une collection Blender).
{/* ![Panneau Instance Properties](../../../assets/placeholder-instance-properties.png) */}
### Informations affichées
- **Nom de la collection** liée
- **Statut** : linked (depuis un autre .blend) ou local
### Ajout rapide de propriétés
Des boutons permettent d'ajouter rapidement les propriétés les plus courantes à l'instance sélectionnée :
- **replaceable** (booléen)
- **slot_id** (texte)
- **tags** (texte)
- **static** (booléen)
### Liste des propriétés
En-dessous, la liste de toutes les propriétés custom actuellement sur l'objet, avec un bouton de suppression pour chacune.
<Aside type="tip"> <Aside type="tip">
Les propriétés ajoutées ici sont lues par l'exporteur composite et intégrées dans le fichier `.scene.json`. C'est le moyen principal de transmettre des métadonnées au moteur lors de l'export. Si vous ne voyez pas la sidebar, appuyez sur `N` dans le viewport 3D, puis cliquez sur l'onglet **GS Scene** sur le côté droit. Les outils qui concernent **un objet précis** sont dans l'onglet voisin [GS Object](/blender/interface/gsedit-tab/).
</Aside> </Aside>
<Aside> ---
Pour un guide complet sur le processus d'export, consultez le [tutoriel Export composite](/tutoriels/export/).
## Export de Scène
C'est le panneau d'export principal.
- **Export Composite Scene** : lance l'export de la scène en sous-scènes GLTF + manifeste `.scene.json`. Identique à **File → Export → Composite Scene**. Voir le [tutoriel Export composite](/blender/tutoriels/export/) et l'exemple concret [Exporter road_highway](/blender/exemples/export-road-highway/).
- **Scene Analysis** : un encadré qui compte, en temps réel, ce que contient votre scène avant l'export :
- **Collections** : nombre de collections distinctes utilisées
- **Instances** : nombre d'instances de collections placées
- **Local Objects** : objets qui ne sont pas des instances de collection
- **Texture Tools → Downscale Prop Textures** : réduit en une fois la résolution de **toutes** les images du fichier `.blend` au-dessus d'une taille max. Pratique pour alléger un fichier devenu trop lourd.
<Aside type="caution">
Cette opération modifie les images **dans le fichier `.blend` lui-même** (pas seulement à l'export) et n'est pas réversible une fois le fichier sauvegardé. Faites une copie de votre `.blend` avant si vous avez un doute.
</Aside>
- **Track Tools → Refresh All Tracks (Recursive)** : ré-extrait les données de points de tous les tracks de la scène, **y compris dans les fichiers `.blend` liés**. À utiliser après un changement de convention de coordonnées des tracks.
<Aside type="caution">
Cet outil **ouvre, modifie et sauvegarde** chaque `.blend` lié concerné. Une fenêtre de confirmation liste les fichiers qui seront modifiés avant de lancer l'opération.
</Aside>
---
## Export Props
Exporte les **props dynamiques** de la scène (arbres, décor, mobilier…) sous forme d'un fichier NML + des fichiers GLTF.
- Un récapitulatif affiche le nombre de **Prop objects** détectés et de **géométries uniques** à exporter.
- Le bouton **Export Props NML + GLTF** lance l'export. Il est grisé si aucun prop n'est trouvé.
Voir l'exemple concret [Exporter les props de road_highway](/blender/exemples/export-props-road-highway/).
---
## Optimisation Textures
Ce panneau n'apparaît que lorsqu'un **objet mesh est sélectionné**. Il calcule la résolution idéale des textures d'un objet selon sa taille réelle, puis redimensionne les fichiers en conséquence.
- **Settings** : trois réglages partagés avec l'export des props —
- **Min Size** : résolution plancher (défaut 128 px)
- **Max Size** : résolution plafond (défaut 1024 px)
- **Texel Density** : pixels par mètre (défaut 48). La cible = taille de l'objet × densité, bornée entre Min et Max.
- **Preview** : affiche l'objet sélectionné, sa dimension max et la **résolution cible** calculée — sans rien modifier.
- **Optimize Selected Textures** : applique réellement le redimensionnement.
<Aside type="caution">
Cet outil fonctionne avec une arborescence de dossiers spécifique : il fait le lien entre `01_Sources` (textures d'origine) et `00_Textures` (versions optimisées). Les textures dont le chemin ne contient ni l'un ni l'autre sont ignorées.
</Aside>
---
## Items Actifs
Toujours visible. Donne une vue d'ensemble des objets **actifs / inactifs** de la scène.
- **Compteur** : nombre d'objets actifs sur le total.
- **Sync Visibilité** : remet la visibilité du viewport en cohérence avec l'état actif/inactif.
- **Tout Activer** : réactive tous les objets inactifs (n'apparaît que s'il y en a).
- **Toggle de l'objet sélectionné** : active/désactive l'objet courant.
- **Liste des inactifs** : jusqu'à 15 objets désactivés, chacun avec un bouton pour le réactiver et le sélectionner.
<Aside type="tip">
Désactiver un objet le masque dans le viewport **et** le marque comme inactif dans les données de la scène. C'est différent d'un simple masquage (`H`), qui ne touche que l'affichage.
</Aside>
---
## Intégrité
Un bouton **Vérifier Intégrité** analyse tous les noms d'objets de la scène et ouvre un rapport :
- **Erreurs** : noms en double, ou caractères invalides (autres que lettres, chiffres, `.` et `_`).
- **Avertissements** : objets en nommage automatique dont le nom ne correspond pas au format attendu `type_nom`.
- **Infos** : nombre d'objets en mode « nommage libre ».
<Aside type="tip">
Lancez cette vérification **avant chaque export** : un nom en double ou invalide peut poser problème côté moteur.
</Aside>
Voir le [système de nommage](/blender/tutoriels/nommage/).
---
## Script de Scène
Permet d'associer un **ScriptedObject** (script Squirrel `.nut`) à la **scène entière**.
- S'il n'y a pas encore de script : bouton **Définir un Script** pour choisir un fichier `.nut`.
- Une fois un script défini : son chemin s'affiche, avec un champ **Classe** (la classe Squirrel à instancier) et des boutons **Changer Script** / **Supprimer**.
Le chemin du script est stocké **relativement au Dossier Projet** quand celui-ci est configuré.
<Aside>
Il existe aussi un script **par objet** : voir le panneau **Asset & Script** dans l'onglet [GS Object](/blender/interface/gsedit-tab/).
</Aside> </Aside>

View File

@ -1,192 +1,178 @@
--- ---
title: Onglet GSEdit title: Onglet GS Object
description: Présentation complète de l'onglet GSEdit dans la sidebar du viewport 3D. description: Présentation de l'onglet GS Object de la sidebar du viewport 3D — propriétés de l'objet sélectionné.
--- ---
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
L'onglet **GSEdit** est le panneau principal de l'addon. Il apparaît dans la **sidebar du viewport 3D** (touche `N`) et regroupe cinq panneaux qui s'adaptent au contexte — certains ne s'affichent que lorsqu'un objet pertinent est sélectionné. L'onglet **GS Object** se trouve dans la **sidebar du viewport 3D** (touche `N`). Il regroupe tous les panneaux qui agissent sur **l'objet actuellement sélectionné** : nommage, type d'asset, physique, collisions, tracks, niveaux de détail, propriétés d'instance et outils.
{/* ![Vue d'ensemble de l'onglet GSEdit](../../../assets/placeholder-gsedit-overview.png) */} Les panneaux **s'adaptent au contexte** : la plupart n'apparaissent que pour un type d'objet pertinent (un mesh, une courbe, un empty, une instance de collection…).
--- ![Vue d'ensemble de l'onglet GS Object](../../../../assets/tab-gs-object.png)
## Items Actifs
Ce panneau est **toujours visible**, quel que soit l'objet sélectionné. Il offre une vue d'ensemble de l'état d'activation des objets de votre scène.
### Ce que vous y trouvez
- **Compteur** : nombre d'objets actifs / nombre total d'objets
- **Sync Visibilité** : synchronise la visibilité dans le viewport avec l'état actif/inactif de chaque objet. Utile si vous avez masqué ou affiché des objets manuellement et souhaitez remettre la visibilité en cohérence.
- **Tout Activer** : réactive tous les objets inactifs en un clic (n'apparaît que si des objets sont désactivés)
- **Toggle pour l'objet sélectionné** : active ou désactive l'objet actuellement sélectionné
- **Liste des objets inactifs** : affiche jusqu'à 15 objets désactivés, chacun avec un bouton pour le réactiver et le sélectionner
{/* ![Panneau Items Actifs](../../../assets/placeholder-items-actifs.png) */}
<Aside type="tip"> <Aside type="tip">
Désactiver un objet le masque dans le viewport **et** le marque comme inactif dans les données de la scène. C'est différent d'un simple masquage (`H`) qui ne touche que l'affichage. Les outils qui agissent sur **toute la scène** (export, intégrité, objets actifs…) sont dans l'onglet voisin [GS Scene](/blender/interface/export-tab/).
</Aside> </Aside>
### Quand l'utiliser
- Pour masquer temporairement des éléments de la scène (personnages, véhicules) afin de travailler sur l'environnement
- Pour retrouver rapidement quels objets sont désactivés
- Après un import, pour vérifier quels objets étaient actifs dans la scène d'origine
--- ---
## Propriétés Communes ## Nommage
Ce panneau apparaît dès qu'un **objet est sélectionné**. Il gère le typage et le nommage de vos objets. Gère le nom de l'objet et le mode de typage. Voir le [tutoriel Nommage](/blender/tutoriels/nommage/) pour le détail.
### Type d'asset ### Mode Block Fixe (au niveau de la scène)
Un menu déroulant permet de définir le rôle fonctionnel de l'objet : En haut, une case **Mode Block Fixe** s'applique à toute la scène. Quand elle est activée, **chaque nouvel objet déposé** depuis l'asset library est automatiquement typé d'après son nom (le préfixe avant le premier `_`).
| Type | Usage | <Aside type="tip">
|---|---| Activez le mode Block Fixe **avant** de glisser une série d'assets depuis la librairie : ils seront typés tout seuls. Les objets déjà présents au moment où vous l'activez ne sont pas touchés.
| **Default** | Objet standard, pas de rôle particulier |
| **Trigger** | Zone de déclenchement (trigger zone) |
| **Collision Shape** | Forme de collision |
| **Track** | Chemin de circulation |
Changer le type d'asset peut faire apparaître des sections supplémentaires dans le panneau (par exemple, la section Track pour les courbes et meshes).
### Section Track
Visible uniquement pour les objets de type **Courbe** ou **Mesh**, ou les objets déjà convertis en track.
- Si l'objet est déjà un track : affiche ses informations (ID, nombre de points, vitesse par défaut)
- Sinon : propose un bouton **Convertir en Track** (voir le [tutoriel Tracks](/tutoriels/tracks/))
### Vérification d'intégrité
Le bouton **Vérifier Intégrité** analyse tous les objets de la scène et détecte :
- **Noms en double** : deux objets portant exactement le même nom
- **Caractères invalides** : noms contenant des caractères autres que lettres, chiffres, points et underscores
- **Incohérences de nommage** : objets en mode automatique dont le nom ne correspond pas au format attendu
- **Compteur d'overrides** : nombre d'objets en mode "nommage libre"
Le rapport s'affiche dans une fenêtre popup avec les détails par catégorie.
### Nommage automatique
<Aside>
Pour un guide complet sur le système de nommage, consultez le [tutoriel dédié](/tutoriels/nommage/).
</Aside> </Aside>
Deux modes de nommage sont disponibles : ### Nommage de l'objet sélectionné
<Tabs> <Tabs>
<TabItem label="Mode automatique"> <TabItem label="Nommage automatique">
Quand **Nommage Libre** est désactivé, l'addon génère automatiquement le nom de l'objet selon le format : Quand **Nommage Libre** est décoché, le nom de l'objet est généré au format :
``` ```
<type>_<nom_custom> <type>_<nom_custom>
``` ```
Par exemple : `tree_Oak01`, `building_Mairie`, `vehicle_Bus`. Vous choisissez un **Type** dans le menu déroulant et un **Nom** custom. Le nom de l'objet est recalculé automatiquement (ex : `tree_Oak01`).
Vous choisissez :
- Le **Type d'objet** dans le menu déroulant (tree, building, vehicle, animal, character, prop, sign, road, internal)
- Un **Nom custom** optionnel dans le champ texte
Le nom est recalculé automatiquement à chaque modification.
</TabItem> </TabItem>
<TabItem label="Nommage libre"> <TabItem label="Nommage libre">
Quand **Nommage Libre** est activé, les champs Type et Nom custom sont grisés. Vous pouvez renommer l'objet librement dans Blender comme d'habitude. Quand **Nommage Libre** est coché, les champs Type et Nom sont grisés : vous renommez l'objet à la main dans Blender, sans contrainte.
Ce mode est pratique pour les objets qui ne suivent pas la convention de nommage standard.
</TabItem> </TabItem>
</Tabs> </Tabs>
La section **Informations** affiche en permanence : La section **Informations** montre le nom actuel, un aperçu du nom qui serait généré, et un bouton **Réinitialiser Nom**. Le bouton `X` à côté du champ Nom efface uniquement le nom custom.
- Le nom actuel de l'objet
- Un aperçu du nom qui serait généré automatiquement
- Un bouton **Réinitialiser Nom** pour remettre le nom automatique
--- ---
## Propriétés Physiques ## Asset & Script
Ce panneau apparaît pour les objets de type **Mesh** ou **Empty**. Il permet de configurer le comportement physique de l'objet dans le moteur. Apparaît dès qu'un objet est sélectionné.
### Type d'Asset
Définit le rôle fonctionnel de l'objet :
| Type | Usage |
|---|---|
| **Default** | Objet standard |
| **Trigger** | Zone de déclenchement |
| **Collision Shape** | Forme de collision |
| **Track** | Chemin de circulation |
### ScriptedObject
Associe un script Squirrel `.nut` à **cet objet** (différent du [Script de Scène](/blender/interface/export-tab/)).
- **Définir un Script** : choisit un fichier `.nut` (chemin stocké relatif au Dossier Projet).
- Une fois défini : le chemin s'affiche, avec un champ **Classe** et les boutons **Changer Script** / **Supprimer**.
---
## Physique
Apparaît pour les objets **Mesh** ou **Empty**. Voir le [tutoriel Physique](/blender/tutoriels/physique/).
### Mode physique ### Mode physique
Le menu déroulant principal détermine comment l'objet interagit avec le moteur physique :
| Mode | Description | | Mode | Description |
|---|---| |---|---|
| **Aucun** | Pas de physique | | **Aucun** | Pas de physique |
| **Static Collision** | Objet immobile avec collision (murs, sol, bâtiments) | | **Static Collision** | Objet immobile avec collision (murs, sol, bâtiments) |
| **Moveable Collision** | Objet déplaçable avec collision (portes, plateformes) | | **Moveable Collision** | Objet déplaçable avec collision (portes, plateformes) |
| **Physic + Collision** | Simulation physique complète (objets qui tombent, rebondissent) | | **Physic + Collision** | Simulation physique complète (objets qui tombent) |
| **Character** | Contrôleur de personnage | | **Character** | Contrôleur de personnage |
| **Vehicle** | Physique véhicule | | **Vehicle** | Physique véhicule |
### Sections conditionnelles ### Sections conditionnelles
Selon le mode choisi, des sections supplémentaires apparaissent : Selon le mode :
- **Masques de collision** (Static, Moveable, Physic, Character, Vehicle) : deux champs pour définir quel "groupe" l'objet occupe (`Self Mask`) et avec quels groupes il entre en collision (`Collide With`) - **Masques de Collision** (tous sauf Aucun) : **Groupe de Collision** (le groupe de l'objet) et **Collide Avec** (les groupes avec lesquels il entre en collision).
- **Damping** (Physic, Vehicle uniquement) : amortissement linéaire et angulaire (0.0 à 1.0), contrôle la vitesse à laquelle l'objet perd son énergie cinétique - **Damping** (Physic + Collision et Vehicle) : amortissement linéaire et angulaire (01).
- **Collision Shapes** (Static, Moveable, Physic, Vehicle) : liste des formes de collision enfants, avec possibilité d'en ajouter de nouvelles - **Collision Shapes** (Static, Moveable, Physic, Vehicle) : liste des formes de collision enfants, avec deux façons d'en ajouter :
- **Ajouter Collision Shape** : un menu pour choisir le type (Box, Sphere, Capsule, Cylinder, Mesh).
- **Box depuis dimensions** : crée directement une Box ajustée à la bounding box de l'objet.
---
## Collision Shape
Apparaît quand un **Empty** (ou une collision shape existante) est sélectionné.
- **Sur une collision shape existante** : affiche son type actuel et propose des boutons pour le changer (Box, Sphere, Capsule, Cylinder, Mesh). La position/rotation/échelle se gèrent directement avec les outils Blender.
- **Sur un empty classique** : propose des boutons pour le **convertir** en collision shape de chaque type.
<Aside> <Aside>
Pour un guide pratique sur la gestion des collision shapes, consultez le [tutoriel Physique](/tutoriels/physique/). Une collision shape de type **Mesh** affiche des indications spécifiques pour assigner les materials de collision (`col_0`, `col_1`, `col_2`) via l'onglet Material de Blender.
</Aside> </Aside>
--- ---
## Collision Shape Editor ## Track
Ce panneau apparaît uniquement quand un objet **Empty** est sélectionné. Il remplit deux rôles : Apparaît pour les **courbes**, les **meshes**, ou les objets déjà convertis en track. Voir le [tutoriel Tracks](/blender/tutoriels/tracks/).
### Pour un empty qui est déjà une collision shape - **Pas encore un Track** : bouton **Convertir en Track**.
- **Track existant** : affiche l'ID et le nombre de points, avec un bouton **Rafraîchir les données** (ré-extrait les points depuis la géométrie).
- Affiche le **type actuel** de la shape (Box, Sphere, Capsule, Cylinder, Mesh) Un sélecteur **Mode** bascule entre :
- Propose des boutons pour **changer le type**
- Montre les informations de transformation (position, rotation, dimensions)
### Pour un empty classique
- Propose des boutons pour **convertir** l'empty en collision shape de chaque type disponible
- Pratique pour créer rapidement des shapes à partir d'empties existants
---
## Propriétés de Track
Ce panneau n'apparaît que pour les objets **Courbe** ayant été convertis en track (possédant une propriété `track_id`).
Il permet d'éditer les propriétés du track selon deux modes :
<Tabs> <Tabs>
<TabItem label="Mode Route"> <TabItem label="Road (route)">
Pour les tracks de circulation routière : - **Type de Route** : Route, Autoroute ou Ville.
- **Vitesse** : presets rapides (30, 50, 70, 90, 110, 130 km/h) + un bouton pour saisir une vitesse personnalisée.
- **Type de route** : Route, Autoroute ou Ville — influence le comportement de la circulation
- **Vitesse** : presets rapides (30, 50, 70, 90, 110, 130 km/h) ou saisie personnalisée via un dialogue
</TabItem> </TabItem>
<TabItem label="Mode Animal"> <TabItem label="Animal">
Pour les tracks de déplacement d'animaux : - **État** : presets rapides (idle, walk, run, graze) + saisie personnalisée. Définit le comportement de l'animal sur le track.
- **État** : presets rapides (idle, walk, run, graze) ou saisie personnalisée via un dialogue
- Contrôle le comportement de l'animal sur ce segment du track
</TabItem> </TabItem>
</Tabs> </Tabs>
<Aside> ---
Pour apprendre à créer et configurer des tracks, consultez le [tutoriel Tracks](/tutoriels/tracks/).
## Level of Detail
Gère les **LOD** (niveaux de détail) : des versions plus simples d'un objet, affichées au-delà d'une certaine distance.
- **Sur un enfant non-LOD** : bouton **Créer un LOD** avec une **distance** d'affichage (en mètres). L'objet doit avoir un parent.
- **Sur un LOD existant** : affiche son parent et sa distance, avec **Appliquer la distance** (pour la modifier) et **Retirer le LOD**.
- **Sur un parent qui a des LOD** : liste ses enfants LOD et leur distance, avec un bouton pour sélectionner chacun.
<Aside type="tip">
Un LOD est toujours **enfant** de l'objet « complet » : c'est la version simplifiée affichée quand la caméra s'éloigne au-delà de la distance configurée.
</Aside> </Aside>
---
## Instance liée
Apparaît quand l'objet sélectionné est une **instance de collection**. C'est ici qu'on attache les métadonnées lues par l'export composite.
- Affiche la **collection** instanciée et si elle est **liée** (depuis un autre `.blend`) ou **locale**.
- **Quick Add Properties** : boutons pour ajouter rapidement les propriétés courantes — `replaceable`, `slot_id`, `tags`, `static`.
- **Current Properties** : liste toutes les propriétés custom de l'objet, chacune avec un bouton de suppression.
<Aside type="tip">
Les propriétés ajoutées ici sont intégrées au fichier `.scene.json` lors de l'[export composite](/blender/tutoriels/export/). C'est le moyen principal de transmettre des métadonnées au moteur.
</Aside>
---
## Outils
Outils utilitaires sur l'objet sélectionné.
- **Make Library Override** : crée un *library override* sur un objet lié depuis une bibliothèque (équivalent de **Object → Library Override → Make**). Le bouton est grisé si l'objet n'est pas lié.

View File

@ -1,110 +1,102 @@
--- ---
title: Panneau Shader (GS Edit) title: Onglet GS Material
description: Présentation du panneau GS Edit dans l'éditeur de shaders pour la gestion des matériaux. description: Présentation du panneau GS Material dans l'éditeur de shaders — éditeur complet de matériaux NMM.
--- ---
import { Aside, Steps } from '@astrojs/starlight/components'; import { Aside } from '@astrojs/starlight/components';
Le panneau **GS Edit** se trouve dans la **sidebar de l'éditeur de shaders** (Shader Editor), pas dans le viewport 3D. Il permet d'associer des références de shaders NSA et des canaux de texture aux matériaux Blender, pour que ces informations soient transmises lors de l'export. Le panneau **GS Material** se trouve dans la **sidebar de l'éditeur de shaders** (Shader Editor), **pas** dans le viewport 3D. C'est l'éditeur complet des matériaux GS Framework : couleurs, attributs, éclairage, shader NSA, canaux de texture et matériau physique.
<Aside type="caution"> <Aside type="caution">
Ce panneau n'est visible que dans le **Shader Editor** (éditeur de nœuds matériaux). Pour y accéder : passez en mode Shader Editor, puis ouvrez la sidebar avec `N` et cherchez l'onglet **GS Edit**. Ce panneau n'est visible que dans le **Shader Editor** (éditeur de nœuds matériaux), quand un **matériau actif** existe sur l'objet sélectionné. Pour y accéder : passez en mode Shader Editor (ou layout *Shading*), ouvrez la sidebar avec `N`, puis cliquez sur l'onglet **GS Material**.
</Aside> </Aside>
{/* ![Panneau GS Edit dans le Shader Editor](../../../assets/placeholder-shader-panel.png) */}
--- ---
## Prérequis ## Chargement et sauvegarde automatiques
Le panneau n'apparaît que si : C'est la grande différence avec les versions précédentes : **vous n'avez plus de boutons Save / Load**.
- Vous êtes dans le **Shader Editor**
- Un **matériau actif** existe sur l'objet sélectionné
--- - Dès que vous **changez de matériau**, ses données sont **chargées automatiquement** dans le panneau.
- Dès que vous **modifiez une valeur**, elle est **sauvegardée automatiquement** dans les propriétés custom du matériau.
## NSA Shader - Un bouton **Reload** (icône de rafraîchissement, en haut) force le rechargement depuis le matériau si besoin.
Cette section gère la référence au fichier shader `.nsa` utilisé par le moteur GS Framework.
### Sans shader assigné
Un bouton **Select NSA Shader** ouvre un navigateur de fichiers filtré sur les fichiers `.nsa`. Le chemin est stocké **relativement au dossier projet** configuré dans les préférences.
### Avec un shader assigné
- Le **chemin relatif** du shader est affiché
- Bouton **Change** : remplacer par un autre shader
- Bouton **Clear** : supprimer la référence
Un indicateur montre si le dossier projet est configuré. Si ce n'est pas le cas, le chemin sera stocké en absolu.
---
## Texture Channels
Cette section liste les canaux de texture associés au matériau. Chaque canal lie un type de texture (diffuse, normal, specular…) à un fichier image.
### Liste des canaux
Une liste affiche les canaux existants avec pour chacun :
- **Index** du slot
- **Type** de canal (diffuse, normal, etc.)
- **Nom du fichier** texture
### Ajouter / Supprimer
- **Add Channel** : ajoute un nouveau slot de texture
- **Remove Channel** : supprime le canal sélectionné
### Détail du canal sélectionné
Quand un canal est sélectionné, un encadré affiche ses détails éditables :
- **Type** : menu déroulant avec les 13 types disponibles :
| Type | Description |
|---|---|
| `diffuse` | Couleur de base / albedo |
| `normal` | Carte de normales |
| `specular` | Carte de spéculaire |
| `glossiness` | Carte de brillance |
| `roughness` | Carte de rugosité |
| `opacity` | Carte d'opacité / transparence |
| `reflection` | Carte de réflexion |
| `selfillum` | Carte d'auto-illumination / émission |
| `light` | Carte de lumière (lightmap) |
| `ao` | Occlusion ambiante |
| `metallic` | Carte métallique |
| `colormask` | Masque de couleur |
| `custom` | Type personnalisé (un champ de nom apparaît) |
- **Index** : numéro du slot
- **Chemin** : chemin vers le fichier texture + bouton de parcours (supporte PNG, JPG, TGA, BMP, TIF, DDS)
---
## Sauvegarder et charger
Deux boutons permettent de gérer la persistance des données :
- **Save** : enregistre la configuration actuelle des canaux dans les propriétés custom du matériau (stocké en JSON dans `nmm_textures`)
- **Load** : recharge la configuration depuis les propriétés custom du matériau — utile après avoir quitté et rouvert le fichier, ou pour restaurer les données importées
<Aside type="tip"> <Aside type="tip">
Pensez à cliquer sur **Save** après avoir modifié les canaux de texture. Les modifications dans la liste ne sont pas automatiquement sauvegardées dans les propriétés du matériau. Plus besoin de penser à sauvegarder : éditez, c'est enregistré. Le bouton **Reload** ne sert qu'à annuler des modifications non voulues en rechargeant les dernières valeurs stockées.
</Aside> </Aside>
--- ---
## Les sections du panneau
Le panneau reproduit l'éditeur de matériaux du moteur GS, section par section.
### Output
Réglages de rendu de sortie :
- **Blending** : mode de mélange — Standard (opaque), Alpha (transparence), Additive, Multiply.
- **Display double-sided** : rend les deux faces des polygones (désactive le backface culling).
- **Unlit / Shadeless** : matériau non affecté par l'éclairage.
### Colors
Les couleurs de base du matériau, chacune avec un nuancier :
- **Diffuse** : couleur de base / albedo
- **Specular** : couleur spéculaire
- **Emissive** : auto-illumination
- **Ambient** : couleur ambiante
- **Use per-vertex color** : utilise les couleurs de vertex du mesh.
### Attributes
- **Glossiness [0;1]** : brillance (0 = rugueux, 1 = lisse)
- **Opacity [0;1]** : opacité (0 = transparent, 1 = opaque)
- **Alpha Threshold [0;1]** : seuil de découpe alpha (les pixels en dessous sont supprimés)
- **Refraction** : indice de réfraction
- **Reflection [0;1]** : intensité de réflexion
- **Use framebuffer as input** et **Use skinning** : options avancées du moteur.
### Lighting
- **Use smooth lighting** : éclairage lissé
- **Use tangent-space normal map** : la normal map est en espace tangent
- **Render opacity in shadow map** : prend en compte la transparence dans les ombres.
### NSA Shader
Référence au fichier shader `.nsa` du moteur GS Framework.
- Sans shader : bouton **Select NSA Shader** (navigateur filtré sur `.nsa`). Le chemin est stocké **relativement au Dossier Projet**.
- Avec un shader : le chemin s'affiche, avec **Change** et un bouton pour effacer la référence.
<Aside type="caution">
Si le **Dossier Projet** n'est pas configuré, un avertissement apparaît dans cette section et le chemin du shader sera stocké en absolu (donc non portable). Configurez-le dans **Edit → Preferences → Add-ons → Blender-GS** (voir [Configuration](/blender/getting-started/configuration/)).
</Aside>
### Texture Channels
Liste les canaux de texture associés au matériau. Chaque ligne montre l'index du slot, le type de canal et l'image.
- Boutons **+ / ** : ajouter / supprimer un canal.
- En sélectionnant un canal, un encadré affiche son détail éditable :
- **Type** : un des 13 types (diffuse, normal, specular, glossiness, roughness, opacity, reflection, selfillum, light, ao, metallic, colormask, custom)
- **Index** : numéro de slot
- **Path** : chemin du fichier texture, avec un bouton de parcours (PNG, JPG, TGA, BMP, TIF, DDS)
Les types de canaux sont détaillés dans le [tutoriel Matériaux](/blender/tutoriels/materiaux/).
### Physics Material
Un champ texte pour référencer le **matériau physique** (surface : asphalte, métal, herbe…) utilisé par le moteur.
---
## Clear All GS Data ## Clear All GS Data
Le bouton **Clear All GS Data** supprime à la fois la référence shader NSA et tous les canaux de texture du matériau. Le matériau retrouve son comportement GLTF standard. En bas du panneau, le bouton **Clear All GS Data** supprime **toutes** les données GS du matériau (couleurs NMM, shader NSA, canaux de texture, flags…). Le matériau retrouve un comportement GLTF standard.
<Aside type="caution"> <Aside type="caution">
Cette action est irréversible. Assurez-vous de ne plus avoir besoin des données GS avant de les supprimer. Cette action efface toutes les propriétés `nmm_` du matériau et n'est pas réversible. Ne l'utilisez que si vous voulez repartir d'un matériau « propre ».
</Aside>
<Aside>
Pour un guide pratique sur la gestion des matériaux et shaders, consultez le [tutoriel Matériaux](/tutoriels/materiaux/).
</Aside> </Aside>

View File

@ -1,14 +1,14 @@
--- ---
title: Onglet Squirrel title: Onglet GS Animation
description: Présentation du panneau d'animations scriptées Squirrel. description: Présentation de l'onglet GS Animation — animations scriptées Squirrel.
--- ---
import { Aside, Steps } from '@astrojs/starlight/components'; import { Aside, Steps } from '@astrojs/starlight/components';
L'onglet **Squirrel** se trouve dans la **sidebar du viewport 3D** (touche `N`). Il permet de charger et exécuter des scripts d'animation écrits en langage Squirrel, puis de les "bake" (convertir en keyframes) sur les objets de votre scène. L'onglet **GS Animation** se trouve dans la **sidebar du viewport 3D** (touche `N`). Il contient le panneau **Squirrel Animations**, qui permet de charger et exécuter des scripts d'animation écrits en langage Squirrel, puis de les "bake" (convertir en keyframes) sur les objets de votre scène.
<Aside> <Aside>
Ce système nécessite que le module C++ Squirrel soit compilé et que son chemin soit configuré dans les [préférences de l'addon](/getting-started/configuration/). Si vous ne l'utilisez pas, vous pouvez ignorer cet onglet. Ce système nécessite que le module C++ Squirrel soit compilé et que son chemin soit configuré dans les [préférences de l'addon](/blender/getting-started/configuration/). Si vous ne l'utilisez pas, vous pouvez ignorer cet onglet.
</Aside> </Aside>
{/* ![Onglet Squirrel](../../../assets/placeholder-squirrel-tab.png) */} {/* ![Onglet Squirrel](../../../assets/placeholder-squirrel-tab.png) */}
@ -26,7 +26,7 @@ Le panneau est organisé en sections verticales qui suivent un workflow séquent
La première section contient le bouton **Initialize Squirrel Manager**. Il doit être cliqué **une seule fois** au début de votre session pour démarrer le moteur d'interprétation Squirrel. La première section contient le bouton **Initialize Squirrel Manager**. Il doit être cliqué **une seule fois** au début de votre session pour démarrer le moteur d'interprétation Squirrel.
<Aside type="caution"> <Aside type="caution">
Si le bouton affiche une erreur, vérifiez que le chemin du module Squirrel est correctement configuré dans les [préférences de l'addon](/getting-started/configuration/) et que le fichier `squirrel_bridge.pyd` existe à cet emplacement. Si le bouton affiche une erreur, vérifiez que le chemin du module Squirrel est correctement configuré dans les [préférences de l'addon](/blender/getting-started/configuration/) et que le fichier `squirrel_bridge.pyd` existe à cet emplacement.
</Aside> </Aside>
--- ---
@ -100,5 +100,5 @@ Pendant le bake, une barre de progression s'affiche indiquant l'avancement du ca
En bas du panneau, la liste des animations actives sur les objets de votre scène. Chaque entrée affiche le nom de l'instance avec un bouton **Destroy** pour la supprimer et retirer les keyframes associés. En bas du panneau, la liste des animations actives sur les objets de votre scène. Chaque entrée affiche le nom de l'instance avec un bouton **Destroy** pour la supprimer et retirer les keyframes associés.
<Aside type="tip"> <Aside type="tip">
Pour un guide pratique pas à pas, consultez le [tutoriel Animations Squirrel](/tutoriels/animations/). Pour un guide pratique pas à pas, consultez le [tutoriel Animations Squirrel](/blender/tutoriels/animations/).
</Aside> </Aside>

View File

@ -153,6 +153,29 @@ Chaque point est un objet JSON :
--- ---
## Propriétés LOD — préfixe `lod_`
Présentes sur les objets marqués comme niveau de détail.
| Propriété | Type | Description |
|---|---|---|
| `asset_type` | Texte | Vaut `LOD` pour un objet LOD |
| `lod_distance` | Flottant | Distance d'affichage du LOD, en mètres |
---
## ScriptedObject — sans préfixe
Présentes sur les objets **ou** sur la scène quand un script Squirrel y est attaché.
| Propriété | Type | Description |
|---|---|---|
| `scripted_path` | Texte | Chemin relatif du script `.nut` |
| `scripted_class` | Texte | Nom de la classe Squirrel à instancier |
| `nms_scripted_params` | JSON | Paramètres passés au script (sur l'objet) |
---
## Propriétés d'interface — sans préfixe ## Propriétés d'interface — sans préfixe
Utilisées par les panneaux de l'addon pour l'état de l'interface. Utilisées par les panneaux de l'addon pour l'état de l'interface.
@ -162,3 +185,4 @@ Utilisées par les panneaux de l'addon pour l'état de l'interface.
| `item_active` | Booléen | Objet actif/inactif (synchronisé avec la visibilité viewport) | | `item_active` | Booléen | Objet actif/inactif (synchronisé avec la visibilité viewport) |
| `custom_name` | Texte | Nom personnalisé pour le nommage automatique | | `custom_name` | Texte | Nom personnalisé pour le nommage automatique |
| `name_override` | Booléen | Mode Nommage Libre activé/désactivé | | `name_override` | Booléen | Mode Nommage Libre activé/désactivé |
| `block_fixe_mode` | Booléen | Mode Block Fixe (stocké sur la **scène**) : auto-typage des assets déposés |

View File

@ -9,7 +9,7 @@ import { Aside } from '@astrojs/starlight/components';
## Types d'objets (nommage) ## Types d'objets (nommage)
Utilisés par le [système de nommage](/tutoriels/nommage/) pour catégoriser les objets. Utilisés par le [système de nommage](/blender/tutoriels/nommage/) pour catégoriser les objets.
| Valeur | Description | | Valeur | Description |
|---|---| |---|---|
@ -19,15 +19,22 @@ Utilisés par le [système de nommage](/tutoriels/nommage/) pour catégoriser le
| `animal` | Animaux | | `animal` | Animaux |
| `character` | Personnages, piétons | | `character` | Personnages, piétons |
| `prop` | Accessoires, mobilier urbain | | `prop` | Accessoires, mobilier urbain |
| `mountain` | Reliefs, montagnes |
| `shape` | Formes / volumes génériques |
| `sign` | Panneaux, signalisation | | `sign` | Panneaux, signalisation |
| `road` | Routes, trottoirs, voirie | | `road` | Routes, trottoirs, voirie |
| `wall` | Murs, clôtures |
| `internal` | Objets internes au système | | `internal` | Objets internes au système |
<Aside type="note">
Les types `tree`, `prop`, `building`, `character` et `wall` désignent les **objets dynamiques** : ce sont eux qui sont exportés comme [props](/blender/exemples/export-props-road-highway/) (NML + GLTF) plutôt que dans la géométrie composite.
</Aside>
--- ---
## Types d'assets ## Types d'assets
Définis dans le panneau Propriétés Communes, ils déterminent le rôle fonctionnel de l'objet. Définis dans le panneau **Asset & Script** (onglet GS Object), ils déterminent le rôle fonctionnel de l'objet.
| Valeur | Description | | Valeur | Description |
|---|---| |---|---|
@ -35,6 +42,7 @@ Définis dans le panneau Propriétés Communes, ils déterminent le rôle foncti
| `Trigger` | Zone de déclenchement | | `Trigger` | Zone de déclenchement |
| `CollisionShape` | Forme de collision | | `CollisionShape` | Forme de collision |
| `Track` | Chemin de circulation | | `Track` | Chemin de circulation |
| `LOD` | Niveau de détail (enfant d'un objet) |
| `NMG` | Géométrie importée | | `NMG` | Géométrie importée |
| `NMS` | Objet de scène importé | | `NMS` | Objet de scène importé |
| `Material` | Matériau | | `Material` | Matériau |
@ -71,7 +79,7 @@ Définis dans le panneau Propriétés Communes, ils déterminent le rôle foncti
## Canaux de texture ## Canaux de texture
Types reconnus par le [panneau Shader GS Edit](/interface/shader-panel/) et le système d'import/export. Types reconnus par le [panneau GS Material](/blender/interface/shader-panel/) et le système d'import/export.
| Canal | Usage | | Canal | Usage |
|---|---| |---|---|

View File

@ -16,7 +16,7 @@ Ce système nécessite un module C++ compilé (`squirrel_bridge.pyd`). Si le mod
## Prérequis ## Prérequis
1. Le module `squirrel_bridge.pyd` doit être **compilé** et présent sur votre machine 1. Le module `squirrel_bridge.pyd` doit être **compilé** et présent sur votre machine
2. Son chemin doit être configuré dans les [préférences de l'addon](/getting-started/configuration/) (champ **Squirrel Bridge Build Path**) 2. Son chemin doit être configuré dans les [préférences de l'addon](/blender/getting-started/configuration/) (champ **Squirrel Bridge Build Path**)
3. Vous devez disposer d'un fichier script `.nut` contenant une ou plusieurs classes d'animation 3. Vous devez disposer d'un fichier script `.nut` contenant une ou plusieurs classes d'animation
--- ---
@ -25,7 +25,7 @@ Ce système nécessite un module C++ compilé (`squirrel_bridge.pyd`). Si le mod
<Steps> <Steps>
1. **Initialisez le moteur** : dans l'onglet **Squirrel** de la sidebar, cliquez sur **Initialize Squirrel Manager**. Cette étape n'est nécessaire qu'une fois par session Blender. 1. **Initialisez le moteur** : dans l'onglet **GS Animation** de la sidebar (panneau **Squirrel Animations**), cliquez sur **Initialize Squirrel Manager**. Cette étape n'est nécessaire qu'une fois par session Blender.
2. **Chargez un script** : cliquez sur l'icône de fichier à côté du champ de chemin, naviguez jusqu'à votre fichier `.nut`, puis cliquez sur **Load**. Les classes d'animation du script sont détectées automatiquement. 2. **Chargez un script** : cliquez sur l'icône de fichier à côté du champ de chemin, naviguez jusqu'à votre fichier `.nut`, puis cliquez sur **Load**. Les classes d'animation du script sont détectées automatiquement.
@ -79,7 +79,7 @@ La section **Active Instances** en bas du panneau Squirrel liste toutes les anim
Les scripts `.nut` sont des fichiers texte écrits en langage Squirrel. Chaque script peut contenir une ou plusieurs classes d'animation. Les métadonnées (nom, auteur, paramètres) sont définies dans un bloc de commentaires spécial en tête de classe. Les scripts `.nut` sont des fichiers texte écrits en langage Squirrel. Chaque script peut contenir une ou plusieurs classes d'animation. Les métadonnées (nom, auteur, paramètres) sont définies dans un bloc de commentaires spécial en tête de classe.
<Aside> <Aside>
La création de scripts d'animation est une tâche de développeur. En tant que modélisateur, vous utilisez les scripts fournis par votre équipe de développement — l'onglet Squirrel vous permet de les appliquer sans écrire de code. La création de scripts d'animation est une tâche de développeur. En tant que modélisateur, vous utilisez les scripts fournis par votre équipe de développement — l'onglet GS Animation vous permet de les appliquer sans écrire de code.
</Aside> </Aside>
--- ---

View File

@ -39,7 +39,7 @@ mon_export/
Deux accès équivalents : Deux accès équivalents :
- **File → Export → Composite Scene (.gltf + .scene.json)** - **File → Export → Composite Scene (.gltf + .scene.json)**
- Bouton **Export Composite Scene** dans l'[onglet NMS Export](/interface/export-tab/) de la sidebar - Bouton **Export Composite Scene** dans l'[onglet GS Scene](/blender/interface/export-tab/) de la sidebar (panneau *Export de Scène*)
--- ---
@ -47,10 +47,15 @@ Deux accès équivalents :
| Option | Par défaut | Description | | Option | Par défaut | Description |
|---|---|---| |---|---|---|
| **Scene Name** | (nom du .blend) | Nom de la scène dans le manifeste. Si vide, le nom du fichier Blender est utilisé. | | **Scene Name** | (nom du .blend) | Nom de la scène. Sert à nommer le manifeste `<nom>.scene.json`. Si vide, le nom du fichier Blender est utilisé. |
| **Apply Modifiers** | ✅ | Applique les modifiers Blender avant l'export (subdivision, miroir, etc.) | | **Apply Modifiers** | ✅ | Applique les modifiers Blender avant l'export (subdivision, miroir, etc.) |
| **Deduplicate Textures** | ❌ | Fusionne les textures identiques dans un dossier partagé (expérimental) | | **Deduplicate Textures** | ❌ | Fusionne les textures identiques dans un dossier `textures/` partagé |
| **Export as Single Subscene** | ❌ | Exporte toute la scène comme un seul GLTF sans décomposition | | **Convert Textures to DDS (BC7)** | ❌ | Convertit les textures en DDS BC7 via `texconv.exe` (uniquement si *Deduplicate Textures* est activé) |
| **DDS Max Resolution** | 1024 | Taille max des textures DDS (visible si la conversion DDS est activée) |
| **Single Subscene Mode** | ❌ | Exporte toute la scène comme un seul GLTF sans décomposition |
| **Skip Unchanged Subscenes** | ❌ | Ignore les sous-scènes dont le `.blend` source n'a pas changé (export incrémental) |
| **Include Dynamic Objects in GLTF** | ❌ | Inclut les props dans le GLTF au lieu de les exporter séparément en NML |
| **Keep Original Texture Files** | ❌ | Remet les fichiers texture d'origine (DDS, TGA…) à la place des PNG ré-encodés par Blender |
<Tabs> <Tabs>
<TabItem label="Mode décomposé (défaut)"> <TabItem label="Mode décomposé (défaut)">
@ -78,7 +83,7 @@ Toute la scène est exportée dans un seul fichier GLTF. Le manifeste est simpli
## Propriétés d'instance ## Propriétés d'instance
Chaque instance de collection peut porter des **propriétés custom** qui seront incluses dans le manifeste. Ces propriétés se gèrent depuis le sous-panneau **Instance Properties** de l'[onglet NMS Export](/interface/export-tab/). Chaque instance de collection peut porter des **propriétés custom** qui seront incluses dans le manifeste. Ces propriétés se gèrent depuis le panneau **Instance liée** de l'[onglet GS Object](/blender/interface/gsedit-tab/) (il n'apparaît que lorsqu'une instance de collection est sélectionnée).
### Propriétés reconnues ### Propriétés reconnues
@ -99,13 +104,13 @@ Toute autre propriété custom est également exportée dans un champ `custom_pr
1. **Sélectionnez** une instance de collection dans le viewport. 1. **Sélectionnez** une instance de collection dans le viewport.
2. Ouvrez l'onglet **NMS Export** dans la sidebar. 2. Ouvrez l'onglet **GS Object** dans la sidebar.
3. Le sous-panneau **Instance Properties** affiche les informations de l'instance. 3. Le panneau **Instance liée** affiche les informations de l'instance.
4. Utilisez les boutons **Quick Add** pour ajouter rapidement les propriétés courantes. 4. Utilisez les boutons **Quick Add Properties** pour ajouter rapidement les propriétés courantes (`replaceable`, `slot_id`, `tags`, `static`).
5. Ou utilisez le bouton **Add Custom Property** pour ajouter une propriété avec un nom et un type personnalisés. 5. La liste **Current Properties** affiche toutes les propriétés de l'instance, chacune avec un bouton de suppression.
</Steps> </Steps>
@ -131,11 +136,11 @@ Vous n'avez rien à faire — la conversion est automatique.
1. **Organisez** votre scène en collections Blender. Chaque collection instanciée deviendra une sous-scène GLTF séparée. 1. **Organisez** votre scène en collections Blender. Chaque collection instanciée deviendra une sous-scène GLTF séparée.
2. **Ajoutez les propriétés** nécessaires aux instances (replaceable, slot_id, tags, etc.) via le panneau Instance Properties. 2. **Ajoutez les propriétés** nécessaires aux instances (replaceable, slot_id, tags, etc.) via le panneau **Instance liée** (onglet GS Object).
3. **Configurez les matériaux** avec le [panneau GS Edit](/interface/shader-panel/) si nécessaire (shaders NSA, canaux de texture). 3. **Configurez les matériaux** avec le [panneau GS Material](/blender/interface/shader-panel/) si nécessaire (shaders NSA, canaux de texture).
4. Allez dans **File → Export → Composite Scene** (ou cliquez sur le bouton dans l'onglet NMS Export). 4. Allez dans **File → Export → Composite Scene** (ou cliquez sur le bouton **Export Composite Scene** dans l'onglet GS Scene).
5. Choisissez le **dossier de destination**. 5. Choisissez le **dossier de destination**.
@ -186,7 +191,7 @@ Chaque entrée dans `children` correspond à une instance dans la scène, avec s
- **Structurez en collections** : plus votre scène est organisée en collections, plus l'export sera modulaire et réutilisable - **Structurez en collections** : plus votre scène est organisée en collections, plus l'export sera modulaire et réutilisable
- **Nommez vos collections** clairement : le nom de la collection devient le nom du fichier GLTF - **Nommez vos collections** clairement : le nom de la collection devient le nom du fichier GLTF
- **Vérifiez l'analyse de scène** dans le panneau NMS Export avant d'exporter — elle vous montre combien de collections, instances et objets locaux seront traités - **Vérifiez l'analyse de scène** dans le panneau *Export de Scène* (onglet GS Scene) avant d'exporter — elle vous montre combien de collections, instances et objets locaux seront traités
- **Sauvegardez les matériaux** (bouton Save dans le panneau GS Edit) avant d'exporter pour que les données shader soient à jour - **Vérifiez vos matériaux** dans le [panneau GS Material](/blender/interface/shader-panel/) : les données shader y sont sauvegardées automatiquement, mais c'est l'occasion de contrôler les canaux de texture et le shader NSA
</Aside> </Aside>

View File

@ -5,7 +5,7 @@ description: Comprendre et gérer les matériaux GS Framework dans Blender.
import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components'; import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components';
L'addon gère les matériaux GS Framework à deux niveaux : l'**import** (conversion des fichiers NMM en matériaux Blender) et l'**édition** (configuration des shaders et textures via le panneau GS Edit pour l'export). L'addon gère les matériaux GS Framework à deux niveaux : l'**import** (conversion des fichiers NMM en matériaux Blender) et l'**édition** (configuration des shaders et textures via le panneau **GS Material** pour l'export).
--- ---
@ -32,15 +32,20 @@ Toutes les données originales restent accessibles dans les **propriétés custo
--- ---
## Le panneau GS Edit (Shader Editor) ## Le panneau GS Material (Shader Editor)
Le panneau de gestion des matériaux se trouve dans la **sidebar du Shader Editor**, onglet **GS Edit**. Voir la [présentation complète du panneau](/interface/shader-panel/). Le panneau de gestion des matériaux se trouve dans la **sidebar du Shader Editor**, onglet **GS Material**. Voir la [présentation complète du panneau](/blender/interface/shader-panel/).
Il permet de : Il permet de configurer toutes les données GS du matériau :
- Associer un **shader NSA** au matériau - **Couleurs** (diffuse, spéculaire, émissive, ambiante) et **attributs** (glossiness, opacité, réflexion…)
- Définir les **canaux de texture** et leurs fichiers - Le **shader NSA** associé
- **Sauvegarder / charger** ces données dans les propriétés custom du matériau - Les **canaux de texture** et leurs fichiers
- Le **matériau physique**
<Aside type="tip">
Toutes les modifications sont **enregistrées automatiquement** dans les propriétés custom du matériau — il n'y a plus de bouton *Save*. Un bouton **Reload** permet de recharger les dernières valeurs stockées si besoin.
</Aside>
--- ---
@ -74,13 +79,13 @@ L'addon reconnaît 13 types de canaux de texture :
2. **Ouvrez le Shader Editor** (passez un éditeur en mode Shader Editor, ou utilisez le layout Shading). 2. **Ouvrez le Shader Editor** (passez un éditeur en mode Shader Editor, ou utilisez le layout Shading).
3. Ouvrez la **sidebar** du Shader Editor (touche `N`) et allez dans l'onglet **GS Edit**. 3. Ouvrez la **sidebar** du Shader Editor (touche `N`) et allez dans l'onglet **GS Material**.
{/* ![Onglet GS Material](../../../assets/placeholder-select-nsa.png) */}
4. Dans la section **NSA Shader**, cliquez sur **Select NSA Shader** et naviguez jusqu'au fichier `.nsa` souhaité. 4. Dans la section **NSA Shader**, cliquez sur **Select NSA Shader** et naviguez jusqu'au fichier `.nsa` souhaité.
{/* ![Sélection d'un shader NSA](../../../assets/placeholder-select-nsa.png) */} 5. Dans la section **Texture Channels**, cliquez sur le bouton **+** pour ajouter un canal.
5. Dans la section **Texture Channels**, cliquez sur **Add Channel** pour ajouter un canal.
6. Sélectionnez le canal ajouté dans la liste. Dans le détail : 6. Sélectionnez le canal ajouté dans la liste. Dans le détail :
- Choisissez le **type** (ex: `diffuse`) - Choisissez le **type** (ex: `diffuse`)
@ -88,40 +93,14 @@ L'addon reconnaît 13 types de canaux de texture :
7. Répétez pour chaque canal nécessaire (normal, specular, etc.). 7. Répétez pour chaque canal nécessaire (normal, specular, etc.).
8. Cliquez sur **Save** pour enregistrer la configuration dans les propriétés du matériau.
</Steps> </Steps>
<Aside type="caution"> <Aside type="tip">
Les modifications dans la liste des canaux ne sont **pas automatiquement sauvegardées**. Cliquez toujours sur **Save** après vos modifications, sinon elles seront perdues en fermant le fichier. Chaque modification est **enregistrée automatiquement** dans le matériau. Le bouton **Reload** (en haut du panneau) recharge les valeurs stockées — utile pour annuler une modification non voulue.
</Aside> </Aside>
--- ---
## Workflow Save / Load
<Tabs>
<TabItem label="Save">
**Save** lit la configuration actuelle de la liste des canaux de texture dans le panneau et l'écrit dans les propriétés custom du matériau sous forme d'un dictionnaire JSON (propriété `nmm_textures`).
**Quand l'utiliser** : après chaque modification des canaux de texture.
</TabItem>
<TabItem label="Load">
**Load** lit les propriétés custom du matériau (`nmm_textures`) et remplit la liste des canaux dans le panneau.
**Quand l'utiliser** :
- Après avoir ouvert un fichier contenant des matériaux importés
- Pour restaurer la configuration après avoir fait des changements non sauvegardés
- Pour synchroniser le panneau avec les données stockées
</TabItem>
</Tabs>
---
## Supprimer les données GS ## Supprimer les données GS
Le bouton **Clear All GS Data** supprime : Le bouton **Clear All GS Data** supprime :
@ -153,9 +132,9 @@ Le sélecteur de fichiers textures accepte les formats suivants :
<Aside type="tip"> <Aside type="tip">
- **Importez d'abord**, éditez ensuite : les matériaux NMM importés ont déjà leurs canaux correctement configurés dans les propriétés custom. Utilisez **Load** pour les voir dans le panneau. - **Importez d'abord**, éditez ensuite : les matériaux NMM importés ont déjà leurs canaux correctement configurés. Ils s'affichent automatiquement dans le panneau dès que vous sélectionnez le matériau.
- **Un canal par type** : évitez de mettre deux canaux du même type (ex: deux `diffuse`). Le dernier écrasera le premier lors de l'export. - **Un canal par type** : évitez de mettre deux canaux du même type (ex: deux `diffuse`). Le dernier écrasera le premier lors de l'export.
- **Chemins relatifs** : configurez le [dossier projet](/getting-started/configuration/) pour que les chemins de textures soient stockés de manière relative et portable. - **Chemins relatifs** : configurez le [dossier projet](/blender/getting-started/configuration/) pour que les chemins de textures soient stockés de manière relative et portable.
- **Vérifiez dans le Shader Editor** : les nœuds Principled BSDF de Blender vous montrent le résultat visuel des textures connectées, indépendamment des données GS stockées. - **Vérifiez dans le Shader Editor** : les nœuds Principled BSDF de Blender vous montrent le résultat visuel des textures connectées, indépendamment des données GS stockées.
</Aside> </Aside>

View File

@ -5,7 +5,7 @@ description: Comprendre et utiliser les conventions de nommage de l'addon Blende
import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components'; import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components';
L'addon impose un système de nommage structuré pour garantir la cohérence des objets exportés vers le moteur GS Framework. Ce système est géré depuis le panneau **Propriétés Communes** de l'[onglet GSEdit](/interface/gsedit-tab/). L'addon impose un système de nommage structuré pour garantir la cohérence des objets exportés vers le moteur GS Framework. Ce système est géré depuis le panneau **Nommage** de l'[onglet GS Object](/blender/interface/gsedit-tab/).
--- ---
@ -60,10 +60,15 @@ Le menu déroulant **Type d'objet** propose les catégories suivantes :
| `animal` | Animaux | | `animal` | Animaux |
| `character` | Personnages, piétons | | `character` | Personnages, piétons |
| `prop` | Accessoires, mobilier urbain, objets décoratifs | | `prop` | Accessoires, mobilier urbain, objets décoratifs |
| `mountain` | Reliefs, montagnes |
| `shape` | Formes / volumes génériques |
| `sign` | Panneaux, signalisation | | `sign` | Panneaux, signalisation |
| `road` | Routes, trottoirs, éléments de voirie | | `road` | Routes, trottoirs, éléments de voirie |
| `wall` | Murs, clôtures |
| `internal` | Objets internes / système | | `internal` | Objets internes / système |
![Menu déroulant Type d'objet ouvert dans le panneau Nommage](../../../../assets/nommage-types.png)
--- ---
## Types d'assets ## Types d'assets
@ -99,7 +104,7 @@ Les noms sont automatiquement nettoyés :
1. **Sélectionnez** l'objet dans le viewport. 1. **Sélectionnez** l'objet dans le viewport.
2. Dans l'onglet **GSEdit** de la sidebar, trouvez le panneau **Propriétés Communes**. 2. Dans l'onglet **GS Object** de la sidebar, trouvez le panneau **Nommage**.
3. **Désactivez Nommage Libre** si ce n'est pas déjà fait (la case doit être décochée). 3. **Désactivez Nommage Libre** si ce n'est pas déjà fait (la case doit être décochée).
@ -115,9 +120,19 @@ Les noms sont automatiquement nettoyés :
--- ---
## Mode Block Fixe
En haut du panneau **Nommage** se trouve une case **Mode Block Fixe** qui s'applique à **toute la scène**. Quand elle est activée, chaque objet **déposé depuis l'asset library** est automatiquement typé d'après son nom (le préfixe avant le premier `_`) — vous n'avez plus à régler le type à la main pour chaque asset.
<Aside type="tip">
Activez le mode Block Fixe **avant** de glisser une série d'assets depuis la librairie. Les objets déjà présents dans la scène au moment où vous l'activez ne sont pas modifiés.
</Aside>
---
## Vérification d'intégrité ## Vérification d'intégrité
Le bouton **Vérifier Intégrité** analyse **tous les objets de la scène** et détecte les problèmes suivants : Le bouton **Vérifier Intégrité** se trouve dans le panneau **Intégrité** de l'[onglet GS Scene](/blender/interface/export-tab/). Il analyse **tous les objets de la scène** et détecte les problèmes suivants :
### Erreurs (à corriger) ### Erreurs (à corriger)
@ -151,6 +166,6 @@ Lancez la vérification d'intégrité avant chaque export pour vous assurer que
Si vous avez modifié manuellement le nom d'un objet et souhaitez revenir au nom automatique : Si vous avez modifié manuellement le nom d'un objet et souhaitez revenir au nom automatique :
1. Sélectionnez l'objet 1. Sélectionnez l'objet
2. Dans la section **Informations** du panneau Propriétés Communes, cliquez sur **Réinitialiser Nom** 2. Dans la section **Informations** du panneau **Nommage**, cliquez sur **Réinitialiser Nom**
Le bouton **Effacer Nom Custom** vide uniquement le champ de nom personnalisé, sans toucher au type. Le bouton `X` à côté du champ Nom vide uniquement le nom personnalisé, sans toucher au type.

View File

@ -11,7 +11,7 @@ L'addon permet de définir les propriétés physiques de vos objets directement
## Modes physiques ## Modes physiques
Le mode physique détermine comment l'objet se comporte dans le moteur. Il se configure dans le panneau **Propriétés Physiques** de l'[onglet GSEdit](/interface/gsedit-tab/). Le mode physique détermine comment l'objet se comporte dans le moteur. Il se configure dans le panneau **Physique** de l'[onglet GS Object](/blender/interface/gsedit-tab/).
| Mode | Comportement | Exemples | | Mode | Comportement | Exemples |
|---|---|---| |---|---|---|
@ -90,15 +90,15 @@ Chaque shape a sa propre position, rotation et échelle **relative à l'objet pa
1. **Sélectionnez** l'objet mesh auquel vous voulez ajouter une collision. 1. **Sélectionnez** l'objet mesh auquel vous voulez ajouter une collision.
2. Dans le panneau **Propriétés Physiques** (onglet GSEdit), choisissez un **mode physique** différent de "Aucun" (par exemple "Static Collision"). 2. Dans le panneau **Physique** (onglet GS Object), choisissez un **mode physique** différent de "Aucun" (par exemple "Static Collision").
3. Dans la section **Collision Shapes**, cliquez sur **Ajouter Collision Shape**. 3. Dans la section **Collision Shapes**, deux possibilités :
- **Ajouter Collision Shape** : ouvre un menu pour choisir le type (Box, Sphere, Capsule, Cylinder, Mesh).
- **Box depuis dimensions** : crée directement une Box ajustée à la bounding box de l'objet — le plus rapide pour englober un objet.
4. Choisissez le **type de shape** dans le menu (Box, Sphere, Capsule, Cylinder, Mesh). 4. Un objet empty est créé comme enfant de votre objet.
5. Un objet empty est créé comme enfant de votre objet, positionné à son centre. 5. **Déplacez, tournez et redimensionnez** l'empty pour ajuster la shape à votre modèle.
6. **Déplacez, tournez et redimensionnez** l'empty pour ajuster la shape à votre modèle.
</Steps> </Steps>
@ -114,11 +114,11 @@ Si vous avez déjà un empty dans votre scène que vous souhaitez utiliser comme
1. **Sélectionnez** l'empty. 1. **Sélectionnez** l'empty.
2. Le panneau **Collision Shape Editor** apparaît dans l'onglet GSEdit. 2. Le panneau **Collision Shape** apparaît dans l'onglet GS Object.
3. Cliquez sur le bouton correspondant au type souhaité (Box, Sphere, Capsule, Cylinder, Mesh). 3. Cliquez sur le bouton correspondant au type souhaité (Box, Sphere, Capsule, Cylinder, Mesh).
4. L'empty est convertit : ses propriétés custom sont configurées et son type d'affichage est mis à jour. 4. L'empty est converti : ses propriétés custom sont configurées et son type d'affichage est mis à jour.
</Steps> </Steps>
@ -129,7 +129,7 @@ Si vous avez déjà un empty dans votre scène que vous souhaitez utiliser comme
Si une collision shape existe déjà mais que vous voulez changer son type : Si une collision shape existe déjà mais que vous voulez changer son type :
1. Sélectionnez la collision shape (l'empty enfant) 1. Sélectionnez la collision shape (l'empty enfant)
2. Dans le **Collision Shape Editor**, des boutons de changement de type sont affichés 2. Dans le panneau **Collision Shape**, des boutons de changement de type sont affichés
3. Cliquez sur le type souhaité — les propriétés et l'affichage sont mis à jour 3. Cliquez sur le type souhaité — les propriétés et l'affichage sont mis à jour
--- ---

View File

@ -35,13 +35,13 @@ Les points de contrôle de la courbe définissent le chemin.
3. Repassez en **Object Mode** et sélectionnez la courbe. 3. Repassez en **Object Mode** et sélectionnez la courbe.
4. Dans l'onglet **GSEdit**, panneau **Propriétés Communes**, trouvez la section Track. 4. Dans l'onglet **GS Object**, dépliez le panneau **Track**.
5. Cliquez sur **Convertir en Track**. 5. Cliquez sur **Convertir en Track**.
6. Une fenêtre de configuration apparaît : 6. Une fenêtre de configuration apparaît :
- **Vitesse par défaut** : vitesse initiale pour tous les points (0500 km/h, défaut : 50) - **Vitesse par défaut** : vitesse initiale pour tous les points (0500 km/h, défaut : 50)
- **Type de route par défaut** : 0 = Route, 1 = Animal - **Type de route** : 0 = Route, 1 = Autoroute, 2 = Ville
7. Confirmez — la courbe est maintenant un track avec toutes ses métadonnées. 7. Confirmez — la courbe est maintenant un track avec toutes ses métadonnées.
@ -53,7 +53,7 @@ Les points de contrôle de la courbe définissent le chemin.
## Configurer un track ## Configurer un track
Une fois le track créé, le panneau **Propriétés de Track** apparaît quand la courbe est sélectionnée. Deux modes sont disponibles : Une fois le track créé, le panneau **Track** (onglet GS Object) affiche ses réglages quand la courbe est sélectionnée. Deux modes sont disponibles, choisis via le sélecteur **Mode** :
### Mode Route ### Mode Route
@ -100,16 +100,18 @@ Si vous modifiez la géométrie de la courbe après avoir créé le track (ajout
1. Sélectionnez la courbe du track. 1. Sélectionnez la courbe du track.
2. Dans le panneau **Propriétés Communes**, cliquez sur **Mettre à jour Track**. 2. Dans le panneau **Track** (onglet GS Object), cliquez sur **Rafraîchir les données**.
3. Choisissez si vous voulez **conserver les métadonnées existantes** : 3. Les points sont ré-extraits depuis la géométrie de la courbe. Les métadonnées existantes (vitesses, types de route) sont **préservées** tant que le nombre de points n'a pas changé.
- **Oui** (par défaut) : si le nombre de points n'a pas changé, les vitesses et types de route sont préservés
- **Non** : les métadonnées sont réinitialisées aux valeurs par défaut
</Steps> </Steps>
<Aside type="caution"> <Aside type="caution">
Si le nombre de points a changé (ajout ou suppression de points de contrôle), les métadonnées par point sont réinitialisées même si l'option de conservation est activée — l'addon ne peut pas deviner quelle métadonnée correspond à quel nouveau point. Si le nombre de points a changé (ajout ou suppression de points de contrôle), les métadonnées par point sont réinitialisées — l'addon ne peut pas deviner quelle métadonnée correspond à quel nouveau point.
</Aside>
<Aside type="tip">
Pour rafraîchir **tous** les tracks de la scène d'un coup (y compris dans les `.blend` liés), utilisez le bouton **Refresh All Tracks** du panneau *Export de Scène* (onglet GS Scene).
</Aside> </Aside>
--- ---
@ -137,7 +139,7 @@ Les données par point contiennent : index, positions de début/fin pour l'inter
- **Utilisez des courbes de type Path** pour les routes droites et les autoroutes - **Utilisez des courbes de type Path** pour les routes droites et les autoroutes
- **Utilisez des courbes Bézier** pour les routes sinueuses et les sentiers animaux - **Utilisez des courbes Bézier** pour les routes sinueuses et les sentiers animaux
- **Nommez vos tracks** clairement (ex: `track_RueHauteVitesse`, `track_SentierCerf`) grâce au [système de nommage](/tutoriels/nommage/) - **Nommez vos tracks** clairement (ex: `track_RueHauteVitesse`, `track_SentierCerf`) grâce au [système de nommage](/blender/tutoriels/nommage/)
- **Vérifiez le sens** de la courbe : le premier point de contrôle est le début du track, le dernier est la fin - **Vérifiez le sens** de la courbe : le premier point de contrôle est le début du track, le dernier est la fin
- **Adaptez la vitesse** aux segments : utilisez une vitesse plus basse dans les virages, plus haute sur les lignes droites - **Adaptez la vitesse** aux segments : utilisez une vitesse plus basse dans les virages, plus haute sur les lignes droites

View File

@ -1,40 +1,23 @@
--- ---
title: Welcome to Starlight title: Develter Documentation
description: Get started building your docs site with Starlight. description: Documentation des outils Develter — addon Blender GS Framework et scripting Squirrel.
template: splash # Remove or comment out this line to display the site sidebar on this page. template: splash
hero: hero:
tagline: Congrats on setting up a new Starlight project! tagline: La documentation des outils Develter — import/export de scènes GS Framework dans Blender et scripting Squirrel.
image:
file: ../../assets/houston.webp
actions: actions:
- text: Example Guide - text: Documentation Blender
link: /squirrel/overview link: /blender/getting-started/installation/
icon: right-arrow
variant: primary
- text: Documentation Squirrel
link: /squirrel/overview/
icon: right-arrow icon: right-arrow
- text: Read the Starlight docs
link: https://starlight.astro.build
icon: external
variant: minimal variant: minimal
--- ---
import { Card, CardGrid } from '@astrojs/starlight/components'; import { LinkCard, CardGrid } from '@astrojs/starlight/components';
## Next steps <CardGrid>
<LinkCard title="Blender" href="/blender/getting-started/installation/" description="Addon GS Framework : import/export de scènes, géométrie, matériaux, physique, tracks et animations." />
<CardGrid stagger> <LinkCard title="Squirrel" href="/squirrel/overview/" description="Le langage de scripting du moteur." />
<Card title="Update content" icon="pencil">
Edit `src/content/docs/index.mdx` to see this page change.
</Card>
<Card title="Change page layout" icon="document">
Delete `template: splash` in `src/content/docs/index.mdx` to display a
sidebar on this page.
</Card>
<Card title="Add new content" icon="add-document">
Add Markdown or MDX files to `src/content/docs` to create new pages.
</Card>
<Card title="Configure your site" icon="setting">
Edit your `sidebar` and other config in `astro.config.mjs`.
</Card>
<Card title="Read the docs" icon="open-book">
Learn more in [the Starlight Docs](https://starlight.astro.build/).
</Card>
</CardGrid> </CardGrid>