PDA

View Full Version : Transferring usable weights to other applications (Motion Builder and Animeeple)



Greenlaw
01-17-2011, 09:10 AM
I'm trying to move a Lightwave character to other applications via LW 10's FBX exporter to other programs, specifically Motion Builder and Animeeple. I currently have everything worked out except for the issue of weights. When I bring a character into these programs, the deformations look bad. So bad, in fact, that it's completely useless to see what's happening, and I have to hide the mesh and just work with the bones (not an ideal situation.)

I should add that the character deforms nicely in Lightwave.

Based on what I can glean from forum discussion posts, I understand a few things about the problem, but without any official documentation I'm just guessing about the problem. I am hoping that some expert users here (maybe computer game artists?) could share a few tips on how to do this successfully.

I understand there are basically two problems:


Lightwave allows you to play a bit loose when creating and setting weight maps but other applications require weight maps to be absolutely normalized to 100.

LW FBX does not allow you to export Lightwave weights and it will generate its own weights. The result is not very good though as seen in the attached image.

What I want to know is, if I 'properly' normalize my weights, will Lightwave then allow me to export them in FBX? Also, how do I go about doing this? Please keep in mind that I've only done this sort of thing in Lightwave, and I have only minimal experience with painting weights in Maya.

Or...will I have to recreate the weighting in another application? (Like Motion Builder or Maya, for example.)

BTW, For my current project, I do not need the deformations to look 100% exact in MB or Animeeple as they appear in Lightwave, but I do need them to be more useable than what's shown in the image below.

Thanks in advance for any helpful information!

Greenlaw

RebelHill
01-17-2011, 09:56 AM
Transferring out of LW using the valkyrie plugin (LWs native FBX export/import)... LW appears to "auto weight" the mesh for you, so taht every bone has its own weightmap. The problem Ive found, working with joints, is that LWs joint system is backwards to every other package...

Normally, you have the joint portion (the actual pivot point) and the deformer portion exists below it (hierarchically speaking). However LW has the deformer portion ABOVE the joint pivot... (which to my mind is nuts), but which causes the auto weighting to be set 1 position back. So your upper arm weight is on the shoulder area, you arm roll weight is over the upper arm, the forearm weight is on the lower portion of the upper arm, etc, etc.

It also performs this autoweight, it seems, jsut by the proximity of a vertex to the given bone... so a big fat cartoon head that has vertices very near to the arm joints, will pick up weight to those arm joints, etc.

I havent worried too much about this problem thus far for my own needs, but it could certainly be fixed.

Ive yet to try assigning an individual weight to each joint in LW, to see if that flies, or if LW just overrides it or not, but it's one thing I wanna check out before crying bug too much on this issue.

As for the normalisation thing, in my experience, MB doesnt care if the weights aren't normalised across the entire mesh, and having 100% weight for each weightmap has always worked jsut as well as normalised weights... though this was back in earlier versions of LW where I used the Alias fbx plugins... if these normalised the weights as part of the export they did, I have no idea... but I never needed to set them up that way in LW at least.

Greenlaw
01-17-2011, 11:56 AM
Thanks for the information RH! You've done so much to help me with my project and I really appreciate it. :)

I'm going to try a few more tests tonight, including using TA Normalize Bone Weights (http://loupguru.com/store/index.php?main_page=product_info&products_id=45&zenid=c8237a7d2043ba058855275b0ecace2a). Even if the result isn't quite what I need here, it sounds like a good tool keep on-hand. (I've already found TA Rig-Ripper/Stitcher and TA Poseworks to be huge timesavers on this project.)

If I can't get a working LW-2-MB solution for weights, I'll look into weighting directly in MB. (This might be the way to go. I don't know how weight mapping is done in MB yet but I don't need the results to be perfect, I just need it done quickly and to be useable in MB.)

G.

Greenlaw
01-17-2011, 02:55 PM
Two quick questions to any game developers out there: How do you do it? Or do you not bother weighting in LW and just use whatever?

Thanks in advance for any helpful info.

G.

Greenlaw
01-18-2011, 12:54 AM
Tonight I learned how to work with weighting in Motion Builder. As it turns out, this is very easy to do: Open the Skins panel, drag in your character into the Model column, and all its bones, selected vertices and weight values will appear in the respective columns. Then it's just a matter of selecting vertices and tweaking the sliders for each bone. One nice option makes the panel automatically load the bones that influence the vertices you selected. Sweet!

I can see how this process could get tedious for weighting a character from scratch, but for fixing obvious problems (like in the image above) it works pretty well.

Anyway, this may solve my 'bad deformations' problem for now but I'm still interested in hearing how other users deal with exporting LW weight maps to other applications.

G.

warmiak
01-18-2011, 01:18 AM
Two quick questions to any game developers out there: How do you do it? Or do you not bother weighting in LW and just use whatever?

Thanks in advance for any helpful info.

G.

Frankly, it is up to you... whichever app provides you with better tools for assigning weights because ultimately, you will have to have weights on your model if you are targeting a game engine ( animating with Lightwave native bones and their influences without or with minimal weights is irrelevant because it won't reflect your true deformations once you get to the point where you have to export to a game engine where every vertex has to have its own set of weights - so may as well start with a fully weighted model to begin with)

Greenlaw
01-18-2011, 02:52 AM
Ah! Much better.

Unfortunately, as I was finishing this up I saw a small tweak I need to make to the forearm joints. If I make the rig change in Lightwave and import the new FBX to MB, is it possible for me to swap the mesh with this one that has the corrected weights? Or somehow transfer the new MB weights to the mesh imported to MB?

Thanks in advance for any help.

G.

UnCommonGrafx
01-18-2011, 04:58 AM
It should just pick up the changes.
I'm latching on to read and learn from your research.

Edit: haha, they, AD, really are homogenizing their product line. That's the navigator from autosketch (I think is the name.) Interesting...

Greenlaw
01-18-2011, 10:39 AM
It should just pick up the changes.
I'm latching on to read and learn from your research.
I don't think MB works that way. When I import the LW FBX, it will contain what I export from LW, which would be the weights generated by Valkyrie.

That gives me an idea though. For exporting from LW, I could replace the original LW weighted object with the MB weighted version, and maybe then...just maybe...Valkyrie will accept the MB corrected weights and not try to create the unusable weights. (I'm in denial. More likely Valkyrie creates new weights no matter what you do. I really wish Newtek would publish exactly what Valkyrie does and how it works instead of forcing users to spend endless days running trial and error tests to discover the rules and limitations of LW FBX. This sort of info really should be in the user manual.)


Edit: haha, they, AD, really are homogenizing their product line. That's the navigator from autosketch (I think is the name.) Interesting...
At work I've been occasionally using Maya this past year, and the 'cube' is in there too. So, yeah, I think that's what's going on.

Anyway, I see more fun testing ahead. :thumbsup:

(Deep sigh!)


G.

UnCommonGrafx
01-18-2011, 11:03 AM
back in 5.5 it worked that way. Or so I remember... I'm getting old so maybe I remember differently nowadays.
hahaha

Greenlaw
01-18-2011, 11:16 AM
back in 5.5 it worked that way. Or so I remember... I'm getting old so maybe I remember differently nowadays.
hahaha
Actually, I don't know if what I said is true. I only started learning Motion Builder a couple of weeks ago and my actual time with it has been somewhat sporadic. In other words, I'm just making stuff up as I go. :)

I'm very thankful for the technical expertise of Rebel Hill, Cageman, Geo, and other artists in these forums...their assistance has shortened the mocap learning curve for me and helped keep the Brudders film project alive and healthy these past couple of months.

G.

RebelHill
01-18-2011, 11:18 AM
I really wish Newtek would publish exactly what Valkyrie does and how it works instead of forcing users to spend endless days running trial and error tests to discover the rules and limitations of LW FBX. This sort of info really should be in the user manual.

Damn straight!

Cageman
01-18-2011, 09:43 PM
Two quick questions to any game developers out there: How do you do it? Or do you not bother weighting in LW and just use whatever?

Thanks in advance for any helpful info.

G.

I've used Vertex Paint exclusively to assign and paint weights. Thankfully, it allows you to rotate and translate joints so you can check your deformations and adjust the weights. It works fairly well, and based on some recent discussions, I think it is time for me to do a videotutorial about it, because it seems that alot of users are not aware of what it allows one to do in cases where you really need to paint weights for each bone. It also has a normalize function, which usually is needed when working with game engines.

The resulting weights came into other apps like Maya and MB and the deformations looked exactly like in LW. However, this was before Valkyrie, so it was the old legacy FBX tool. I have to find some good content to test the new tools with (I should have plenty of characters that I weighted for the ingame cutscenes in World in Conflict.

:)

3dWannabe
01-18-2011, 09:52 PM
Thank you! A video tutorial would be very appreciated!!!

Greenlaw
01-23-2011, 03:14 AM
The resulting weights came into other apps like Maya and MB and the deformations looked exactly like in LW. However, this was before Valkyrie, so it was the old legacy FBX tool.
Decided to check out the results for using the 'Legacy' FBX Plugin from Autodesk in LW10 and you're right, the exported character appears to have the weights I created in Layout and not auto-generated weights like the ones created by Valkyrie.

The deformations are obviously not perfect (because my weights are not normalized I'm sure,) but they do look significantly better than what we saw with the auto-generated weights from Valkyrie. I'll try normalizing the weights using TA Normalize Bone Weights (http://loupguru.com/store/index.php?main_page=product_info&cPath=1_11&products_id=45) and see if this helps the MB deformations look more like my original LW deformations.

Attached is a pic of what the deformations look like in MB after using the 'Legacy' FBX exporter.

Thanks for the tip Cageman! Knowing that the 'Legacy' exporter does this will save me some time correcting weights in Motion Builder anytime I make a rig change in Lightwave.

I should mention that, while the motions from the Valkyrie FBX-to-MB-to-Valkyrie FBX import in LW10 works exactly as Cageman demonstrated, I haven't tested the 'Legacy' FBX-to-MB-to-Valkyrie FBX import in LW10 yet. I'll post confirmed info when I get a chance to test this version of the workflow.

artstorm
01-23-2011, 01:37 PM
The legacy FBX plugin from Autodesk has been a very reliable I/O companion over the years. And has supported about everything one need with FBX from and to LightWave. Oh, if they only had made a 64-bit compile as well and we wouldn't even have had to bother with the new Valkyrie option.

But as they didn't "64-bit it" we're stuck with Valkyrie, and I've been kind of disappointed with it since the introduction in 9 but just recently I've started to change my mind. The last month or so before the release of 10 lot's of positive things happened with Valkyrie to start making it more predictable and useful. So it's getting brighter!

The auto weighting thing is not ideal though, far from it. Currently I've been exporting mostly normal human characters which makes it workable anyway even though the imagination has to come into place now and then to accept some weird deformations. But it's not that bad. I've a few more far out characters coming into the FBX pipe soon and I'm a bit concerned about how it will deal with them.

I've had a Plan B for quite some time though. When things were at the worst FBX wise about a year ago or something I started collecting FBX I/O sources from Blender for instance. The Blender FBX python script handles weights, and well, looking through the script, it's not really rocket science so I'm pretty sure I could convert it into a LScript if everything I need is exposed in LScript as well.
I haven't spent more time with Plan B yet, as I would much more prefer the Valkyrie plugin to be a reliable workhorse. And I have not given up hope yet. They added morphs just before the release of 10, and they have weights saving into the FBX too, even though they are auto generated right now. One can just hope the auto generation is a "placeholder" and it will eventually be replaced with using the assigned weights instead. I mean if they are already writing weight data into the FBX it can't be that much work to replace it with the actual weight data.

Weight is not a personal emergency for me right at this very moment, so I'm holding of until the first LW10 patch to see if they fix the writing of actual weights to FBX. If not I'll take a stab at plan B.

It would take more than a day to make an LScript conversion, if it proves to be possible, but less than a week if I just pick the parts needed to make a foolproof MotionBuilder export of the elements needed for animating a character as painless as possible external of LightWave. Ie. Geometry, Weights, Joints and Morphs and nothing more.
And because of my limited time it would then have to be very customized for a plain LW->MB workflow.

Anyway, let's see what happens with Valkyrie next. I think NewTek is so close to finish it, so it would be hard to understand if they didn't take the final step to be able to call it feature complete with the next 10.x update.
And if the case is that they won't finish FBX completely, I'll look into Plan B and see if it's possible for me, I just wanted to share that I'm not giving up on getting once again a good, reliable FBX/MB workflow like we had in the 32 bit era with LightWave.

Greenlaw
01-23-2011, 07:55 PM
Johan,

Thank you for that detailed insight on weighting and FBX.

This whole situation with Valkyrie has been a bit frustrating for me because none of the characters in my short film have normal human body proportions and the limitations of Valkyrie's auto-weighting are immediately obvious. The lack of 'real' weights in Valkyrie is not a total showstopper for my personal project but it certainly drags down the pace. And if this was a commercial production at work, well, it just wouldn't tolerated.

But, like you, I became enthused when they added morph map support to Valkyrie, which implied they might be working on support for other vertex maps. I have to assume they're still updating Valkyrie, and hopefully the day is coming when we won't have to keep coming up with silly workarounds for it.

In the meantime, I guess I'll continue banging my head on the keyboard every now and then. :bangwall:

G.

Greenlaw
01-23-2011, 07:57 PM
Oh, and if you do decided to make your own FBX plug-in, please keep me in mind for beta testing! :)

G.

MaDDoX
01-24-2011, 09:20 AM
Won't the 32-bit "legacy" FBX plugins work with the 64-version? In any case, I don't think it'd hurt that much having a 32-bit LW install just for that. It kinda sucks, sure, but it's more common than you'd think for other apps as well. Adobe, for instance, haven't updated its critical .DDS export plugin for Photoshop, you need a 32-bit install for that.

Greenlaw
01-24-2011, 11:07 AM
Yes, but I think the point is to have a new FBX plug-in that can continue to grow and evolve with the times (like Valkyrie,) for all platforms. The Autodesk one still works in x32 obviously, but it's also EOL and will probably break one of these days.

G.

Greenlaw
01-24-2011, 11:17 AM
BTW, I tried using TA Normalize Bone Weights on the model last night but I'm not sure it made any difference. Here are the results:

No effect with Valkyrie. I didn't expect it to but I was curious to see if Valkyrie skipped the Auto-weighting process if the weights were normalized.

With Legacy FBX, the result appeared to be the same. The result seems to be better, but there are still some issues, especially around the shoulders and upper arms; the head and hair deforms correctly though. I'm not sure if this is a problem with the Legacy plug-in or my setup, but I'm thinking it's the latter.

After looking at both in Motion Builder, I'm not sure if it's easier to fix the Valkyrie FBX or the Legacy FBX. It's a bit of a toss-up I guess.

BTW, does anybody know if there is a way to transfer weights in MB, or swap the mesh on a rig? I'd like avoid reweighting a mesh more than once in MB if I can.

Thanks in advance for any help!

Greenlaw

Cageman
01-25-2011, 12:16 AM
Decided to check out the results for using the 'Legacy' FBX Plugin from Autodesk in LW10 and you're right, the exported character appears to have the weights I created in Layout and not auto-generated weights like the ones created by Valkyrie.

The deformations are obviously not perfect (because my weights are not normalized I'm sure,) but they do look significantly better than what we saw with the auto-generated weights from Valkyrie. I'll try normalizing the weights using TA Normalize Bone Weights (http://loupguru.com/store/index.php?main_page=product_info&cPath=1_11&products_id=45) and see if this helps the MB deformations look more like my original LW deformations.

Attached is a pic of what the deformations look like in MB after using the 'Legacy' FBX exporter.

Thanks for the tip Cageman! Knowing that the 'Legacy' exporter does this will save me some time correcting weights in Motion Builder anytime I make a rig change in Lightwave.

I should mention that, while the motions from the Valkyrie FBX-to-MB-to-Valkyrie FBX import in LW10 works exactly as Cageman demonstrated, I haven't tested the 'Legacy' FBX-to-MB-to-Valkyrie FBX import in LW10 yet. I'll post confirmed info when I get a chance to test this version of the workflow.

Cool!

Well. First off all, Valkyrie and legacy are not compatible with eachother, so exporting with Legacy and then using Valkyrie to merge (or vice versa) have so far resulted in quite alot of wonky stuff. :) So, you either go for 100% Valkyrie or 100% Legacy and never, ever mix them. Obviously, you can do that, but then you really have to know what you are doing.

However, there might be another way to make Valkyrie export proper weights instead of the auto generated ones. This method might not be compatible with Joints at all or create wonky stuff (I have only used Load Bones with Z-Bone myself).

1) Get hold of a modeler plugin called Load Bones from DStorm (it is free and should be avaliable in both 32bit and 64bit.

2) Load your character scenefile where the joints etc are. I assume you are not using any weightmaps, or maybe just isolation weights. In any case, save this scenefile as LW6.0 version (you should find it under Save As if you are using Production Style menu preset). The reason why you should save as LW6.0 LWS is because Load Bones modeler plugin isn't compatible with newer LWS versions. Also, make a notice of your Inverse Distance Falloff settings in Bone properties.

3) In Modeler, load your character and then use Load Bones to import the bones from the LWS file. Go to the Map Tab, click on Bone Weights. Select the appropriate Falloff type.

OR

You could use Vertex Paint to calculate the weights with the correct Falloff setting.

While you are at it, tweak your weights in VPaint. :)

Save your object, remove skelegons (those will cause issues if still in the mesh when moving data outside of LW).

4) Back in Layout, assign the weights to the appropriate bone, export with Valkyrie.

This should give you good, predictable results in Motionbuilder.

Good luck!

:)

Greenlaw
01-25-2011, 11:15 AM
Thanks for this info Cageman!

I've never used Vertex Paint before so I may have questions later if that's okay.

Based on what you've written, I'm starting to think I may not be applying weight maps in Lightwave the way Motion Builder and other apps expect them to be applied.

Up to now, nearly all of my experience with weight mapping has been exclusive to Lightwave, and I'm coming to understand that Layout can be fairly tolerant about 'bending the rules' for weight mapping. Could this be why I'm not getting the results I expect out of Valkyrie in MB and Animeeple? (I'm almost sure you're going to say 'yes'. Just thinking out loud now.)

I'll take a different approach and do a bit more testing tonight.

G.

Edit: I'm having an amazingly productive week! It's mostly work related, but what I've been learning and doing at work is going to help immensely with the short film project.

Cageman
01-25-2011, 02:13 PM
Could this be why I'm not getting the results I expect out of Valkyrie in MB and Animeeple? (I'm almost sure you're going to say 'yes'. Just thinking out loud now.)

As established in another thread, LW is quite unique regarding how it can deal with joint/bone deformations without the need of any weights, since they act as deformers right of the bat. Most other apps (all other apps that I've used) do require a unique weightmap to be specified (painted or whatever method applies to give verts weights) for each joint. Motionbuilder expects weights and what Valkyrie is doing is approximate weights when there are no weights assigned to make it easy to export things "quick and dirty" to other apps. This process seems to apply things differently from what LW does when doing the deformations (as you have noticed, in MB it looks like crap, while in LW it works quite nicely). And no, as far as I have seen, isolation maps are not good enough because the concept of having several bones/joints sharing the same weightmap is also quite unique to LW.

I'm strictly speaking from my experiences with Maya and Max, so I wouldn't be surprised if XSI supports this. :)

In any case, going from LW to AppX -Animate- bring back to LW, usually means that you will benefit from designing good weightmaps that on their own create solid enough deformation so you can tweak your animation and trust what you see in whatever animationpackage you use outside of LW.

We did some tests with mocap at work today where a mocap rig in Maya (where the deformation was completely driven by weights assigned through the mocap rig, no fancy deformers or anything like that) performed so well (on a highres cage-mesh, about 24000 quads that is), so we will go that route for most shots, and only make use of influence objects for very extreme poses (if needed and if seen from the camera). Our main rigging/skinning guy was very pleased and releaved by those results. :)

It is surprising how much you can achive with just proper and carefull weightpainting. :)

My point is; if you learn how to master Vertex Paint, you will be able to produce rigs that

1) Are 100% compatible outside of LW
2) Produce results (as in good deformation) suitable for most highres situations and defenately useable for animation tweaking in MBuilder. For those situations where these weights are not enough, there is a good chance some of those extra non-weighted bones/joints can be added in to solve the rest once the animation is back into LW.

:)

Oh... and feel free to ask questions about VPaint.

:)

Greenlaw
01-25-2011, 04:39 PM
Cageman,

Thank you VERY much! The info you just provided gives me a great starting point tonight.

To be honest, I'm at a stage now where I don't really need to change anything to finish this project, but since the project was conceived as a learning experience for me, I may as well learn to do things 'correctly'. :)

Besides, at work it's becoming expected for us to exchange data between Lightwave, Maya, and now the Unreal engine, so this knowledge and skill will become useful there too. Again, thanks for all these helpful tips!

Greenlaw

artstorm
01-25-2011, 05:44 PM
and what Valkyrie is doing is approximate weights when there are no weights assigned to make it easy to export things "quick and dirty" to other apps.

Wow Mikael!!
Thanks!
When did they fix that? Last time I tried, and that was pretty close to the release, assigned weights wasn't coming through, but now when I did a quick test after reading your post, my assigned weights came through to MotionBuilder.

Then we do have working joints, geometry, uv's, morphs and weights coming from LW to MotionBuilder now. And motions can be merged back from MB to LW again. The native Valkyrie now do everything that the old legacy Autodesk plugin did, but on 64 bit as well. (except takes).

Best news I heard in a very long time. Happy days! :D

MaDDoX
01-28-2011, 06:24 AM
When did they fix that? Last time I tried, and that was pretty close to the release, assigned weights wasn't coming through, but now when I did a quick test after reading your post, my assigned weights came through to MotionBuilder.
Are you 100% sure of that artstorm? Last time I've checked the Valkyrie exporter was simply making a poor nearest-vertex bind, just as in Maya. But maybe that was with no weights skinning. Talking of which, I've tested the legacy Autodesk plugin yesterday (I check exported stuff in Maya, easier to visualize weights than Mobu), and although it does approximate no-weights skinning it's a kind of rigid bind approximation - ie. 100% or 0% weights only. Which is far from bad considering the best weight painting job techniques I know start off with 100%/0% painting anyways. Nevertheless, today I'll check the VPaint option that Cageman has been touting, hopefully I can get an even better approximation of the weightless skinning inside Layout. Oh and btw Cageman, thanks a lot for the hint about using the 6.0 scene format for the Load Bones plugin to work, I'd never figure that one out by myself :)

In another front, yesterday I've played a lot with that japanese layout weightpainttool plugin (http://www.3dcel.jp/), just wow! What a great work the guy did, both feedback and interactivity are very good. Apparently there's only 32-bit versions available, but I've suggested to Lino Grandi to recommend it to be included in the next Lightwave minor update release, and he liked the idea so who knows? The developer is very active and committed to Lightwave, so with a good tap in the back by Newtek we might also have it in 64-bit soon :)

artstorm
01-28-2011, 07:29 AM
Are you 100% sure of that artstorm? Last time I've checked the Valkyrie exporter was simply making a poor nearest-vertex bind, just as in Maya.

Yes pretty much 100%.
Check out this test with Valkyrie exports and weights.
I made a small joint at the top to control the entire sphere with a weightmap, to make sure that it came through all right. If weights would not export properly the top joint in this test scene would only partly affect the sphere, and if they do work, the top joint will affect the entire sphere completely.

First row in the screenshot: LightWave and then rotate the top joint slightly to move the entire sphere.
Second row: The same scene exported with valkyrie and then imported to MotionBuilder and making the same rotation. The exact same result. :)
Third row: Weights in LW and then Weights display of the Valkyrie exported object in MotionBuilder. Same result.

Ie, at least in this kind of basic test, weights are coming through just as they should using the native Valkyrie export.

I'm going to test with a fully weighted character this weekend if time permits, and I'm expecting that weights will come through just alright then as well.

This is actually awesome, I was pretty sure weights wasn't working in Valkyrie, so I'm very happy that Cageman pointed that they do work!

Greenlaw
01-28-2011, 09:10 AM
Artstorm,

Wow, that's a very convincing example! Thanks for sharing. I haven't been able to do any tests of my own yet...too much OT at work these past couple of weeks. But I'm getting very eager to jump back in now.

Thanks to everybody for contributing to this thread. This information has been gold to me. :)

G.

Cageman
01-28-2011, 03:50 PM
This is actually awesome, I was pretty sure weights wasn't working in Valkyrie, so I'm very happy that Cageman pointed that they do work!

Cool. :)

Well... the current workflow I have at work is related to bring both the rig and the weights over from Maya into LW.

The steps I use:

1) Save out FBX from Maya

2) Load FBX into Layout 10 x64 and dissable the joints (because they are still doing some weird deformations and stuff)

3) Use cp_SaveTransformedObjects to save out the objects to a new directory. Since I'm using SaveTransformed, the bindpose is intact and the objects will be oriented correctly from now on. Also, the weights (with intact names the way Maya named them when weighting) and UVs will be there. :) Do whatever you need to do in Modeler to apply textures and combine these objects in to a single layer object.

4) Import the same FBX again, but this time use Legacy 32-bit plugin. You will notice that the joints from Maya comes into LW as nulls, or rather, zero point objects, but the names are the same as in Maya, and in a correct hierarchy and not rotated off in any axis (unlike what happens when importing via Valkyrie).

5) I select the Hip (or whatever is the root joint in the hierarchy). I run a script called Heirarchy2BonesGN.ls (a custom script that Lernie Ang wrote). Mike Green has a similar script on his site. This will create a new null and under it re-create the rig from the zero point object heirarchy with Z-bones.

6) Load the object that you prepared as a single layer object and parent it under the null and then parent the root bone to the mesh.

7) Select the mesh and now I run a script called BoneWeightMapAutoAssignGN.ls, which is another custom script that Lernie Ang wrote for me. This will do a name-matching between the names of the bones and the weights avaliable in the mesh and assign accordingly. For the deformation to behave exctly like in Maya, you have to turn on Use Weigthmaps Only and Normalization.

8) I then export this setup as FBX and characterize it in MBuilder, and then I will create a Master characterized FBX where the LW and Maya version of the characterized rigs resides. At any moment, I will be able to transfer any type of Mocap to both Maya and LW.

These steps might sound like alot of work, but it takes about 10-15 minutes / character. For our previous project, I didn't manage to use Valkyrie FBX the way I can now, so while the endresult was the same as now, the procedure was at least twice as long. The benefit for us doing it this way is to allow a much easier split up regarding tasks between people who use either Maya or LW (or for those who use both, give them the option to choose) that are related to setting up a shot, doing cameras, creating lighting etc. For the final character renders, we will bake out MDDs from Maya in situations where a dedicated deform rig is needed where the weights alone aren't enough to produce good deformations.

:)

MaDDoX
02-02-2011, 08:18 AM
Yes pretty much 100%. Check out this test with Valkyrie exports and weights.
I made a small joint at the top to control the entire sphere with a weightmap, to make sure that it came through all right.
Aha! That's it then, you've added explicit weightmaps while I tried exporting the native lightwave weights. If our experiments are both correct, the conclusion is that you can rely on the Valkyrie exporter for explicit weights but not for native weights. Now that got me curious if a mix of both (with isolation weights + native weights) would export properly. Nevertheless, I doubt it's possible to fully replicate native Lightwave weights using explicit weights, there's something in the way they deform the mesh and interact with each other which, albeit quite cool imo, seems completely alien to the way traditional weights work. I'll definitely test the VPaint native weights emulation which Cageman hinted in this thread, although it's a "frozen-state" representation of the native weights it'll be cool if it does a good job at it.


3) Use cp_SaveTransformedObjects to save out the objects to a new directory.
First and foremost, thanks for the detailed workflow description. Now, why are you not using the built-in "Save Trans Object" function, any specific reason?


8) I then export this setup as FBX and characterize it in MBuilder
I assume this step is done with Valkyrie?

I realize most of this back-and-forth is due to the weights being created in Maya, right? Supposing I do the weights directly in Lightwave (in a VPaint/use wmaps only fashion), and use an FBIK-compliant joint setup, do you think the weights would transfer smoothly to both Maya and Mobu? According to artstorm's preliminar test it would, I'm just guessing if you've tested this yourself.

PS.: This BoneWeightMapAutoAssignGN lscript seems quite handy, is it publicly available? BTW, Faulknermano once provided a tiny (and untested) ls supposed to do the same: http://www.newtek.com/forums/showthread.php?t=14705

Edit: Found a properly tested script to o just that, part of the Collada import pack (http://www.clintons3d.com/plugins/lightwave/index.html). Code pasted here for tidiness sake, all credits to author of course :)



//boneweightmap.ls
//april 4 2010
//clinton reese
//clintons3d.com
//
//purpose: to set the weightmaps of bones to match their names like skelegon conversion behavior
//useage: select bones/joints and run the script, if corresponding weightmap exists it will be assigned
//
generic
{
//get all selected joints
thisScene = Scene();
selItems = thisScene.getSelect(BONE);
if(selItems == nil) error("no joints selected.");
//for each joint set weightmap to same name as the bone
for(i = 1; i <=selItems.size(); i++)
{
SelectItem(selItems[i].name);
//get name up to the first space
tok = parse(" ",selItems[i].name);
BoneWeightMapName(tok[1]);
}
}

Greenlaw
02-02-2011, 09:42 AM
Aha! That's it then, you've added explicit weightmaps while I tried exporting the native lightwave weights. If our experiments are both correct, the conclusion is that you can rely on the Valkyrie exporter for explicit weights but not for native weights.
Sigh! I still haven't fully tested this myself...too much work these past few weeks so the project is on hold again.

I'm happy to learn about this though: that Valkyrie only recognizes explicit weight mapping is key bit of info I wish I had known about many months ago. Ugh! To think of the hours I wasted on this issue.

Hopefully the next release of the LW 10 Manuals will contain more important production info like this, as apparently many artists who are far more knowledgeable on the topic didn't understand this either.

G.

Greenlaw
02-02-2011, 07:02 PM
Hi,

Has anybody gotten Vertex Loader to work in LW 10 Modeler? I'm trying to load a character rig scene using Vertex Loader which is supposed to recognize the bones from Layout and import them to Vertex Paint. When I select Vertex Loader, a file dialog appears, I select my scene file, and then...nothing.

At first I assumed it was because my rig uses joints, so I used Set Bone Type to convert from joints to z-bones. This looked awful because all my joints were set to zero rotation, but for the purpose of the test I thought it would still load. But when I used Vertex Load on the z-bones version, I still got nothing.

Just wondering if this was happening only on my system.

Thanks in advance for any helpful response.

G.

MaDDoX
02-03-2011, 04:11 AM
No idea on that Greenlaw, sorry. Have you tried the "load bones" plugin (I guess it's made by DStorm) which Cageman mentioned? It should work for what you're trying to do.

Greenlaw
02-03-2011, 09:28 AM
I have used that in the past. The problem with it is that it only loads bones, not joints. My workaround was to convert to bones and then load. The problem then is that all the rotations are 'wrong' (because the mocap bones are all zero-ed out,) so I have to manually reconstruct the skeleton using curves and curve to bones, and then naming everything again. Vertex Loader sounded so much easier if it only worked with joints (just load the scene rig directly into Vertex Paint.)

Sigh! It seems like everything else works with Lightwave Joints except the tools in Lighwave. We really need some new tools just for working with joints. :(

G.

Greenlaw
02-03-2011, 06:10 PM
I managed to make a little more time today to try Vertex Loader again. No luck. I thought maybe this was a LW10 issue but the plug-in doesn't seem to work under 9.6 or 9.6.1 either. Just wondering if anybody has gotten it to work.

Hmm. It just occurred to me: maybe like Load Bones, Vertex Loader wants scenes in the old LW 9.2 format? If so, this definitely means no Joints allowed I imagine. I'll post in a few minutes what happens.

G.

Edit: Nope, that didn't work either. I saved a rigged character with bones (not joints) in LW 9.2 fomat but the plug-in did nothing after selecting and opening the file. Oh well. I'll fogbugz this tonight unless somebody knows if I'm doing something wrong here.

Greenlaw
02-03-2011, 06:21 PM
Okay, I did a little searching in the forums for more info about Vertex Loader. Apparently, the tool is only compatible with LW 6 format scenes. Am I supposed to laugh or cry now? :)

Here's the thread:

Vertex Loader support apparently dropped (http://newtek.com/forums/showthread.php?t=76504&highlight=%27vertex+loader%27)

Big sigh!

G.

Edit: Oh wait. I reread the thread and see that the suggested 'workaround' is to use Load Bones, and Vertex Loader has actually been broken for many years now. Agh!

Greenlaw
02-03-2011, 06:31 PM
Hi,

That was it. To use Vertex loader your rig must be saved in Lightwave 6.0 format. It would be nice if the manual mentioned this.

G.

Edit: Actually it would be nice if anybody from Newtek ever responds to these questions.

Greenlaw
02-03-2011, 06:39 PM
Okay, just for kicks, I tried loading a Joints version of my rig saved in Lightwave 6.0 format using Vertex Loader. It works but it basically just loads the Z-bones version of the rig. That would be okay except for the fact that a Joints rig intended for mocap has all the rotations zeroed out, so all the 'bones' are now pointing to the right of the character. That's what I expected actually and it's pretty useless in Vertex Paint.

My wife is telling me I should just paint the weights in Maya and be done with it. She's right of course, but she knows I'm pretty stubborn too: I will NOT let Lightwave beat me on this project. :)

G.

Greenlaw
02-03-2011, 06:44 PM
Okay, another question: does anybody know of a script that will convert joints to bones and give all the bones the rotations to match the bones angles from the original joints rig? If I can get just that much, I can still use Vertex Loader to paint the weights in Vertex Paint. Maybe.

Otherwise, my wife wins this one. :)

MaDDoX
02-04-2011, 12:54 AM
Ok, let me try to understand this. Why can't you export the scene in Legacy FBX format and bring it back? That would give you nulls (separate objects) that you can rebuild your skeleton from in Layout and also use to build skelegons in Modeler. Weights don't really have to share the same rig ya know, just the weightmap name matters so use that to your advantage. Another option would be to Remove RPR (recorded Pivot Rotation) in Layout using the Load Bones method, just for the rig that will be used for mocap data, have you tried that too?


My wife is telling me I should just paint the weights in Maya and be done with it. She's right of course
Is she? Tell your wife that I've just wasted 5+ hours of work trying to make Maya show me the damn weights on a specific character so I could paint on it. After a world of frustration apparently it has something to do with the hair nodes from Shave&Haircut getting Maya lost, yet there's no fricken way to diagnose that, not even in that messy and scary Hypergraph. :cursin: If I had just used LW+sasquatch from start, this job would be done already -_- The thing is, I don't want to remake the hair and shaders in Lightwave at this point in time, so let's just hope after some more lost nights of sleep I eventually work around the stupid Maya bugs and actually get the weight painting to work.. sigh.

Nevertheless, I have to admit that the new dual quaternion skinning method in Maya 2011 is really nice :) It's not usable anywhere else ofc, but if you're gonna render in Maya/MR it's really nice, very cool to maintain volume in shoulders, etc and it makes up a lot for the lack of the weightless joint features that I'm used to in Lightwave, like Joint Compensation.

Greenlaw
02-04-2011, 01:46 AM
Why can't you export the scene in Legacy FBX format and bring it back?...Another option would be to Remove RPR (recorded Pivot Rotation) in Layout using the Load Bones method, just for the rig that will be used for mocap data, have you tried that too?
Thanks for the tips MaDDox! These are good ideas and the kind of advice I was looking for when I started this thread.

I was thinking something along the lines of your second option during my drive home from work, but wasn't sure if that would work with joints. Actually, I'm still not sure how this will work since the joints have no rotation on them. I'll play around with this tonight.

If that doesn't work, I'll try reconstructing the rig with Skelegons as in your first suggestion. I've done this before using Load Bones and ignoring the bone tips when joining the curves, but I think your suggestion might work better for joints (assuming the tips are ignored.) Either way, this would be a sure thing I guess. Now that I'm thnking about it, it might be easier.

Man, knowing that Modeler's Vertex Loader *should* be making this an easy one-step process is frustrating though. How is it possible that it's only compatible with LW 6.0 scenes? Guess I should Fogbugz this along with a request to add Joints support.


...I've just wasted 5+ hours of work trying to make Maya show me the damn weights on a specific character so I could paint on it. After a world of frustration apparently it has something to do with...
Ugh! Good reason for me to stay within familiar (to me) territory, at least for this project. Actually, at work I'm expected to get more fluent in using Maya this year (I've been animating a little in Maya and doing only the most basic rigging tasks,) but right now for my own project I want to avoid adding another layer of complication. :)

G.

Greenlaw
02-04-2011, 01:55 AM
...I have to admit that the new dual quaternion skinning method in Maya 2011 is really nice :) It's not usable anywhere else ofc, but if you're gonna render in Maya/MR it's really nice, very cool to maintain volume in shoulders, etc and it makes up a lot for the lack of the weightless joint features that I'm used to in Lightwave, like Joint Compensation.
That sounds pretty good. At work we're only exporting deformations out of Maya (via .mdd) and rendering in LW, so I guess this skinning method would be compatible with LW this way?

I'll ask my co-workers at work who do a lot more CA in Maya than I do if they know about this. I know they've had issues with shoulders on past jobs and they often wind up creating special morphs for each problem they run into.

G.

Greenlaw
02-04-2011, 03:58 AM
Just tried the WeightPaint tool you mentioned a few posts back. Wow, that is very cool. I'll have to spend some more time with it tomorrow night.

G.

MaDDoX
02-04-2011, 07:08 AM
Actually, I'm still not sure how this will work since the joints have no rotation on them.
There's a video on youtube where he explains this quite detailedly, search for "Lightwave" and "FBX", it's a 4-part video tutorial. Just bear in mind that "binding" a joint chain to a model in Lightwave is as simple as re-parenting it. There's nothing stopping you to have two rigs "binded" at once to the same model, so you can have just one chain disabled (ie. the mocap one) and the other (the LW-specific one) enabled and vice-versa.


At work we're only exporting deformations out of Maya (via .mdd) and rendering in LW, so I guess this skinning method would be compatible with LW this way?
Definitely, basically mdd export (pointoven, etc) reads the vertex positions on a frame by frame basis, so in practice anything that you see on your viewport will get pulled through, np.


I'll ask my co-workers at work who do a lot more CA in Maya than I do if they know about this.
It's really just selecting "DQ weight" instead of "linear weight" - the default option - when smooth binding the joints to skin. You can even switch from linear to DQ after the fact, there's a setting in the node. There's also a "DQ weight blend" option which allows you to paint another layer of weights, with the standard weight paint tool, to define which areas will use DQ and which areas will use linear. It's worth mentioning that linear blending is still better for areas where you would want some twisting to happen, like cloth animated with bones, a bat wing, etc.


I know they've had issues with shoulders on past jobs and they often wind up creating special morphs for each problem they run into.
Argh, I hate that solution, it's very laborious and in the end it's very hard to keep the volume constant across different poses. It's decent for cartoon characters, but that's it. There are some smart setups to keep the shoulder volume constant in Lightwave, based on disabled bones + follower and bone twist settings, you can get pretty good results out of that without fiddling for hours with morph targets.

Greenlaw
02-05-2011, 03:10 PM
Narrowly missed going into work this weekend so I actually have some time for this again.

I tried setting explicit weights on a simple rig and what do you know? The FBX deforms the mesh in Motion Builder look more or less the same as it does in LW! I guess Valkyrie's weight export does work if you know what it wants to export.

I've never really had to do this before, and I have to say Lightwave's 'native' non-weighted bones sure did spoil me. Getting the weight properly set for FBX export is tedious, and I was actually being a bit sloppy with it. I think what I'm going to keep doing is setting up weights the way I normally do for Lightwave deforms, and then setting up a 'quick and dirty' explicit weights version just for export to MB and Animeeple.

BTW, Faulknermano's Mirror Weight Maps (http://thespread.faulknermano.com/_theoldspread/index.htm) and Timothy Albee's TA Normalize Bones (http://loupguru.com/store/index.php?main_page=product_info&cPath=1_11&products_id=45) are very handy tools for this situation.

I don't know if I mentioned this already but TA RigRip - Ripper/Stitcher (http://loupguru.com/store/index.php?main_page=product_info&cPath=1_5&products_id=54) is a HUGE time saver if you want to quickly reshape a Joints based rig. Thanks to this plug-in, I really don't miss not being able to use Bone Tools with Joints.

G.

Greenlaw
02-05-2011, 11:35 PM
Now that I understand better what Valkyrie is doing with weight maps, the tool has opened some interesting and useful options for me. Instead of trying to set up explicit weights in Modeler entirely manually, I think I found a way to take much of the tedium out of the process. Here's what I've learned today:

First, this is how I set up my test file:

1. I loaded a fully rigged character scene in Layout, and saved a copy of the Scene as ExplicitWeightsTest.lws. The rig in this scene did not use expclicit weights, and it is the same scene that gave me great deformations in Lightwave but poor deformations in Motion Builder.

2. Via the Hub, I loaded the character into Modeler, deleted all the weights and saved a copy of the mesh under a new name.

3. Back in Layout, I saved the ExplicitWeightsTest.lws scene to include the new mesh.

4. Next I exported an FBX to a file called ExplicitWeightsTest.fbx. This became my test file.

When I import the FBX file into Modeler, the object came in at 1000% scale. Not a big deal to scale it down 1%, but it's weird that the Modeler version of Valkyrie doesn't provide the option to scale the FBX like the Layout version does. Maybe I should put in a Fogbugz request for this.

Now, what I expected to find in Modeler was the mesh with all the auto-generated weights already created and ready for tweaking. If this had worked, it would save me the trouble of recreating the Layout rig bones into Modeler (since Vertex Loader is a bust) and letting Modeler generate the weights for me. Surprisingly, there were no weights in the mesh. I wondered if this was because I loaded the FBX directly into Modeler instead of Layout.

One thing I didn't really expect was that Modeler created points for all the joints. This was cool; it meant, if I chose to, I could easily recreate my Layout rig from the points using the Make Open Curve tool and Make Skelegons. (Basically, this is what MaDDox suggested earlier using the Legacy FBX tools.)

The next thing I wanted to test was, what happens when the FBX file is loaded into Layout, and then you move the imported mesh over to Modeler? This time I saw exactly what I was looking for: a mesh with all the weights assigned from every bone in the original Lightwave rig. Not perfectly weighted of course, but all ready to be tweaked either in Modeler or Layout (via 3dCel's Weight Painter (http://www.3dcel.jp/) tool.)

For me, this is a HUGE pipeline advancement and I'm pretty excited about it. I hope this info helps others in the same boat with me. :)

Greenlaw

Greenlaw
02-06-2011, 01:52 AM
The problem Ive found, working with joints, is that LWs joint system is backwards to every other package...Normally, you have the joint portion (the actual pivot point) and the deformer portion exists below it (hierarchically speaking). However LW has the deformer portion ABOVE the joint pivot... (which to my mind is nuts), but which causes the auto weighting to be set 1 position back. So your upper arm weight is on the shoulder area, you arm roll weight is over the upper arm, the forearm weight is on the lower portion of the upper arm, etc, etc.
Yeah, this really confused me last summer when I started using Joints. Now that I understand this is probably a bug it's just very annoying. I look forward to when Newtek fixes this but when they do, I guess it's going to break everybody's Joints rig. Oh, well...I'd much rather deal with that than continuing to assign my weights to the 'wrong' bones.

G.

Greenlaw
02-06-2011, 04:51 PM
This is such an annoying problem I decided to illustrate it as clearly as I possibly can. I'm sure RH has already fogbugzed this issue but I'll submit my own report with these images and content tonight. Hopefully, we will see a fix for this soon.

Greenlaw

Edit: Whoops! One typo: in Fig 4, replace "'Shoulder' joint" with "'Upper Arm' joint".

MaDDoX
02-06-2011, 08:59 PM
what happens when the FBX file is loaded into Layout, and then you move the imported mesh over to Modeler? This time I saw exactly what I was looking for: a mesh with all the weights assigned from every bone in the original Lightwave rig. Not perfectly weighted of course, but all ready to be tweaked either in Modeler or Layout (via 3dCel's Weight Painter tool.)
Oh man, that's *exactly* what I wanted! I thought it would only work with Legacy FBX, yet you did it with Valkyrie huh? Excellent! Did you get gradient falloff from the weights or just "flat" (100% or 0%) weights? Regardless, this is extremely interesting for any character weighting pipeline, I've spent long hours yesterday just to get the base weighting done for a character on Maya (yeah, that same one with hair, still struggling with it). No kind of technique compensates for decent default weighting to start adjusting from there, Maya default weighting is ridiculous, even if you set it to Max Influences 1 (rigid bind emulation) it still manages to miss the most obvious surrounding joints loops. What a mess..

Congratulations, I wish I was having fun like you instead of feeling like the weekend zipped past me for such limited progress.. -_- What I know is that for my next characters I won't fall for the mermaid song anymore, except if the job explicitly requires some muscle system - and that supposing I can't emulate something with Lightwave before this happens, I've got some ideas ;)


this really confused me last summer when I started using Joints.
I took a look at your illustrations and indeed, that's how joints mapping works at the moment. The deformer that follows each joint actually refers to the *following* joint, and not to itself. You think that's confusing, imagine if you had wasted as much time as I did finding a way to export joints to FBX (I only found out the weights were offset by one after mapping 80-some joints ouch). I ended up doing it with the help of a script (available in this forum) which converts bones to joints and assign the weights with that offset.

That's one of the reasons why I tend to stick to bones even if joints have a few advantages (muscle deform on all axis, stretchable etc). Curiously in my workflow I tend to use both, joints for implicit (native) weighting and bones for explicit weighting. This way I use joints in a way similar to cluster deformers or for muscle deformations (which require stretching) and bones as the character's rigid structure. Works really well. In comparison other packages have to resort to clusters or lattices to achieve additive/secondary animation levels.

And of course, with spline modifiers available for Layout, there's also a way to emulate the very handy Maya wire deformers (for things like facial expression) in Lightwave, so I feel quite covered for my deformation needs.

PS.: Greenlaw, do me a favor and please don't call joint deformers (the pyramid things connecting the joints) as bones, you make my head whirl in confusion :)

Greenlaw
02-06-2011, 09:42 PM
PS.: Greenlaw, do me a favor and don't call joint deformers (the pyramid things connecting the joints) as bones, you make my head whirl in confusion :)
Joint Deformers they are then. Sorry, working with Joints is still very new to me, so I'll probably continue to slip up on proper terminology for a while. In fact, using FBX, working exclusively with explicit weight maps, using Motion Builder, and having to carry motion capture through its entire process is ALL very new to me, so it's been a real trip learning this stuff these past few months. I couldn't have figured out all this by myself and I'm very thankful to members of this forum for help.

To complicate things further for me, at work I've been learning Vue xStream 9, Maya, Houdini, Unreal DK, and this week I'm going to classes to start learning the company's proprietary animation software; all while doing my job. Eeek! My brain is going to explode sometime this year. :)

Anyway thanks for your insight and help! I'll make a few adjustments to the Fogbugz package before I send it tonight.

G.

Greenlaw
02-06-2011, 10:35 PM
One question: is this naming offset actually a bug or is it by design? I can see where they might argue that this system is technically correct even if it results in unnecessary confusion for the user. How does this compare with other packages like Maya, XSI and Max? Do any of those programs also offset the joint deformer name? Just want to be sure about what's accepted as 'normal behavior' before I submit this fogbugz.

G.

Edit: okay, I see that was three questions. Somehow the other two snuck in when I wasn't looking. Sorry. :)

Greenlaw
02-06-2011, 11:18 PM
Oh man, that's *exactly* what I wanted! I thought it would only work with Legacy FBX, yet you did it with Valkyrie huh? Excellent!
Just to be clear, it's not doing exactly what you describe or what I had hoped it was doing. My post and excitement was based on the result of just a couple of quick tests yesterday afternoon, but I should do some more tests. I'll keep posting more info as I work through this.

I just did another test and here's what it's actually doing:

I exported the 'limb' object seen in the illustration but with all weight maps removed as an FBX file, and then I imported the FBX back into Layout.

Next I opened the object in Modeler to examine the weight maps created by Valkyrie. What I found was three weight maps based on the joint deformer names: Shoulder, Upper Arm, and Lower Arm. However, there were no actual weight values assigned to the weight maps (all weights are 0%.)

One thing about this surprised me: I thought Modeler removed weight maps that had 0% assignments. This was assumed because normally when you use the Clear command on a weight map, the map disappears when you switch to a different map. But these 'empty' weight maps seem to stick around so you can apply your own weight values to them. My guess is that a 'cleared' weight map is not the same as 0% assignment, which makes sense now that I'm thinking about it: an assignment of 0% is still a value.

Anyway, the result isn't quite as helpful as what I hoped for, but the auto-creation of the named weight maps themselves is still somewhat useful to me. Here's a screen cap of the result if you're curious:

Greenlaw
02-06-2011, 11:58 PM
I did one more test tonight, and it turns out I was mistaken about Valkyrie in Modeler creating points for joints. I brought the 'limb' FBX into modeler and there are no 'joint' points in the object.

I haven't checked on this but I'm guessing that the 'joint' points I saw in the character object yesterday in Modeler may have come from skelegons in the original object that I may have forgotten to remove. I would have sworn I removed the skelegons before doing that test, so I'll check again tomorrow to be sure. If that's the case, then you will need to use the Legacy plug-in or Load Bones to do this.

BTW, I just tried Load Bones again. I think I said earlier that you need to save in 9.2 format but this is wrong; you need to save in LW6 format for Load Bones to work. (5.6 will error out and 9.2 and above will lock up Modeler.) Load Bones does work fine in LW Modeler 10 x32 by the way.

Also, Load Bones will work with a Joints rig saved in LW6 format and you do not need to convert them to z-bones because when you save to a LW6 scene, the joints automatically convert to z-bones. When you load the scene file in Modeler through Load Bones, you will of course get the z-bones version of the rig, so you will need to re-create the rig by connecting the base points of each Skelegon with curves and use Convert Skelegons to make a proper Skelegons skeleton from Joints. (Don't connect the tips because they will very likely not be in the correct positions.)

Sigh! I can't believe I'm required to use LW6 format to get even this much done. The deeper I go into working with mocap in Lightwave, I'm astonished by how long many of its rigging tools have been neglected.

G.

Edit: I haven't tried this with the full character rig yet, just with the 'limb' object from today's test. The benefit to using Load Bones is that I can get actual weight values from the skelegons using the Bone Weights tool. The downside is that they will not have proper names unless I take the time to rename all the new bones. With other other approach, I will get weight maps automatically with all the proper bone names assigned automatically, but no actual weight values. The weight values will need to be assigned manually.

I'm not sure yet which approach will be more efficient. With the first, I'll have to spend a bit of time naming the bones or weight maps AND tweak the weight values. With the second approach, I have to create the weight values from scratch, but at least they will be the values I want and not what the software has decided to set for me. My guess is the second if I need really good weights, but the first method will probably be good enough for 'Motion Builder-only' weight maps.

Let you know how this goes.

G.

MaDDoX
02-07-2011, 12:23 AM
is this naming offset actually a bug or is it by design?
I guess only Newtek can answer this, although in full honesty the way Lightwave has it makes no sense to Craig nor to me. The only thing I can think of to justify it is that there's only a joint deformer when the joint has a child (except if you set 'multiply strength by length' to off, if I recall correctly), while a bone deforms "per se", so that might have been the only easy way Newtek found to create the back-and-forth conversion between both systems.


How does this compare with other packages like Maya, XSI and Max?
This is a kinda tricky question considering that no other package has implicit/native weighting like Lightwave. Imagine that all they have is what in Lightwave would be a pure "use weights only" rig, so if the influence is painted up or down the chain is up to you. By default (auto-weighting) it's down the chain, as expected. The other difference is that in all other packages the deformer is tied to the joint, it's not a separate entity attached to the "gizmo" (pyramid shape) drawn between two joints, so there is no room for confusion like what happens in the Lightwave implementation.


I thought Modeler removed weight maps that had 0% assignments.
Definitely not, although there's a plugin/lscript to remove those 0% weights automatically. If you're setting something up to export to a game engine or another 3D package, you have to get rid of those 'coz they - surprisingly - do affect the weight normalization, creating awful spikes. It's easy to check this out in Layout if you set all your joints to "use weights only". One trick I like to use to clean up the model is to simply move the root joint as far as I can. Vertexes unmapped or which has a sum different from 100% will stray behind. In this case you can save the transformed object, bring it to modeler and, with the straying points object in the background, know exactly what points aren't properly weighted in your object.

As for your test, you could use the 0% weight entries to select the vertices and set them to 100%, preferably with a tiny lscript ofc. Nevertheless it'd be just the same as the legacy FBX exporter, we'd probably get better results following Cageman's advice on using VPaint for implicit->explicit weight conversion plus auto-normalization.


To complicate things further for me, at work I've been learning Vue xStream 9, Maya, Houdini, Unreal DK, and this week I'm going to classes to start learning the company's proprietary animation software;
Ouch, your day looks like mine.. In my case I have to deal with learning Joomla (for web dev), C# and Unity3D as well, as if Maya didn't take all my damn free time. Talking of Maya, it just crashed on me right after opening the graph editor in a last ditch attempt to get rid of the reach=1 setting for the FBIK rig - that I've *never* set to 1 to start with!! The curious thing is that I had already quit trying to animate an FBIK rig on Maya (Long Hail MotionBuilder!) exactly because of these terrible bugs, I was just trying to pose the character a bit to be able to paint weights interactively. Grr..

Watch this, better still show it to your wife, it's a good summary of my (partial) feelings for this Maya-weekend:

http://www.youtube.com/watch?v=ajMqlVDR_IQ&feature=related

PS.: If you need any help with MotionBuilder (it's a tad hard to get good info for it), just drop me a message :)

Greenlaw
02-07-2011, 12:47 AM
PS.: If you need any help with MotionBuilder (it's a tad hard to get good info for it), just drop me a message :)
Thanks, I really appreciate the offer! I think I've gotten my head around the basics of retargeting mocap and keyframing on top of the mocap in layers, and I'm starting to scratch the surface for setting up my own controls...but when I look ahead to the more advanced features in MB, it's both exciting and very intimidating. :eek:

G.

Greenlaw
02-07-2011, 12:58 AM
The only thing I can think of to justify it is that there's only a joint deformer when the joint has a child...
Hmm. And if a joint has multiple child joints, I can see where it might be considered 'less confusing' if the joint deformers were named after the child joints, instead of all being named after the same parent joint.

I'll submit the report but I'm getting the feeling this is going to be something we just have to live with with in Lightwave 10.

Okay, I'm going to stop thinking about this now or it's going keep me up all night. I'm supposed to go into work extra early tomorrow, so good night! :)

G.

Cageman
02-07-2011, 10:19 PM
BTW, I just tried Load Bones again. I think I said earlier that you need to save in 9.2 format but this is wrong; you need to save in LW6 format for Load Bones to work. (5.6 will error out and 9.2 and above will lock up Modeler.) Load Bones does work fine in LW Modeler 10 x32 by the way.

"... In any case, save this scenefile as LW6.0 version (you should find it under Save As if you are using Production Style menu preset). The reason why you should save as LW6.0 LWS is because Load Bones modeler plugin isn't compatible with newer LWS versions..."

Post 22 in this thread.

As I've said before... lots of grief to be spared if going with Z-bones instead of joints.

:)

MaDDoX
02-08-2011, 09:30 AM
As I've said before... lots of grief to be spared if going with Z-bones instead of joints. :)
True. Although LW joints are very useful for stretchy parts, since the joint deformer auto-stretches to fill the gap between the connected joints. This coupled with the LW native/implicit weights has a huge potential that I don't think has been completely explored just yet.

Of course if you're just trying to import/export mocap rigs the last thing they'll have will be stretchy limbs, and if you want a custom rig for stretchy parts you'd better have the rig built for you destination 3D package anyways, so.. yeah, for the case at hand it's best to just stick to bones and make sure you don't record pivot rotation for your rig bones if you're gonna merge with mocap files (for reasons that Craig explained very well in his youtube lw<->fbx videos).

3dWannabe
02-09-2011, 11:30 AM
PS.: If you need any help with MotionBuilder (it's a tad hard to get good info for it), just drop me a message :)

If you ever get some free time to create an unscripted MotionBuilder/LW tips video tutorial, I'm sure lots of folks would be interested in what you've learned!!!

MaDDoX
02-10-2011, 06:06 AM
If you ever get some free time to create an unscripted MotionBuilder/LW tips video tutorial, I'm sure lots of folks would be interested in what you've learned!!!
Making video tuts is way harder (and takes waaay longer to do right) than replying specific questions, but that's definitely something I want to do once I get the chance ;)

Greenlaw
02-10-2011, 08:33 AM
Yes. I wanted to ask too, but having done one 'tutorial' video (the Brudders drawing session,) I know how hard it can be. But if you do make one, I'm looking forward to it. :)

Too much work and education going on at R+H right now to do anything with the film project, but I'm making time during my lunch breaks to draw a new Brudders comic strip, (first one since November.) Coincidentally, I've been recording the sessions.

G.

3dWannabe
02-10-2011, 09:34 AM
Making video tuts is way harder (and takes waaay longer to do right) than replying specific questions, but that's definitely something I want to do once I get the chance ;)
I quite understand, and that's why I said 'unscripted'.

Just watching someone go in directions I didn't know existed is quite useful - and if the video is high resolution, I can single step thru and hopefully reproduce the results and learn some new techniques.

But, I also understand that everyone's time is very limited.

If only we could slow the Earth's rotation to get a 26 hour day, I'd get caught up eventually!!!

Greenlaw
03-27-2011, 05:19 PM
Hi,

Does anybody know of an option in Motion Builder 2011 that might prevent animations from being loaded into Lightwave 10 Layout via FBX? I think I've unknowingly done something that's keeping Lightwave from reading the motion data in a Motion Builder FBX and I can't figure out how to fix this.

I've been spending most of my time in iPi DMC, Motion Builder and Maya lately and getting very good results and this weekend I returned to trying to get that data into Lightwave. I know I had this working months ago, but now when I import a Motion Builder FBX via Load From Scene or even a straight Load Scene command, I get the rig and mesh but no motion.

I tried the FBX conversion program from Autodesk and saved every possible version, but I get the same results with each FBX version.

Curiously, if I load the Motion Builder FBX into Maya, it reads it perfectly rig, mesh AND motion, so at least I know there is motion data in this file. And if I export the data from Maya to Lightwave then the motion appears in Lightwave. That's okay, but I really want to go directly from Motion Builder to Lightwave.

And then there's another problem: The Maya FBX may import to Lightwave with motion data but I'm getting some really messed up rotations. This is after I use Load from Scene Use Motion Envelopes Only. I tried regressing the Valkyrie plugin to the one that originally came with LW10 but get the same results, so I don't think the problem is Valkyrie.

I'm going to compare my original LW rig to the MB and Maya versions tonight to see if joint rotations didn't get altered somewhere.

If anybody has an idea what might be happening here, please let me know. This is making me nuts! Thanks in advance for any help!

Greenlaw

P.S., This is so frustrating. Things have been going so well in every other application but I keep running into these roadblocks with Lightwave. I'm starting to think I should give up animating in Lightwave and only import MDD files Lightwave like we do at work. :(

Greenlaw
03-27-2011, 06:47 PM
I figured out the rotation business: my lightwave rig has all its joints zeroed out (except for the root of course,) but I did find some joints in the Motion Builder version that were not zeroed out. I'm not sure where this came from, though a while back I did see a rotation change in certain joints while weight painting in Maya. I did fix this issue back then but never understood what changed the rotation of the joints, so maybe it happened again somewhere along the way. Ugh!

I still don't know why LW is not reading the motions from the FBX though. Will keep at this tonight.

G.

Greenlaw
03-27-2011, 06:55 PM
Hmm. I imported the FBX into Animeeple which, like Maya, can see the motion data just fine; the T-Pose is messed up, which makes sense since the rotations are not all zeroed in the T-Pose in MB. Surprisingly, though, the animation looks fine in Animeeple, just like it does in Maya and Motion Builder. Anyway, the important thing is that Animeeple and Maya both confirm that there is motion data in the FBX file that Lightwave cannot read.

I just don't understand this; there hasn't been an update to LW 10 yet, and I'm almost sure I had this working with the LW 10 Gold Master release before.

G.

Greenlaw
03-27-2011, 08:45 PM
Okay, imported the MB FBX to Animeeple and then exported a new FBX from Animeeple for Lightwave. Now Lightwave sees the motion. So the problem apparently is the FBX saved from Motion Builder 2011. Anybody know if there is a setting in MB I need to enable that will make it Lightwave 10 compatible?

Thanks in advance for any help.

G.

Greenlaw
03-28-2011, 01:05 AM
With the help of my wife (the resident Maya expert,) fixing non-zero rotation problem as it exists in Maya was surprisingly easy: Save weights, unbind, freeze joints (except hips,) bind skin, load weights, done. I'm impressed.

Unfortunately where I really need to do this is in Motion Builder on a rig with motion already on it, but I'm not sure this is possible. Oh well. I'll just have to recreate the mocap fixes on the corrected rig. Most of the mocap issues were pretty minor and I can deal with that.

I still haven't solved the issue of Lightwave not reading the motions from Motion Builder 2011 FBX file though. Can use help if anybody has any ideas about this.

G.

RebelHill
03-28-2011, 05:39 AM
I still haven't solved the issue of Lightwave not reading the motions from Motion Builder 2011 FBX file though. Can use help if anybody has any ideas about this.

I suspect your FBX file contains more than one take. The importer for LW 10 has no take options, so with multiple takes in a file, it ignores motion.

Rather than using the scene save option, use the export from MB, lets you select takes, or there's a one take per file option.

Also it seems that using export in MB exports the reference null hierarchy with the file too, and when that loads into LW, the reference null hierarchy gets the rotation order converter applied, but the bones don't, which makes things a lil smoother in LW too.

Greenlaw
03-28-2011, 11:18 AM
RH,

That makes perfect sense and I'll give it a go tonight. I do believe there is an extra Take in the scene, and because it was an 'empty' Take it didn't occur to me that this might interfere with LW's importer. (I'll say it again, they really need to beef up the user options in Valkyrie.)

Later last night I found the older MB files that worked before but I don't think studying them would have told me what you just did, so thank you very much for your help! :thumbsup:

I'll let you know how it goes tonight.

G.

Greenlaw
03-28-2011, 11:37 AM
I want to take a moment to send a big thank you the Newtek forum's Lightwave community. The production gremlins on our 'Brudders' project have been elusive and maddening but you guys have given me a ton of support and excellent advice for squashing these critters and helping me figure this stuff out.

You guys rock!

G.

Greenlaw
03-28-2011, 11:53 PM
Hi RH,

That was it! I tried using Motion File Export and selecting only the take with the animation and One Take Per File, and for some reason this did not work. However if I manually deleted the empty take and then saved the FBX, Lightwave loaded the motion onto the rig just fine. This worked when I used either the standard Save or Export commands to save the FBX.

Back in business now! :)

G.

Greenlaw
03-29-2011, 12:11 AM
BTW, when we get 'Pooper' done, we'll be working on our second 'mocap film' immediately. This one is actually a keyframe animation short we put on the shelf years ago called RVJ. RVJ was almost half completed but it just became too difficult to continue working on after our daughter was born. I've been so pleased with the results we're getting from the iPi Studio-to-Lightwave pipeline, it seems like a no-brainer to use it to finish this project too.

But 'Pooper' has to come out first of course. Stay tuned!

G.

Greenlaw
04-02-2011, 09:30 PM
Wow, I finally solved a problem last night was making me nuts for about a week. For some reason, the motion data one of Pooper's Maya/Motion Builder rigs kept coming into Lightwave all messed up. To make it even more confusing, the other characters passed through the LW>Maya>MB>LW workflow just fine. I kept comparing the rotations off all the rigs in all three programs and could not see any difference between the 'mocap' rig from M/MB and the 'anim' rig in Lightwave (other than the root of course.)

Finally, I exported a new 'master' rig from my original Lightwave scene to Maya, applied the weights I previously created in Maya to it (export/import weight maps is awesome!), sent it back to Motion Builder to apply the motion data, back to Lightwave, and this time it worked! So, then I compared that rig to the previous M/MB rig, and I still could not see a difference. There must be some corrupt or errant data in this rig that's not visible at the user level (or at least to someone with my 'beginner' level of experience) that is being carried through FBX.

Anyway, problem solved. The new rig works perfectly! Now I just hope I can apply the motion tweaks from the 'bad' rig to the new one. I think MB will allow me to rebake the data to the new rig without transferring whatever the 'bad' data is, but I haven't tried it yet.

Quick question: when you use Freeze in Maya to set the rotation of joints to zero, does that introduce the same problem to mocap rigs as when you reset pivot rotations in Lightwave? Because that's the only possible difference between these two rigs that I can think of. A while back, I had noticed in Maya that some joints were not zeroed, so I corrected this manually in Lightwave (with help from Rig Ripper/Stitcher,) and used Freeze Rotation in Maya. The new rig did not need this of course, and it was left 'as is' from Lightwave.

Anyway, back to work. :)

G.

RebelHill
04-03-2011, 05:08 AM
when you use Freeze in Maya to set the rotation of joints to zero, does that introduce the same problem to mocap rigs as when you reset pivot rotations in Lightwave?

Yes, mayas freeze rotations is pretty much the same thing as rpr, and will give you the same issues with mocap exchange. Just like LW, joints setup in maya should have their LRAs aligned with the world axis.

Greenlaw
04-03-2011, 02:39 PM
Yes, mayas freeze rotations is pretty much the same thing as rpr, and will give you the same issues with mocap exchange. Just like LW, joints setup in maya should have their LRAs aligned with the world axis.
Thanks! That explains the problem perfectly for me. :)

G.

jasonwestmas
03-26-2013, 04:05 PM
Seems there is a nifty maya joints option (on fbx import) which shifts the maya weight down one joint for you automatically in 11.5. But no option to do the reverse on export to maya or mobu.

Greenlaw
03-26-2013, 04:29 PM
So that's what that does. Interesting, and yes, we need to reverse for export don't we?

Or better yet, just make it so the weight map goes where it should go--on the parent joint and not the child--and be consistent with LightWave bones. As it currently works, the offset doesn't make a lot of sense and it causes unnecessary problems when switching from joints to bones. (Not to mention, it makes LightWave joints incompatible with other applications like Motion Builder, Maya, etc.) This issue has been one of the few things that continues to annoy me about LightWave.

G.

jasonwestmas
03-26-2013, 04:36 PM
yeah some consistency is definitely needed here. I also seem to get worse results when I export weightmaps only (weightmaps only/normalize checkbox). Weightmaps only probably isn't working with the Valkarie exporter either. Not a huge deal in my case since we can use the maya fbx skin that I imported into lightwave and bring that into mobu too.

tyrot
08-16-2014, 07:19 AM
-what an important thread - just caught my attention ...