How make the character's feet touch the gound?

Maybe I haven’t searched hard enough, but I have yet to see any gameplay where the characters feet actually touch the ground during battle. Seems a little odd to me, especially since Goku does a lot of fighting on the ground and even prefers it during the frieza saga

1 Like

I just downloaded the newest version of exporter, it’s OK ! the role plays normal now. thanks !

yes you are right. the newest version of exporter works well. thanks very much to Drigax!

1 Like

Big thanks also to the amazing contributors to the exporters as well @elpie89’s work helped improve our animation group export and import.

Glad we could help

1 Like

I am afraid I am asking too much. but it seems there’s more improvement ahead.

After loading, when I review the result in SandBox, in Babylon scene, these two objects can be retrieved using results.meshes[0] (it returns “Root”), and results.mesh[1] (it returns “Box02”). I found my character(in 3ds max called “Box02”) now becames a child of the auto-generated node called "Root“. In fact, the one who stands above the ground is mesh1, other than mesh0.

Now this brings up more problems, since mesh1 is a child of its parent, so any movements have to be opearted by moving or rotating its parent. It means I cannot directly opearte mesh1, even though mesh1 shows up above the ground perfectly.

when I tried to move or rotate the character,my question is , I should work on the which mesh, the Root(mesh0) or the Box02(mesh1) ? I tried out them one by one. when I tried the mesh1(Box02), it cannot be moved or rotated. I guess because it is a child so any movement or rotation should be done on its father . so I tried out mesh0(root), it is it can be moved and rotated, but it seems it is buried half in gorund.

What do you suppose I do in order to move or rotate my character ?

I think we’re conflating the usage of the root node. That node exists for the purpose of converting the character glTF’s right handed coordinate space to the scene’s left handed space. We have to create this node on load, else the character data would appear mirrored.

When animating skeletons, your character mesh is now irrevelant. No matter what you do to the mesh transform, the actually rendered mesh is skinned to your armature, and will always “follow” the bones in your skeleton hierarchy.

Now, how to control this effectively? I suggest only making changes to the character root in scene (the generated root node, as that node is local to the game world, and our character is already reckoned to it. Depending on your application, you may only care about driving everything using animation created in Maya (like, say an uninteractive scene or movie), but as soon as you add movement logic driven by Babylon, we want to keep this as simple as possible to move our model in the world.

I see that we also have some walk cycles that move the character, as well, I recommend against doing so, as we don’t explicitly support root motion animation, and it may take some additional logic to keep the generated root true to the skeleton root. Our character skeleton root will move, while it’s actual root in scene stays static. I assume that the bounding box will have to be constantly recalculated each frame to remain accurate to the new skeleton location, but I haven’t tested that assumption.

@Deltakosh what do you usually suggest regarding controlling a glTF model in Babylon?

sorry for replying so late. and thank you very much!
as you said, the skeleton root looks the best object to move as long as it actually moves the armature.but additional logic is necesary do handle after loading.

Since my purpose is simple: to move and turn the whole character. so I have created an invisible box and I parented it to the root node. But the imported animation groups have an issue: it continues to play without stopping.
Now that I have multiple animation groups for different characters loaded, and every animation group has several animations, therefore how to stop looping a certain animation group is very important. Can you please tell how to stop looping while paying them?

as in the video, the character being hitted and then should lie down to die, once he die, he should be lying down there, but now he continues lying down for ever.

I checked the Animation Group document, there is a loopAnimation boolean there, but it seems not workable, or I do not use it correctly.

,

OK,it’s solved, by adding more observable to serve “die”-once add, delete the observer and play animation. this way later no observer can trigger “die” again.
Anyway thanks Drigax,Sebvan a lot!

2 Likes

No replyyyyyy…???

Maybe because you should create a specific thread for it?