Personnages personnalisés

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Vous pouvez importer des maillages personnalisés pour créer tout, des PNJ à un tissu animé d'un bateau à voile. Nous avons utilisé le réglage personnalisé de l'Importateur pour amener des personnages personnalisés plus exotiques, comme les mystérieuses créatures de trou noir et les droïdes de service amicaux, mais inconscients.

Les sections suivantes expliquent comment nous avons utilisé l'animation de rigging et de skinning, PBR (apparence de surface), et les VFX pour construire l'un de nos personnages les plus compliqués que nous avons nommé le "Créature." Nous voulions qu'il brille, émette de la lumière, ait des traînées de fumée de particules, et un mouvement fluide qui nécessitait de skinner un rig avec suffisamment de joints pour créer les vagues convaincantes de ses tentacules.

Bannière de la Créature

Rig

Lorsque nous avons fait le rigging de la Créature, nous avons trouvé qu'il était préférable de modéliser le personnage dans une pose neutre, car cette pose est la mieux adaptée pour se plier dans plusieurs directions. Si nous avions modélisé la Créature avec ses tentacules déjà enroulés, cela aurait conduit à un étirement si nous avions animé les tentacules pour se plier dans la direction opposée. Les captures d'écran suivantes montrent la Créature dans son état naturel :

À partir d'une pose neutre, nous avons ajouté des joints de manière économique, en nous concentrant sur les zones qui nécessitaient le plus de mouvement. Moins il y a de joints, mieux c'est, car vous devrez les gérer lors du skinning de votre personnage, et vous aurez moins de chose à contrôler lorsque vous les animez. Dans les captures d'écran précédentes, la Créature semble avoir beaucoup de joints au centre, mais le corps principal n'a qu'un seul joint.

La plupart des autres joints sont vers les tentacules et les mandibules. Avec les tentacules, nous voulions beaucoup de mouvement secondaire, ou mouvement en couches, pour créer un effet convaincant qu'ils bougent tous d'eux-mêmes. Cependant, la masse centrale des tentacules était si proche qu'il semblait inutile de créer des joints pour chacun d'eux, tant pour les performances que pour l'effort d'animation. Nous avons donc traité la masse centrale comme un seul grand tentacule avec de plus petites "queues" là où les pointes quittaient la masse centrale.

Créature de Face, Maya

Nous avons trouvé les directives suivantes utiles afin que le maillage du personnage s'importe correctement dans Studio :

  • Les joints et os individuels doivent avoir des noms uniques.
  • Les maillages ne doivent pas avoir le même nom que les joints et os.
  • Les maillages ne doivent avoir aucune transformation avant le skinning/liage ; en d'autres termes, les transformations doivent être 0 et les échelles doivent être 1.
  • Les normales des maillages doivent faire face vers l'extérieur (le modèle ne doit pas être à l'envers).
  • Les squelettes ne doivent avoir aucun facteur d'échelle ; tous les joints doivent être [1, 1, 1].

Skin

Lorsque nous avons terminé le squelette de la Créature, l'étape suivante était de skinner le maillage. Le skinning peut être une tâche laborieuse, donc pour faciliter les choses, il est préférable de se familiariser avec les différents paramètres de skinning initiaux de votre application DCC pour trouver celui que vous préférez. Puisque c'est un personnage organique, nous l'avons skiné avec beaucoup de décroissance sur chaque joint et un chevauchement entre eux. De cette façon, la flexion se sent lisse et non aiguë. Les captures d'écran suivantes montrent un mauvais skinning et un skinning lisse respectivement :

Mauvais Skinning
Skinning Lisse

Nous avons trouvé que les directives suivantes produisent les meilleurs résultats pour le skinning :

  • Les influences de skinning (c'est-à-dire celles qui affectent une partie du modèle lorsqu'elles sont déplacées) ne doivent pas dépasser 4 influences par sommet.
  • Les noms des joints et des maillages doivent être uniques, tant les uns par rapport aux autres qu'entre eux.
  • Tout joint que vous souhaitez importer dans Studio doit avoir une certaine influence sur le skinning du modèle, sinon le moteur ne l'importera pas. Chaque fois que cela est possible, skinner votre modèle dans sa pose d'origine ou de "liage".

Importer le maillage dans Studio

L'importation de vos personnages personnalisés dans Studio est l'une des parties les plus excitantes du processus, car vous pouvez voir vos créations dans l'expérience que vous construisez !

Pour importer le maillage dans Studio :

  1. Exportez le personnage depuis l'application DCC et assurez-vous des éléments suivants :

    • Toutes les normales, échelles et noms sont corrects.
    • Le personnage a toute la hiérarchie de joints et d'os et tous les maillages.
    • Les maillages sont tous inférieurs à 10 000 triangles pour chaque partie du maillage.
    • La taille totale du maillage ne dépasse pas 2000 unités sur un axe quelconque.
    • Voir Exigences de maillage pour une liste complète des spécifications de modèle.
    Créature dans l'Outil DCC
  2. Dans l'Importateur, importez le fichier .fbx ou .obj personnalisé.

    Créature Importée dans Studio

Faire briller la créature

Une fois que le modèle de la Créature était stable et ne nécessitait plus aucune importation immédiate dans Studio, nous avons commencé à rassembler les objets SurfaceAppearance, lumières et effets visuels. Nous avons fait cela pour nous assurer que la qualité du modèle était suffisamment bonne avant de procéder à la mise en place et à l'édition de n'importe quel aspect.

Exemple de Créature Lumineuse

Nous savions que nous voulions que la Créature soit sombre, et que les points focaux soient les yeux et ses tentacules "attrapeurs". Les points de contraste élevés ont tendance à attirer l'attention, donc avoir quelques forts assure que le spectateur sache où se concentrer. Studio prend en charge des matériaux néon qui s'auto-illuminent, alors au début nous avons séparé les yeux pour qu'ils puissent être leur propre matériau par rapport au reste du personnage. Nous avons fait quelque chose de similaire pour les tentacules, afin qu'ils brillent uniquement sur leurs pointes.

Yeux de la Créature dans Studio

Le matériau néon n'émet pas de lumière réelle, donc après quelques tests, nous avons ajouté des parties séparées pour contrôler le placement et la direction de l'émission de lumière. Cela a assuré que l'éclairage était dirigé d'une manière à accentuer la brillance des yeux et à projeter sa propre source de lumière.

Lumière de Point dans Studio

Remarquez que les SpotLights ajoutent un flair visuel à la Créature près des autres surfaces ou d'un joueur.

Exemple de Lumière de la Créature

De plus, nous voulions que les tentacules de la Créature émettent des particules, afin qu'il laisse une traînée de fumée lorsqu'il se déplace. Comme les tentacules sont très longs, ajouter le ParticleEmitter à l'ensemble du tentacule ferait que les particules s'émettent du tentacule entier au lieu de la pointe. Pour remédier à cela, nous avons utilisé une petite partie positionnée près de l'extrémité du tentacule, afin de pouvoir contrôler la taille, le placement et la direction de l'émission des particules.

Exemple de Particule

Faire suivre les VFX par le personnage

Les positions de maillage du personnage skiné ne sont pas mises à jour lorsque la Créature s'anime, donc nous avions besoin d'une méthode pour nous assurer que les VFX, SFX, et lumières suivaient correctement la Créature. Pour accomplir cela, nous avons créé un script de contrôleur VFX et utilisé CollectionService pour informer les parties contenant les VFX où étaient les os de la créature et pour les suivre.

  1. Nous avons placé le LocalScript suivant dans StarterPlayerStarterPlayerScripts. Cela exécutera essentiellement la fonction de mise à jour VFX.

    Local Script

    -- Ajoutez ce snippet à un script local existant qui effectue des connexions PreSimulation
    local RunService = game:GetService("RunService")
    local vfx = require(workspace.VfxUpdateModule)
    RunService.PreSimulation:Connect(vfx.updateVfx)
    Module Script

    -- Ce module attache des parties aux animations afin qu'elles soient mises à jour au fur et à mesure que
    -- l'animation se joue. C'est une solution temporaire pour les limitations
    -- actuelles avec les Joints et les Os et ne sera pas toujours nécessaire.
    --
    -- Prérequis :
    -- Pour être inclus, les modèles doivent avoir le tag "AnimatedVfxModel", et un dossier
    -- de toutes les parties que vous souhaitez synchroniser avec l'animation. Chaque partie doit également avoir
    -- un attribut appelé "AttachedBoneName" qui fait référence au nom de l'os auquel vous souhaitez vous attacher. Les parties doivent également déjà être dans leurs
    -- positions correctes par rapport à l'os désiré.
    --
    -- À utiliser :
    -- Un LocalScript doit nécessiter ce module, puis connecter
    -- VfxUpdateModule.updateVfx à l'événement RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- CONFIGURATION - cela devrait s'exécuter une fois sur chaque client.
    -- Collectez tous les modèles avec le tag
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- où nous allons stocker toutes les parties et offsets
    -- Assignez une table à chaque modèle qui contiendra toutes les parties vfx et offsets
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Trouvez le dossier VFX
    -- Trouvez l'os via l'attribut et calculez l'offset pour chaque partie.
    for _,part in vfxParts do
    local name = part:GetAttribute("AttachedBoneName")
    local bone = model:FindFirstChild(name, true)
    if bone then
    local offset = (bone.TransformedWorldCFrame:inverse() * part.CFrame)
    vfxTable[model][part] = {bone, offset}
    else
    warn("La partie Vfx fait référence à un os qui n'a pas pu être trouvé.")
    end
    end
    end
    print(vfxTable)
    -- MISE À JOUR - Ceci devrait être lié à chaque RunService.PreSimulation du client
    -- Parcourez tous les modèles, puis mettez à jour toutes les parties du modèle pour correspondre au bonecframe.
    function VfxUpdateModule.updateVfx()
    for model, vfxParts in vfxTable do
    for part, bone in vfxParts do
    part.CFrame = bone[1].TransformedWorldCFrame * bone[2]
    end
    end
    end
    return VfxUpdateModule
  2. Nous avons créé un VFXUpdateModule ModuleScript pour dire à n'importe quel objet tagué correctement avec AnimatedVfxModel de se mettre à jour lors d'un événement de jeu.

  3. Nous avons tagué les groupes de modèles nécessaires avec AnimatedVfxModel en utilisant la section Tags de ses propriétés. L'utilisation de tags permet au VFXUpdateModule de savoir quel objet rechercher comme premier enfant VFX et d'appliquer la mise à jour.

    VFX dans l'Exemple de Studio
  4. Enfin, nous avons ajouté un attribut personnalisé AttachedBoneName à la partie que nous souhaitions animer et ajouté le nom précis du joint que nous voulions suivre.

Texturer la créature

Ensuite, nous avons configuré les cartes de texture PBR (Physically Based Rendered). Ces puissants bitmaps donnent à la créature le brillant varié et les variations de surface pour la faire ressembler à beaucoup de petites bosses et imperfections. Cet effet visuel aide à vendre l'apparence de la Créature lorsqu'elle est proche du joueur.

Comparaison de Texturage de la Créature

Voici comment nous avons créé les cartes de texture d'apparence de surface :

  1. Les cartes de texture pour ce personnage étaient toutes sur une "feuille" par carte. Cela rendait la créature plus efficace et signifiait que nous devions nous occuper de moins de cartes de texture ou d'objets SurfaceAppearance.

  2. Pour les zones qui doivent briller ou être auto-illuminées, comme les "tentacules attrapeurs", nous avons également utilisé la transparence sur le SurfaceAppearance pour fondre avec ces parties.

    Exemple d'Illumination

    Nous avons trouvé utile de suivre ces directives lors de la création de cartes de texture d'apparence de surface :

    • Assurez-vous que vos cartes ne soient pas plus grandes que 1024×1024.
    • Votre canal vert peut avoir besoin d'être inversé en fonction de l'application que vous avez utilisée.

Animer la créature

L'animation est très subjective et a un style personnel. Les options incluent la capture de mouvement, l'animation manuelle "keyframe" dans votre application DCC, ou l'utilisation du puissant Animation Editor de Studio.

Comme nous l'avons mentionné précédemment, nous voulions nous assurer d'avoir suffisamment de joints pour un mouvement fluide ainsi que suffisamment de membres, de sorte que l'animation de la créature semble naturelle et "couche". Le layering, aussi connu sous le nom de mouvement secondaire, est quelque chose que vous voyez dans la vie quotidienne - lorsque vous lancez votre bras, chaque joint réagit à l'impulsion initiale de votre bras supérieur, et chaque joint de votre corps ne bouge pas ou ne repose pas en même temps.

Nous avons utilisé cette technique pour animer la Créature de manière à ce que les membres réagissent au mouvement provoqué par son corps comme montré ici :

Exemple d'Animation de la Créature

Si vous utilisez une application DCC externe pour l'animation, nous avons constaté que les directives suivantes fonctionnent le mieux :

  • Réglez les taux de trame à au moins 30 FPS.
  • Créez vos animations avec le même personnage auquel vous les appliquez.
  • Exportez vos données d'animation sous forme de fichier .fbx séparé.

Parce que nous avons animé le personnage en dehors de Studio, nous devions utiliser le Animation Editor pour importer le fichier d'animation .fbx. L'éditeur vous permet de sélectionner n'importe quel avatar avec des joints ou des moteurs et de les animer via des points dans la chronologie.

Pour importer une animation :

  1. Dans l'onglet Avatar de la barre d'outils, cliquez sur Clip Editor.

  2. Sélectionnez le personnage rigged que vous souhaitez animer dans Roblox. Le personnage doit être le même que celui que vous riggez dans votre application DCC externe.

  3. Cliquez sur le bouton dans la partie supérieure gauche de la fenêtre de l'éditeur, sélectionnez Importer depuis FBX Animation, et localisez votre fichier d'animation .fbx exporté.

    Exemple d'Importation d'Animation 2
  4. Lorsque vous êtes satisfait de votre animation, vous pouvez l'exporter pour découvrir l'identifiant de l'animation, que vous pourrez ensuite utiliser dans des scripts Roblox pour les exécuter. Par exemple, vous pouvez ajouter un Script au groupe de modèles du personnage importé et utiliser le code suivant pour exécuter l'animation :

    Exemple de Script d'Animation

    local animationId = "VOTRE_ID_ANIMATION"
    local char = script.Parent
    local animController = char:FindFirstChildWhichIsA("Humanoid") or char:FindFirstChildOfClass("AnimationController")
    local animation = Instance.new("Animation")
    animation.AnimationId = "rbxassetid://" .. tostring(animationId)
    local animTrack = animController:LoadAnimation(animation)
    animTrack:Play(0, 1, 1)

Résultats finaux

Après quelques ajustements finaux des couleurs, des intensités lumineuses et quelques effets de particules supplémentaires pour donner un effet d halo plus fort devant les fenêtres, voici le résultat final dans la station spatiale !

Rendu Final de la Créature
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.