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 mailles personnalisées pour créer tout, des PNJ à un tissu animé d'un voilier.Nous avons utilisé le paramètre personnalisé du 3D Importer pour introduire des personnages personnalisés plus exotiques, comme les créatures mystérieuses du trou noir et les droïdes de service amicaux, mais inconscients.

Les sections suivantes abordent la façon dont nous avons utilisé la fixation et le gainage, l'apparence de la surface PBR (apparence de la surface) et VFX pour construire l'un de nos personnages plus complexes que nous avons nommé la "Créature". Nous voulions qu'il brille, émette de la lumière, ait des traces de fumée de particules et une mobilité fluide qui impliquait le gainage d'un rig avec assez de jointures pour créer les vagues convaincantes de ses tentacules.

Creature Banner

Rigueur

Lorsque nous avons rigté la créature, nous avons trouvé qu'il était préférable de modéliser le personnage dans une position neutre, car cette position est la meilleure pour se plier dans plusieurs directions.Si nous avions modélisé la créature avec ses tentacules déjà courbés, cela aurait entraîné une déformation si nous avions animé 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 position neutre, nous avons ajouté des articulations de manière économique, en nous concentrant sur les zones qui avaient le plus besoin de mouvement.Plus il y a moins de jointures, mieux c'est, car vous devrez les gérer lors du découpage de votre personnage et vous aurez moins à contrôler lorsque vous les animez.Dans les captures d'écran précédentes, la créature semble avoir beaucoup de jointures au centre, mais le corps principal n'a qu'une seule articulation.

La plupart des autres jointures sont vers les tentacules et les mâchoires.Avec les tentacules, nous voulions beaucoup de mouvement secondaire, ou de mouvement qui est superposé, pour créer un effet convaincant selon lequel ils se déplacent tous posséder.Cependant, la masse centrale des tentacules était si proche les uns des autres que cela semblait dommageux de faire des jointures pour tous, à la fois sur la performance et l'effort pour les animer.Donc, à la place, nous avons traité la masse centrale comme un seul grand tentacule avec des «queues» plus petites où les pointes ont quitté la masse centrale.

Creature Front, Maya

Nous avons trouvé les directives suivantes utiles afin que la mise en importation du personnage se fasse correctement dans Studio :

  • Les articulations et les os individuels doivent avoir des noms uniques.
  • Les mailles ne doivent pas avoir le même nom que les jointures et les os.
  • Les mailles ne doivent pas avoir de transformations avant d'être skinées/ligotées ; en d'autres termes, les transformations doivent être 0 et les échelles doivent être 1.
  • Les normales de maillage doivent se tourner vers l'extérieur (le modèle ne doit pas regarder à l'intérieur).
  • Les squelettes ne devraient pas avoir de facteur d'échelle ; toutes les articulations devraient être [1, 1, 1].

Peau

Lorsque nous avons terminé le squelette de la créature, la prochaine étape était de peaufiner le maillage.L'écorçage peut être une tâche ardue, alors pour faciliter les choses, il est préférable de connaître les différents paramètres d'écorçage initial de votre application DCC pour trouver celui que vous aimez.Puisque c'est un personnage organique, nous l'avons habillé avec beaucoup de chute sur chaque articulation et de chevauchement entre elles.De cette façon, le pliage se sent lisse et non pointu.Les captures d'écran suivantes montrent un mauvais skinning et un skinning lisse respectivement :

Mauvais façonnage
>

Skinning lisse
>

Nous avons trouvé les directives suivantes qui ont produit les meilleurs résultats pour l'skinning:

  • Les influences de skinning (c'est-à-dire qu'elles affectent une partie du modèle lorsqu'elles sont déplacées) doivent être un maximum de 4 influences par vertex.
  • Les noms joints et de maillage doivent être uniques, à la fois l'un envers l'autre et entre eux.
  • Toute jointure que vous souhaitez importer dans Studio doit avoir une certaine influence sur le skinning du modèlisation, sinon le moteur ne l'importe pas.Lorsque cela est possible, habillez votre modèle dans sa position d'origine ou de « attacher».

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 construction!

Pour importer le maillage dans Studio :

  1. Exporter le personnage de l'application DCC et assurer ce qui suivre:

    • Tous les normaux, les échelles et les noms sont corrects.
    • Le personnage a toute la hiérarchie des jointures et des os et toutes les mailles.
    • Les mailles sont toutes inférieures à 10 000 triangles pour chaque partie du maillage.
    • La taille totale du maillage ne dépasse pas 2000 unités dans n'importe quel axe.
    • Voir exigences de maillage pour une liste complète des spécifications de modèle.
    Creature in DCC Tool
  2. Dans le 3D Importer, 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 ne nécessitait plus d'importation immédiate dans Studio, nous avons commencé à assembler les objets SurfaceAppearance, les lumières et les 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 d'un seul aspect 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 tentacules « saisissants ».Les points forts de contraste ont tendance à attirer l'attention, de sorte que l'avoir quelques forts en garantit que le spectateur sait sur quoi se concentrer.Studio prend en charge les matériaux fluo qui s'éclairent eux-mêmes, donc au début, nous avons séparé les yeux pour qu'ils puissent être leur propre matériau du reste du personnage.Nous avons fait quelque chose de similaire pour les tentacules, afin qu'ils ne brillent que sur leurs extrémités.

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 la position et la direction de l'émission de lumière.Cela a garanti que l'éclairage était dirigé d'une manière pour améliorer la lueur des yeux et projeter également sa propre source de lumière.

Point Light in Studio

Remarquez que le SpotLights ajoute une touche visuelle à 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'ils laissent une trace de fumée lorsqu'ils se déplacent.Comme les tentacules sont très longs, l'ajout du ParticleEmitter à l'ensemble des tentacules ferait émettre les particules de l'ensemble des tentacules au lieu du bout.Pour combattre cela, nous avons utilisé une petite partie positionnée près de la fin du tentacule, afin que nous puissions contrôler la taille, la position et la direction des particules émises.

Particle Example

Faire suivre le 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, les SFX et les lumières suivaient correctement la créature.Pour ce faire, nous avons créé un script de contrôleur VFX et utilisé CollectionService pour informer les parties qui contenaient le VFX où se trouvaient les os de la créature et pour les suivre.

  1. Nous avons placé la fonction suivante LocalScript dans StarterPlayerStarterPlayerScripts . Cela exécute essentiellement la fonction de mise à jour VFX.

    Écriture locale

    -- Ajoutez cette balise à un script local existant qui fait la pré simulation
    -- connexions
    local RunService = game:GetService("RunService")
    local vfx = require(workspace.VfxUpdateModule)
    RunService.PreSimulation:Connect(vfx.updateVfx)
    Script du module

    -- Ce module a attaché des parties aux animations afin qu'elles soient mises à jour comme le
    -- les animations jouent. C'est une contourner les limites actuelles
    -- avec des articulations et des os et ne sera pas toujours nécessaire.
    --
    -- Prérequis :
    -- Pour être inclus, les modèles ont besoin de la balise "AnimatedVfxModel" et d'un dossier
    -- de toutes les parties que vous souhaitez synchroniser avec l'animations. Chaque partie a besoin
    -- un attribut appelé « Nom de la colonne attachée » qui fait référence au nom de la
    -- os auquel vous voulez vous attacher. Les parties devraient également déjà être dans leur
    -- positions correctes par rapport à l'os souhaité.
    --
    -- À utiliser :
    -- Un script local devrait exiger ce module, puis se connecter
    -- VfxUpdateModule.updateVfx à l'événement RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- PARAMÉTRAGE - cela devrait s'exécuter une fois sur chaque client.
    -- Récupérer tous les modèles avec la balise
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- où nous allons stocker toutes les parties et les compensations
    -- Attribuez une table à chaque modèle qui tiendra toutes les parties VFX et les décentrage
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Trouvez le dossier theVFX
    -- Trouvez l'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 - Cela devrait être lié au RunService.PreSimulation de chaque client
    -- Passez en revue 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 à tous les objets étiquetés de manière appropriée avec AnimatedVfxModel de se mettre à jour sur un événement de jeu.

  3. Nous avons étiqueté les groupes de modèles nécessaires avec le AnimatedVfxModel en utilisant l'éditeur de balises, accessible à partir de l'onglet Affichage , accessible à partir de l'onglet Affichage.L'utilisation de balises permet au VFXUpdateModule de savoir quel objet rechercher en tant que premier enfant VFX et d'appliquer la mise à jour.

    VFX In Studio Example
  4. Enfin, nous avons ajouté un attribut personnalisé Nom d'os attaché à la partie que nous voulions animer et ajouté le nom précis de la jointure que nous voulions s'abonner.

Texture la créature

Ensuite, nous configurons les cartes de texture PBR (rendu physiquement basé).Ces puissantes cartes de bits donnent à la créature une variété de reflets et de variations de surface pour lui faire ressembler à avoir beaucoup de petits boss et d'imperfections.Cet effet visuel aide à vendre l'apparence de la créature quand elle est plus proche du joueur.

Creature Texturing Comparison

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 traiter avec moins de cartes de texture ou SurfaceAppearance d'objets.

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

    Illumination Example

    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 sont pas plus grandes que 1024×1024.
    • Votre canal vert peut avoir besoin d'être retourné en fonction de l'application dans laquelle vous avez travaillé.

Animer la créature

L'animation est très subjective et a un style personnel.Les options incluent la capturerde mouvement, l'animation de « cadre clé » à 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 fluide ainsi que suffisamment de membres, afin que l'animation de la créature se sente naturelle et "en couches". Le layering, également appelé mouvement secondaire, est quelque chose que vous voyez dans la vie quotidienne — lorsque vous déployez votre bras, chaque articulation réagit à l'impulsion initiale de votre bras supérieur, et chaque articulation de votre corps ne se déplace pas ou ne se repose pas en même temps.

Nous avons utilisé cette technique pour animer la créature pour qu'elle se sente comme si ses membres réagissaient au mouvement dirigé par son corps comme illustré ici :

Creature Animation Example

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

  • Définissez les taux de cadre à au moins 30 FPS.
  • Créez vos animations avec le même personnage auquel vous les appliquez.
  • Exporter vos données d'animation en tant que fichier séparé .fbx.

Comme 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 articulations ou des moteurs et de les conduire via des points dans la timeline.

Pour importer une animations:

  1. Dans l'onglet Avatar de la barre d'outils, ouvrez le éditeur d'animation .

  2. Sélectionnez le personnage riggé que vous voulez animer dans Roblox. Le personnage devrait être le même que celui que vous riggez 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 de l'animation FBX , et localisez votre fichier d'animation .fbx.

    Animation Import Example 2
  4. Lorsque vous êtes satisfait de votre animations, vous pouvez l'exporter pour découvrir l'ID d'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 finaux

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

Final Creature Rendering