From 6df5546bf51f4e8bc2e27b5a26c7cd6241c7c94d Mon Sep 17 00:00:00 2001 From: root Date: Fri, 27 Mar 2026 20:02:26 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20correct=20animations=20page=20=E2=80=94?= =?UTF-8?q?=20shape=20keys=20(morph=20targets)=20are=20supported?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removes the incorrect claim that 'vertex animation is currently not supported by Decentraland's engine'. Shape keys / morph targets are confirmed to work in DCL. Updates both English and Spanish versions. Closes https://github.com/decentraland/docs/issues/65 --- creator-esp/3d-modeling/animations.md | 6 ++-- creator/3d-modeling/animations.md | 42 ++++++++++++++------------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/creator-esp/3d-modeling/animations.md b/creator-esp/3d-modeling/animations.md index 69fb2a4..89a7247 100644 --- a/creator-esp/3d-modeling/animations.md +++ b/creator-esp/3d-modeling/animations.md @@ -12,9 +12,11 @@ metaLinks: La animación es el arte de dar vida a las cosas. Y no hay mejor manera de hacer tu escena más viva que agregando algunas animaciones a tus modelos 3D. -Sin embargo, hay un par de formas de hacerlo: a través de **object animation** o a través de un **rig (skeletal animation)**. +Sin embargo, hay varias formas de hacerlo: a través de **object animation**, a través de un **rig (skeletal animation)**, o usando **shape keys (morph target animation)**. -**Object animation** es mejor para modelos simples, como una pelota rebotando, un globo girando o una silla flotante y no necesita un armature. Es importante mencionar que object animation es diferente de **vertex animation**. En object animation, el modelo se animará como un todo, mientras que en vertex animation, como su nombre lo dice, cada vértice del objeto puede ser animado por separado (lo cual es súper útil para crear shape keys, por ejemplo). Aunque object animation está perfectamente bien para usar, **vertex animation actualmente no es soportado por el motor de Decentraland**. +**Object animation** es mejor para modelos simples, como una pelota rebotando, un globo girando o una silla flotante y no necesita un armature. Es importante mencionar que object animation es diferente de **vertex animation**. En object animation, el modelo se animará como un todo, mientras que en vertex animation cada vértice del objeto puede ser animado por separado. + +**Los shape keys (también conocidos como morph targets o blend shapes)** son una forma de vertex animation que **son compatibles con el motor de Decentraland**. Son especialmente útiles para expresiones faciales, sincronización labial o cualquier deformación que sea difícil de lograr solo con huesos. Las animaciones de shape keys incrustadas en un archivo glTF/GLB se reproducirán en el mundo al igual que las animaciones esqueléticas o de objeto. Si tienes un modelo más complejo, como una persona, criatura o maquinaria, entonces necesitarás un **rig**. Un rig no es más que un esqueleto digital que moverá y deformará el mesh. El proceso de vincular el mesh al skeleton se llama Skinning, donde defines qué bone afectará a cada vertex group y qué tan fuerte será esa influencia, asegurándote de que el modelo se deforme de la mejor manera posible. diff --git a/creator/3d-modeling/animations.md b/creator/3d-modeling/animations.md index 5d6b2c7..daab4bc 100644 --- a/creator/3d-modeling/animations.md +++ b/creator/3d-modeling/animations.md @@ -6,15 +6,17 @@ description: >- # Animations -Animation is the art of bringing life into things. And there’s no better way to make you scene more lively then adding some animations to your 3D models. +Animation is the art of bringing life into things. And there's no better way to make you scene more lively then adding some animations to your 3D models. -There are a couple ways to do it though: through **object animation** or through a **rig (skeletal animation)**. +There are a few ways to do it: through **object animation**, through a **rig (skeletal animation)**, or using **shape keys (morph target animation)**. -**Object animation** is best for simple models, such as a bouncing ball, a spinning globe or a floating chair and it doesn’t need an armature. It’s important to mention that object animation is different from **vertex animation**. In object animation, the model will be animated as a whole, while in vertex animation, as the name says, each vertex of the object can be animated separately (which is super helpful for creating shape keys, for example). While object animation is perfectly fine to use, **vertex animation is currently not supported by Decentraland’s engine**. +**Object animation** is best for simple models, such as a bouncing ball, a spinning globe or a floating chair and it doesn't need an armature. It's important to mention that object animation is different from **vertex animation**. In object animation, the model will be animated as a whole, while in vertex animation each vertex of the object can be animated separately. -If you have a more complex model, such as a person, creature or machinery, then you’ll need a **rig**. A rig is nothing more than a digital skeleton that will move and deform the mesh. The process of binding the mesh to the skeleton is called Skinning, where you define which bone will affect each vertex group and how strong that influence is going be, making sure the model deforms in the best way possible. +**Shape keys (also known as morph targets or blend shapes)** are a form of vertex animation that are **supported by Decentraland's engine**. They are particularly useful for facial expressions, lip sync, or any deformation that is hard to achieve with bones alone. Shape key animations embedded in a glTF/GLB file will play in-world just like skeletal or object animations. -For either method, though, all animations of a 3D model must be embedded inside its _glTF_ file since you can’t reference animations in separate files. +If you have a more complex model, such as a person, creature or machinery, then you'll need a **rig**. A rig is nothing more than a digital skeleton that will move and deform the mesh. The process of binding the mesh to the skeleton is called Skinning, where you define which bone will affect each vertex group and how strong that influence is going be, making sure the model deforms in the best way possible. + +For either method, though, all animations of a 3D model must be embedded inside its _glTF_ file since you can't reference animations in separate files. ## Creating An Animation @@ -33,19 +35,19 @@ _Creating an animation clip and adding keyframes._ ### Rig Animation -For a rig animation, you’ll need an armature. If you want to do it yourself, see [Create a Rig](https://www.notion.so/686e6f59a1604585b059f990a36b2d55) for instructions on how to set up a consistent armature. +For a rig animation, you'll need an armature. If you want to do it yourself, see [Create a Rig](https://www.notion.so/686e6f59a1604585b059f990a36b2d55) for instructions on how to set up a consistent armature. -When the rigging is done and skinning has nice deformations, you’re ready to start your animation! The process is very similar to Object Animation, but instead of doing it in _**Object Mode**_, you will animate it in _**Pose Mode**_. +When the rigging is done and skinning has nice deformations, you're ready to start your animation! The process is very similar to Object Animation, but instead of doing it in _**Object Mode**_, you will animate it in _**Pose Mode**_. * Go to _**Pose Mode**_ and make sure you have the _**Dope Sheet**_ > _**Action Editor**_ tab open and click on _**New**_ to add an animation clip. * Rename it as you see fit and make sure to toggle _**Fake User**_ (the shield icon) so your animation is saved. * With the mouse on the _**Viewport**_, Press _**A**_ to select everything and then _**I**_ to set a keyframe to the whole armature. -* Move to a different frame in the timeline and manipulate the bone however you like to get the pose you want. You can change a bone’s location, rotation and scale depending on how you set your rig up. +* Move to a different frame in the timeline and manipulate the bone however you like to get the pose you want. You can change a bone's location, rotation and scale depending on how you set your rig up. * When you have a nice result, set another keyframe to the whole armature. Keep doing that until you finish your animation. Remember to have the first and last frames the same if the animation is going to loop. ![](../../.gitbook/assets/02_rig_animation_02.gif) -If you’re new to the animation process, check out this tutorial with some nice tips for beginners: +If you're new to the animation process, check out this tutorial with some nice tips for beginners: [![Video Preview](https://img.youtube.com/vi/-iWslh4uQIk/maxresdefault.jpg)](https://youtu.be/-iWslh4uQIk) @@ -71,13 +73,13 @@ In the video below, you will learn how to export multiple animations from Blende ## Exporting Many Animations as a Single One -Unlike in a skeletal animation, where you can rig multiple objects and combine their animations in a single animation clip, in object animation you can’t do that. The animations will be exported separately and only one object will play at a time. A solution for that is merging many animations into a single one, so you have an animation clip that has all objects moving at the same time. +Unlike in a skeletal animation, where you can rig multiple objects and combine their animations in a single animation clip, in object animation you can't do that. The animations will be exported separately and only one object will play at a time. A solution for that is merging many animations into a single one, so you have an animation clip that has all objects moving at the same time. To do that, push down to the _**Nonlinear Animation Track**_ the animation of every object, as shown below. ![](../../.gitbook/assets/03_object_animation_push_down_02.gif) -_Push down every object’s animation to the NLA Track._ +_Push down every object's animation to the NLA Track._ Once all the animations are listed on the NLA Editor, select all the objects, go to **File > Export > glTF2.0**. Expand Include and check Selected Objects. Expand Animation, expand Animation again and uncheck **Group by NLA Track**. You can rename the animation clip in Merged Animation Name and then just press **Export glTF 2.0**. @@ -85,7 +87,7 @@ Once all the animations are listed on the NLA Editor, select all the objects, go _Settings to export multiple animations as a single one._ -Keep in mind that this will only work if the objects have a single animation each. If the objects have multiple animation clips, it’s best to export them separately. +Keep in mind that this will only work if the objects have a single animation each. If the objects have multiple animation clips, it's best to export them separately. {% hint style="info" %} **💡 Tip**: Instead of creating your own animations, you can also download generic animations and apply them to your model. For example, for 3D characters with human-like characteristics, you can download free or paid animations from [Mixamo](https://www.mixamo.com/#/). @@ -97,7 +99,7 @@ Sometimes your animation file might end up being too heavy due to the amount of Sampling is a good way to optimize the animation. The sampling rate will define how often a keyframe will be baked in the animation. For example, if the sampling rate is set to 2, that means a keyframe will be created at every two frames. A sampling rate of 3 will bake a keyframe every three frames and so on. The higher the sampling rate, the lighter the file. -The drawback, however, is that the animation will start getting less and less fluid since it loses some important keyframes (they are distributed through the animation in an uneven way). It’s also important to notice that **sampling is NOT dividing the number of the animation’s frames by the sampling rate**. +The drawback, however, is that the animation will start getting less and less fluid since it loses some important keyframes (they are distributed through the animation in an uneven way). It's also important to notice that **sampling is NOT dividing the number of the animation's frames by the sampling rate**. Usually, a **sampling rate of 2 or 3** will do the trick. Those numbers can optimize the animation without compromising the quality. @@ -106,7 +108,7 @@ You can find the _**Sampling Rate**_ in the export settings, under _**Animation* ![](../../.gitbook/assets/05_sampling_rate.png) {% hint style="info" %} -**💡 Tip**: If the number of frames of the animation can be divided by the sampling rate, that’s a good thing! It means that the final frame will be baked, preserving the transition from end to start of the animation. +**💡 Tip**: If the number of frames of the animation can be divided by the sampling rate, that's a good thing! It means that the final frame will be baked, preserving the transition from end to start of the animation. {% endhint %} ## Implementing Animations @@ -115,13 +117,13 @@ This document covers how to add animations into a 3D model. See [**handle animat ## Best Practices for Animations -* Keep the armature as simple as possible, only create bones for the parts of the model that you intend to animate. Bones can affect performance, so make sure to only add what’s actually necessary. +* Keep the armature as simple as possible, only create bones for the parts of the model that you intend to animate. Bones can affect performance, so make sure to only add what's actually necessary. * If the animation is going to loop in your scene, make sure the final pose is identical to the starting one for better transition. -* Never leave have a character without animation, even if they aren’t actually doing anything. Create an “idle” animation for when the character is still. The idle can include subtle movements like breathing and perhaps occasional glances. -* Don’t leave bones unposed, like hands, fingers, head or neck. Details are really important in a good animation and stiff movement will only make it less believable. -* Avoid too many keyframes, unless it’s extremely necessary. The more keyframes you add, the higher the chances of getting bad interpolation and a heavier animation. +* Never leave have a character without animation, even if they aren't actually doing anything. Create an "idle" animation for when the character is still. The idle can include subtle movements like breathing and perhaps occasional glances. +* Don't leave bones unposed, like hands, fingers, head or neck. Details are really important in a good animation and stiff movement will only make it less believable. +* Avoid too many keyframes, unless it's extremely necessary. The more keyframes you add, the higher the chances of getting bad interpolation and a heavier animation. * Select all your bones (including the deforming ones) and set a keyframe on the first and last frames of your animation. This will avoid having bones with no information, causing one animation to affect the other unintentionally. -* Make sure your file only has one armature when you export it. When importing animations, an armature will also be imported with it. All animations must to be performed by the same base armature, so delete anything that you don’t need. +* Make sure your file only has one armature when you export it. When importing animations, an armature will also be imported with it. All animations must to be performed by the same base armature, so delete anything that you don't need. * Always rename your bones and animations. Keep everything organized! -* When exporting the _glTF_ model, confirm that you’re exporting all the objects and animations. Some exporters will only export the _**currently selected**_ by default. +* When exporting the _glTF_ model, confirm that you're exporting all the objects and animations. Some exporters will only export the _**currently selected**_ by default. * After exporting the model, inspect it in [Babylon Sandbox](https://sandbox.babylonjs.com/) and check if all animations are working and are named as expected.