BVH import?

Discuss ideas for new features with other users. To submit feature requests to Smith Micro, please visit support.smithmicro.com

Moderators: Víctor Paredes, Belgarath, slowtiger

Post Reply
User avatar
neeters_guy
Posts: 1614
Joined: Mon Sep 14, 2009 7:33 pm
Contact:

BVH import?

Post by neeters_guy »

So as to not go off topic, I decided to start a new thread based on jahnocli's comment from this thread new to moho - some very general questions:
jahnocli wrote:neeters_guy mentioned that "...taking 3D data and mapping it onto 2D is a non-trivial task..." Well, I'm *sure* I've mentioned this before, but the interestingly-named Awesome Animator can do this, and the developer just seems to be 'some guy'. Maybe Smith Micro could buy his company and use the code? Or something?
So a little explanation. The "non-trivial" aspect was my paraphrase of the comment made by Lost Marble in 2004:
Lost Marble wrote:I think it would be really difficult to flatten the animation data like you describe. Moho is 2D, so the thinking is that you could just remove one dimension. However, as an artist, you usually want at least a little appearance of depth in a 2D cartoon drawing, otherwise it looks like a grade schooler's drawing.

Once you arrange a character's parts in a 2D plane to give the appearance of depth, I don't think there's an accurate mapping from a true 3D space to that 2D projection. For example, if a character is supposed to be partially turned away from the camera, you might position the further shoulder joint a little bit higher than the nearer one. But that's just an arbitrary position - there's no real notion of 3D there. Moho would have no way of knowing that you intended one arm to appear further from the camera, or whether the character's shoulders were at different heights.
Given that, I thought I'd give jahnocli's suggestion a go. I installed the trial of Awesome Animator (AA) and it does indeed have an import bvh option. I searched on google and found a bunch of free bvh files here: CMU Graphics Lab Motion Capture Database

For my test, I chose the smallest file, 08_10.bvh, a simple walk cycle. Here's a screenshot of Awesome Animator after import:

Image

I then rendered it out and compared it against the animated clip from the CMU website. Here's a side-by-side comparison.

Image

What do you think? I'll let you draw your own conclusion insofar as how well AA implements bvh import. Would this be a useful addition to Moho's feature set?

It occurs to me that since bvh is a text format, perhaps it can be implemented as a script?

Anyway, I hope this post helps illuminate the topic further.
User avatar
jahnocli
Posts: 3471
Joined: Fri Oct 29, 2004 2:13 pm
Location: UK

Re: BVH import?

Post by jahnocli »

Interesting. I have to declare a vested interest here! Obviously there are some compromises, but I think it would be very useful.
You can't have everything. Where would you put it?
chucky
Posts: 4650
Joined: Sun Jan 28, 2007 4:24 am

Re: BVH import?

Post by chucky »

I've been pretty keen on this idea for years, I've pleaded a case for this tech many times... I'll add my support to your suggestion here too..
yeah.
User avatar
SimplSam
Posts: 1033
Joined: Thu Mar 13, 2014 5:09 pm
Location: London, UK
Contact:

Re: BVH import?

Post by SimplSam »

A little New Years treat! BVH import and animation in Moho 12 (theoretically it should also work in AS 10/11).

I will post a more detailed HOWTO shortly - but here is a little teaser to keep you going ...

Moho 14.1 » Win 11 Pro 64GB » NVIDIA GTX 1080ti 11GB
Moho 14.1 » Mac mini 2012 8GB » macOS 10.15 Catalina
Tube: SimplSam


Sam
User avatar
jahnocli
Posts: 3471
Joined: Fri Oct 29, 2004 2:13 pm
Location: UK

Re: BVH import?

Post by jahnocli »

I LOVE YOU!!! Now that's what I call a teaser! And in a different universe I would want to marry you and have your babies!
You can't have everything. Where would you put it?
chucky
Posts: 4650
Joined: Sun Jan 28, 2007 4:24 am

Re: BVH import?

Post by chucky »

iteque , you freakn genius!

I had to check this wasn't an April fools joke.

I knew this was possible, what a great thing you have done!

OK so it's not perfect yet , I see.
A couple of places aren't properly tracking/ the 2d bone length doesn't match, quite.

This is certainly a teaser and hopefully a start to some exciting possibilities.
Well done iteque, creature of the arcane ways.
Thankyou for sharing your mystical invention.

Oh side note:
I hadn't seen the lost marble quote about the impossibilities of this.
I found that quite strange, tracking 2d from 3d seems (in theory) as simple as the process of rendering. If the picture plane can see the 3d object as a 2d translation then sure mapping bones position back from the picture plane into a 2d scene would be just the reverse of the 3d render?
I really know nothing about these processes other than what my eyes see and my own brain does when I draw from a 3d object. If my amoebic brain can do it then sure moho can.
I'd love to know how you have done this.
I guess the bvh part is just ( in a manner of speaking - it is certainly an achievement) extruded shapes rotating as per the bvh instructions.
The real magic here is how you go the 2d rig to puppet from the 3d.

C'mon give us a taste, eh? 8) :D
User avatar
DK
Posts: 2849
Joined: Mon Aug 09, 2004 6:06 am
Location: Australia

Re: BVH import?

Post by DK »

Wa wa wa WA? :shock:

D.K
User avatar
SimplSam
Posts: 1033
Joined: Thu Mar 13, 2014 5:09 pm
Location: London, UK
Contact:

Re: BVH import?

Post by SimplSam »

Thanks for the thumbs up's...

A simplified summary of what's going on:

- Load BVH file into memory
- Capture Frame count/rate and set Moho Frame rate
- Draw 2D Bones T-Pose (Frame 0) - using regular Moho bones
- Draw 3D Bones T-Pose (Frame 0) - using extruded Vectors (each bone has its own layer **)
- Frame-by-Frame Animate the 3D Bone group layers using X,Y,Z Translation of root bone and X,Y,Z Rotation of non-root bones
- Frame-by-Frame Animate the 2D Bones using X,Y,Z Translation of root bone and Z Rotation of non-root bones

** Each 3D bone layer is parented by a Group layer, which also parents any child bone group layers. The Translations or Rotations are applied to the parenting Group Layer. In this way the movements of a Parent bone automatically affect the Child bones, and Child bones (layers) only need to move relative to their parent - in a similar fashion to Moho 2D bones. The Root bone is normally a central hip bone or similar. The 2D and 3D bones have no real relation - other than the 'final' z-rotaional value of the 3D bone (after XYZ rotations) is used to set the z-rotation of its 2D sibling.

3D Bone layer example:

Code: Select all

	{> LeftUprArm Group layer <}
	  (LeftUprArm Vector draw layer) 

	    {> LeftLwrArm Group layer <}
	      (LeftLwrArm Vector draw layer)

	        {> LeftHand Group layer <}
	          (LeftHand Vector draw layer)
Moho 14.1 » Win 11 Pro 64GB » NVIDIA GTX 1080ti 11GB
Moho 14.1 » Mac mini 2012 8GB » macOS 10.15 Catalina
Tube: SimplSam


Sam
User avatar
SimplSam
Posts: 1033
Joined: Thu Mar 13, 2014 5:09 pm
Location: London, UK
Contact:

Re: BVH import?

Post by SimplSam »

I have created the "Official" v1.0 (#470402.02) release topic, notes & video at: viewtopic.php?f=12&t=30778

Enjoy!
Moho 14.1 » Win 11 Pro 64GB » NVIDIA GTX 1080ti 11GB
Moho 14.1 » Mac mini 2012 8GB » macOS 10.15 Catalina
Tube: SimplSam


Sam
Post Reply