michagoose Posted November 15, 2018 Share Posted November 15, 2018 Hello! I've been dabbling in Babylon for a month or so now, and things are going well, but I'm getting caught up on this one problem: I have several avatars in a row. They all have jetpacks, but there should only be one active any time. I've parented the emitter fountain objects to each of the avatar's hip bones and then offset it so that it's behind the avatar roughly in the location of the jetpack on the mesh. It works fine for the avatar at (0,0) but the fountain doesn't seem to move when i translate each of the avatars into their final positions Isn't that what parenting does? It does rotate gently as my avatar moves in it's idle animation, so I know it's attached. Even if I don't set the position of the fountain, it still doesn't move along the x axis when my avatar does. I've tried to approximate my scene using the playground here: https://www.babylonjs-playground.com/#424Q55#2 The Rabbits are structurally a bit different from my meshes in terms of skeleton and my avatar's have no submeshes like the Rabbit does. You can see that although there are 6 different emitters, they're all at the same place. I've turned on the visiblity of the fountain so you can see it if you rotate the scene behind the avatars. A related problem I'm having (even when the avatar is at 0,0) is that when i rotate an avatar and animate it, the emitter follows the path of the avatar as if it wasn't rotate at all. Am I parenting incorrectly or missing a step? I know setting position changes the world position, but it seems like with the parenting, the x position should still change as the parent does. Thanks for any help you can provide! Quote Link to comment Share on other sites More sharing options...
Wingnut Posted November 15, 2018 Share Posted November 15, 2018 Hiya M, welcome to the forum. 12 minutes ago, michagoose said: I've parented the emitter fountain objects to each of the avatar's hip bones That might be the problem. Bones, as in skeleton/armature bones? Parent the emitters to the root or top-most mesh/transformNode... of the avatar (if possible). I'm no pro at these things, but try that. You'll still need to position-offset the (invisible) emitters so that they are at the avatar's hip-level and width. Once the emitters (fountains) are positioned and rotated as-wanted, you might wish to do some emitter.bakeCurrentTransformIntoVertices() calls on them. Notice that AFTER you do that, each emitter's .position and .rotation will be set to 0,0,0, yet the mesh didn't move at all. Sometimes a handy thing. Keep us posted on things learned, if anything. thx. Quote Link to comment Share on other sites More sharing options...
michagoose Posted November 16, 2018 Author Share Posted November 16, 2018 I tried parenting it at the top most mesh previously, but I tried it again just now with the addition of bakeCurrentTransformIntoVertices() . In the playground it worked mostly (perhaps some weird rotation of the particles but that's easily fixed): https://www.babylonjs-playground.com/#424Q55#3 But when I try it in my project, it doesn't have the same effect. (see the image below) Parenting to the top most mesh helps with the x transform position, but now the particle system doesn't move at all when the avatar does. (I should note, that unlike in the original playground I posted - in my scene when the system is parented to a bone, the particle system does move as the avatar animates, only the x transform is wrong) The code is basically the same minus a few unrelated elements that I removed in the playground and the avatars themselves. My avatars do have a submesh. I was wrong about that earlier, but the skeleton isn't nested inside it like the Rabbit, if that makes sense. My avatars are animating with a animation made in blender, instead of simply moving the x position like I'm doing in the playground. Could that be what's causing the difference in behavior? My best guess is that when the avatars where created they didn't animate the entirety of the avatar, just the innards. But the animator is long gone, so I have to work with what I have. Wingnut 1 Quote Link to comment Share on other sites More sharing options...
Guest Posted November 16, 2018 Share Posted November 16, 2018 Hello, if the bones are for in-place movement you could attach your particle system to a dummy mesh attached to a bone: https://www.babylonjs-playground.com/#11BH6Z#374 (here the bones animate the dude locally and I move it with dude.position) It would be perhaps easier if you could store one of your avatar somewhere so we could try with real data? Quote Link to comment Share on other sites More sharing options...
michagoose Posted November 16, 2018 Author Share Posted November 16, 2018 So it worked! I already had the dummy mesh, the fountain cube, but using attachToBone did the job. Strangely enough I'd tried using attachToBone previously, but I probably did it with the wrong combination of other variables. Thanks so much to both of you! Quote Link to comment Share on other sites More sharing options...
Guest Posted November 17, 2018 Share Posted November 17, 2018 With pleasure! Flagging as solved Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.