Travailler avec les Assets Bundles
Version de Unity
VRmaze 2025 utilise une version 2022 de Unity (2022.3.53), tandis que les version antérieur de VRmaze utilisent la version 2020 (2020.2.1)
URP + VR
Dans le cas d'une utilisation d'un Asset Bundle avec le moteur de rendu URP en VR, des dispositions particulière sont à intégrer. Une section en bas de page indique comment les produire.
Création des Assets bundles
Script de compilation des Assets Bundles
La création des Assets Bundles d'Unity est simple et ne nécessite que quelques actions. Il faut néanmoins produire un script permettant de générer les fichiers qui seront utilisés par la suite. Ce script est toujours le même et peut être trouvé dans la documentation officielle d'Unity :
using UnityEditor;
using System.IO;
public class CreateAssetBundles
{
[MenuItem("Assets/Build AssetBundles")]
static void BuildAllAssetBundles()
{
string assetBundleDirectory = "Assets/AssetBundles";
if (!Directory.Exists(assetBundleDirectory))
{
Directory.CreateDirectory(assetBundleDirectory);
}
BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
}
}
Le script .Cs doit être placé dans le dossier Editor
du dossier Assets
du projet Unity. Après l'intégration de ce script d'éditeur, la barre de menu est étendue.
Référencement d'un Asset Bundle et génération
Le script intégré ne suffit pas à créer les Assets Bundles. En effet, il faut maintenant déclarer les objets et scènes qui seront intégrés aux fichiers Assets Bundles. Pour cela, nous devons nous placer dans la zone de projet Unity et sélectionner les éléments un par un de manière à leur affecter un nom de conteneur :
Lors de la génération via le script de création des Assets Bundles, un dossier spécial nommé AssetBundles
est créé dans le répertoire de projet. Ce dossier contient l'ensemble des fichiers Assets Bundles créés.
Dans notre cas, seul le fichier boatsceneexport2.boat
est important, les autres fichiers sont inutiles toutefois, il est important de noter qu'il est possible qu'un Asset Bundle fasse référence à un autre fichier Asset Bundle, il convient donc, par simplicité, de copier tout le contenu du dossier généré dans le dossier de données utilisateur de VRmaze.
Copie vers VRmaze
Il est nécessaire de copier les données vers le dossier de données utilisateur de VRmaze, car le logiciel ne chargera des données que si elles sont présentes dans ce dossier.
Utilisation des assets bundles
Lorsque l'Asset Bundle est copié dans le dossier de données de VRmaze, il devient exploitable. VRmaze met à disposition deux types de loaders d'Asset Bundle. Le premier permet le chargement de prefabs et offre la possibilité de leur affecter une position et une orientation ainsi qu'un comportement spécifique. Le second consiste à charger une scène complète sur laquelle il n'y aura aucun contrôle direct. Cette seconde option est intéressante, car elle permet d'exploiter les textures de lumières par exemple.
Export de scènes
Lors de l'export d'une scène Unity, il peut être intéressant de supprimer la lumière solaire. VRmaze propose en effet un système d'éclairage permettant l'illuminer une scène complète avec une possibilité de configuration simple. Quelque soit le système d'éclairage choisi, il convient soit de supprimer l'éclairage dynamique de sa scène, soit de supprimer l'éclairage dynamique de VRmaze.
Caméra dans une scène Unity
Lors de l'export de l'Asset Bundle, il convient de supprimer l'ensemble des caméras de la scène. En effet, le rendu étant géré par VRmaze, il ne faut pas de caméra dans la scène sous risque de la voir s'activer en lieu et place des caméras VRmaze.
temps de chargement
Les temps de chargement des Assets Bundles peuvent être longs en fonction de la lourdeur des objets intégrés.
Fichier Manifest
Pour chaque fichier Asset Bundle créé, un fichier manifest du même nom est ajouté. Ce fichier manifest contient des informations humainement lisibles permettant de savoir les noms des objets et scènes contenues dans l'Asset Bundle. Ces noms sont utilisés dans VRmaze pour charger les données.
Nom des ressources dans VRmaze
VRmaze attend le nom de la ressource à charger dans le fichier Asset Bundle. Seul le nom est nécessaire, pas le chemin. Ainsi, pour la ressource inscrite ainsi : Assets/Scenes/BoatSceneExport.unity
, il faudra juste indiquer BoatSceneExport
dans l'objet Unity Scene de VRmaze.
URP + Assets Bundle + VR !
Moteur de rendu URP
Cette considération n'est à prendre en compte que lors de l'utilisation du moteur de rendu URP (par défaut à partir VRmaze 2023).
Asset bundle en VR avec URP !
Une considération spéciale est à prendre en compte lorsqu'on souhaite utiliser un Asset Bundle pour la VR avec le moteur de rendu URP.
Les Assets Bundles sont un peu particuliers dans la mesure où ils regroupent les shaders compilés dans le bundle. Ainsi, lorsque vous téléchargez un asset bundle, les matériaux du bundle utiliseront les shaders spécifiés dans le bundle plutôt que ceux inclus de VRmaze.
C'est normalement le comportement idéal, mais le fait de construire un Asset Bundle dans un projet externe qui a des paramètres de projet différents peut mener à de gros soucis d'affichage.
Puisque c'est le cas avec VRmaze, (vous construisez des Assets Bundles sans le projet VRmaze), vous pouvez rencontrer des problèmes lorsque les shaders du bundle ne supportent pas toutes les fonctionnalités requises par VRmaze.
Par exemple, si vous créez des assets bundles dans un projet qui n'a pas de module XR installé, le processus de construction supprimera toutes les instances de shaders XR dans votre bundle. Il en résultera que les shaders qui ne supportent pas le rendu instancié utilisé par VRmaze et ne seront visible que sur un des deux yeux !
Pour permettre une visualisation correcte d'un Asset Bundle chargé en VR, il convient de s'assurer que le projet construisant l'Asset Bundle suit ces recommandations :
- Extraire tous les matériaux
- Activer le module XR
- Activer le loader OpenVR
- Forcer l'intégration de tous les shaders
Extraction des matériaux
Il est probable que l'Asset Bundle est issue d'une modélisation externe (sous Blender, 3DS Max ou tout autre). Lorsque le fichier (Obj, FBX etc.) est importé dans le projet Unity, il convient d'extraire les matériaux et les textures ; cela permet de modifier ou ajuster les paramètres de chaque objet indépendamment.
Pour ce faire, il faut sélectionner le fichier de modélisation directement dans l'onglet projet de Unity, et cliquer sur le bouton d'extraction de matériaux.
pour en savoir plus : Page Unity
Activer le module XR
Pour permettre un affichage correct en VR, il convient d'indiquer que les shaders doivent intégrer les fonctionnalités VR. Pour ce faire, la première chose à faire est d'activer le module XR dans le projet Unity.
Il est nécessaire d'aller dans les propriétés du projet (Edit/ProjectSettings) et se rendre tout en bas de la liste des options du projet de manière à activer le module XR.
Installer le loader OpenVR
Par défaut, le loader OpenVR n'est pas disponible dans Unity. VRmaze repose sur ce loader pour permettre l'affichage en VR. Pour pouvoir l'activer, il convient tout d'abord d'installer le plugin SteamVR. Son installation est possible en téléchargeant le package (gratuit) depuis le magasin Unity ici
Une fois téléchargé, il devient disponible dans le package manager. Il faut tout d'abord le télécharger (via le bouton en bas à droite de la fenêtre) puis l'importer (avec le même bouton, toujours en bas à droite de la fenêtre).
Lorsque l'importation du plugin SteamVR est terminée, le projet Unity disposera de nouveaux dossiers de projet :
Ne pas omettre les shaders variants
Pour terminer l'intégration des données relative à la lecture VR avec URP, il convient d’indiquer à Unity de ne pas omettre de variantes de shaders. Pour ce faire, il suffit de garder toutes les variantes en se rendant dans les paramètres graphiques du projet (Edit/Project settings/Graphics).
Il suffit d'indiquer "Keep All" dans le paramètre "Instancing Variant" :
URP + Assets Bundle + Brouillard !
Moteur de rendu URP et mode de brouillard
Cette considération n'est à prendre en compte que lors de l'utilisation du moteur de rendu URP (par défaut à partir VRmaze 2023).
Brouillard dans un Asset bundle avec URP !
Une considération spéciale est à prendre en compte lorsqu'on souhaite utiliser un Asset Bundle pour la VR avec le moteur de rendu URP.
Tout comme pour un export d'asset bundle pour une experimentation VR, la prise en charge du brouillard n'est pas automatique lorsque l'on exporte des shaders spécifiques. En effet, une attention particulière doit être apportée pour être certain que l'utilisation du brouillard dans VRmaze fonctionne avec l'asset bundle exporté.
Dans le projet Unity, il convient d'exporter l'ensemble des shaders avec une prise en compte de l'ensemble des modes de brouillard. Cela se fait dans l'onglet "Graphics" de la fenêtre "Project Settings" au niveau des modes de brouillard. Il faut passer l'option en "Custom" et activer les 3 modes. Le fichier asset bundle résultant sera un peu plus lourd, mais il sera assuré d'être compatible avec VRmaze et son mode brouillard.