Personnaliser les personnages

*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 mailles personnalisées pour créer tout, des PNJ à une veste animée d'un voilier de voile. Nous avons utilisé le paramètre personnalisé de l'Importateur d'Avatar (maintenant le 3D Importer ) pour amener plus de personnages personnalisés exotiques, comme les créatures noires mystérieuses et les droïdes de service amicaux, si malins.

Les sections suivantes couvrent comment nous avons utilisé rigue et skinning, PBR (apparence de surface) et VFX pour construire l'un de nos personnages les plus complexes que nous avons nommé le « Creature ». Nous voulions qu'il soit brillant, émette de la lumière, a des traces de fumée de particules et un mouvement fluide qui impliquait le skin d'un rig avec assez de joints pour créer les vagues convaincantes de ses tentac

Creature Banner

Rigging

Lorsque nous avons équipé la créature, nous avons trouvé qu'il était préférable de modéliser le personnage dans une posture neutre, car cette posture est la meilleure pour se courber dans plusieurs directions. Si nous avons modélisé la créature avec ses tentacules déjà courbés, cela aurait conduit à une étirement si nous animions les tentacules pour se courber dans la direction opposée. Les captures d'écran suivantes montrent la créature dans son état naturel :

À partir d'une posture neutre, nous avons ajouté des jointures économiquement, en fonction des zones qui nécessitaient le plus de déplacement. Le moins de jointures le mieux, car vous devrez les gérer lorsque vous skinnez votre personnage et vous aurez moins à contrôler lorsque vous les animerez. Dans les captures d'écran précédentes, la créature ressemble à elle a beaucoup de jointures au centre, mais le corps principal n'a qu'un seul articulation.

La plupart des autres articulations sont vers les tentacules et les mandibules. Avec les tentacules, nous voulions beaucoup de mouvement secondaire, ou de mouvement qui est couché, pour créer un effet convaincuant qu'ils se déplacent tous posséder. Cependant, la masse centrale des tentacules était si proche l'une de l'autre que cela semblait perdu de faire des articulations pour tous d'entre eux, à la fois

Creature Front, Maya

Nous avons trouvé que les lignes directrices suivantes étaient utiles, afin que le réseau de caractères importe correctement dans Studio :

  • Les articulations et os individuels doivent avoir des noms uniques.
  • Les mailles ne doivent pas avoir le même nom que les articulations et les os.
  • Les mailles ne devraient pas avoir de transformations avant de peaufiner/lier ; en d'autres termes, les transformations devraient être 0 et les écailles devraient être 1.
  • Les normales de maillage doivent être visibles de l'extérieur (le modèle ne devrait pas regarder à l'intérieur).
  • Les squelettes ne devraient pas avoir de facteur de mise à l'échelle ; toutes les articulations devraient être [1, 1, 1].

Skinning

Lorsque nous avons terminé le squelette de la créature, la prochaine étape était de peauner le maillage. Le peaulement peut être une tâche ardue, alors pour rendre les choses plus faciles, il est préférable d'être familier avec les différents paramètres de peaunement initial de votre application DCC pour trouver celui que vous aimez. Étant un personnage organique, nous l'avons peauné avec beaucoup de détail

Mauvais skinnage
Skinning lisse

Nous avons trouvé que les lignes directrices suivantes produisaient les meilleurs résultats pour le skinning :

  • Les effets de skinning (ceux qui affectent une partie du modèle lorsqu'ils sont déplacés) devraient être un maximum de 4 effets par vérité.
  • Les noms de jointure et de maillage doivent être uniques, tant entre elles qu'entre elles.
  • Toute jonction que vous souhaitez importer dans Studio doit avoir une certaine influence sur la skinningdu modèlisation, sinon le moteur ne l'importe pas. Lorsque c'est possible, skinnez votre modèle dans sa position d'origine ou attacher.

Importer le Mesh dans Studio

Importer vos personnages personnalisés dans Studio est l'une des parties les plus passionnantes du processus, car vous pouvez voir vos créations dans l'expérience que vous construction!

Pour importer le maillage dans Studio :

  1. Exportez le personnage de l'application DCC et assurez-vous que le suivre:

    • Tous les normaux, les écailles et les noms sont corrects.
    • Le personnage a toutes les hiérarchies articulaires et osseuses et toutes les mailles.
    • Les mailles sont toutes inférieures à 10 000 triangles pour chaque partie du maillage.
    • La taille totale de maillage n'est pas supérieure à 2000 unités dans n'importe quelle direction.
    • Voir exigences de maillage pour une liste complète de spécifications de modèle.
    Creature in DCC Tool
  2. Dans le importeur 3D, importez le fichier personnalisé .fbx ou .obj.

    Creature Imported Into Studio

Faire briller la créature

Une fois que le modèle de la créature était stable et n'exigeait plus d'importation immédiate dans Studio, nous avons commencé à assembler les objets de surface, les lumières et les effets visuels. Nous avons fait cela pour nous assurer que la qualité du modèle était suffisante avant de procéder à la mise en place et à l'édition de n'importe quelle partie de celui-ci.

Glowing Creature Example

Nous savions que nous voulions que la créature soit sombre, et que les points focaux soient les yeux et ses "grabby" tentacles. Les points de contraste élevés attirent l'attention, alors avoir quelques-uns en évidence garantit que le spectateur sait sur quoi se concentrer. Studio prend en charge les matériaux fluos qui se brillent, donc au début, nous avons séparé les yeux pour qu'ils puissent être leur propre matériau du reste du personnage

Creature Eyes in Studio

Le matériau néon ne diffuse 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 la lumière émise. Cela a assuré que l'éclairage était dirigé d'une manière pour améliorer le brillant des yeux et également pour projeter sa propre source de lumière.

Point Light in Studio

Remarquez que les SpotLights ajouter des fusées visuelles à la créature près d'autres surfaces ou d'un joueur.

Creature Light Example

En outre, nous voulions que les tentacules de la créature émettent des particules, afin qu'elle laisse derrière elle une trace de fumée lorsqu'elle se déplace. Étant donné que les tentacules sont très longs, l'ajout de la ParticleEmitter à la tige entière rendrait les particules émettre de la tige entière au lieu de la pointe. Pour combattre cela, nous avons utilisé une petite

Particle Example

Faire suivre les VFX par le personnage

Les positions de maillage du personnage habillé ne sont pas mises à jour lorsque les animations de créature s'exécutent, donc nous avons nécessité une méthode pour nous assurer que les VFX, SFX et lumières suivent correctement le personnage. Pour accomplir cela, nous avons créé un script de contrôle VFX et utilisé CollectionService pour informer les parties qui contenaient les VFX où les os de la créature étaient et pour les suivre.

  1. Nous avons placé le suivant LocalScript dans StarterPlayer → StarterPlayerScripts. Cela exécute essentiellement la fonction de mise à jour des VFX.

    Script local

    -- Ajoutez ce snippet à un script local existant qui fait PreSimulation
    -- connections
    local RunService = game:GetService("RunService")
    local vfx = require(workspace.VfxUpdateModule)
    RunService.PreSimulation:Connect(vfx.updateVfx)
    Script de module

    -- Ce module a attaché des parties aux animations afin qu'elles soient mises à jour comme
    -- l'animation joue. C'est un workaround pour les limites actuelles
    -- avec des articulations et des os et ne sera pas toujours nécessaire.
    --
    -- Prerequis:
    -- Pour être inclus, les modèles ont besoin de l'étiquette « AnimatedVfxModel » et d'un dossier
    -- de toutes les parties que vous souhaitez synchroniser avec l'animations. Chaque partie a besoin
    -- une variable appelée « AttachedBoneName » qui se réfère au nom de la
    -- os que vous souhaitez attacher. Les parties devraient également déjà être dans leur
    -- les positions correctes par rapport aux os souhaités.
    --
    -- Pour utiliser :
    -- Un script local devrait nécessiter ce module, puis connecter
    -- VfxUpdateModule.updateVfx à l'événement RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- SETUP - cela devrait s'exécuter une fois sur chaque client.
    -- Récupérez tous les modèles avec le tag
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- où nous stockerons toutes les pièces et les décalages
    -- Assignez une table à chaque modèle qui contiendra toutes les parties vfx et l'décentrage
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Trouvez le dossier VFX
    -- Trouvez le os via l'attribut et calculez le décalage 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("Vfx part refers to bone that could not be found.")
    end
    end
    end
    print(vfxTable)
    -- MISE À JOUR - Ceci devrait être lié à chaque client's RunService.PreSimulation
    -- Allez à travers tous les modèles, puis mettez à jour toutes les parties sur le modèle pour correspondre à la bombe à os.
    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 indiquer n'importe quel objet marqué avec AnimatedVfxModel à mettre à jour lors d'un événement de jeu.

  3. Nous avons marqué les groupes de modèles nécessaires avec le AnimationModel en utilisant le Éditeur de balises , accessible à partir de l'affichage onglet. L'utilisation des balises permet au 1>VFXUpdateModule1> de savoir lequel des objets rechercher en tant que premier enfant VFX et d'appliquer la mise à jour.

    VFX In Studio Example
  4. Enfin, nous avons ajouté une balise de nom personnalisée AttachedBoneName à la partie que nous voulions animer et ajouté le nom précis de la jonction que nous voulions qu'elle s'abonner.

Texture la créature

Ensuite, nous avons configuré les cartes de texture PBR (Physiquement basées rendues). Ces puissantes bitmaps donnent à la créature la couleur de surface et de texture variées pour qu'elle ressemble à s'il y a beaucoup de petits bumps et imperfections. Ce visuel effet aide à vendre l'apparence de la créature lorsqu'elle est plus proche du joueur.

Creature Texturing Comparison

Voici comment nous avons créé les cartes de surface :

  1. Les cartes de texture pour ce personnage étaient toutes sur une « feuille » par carte. Cela a rendu la créature plus efficace et a signifié que nous devions traiter avec moins de cartes de texture ou SurfaceAppearance d'objets.

  2. Pour les zones qui devaient briller ou être auto-illumées, telles que les « grabby tentacles », nous avons également utilisé la transparence sur le SurfaceAppearance pour se fondre dans ces parties.

    Illumination Example

    Nous avons trouvé utile de suivre ces lignes directrices lors de la création de cartes de surface :

    • Veillez à ce que vos cartes ne soient pas plus grandes que 1024×1024.
    • Votre canal vert peut nécessiter d'être retourné en fonction de l'application dans laquelle vous avez travaillé.

Animation de la créature

L'animation est très subjective et a un style personnel. Les options incluent la capturerde mouvement, l'animation de "key frame" à la main dans votre application DCC, ou l'utilisation du puissant éditeur d'animation de Studio.

Comme nous l'avons mentionné précédemment, nous voulions nous assurer que nous avions suffisamment de jointures pour le mouvement du liquide ainsi que suffisamment de membres, afin que l'animation de la créature se sente naturelle et «layered». Le «layering», également connu sous le nom de mouvement secondaire, est quelque chose que vous voyez dans la vie quotidienne – lorsque vous tirez votre bras dehors, chaque articulation réagit à l'impulsion initiale de votre bras supérieur et chaque articule dans votre corps ne se

Nous avons utilisé cette technique pour animuler la créature pour qu'elle se sente comme si les membres réagissaient au mouvement causé par son corps comme indiqué ici :

Creature Animation Example

Si vous utilisez une application DCC externe pour l'animations, nous avons trouvé que les lignes directrices suivantes fonctionnent mieux :

  • Définir des taux de cadence d'au moins 30 FPS.
  • Créez vos animations avec le même personnage que vous appliquez.
  • Exportez vos données d'animation en tant que fichier .fbx séparé.

Puisque nous avons animé le personnage en dehors de Studio, nous avons dû utiliser l'éditeur d'animation 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 conduire via des points dans le calendrier.

Pour importer une animations:

  1. Dans l'onglet Plugins, sélectionnez l'éditeur d'animation.

    Animation Editor In Studio
  2. Sélectionnez le personnage riggé que vous souhaitez animer dans Roblox. Le personnage doit être le même que vous le faites dans votre application DCC externe.

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

    Animation Import Example 1 Animation Import Example 2
  4. Lorsque vous êtes heureux avec votre animations, vous pouvez l'exporter pour découvrir l'ID de l'animation, que vous pouvez ensuite utiliser dans les scripts Roblox pour les exécuter. Par exemple, vous pouvez ajouter un Script au groupe de modèle du personnage importé et utiliser le code suivant pour exécuter l'animations:

    Animation Script Example

    local animationId = "YOUR_ANIMATION_ID"
    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 définitifs

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

Final Creature Rendering