diff --git a/astro.config.mjs b/astro.config.mjs index e71c596..9a19983 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -34,10 +34,10 @@ export default defineConfig({ { label: 'Interface', items: [ - { label: 'Onglet GSEdit', slug: 'blender/interface/gsedit-tab' }, - { label: 'Onglet NMS Export', slug: 'blender/interface/export-tab' }, - { label: 'Onglet Squirrel', slug: 'blender/interface/squirrel-tab' }, - { label: 'Panneau Shader (GS Edit)', slug: 'blender/interface/shader-panel' }, + { label: 'Onglet GS Scene', slug: 'blender/interface/export-tab' }, + { label: 'Onglet GS Object', slug: 'blender/interface/gsedit-tab' }, + { label: 'Onglet GS Animation', slug: 'blender/interface/squirrel-tab' }, + { 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: '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', items: [ diff --git a/src/assets/import-menu.png b/src/assets/import-menu.png new file mode 100644 index 0000000..4904324 Binary files /dev/null and b/src/assets/import-menu.png differ diff --git a/src/assets/nommage-types.png b/src/assets/nommage-types.png new file mode 100644 index 0000000..7e2bac7 Binary files /dev/null and b/src/assets/nommage-types.png differ diff --git a/src/assets/road-highway-composite-dialog.png b/src/assets/road-highway-composite-dialog.png new file mode 100644 index 0000000..77a4dd0 Binary files /dev/null and b/src/assets/road-highway-composite-dialog.png differ diff --git a/src/assets/road-highway-console.png b/src/assets/road-highway-console.png new file mode 100644 index 0000000..1590564 Binary files /dev/null and b/src/assets/road-highway-console.png differ diff --git a/src/assets/road-highway-props-dialog.png b/src/assets/road-highway-props-dialog.png new file mode 100644 index 0000000..a64e5cf Binary files /dev/null and b/src/assets/road-highway-props-dialog.png differ diff --git a/src/assets/tab-gs-object.png b/src/assets/tab-gs-object.png new file mode 100644 index 0000000..8c4f75f Binary files /dev/null and b/src/assets/tab-gs-object.png differ diff --git a/src/assets/tab-gs-scene.png b/src/assets/tab-gs-scene.png new file mode 100644 index 0000000..e0bf28e Binary files /dev/null and b/src/assets/tab-gs-scene.png differ diff --git a/src/content/docs/blender/exemples/export-props-road-highway.mdx b/src/content/docs/blender/exemples/export-props-road-highway.mdx new file mode 100644 index 0000000..0261193 --- /dev/null +++ b/src/content/docs/blender/exemples/export-props-road-highway.mdx @@ -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/). + + + +--- + +## 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 + + + +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. + + + +--- + +## 2. Lancer l'export des props + + + +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**. + + + + + +--- + +## 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é. + + + + + +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 + + + +1. Dans le navigateur de fichiers, naviguez jusqu'au dossier : + + ``` + /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**. + + + +--- + +## 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. + + + +--- + +## 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/`) | diff --git a/src/content/docs/blender/exemples/export-road-highway.mdx b/src/content/docs/blender/exemples/export-road-highway.mdx new file mode 100644 index 0000000..f530373 --- /dev/null +++ b/src/content/docs/blender/exemples/export-road-highway.mdx @@ -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. + + + +--- + +## 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 + + + +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/)). + + + +--- + +## 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.). + + + +1. Menu **Window → Toggle System Console**. + +2. Une fenêtre noire s'ouvre à côté de Blender. Laissez-la ouverte pendant tout l'export. + + + +![Window → Toggle System Console et la console ouverte](../../../../assets/road-highway-console.png) + + + +--- + +## 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 + + + +1. Dans le navigateur de fichiers, naviguez jusqu'au dossier : + + ``` + /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 + ``` + + + + + +--- + +## 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**. + + + + + +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. + + + +--- + +## É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/) diff --git a/src/content/docs/blender/getting-started/configuration.mdx b/src/content/docs/blender/getting-started/configuration.mdx index 7a143b9..681ffda 100644 --- a/src/content/docs/blender/getting-started/configuration.mdx +++ b/src/content/docs/blender/getting-started/configuration.mdx @@ -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. +## 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. + + + +## 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 -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/). diff --git a/src/content/docs/blender/getting-started/installation.mdx b/src/content/docs/blender/getting-started/installation.mdx index dac5698..e90ed4f 100644 --- a/src/content/docs/blender/getting-started/installation.mdx +++ b/src/content/docs/blender/getting-started/installation.mdx @@ -18,7 +18,7 @@ L'addon fonctionne avec toutes les versions de Blender à partir de la 3.0. Nous -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+,`). @@ -40,19 +40,26 @@ Une fois l'addon activé, vous devriez voir : - De nouveaux menus dans **File → Import** : - NMS Scene (.nms) - - NMS Scene Unpacked (.nms) - NMG Geometry (.nmg) - NMM Material (.nmm) - Un menu dans **File → Export** : - Composite Scene (.gltf + .scene.json) -- Un nouvel onglet **GSEdit** dans la sidebar du viewport 3D (touche `N`) -- Un onglet **NMS Export** dans la sidebar du viewport 3D -- Un onglet **Squirrel** dans la sidebar du viewport 3D +- Trois nouveaux onglets dans la sidebar du **viewport 3D** (touche `N`) : + - **GS Scene** — outils qui agissent sur toute la scène (export, props, textures, intégrité…) + - **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) + + ## É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/). diff --git a/src/content/docs/blender/getting-started/premier-import.mdx b/src/content/docs/blender/getting-started/premier-import.mdx index 5cc0736..27fa7f6 100644 --- a/src/content/docs/blender/getting-started/premier-import.mdx +++ b/src/content/docs/blender/getting-started/premier-import.mdx @@ -11,7 +11,7 @@ Ce guide vous accompagne dans l'import d'un fichier de géométrie NMG — le ca -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)**. @@ -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) */} ## 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 -- Le **panneau Propriétés Communes** : type d'asset, système de nommage -- D'éventuelles **propriétés physiques** si le fichier source en contenait +- Onglet **GS Object** : le **Nommage** (type + nom), le **Type d'Asset**, et — si le fichier source en contenait — les **propriétés physiques**. +- Onglet **GS Scene** : le panneau **Items Actifs**, qui indique si l'objet est actif dans la scène. -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 ? -- Pour importer un matériau seul : [Import NMM](/import/nmm/) -- Pour importer une scène complète avec sous-scènes : [Import NMS Unpacked](/import/nms-unpacked/) -- Pour comprendre le système de nommage : [Tutoriel Nommage](/tutoriels/nommage/) +- 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](/blender/import/nms-unpacked/) +- Pour comprendre le système de nommage : [Tutoriel Nommage](/blender/tutoriels/nommage/) diff --git a/src/content/docs/blender/import/nmg.mdx b/src/content/docs/blender/import/nmg.mdx index 72eb3e1..5dc3e0c 100644 --- a/src/content/docs/blender/import/nmg.mdx +++ b/src/content/docs/blender/import/nmg.mdx @@ -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. --- diff --git a/src/content/docs/blender/import/nmm.mdx b/src/content/docs/blender/import/nmm.mdx index ee2ff9a..335949e 100644 --- a/src/content/docs/blender/import/nmm.mdx +++ b/src/content/docs/blender/import/nmm.mdx @@ -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 --- @@ -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é - **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