Age | Commit message (Collapse) | Author |
|
export and import.
On export, we also want to tage as sharp edges from flat faces, and edges shared by more than two faces.
On import, we want to tag all faces as smooth and enable autosmooth, when we only have smooth edge data...
|
|
Mess in filename props ID.
Thanks one more time FBX for your beautiful demonstrations of pure logic insanity...
|
|
|
|
`elem_find_first_string_as_bytes`, and remove exception for AllSame mapping...
|
|
first), add support for embeded images.
|
|
was a bit too aggressive, forgot lamps, cameras & co).
|
|
Always expect FBX to do stupid things, and hence try to armor against it
with deterministic handling of data...
|
|
I’m quite not sure whether such a situation is supposed to happen, but does not hurt
protecting against it anyway.
|
|
|
|
|
|
|
|
Helps ensuring common behavior, and saves quite a few lines of code, too...
|
|
|
|
This report actually showed two different issues.
First, handling of bind poses was basically useless trash. Blender does not
have any real concept of bind pose, it uses parenting instead. So what we really
need to do here is set matrix_parent_inverse according to bind matrices of armature
and mesh.
Second, mighty FBX actually has *two* different transform models (which combine into
a nice monster using 13 matrices...). Added details in (huge) comment, but short story
is FBX uses by default Maya tx model, but can also store Max one, which uses some kind
of local diff additional transform (similar to our dloc & co I think). So had
to add support for that too, which makes our code even more light and beautiful!
Note those 'geometric transformations' might entertain us again, quite not sure I
caught all cases where we have to take them into account. :/
|
|
Shorten some too long lines, factorize some imports on top of file (!!!),
also done a few optimizations in some places where code was rather stupid.
Nothing expected to change in behavior in this commit!
|
|
|
|
As usual with FBX, 'official' doc of SDK says one thing, actual FBX files
produced by 'official' apps say something else.
This time, it’s about mapping types - looks like it is actually 'valid'
to have layer arrays shorter than actual number of relevant geometry elements (verts, edges, etc.).
Don't know how the SDK handles those case, for now we simply stop filling blen's data layers
once we have reached the end of fbx data layer's array.
Since I was messing with this code, I also refactored it a bit to make it more generic.
Also removed some optimization (like when stride is 1), we loose a few percents of speed,
but nothing critical, and code is much cleaner and generic now.
Only had to keep one exception - seems common to have Poly data with 'IndexToDirect'
mapping without any mapping data - ***sigh***!!!
|
|
This matrix is finally really local to the parent, no more only to the parent object.
Only working with master rBfb7ff31315a1 and later.
Also, fixed some missing matrix copying...
|
|
Thanks to Squashwell (Harrison Nordby) for org report and patch.
|
|
|
|
|
|
|
|
is 'ARMATURE'!
|
|
Looks like FBX allows corruption in its 'database', like UIDs
only existing in Connection table, and just ignores it. When in Rome...
|
|
|
|
automatically.
This does by no mean handle complex setups, but most common basic situations
should be read correctly, and it's much more user-friendly!
|
|
FBX nodes.
|
|
Looks like FBX's 'Root' bone is same as our armature object?
|
|
Just use 'new' inverted_safe() everywhere we are not 100% sure the matrix is invertible...
|
|
rotation to get valid result.
Yet another big breakthrough in FBX fantastic transformation handling! And yet another
hacking parameter to get things imported better.
Anyway, many thanks to artgolf1000 (Mingfen Wang) for finding that hack!
|
|
|
|
|
|
leaf-bones.
|
|
|
|
* Only export global animation if neither NLAStrips nor AllActions options are set.
* Do not prepend '_' to groups' filenames in case of batchexport with no prefix given.
Requested by Mango Jambo through mail.
|
|
This time, it was exporter that did not support bone parenting of mere objects.
Also fixes a more general bug about parenting - matrix_parent_inverse
was not taken into account at all for child objects!
|
|
|
|
work).
Will remove experimental one soon. Keeping old 6.1 exporter active for now, though.
Notes:
* Not 100% happy with how complex code is now... Rather sure though refactor would
take a huge amount of time, not worth it for now.
* New code handles things like armature & animation import much much better than previous one,
so definitively worth it.
* New code also fixes some real bugs (like Blender-side of T42135).
* Did a few cosmetic changes on the run, nothing serious.
This should make FBX work complete, aside from a few nice TODOs that I'll tackle in comming weeks,
in addition to ongoing bugbusting.
Many thanks to Jens for his work on armature mess! :D
|
|
groups are active.
Do not say we have a normal layer when we do not!
Also, warn users about the fact that applying modifiers implies loosing all shape keys.
That later point may be addressed ultimately, but not easily. :/
|
|
Now, find the scene most 'used' by exported group elements, and use its unit settings!
|
|
a_list instead of a bool?!
|
|
not exported correctly.
Now also check modifiers stack.
|
|
|
|
|
|
generate the FBX file.
|
|
|
|
animations.
When we are exporting actions or strips from NLA, and an evaluated anim leads to no anim
at all (like single-keyed actions or pure static ones), key all start and end frames.
Note this might be overkill (due to baked anim, we will key *all* transform channels),
but probably better than skipping completely those actions!
|
|
Forward/Up axes to FBX system was still wrong. Not happy with finding such issue
at this stage of development. :/ Hopefully now we are OK (at least, checked
all orientations with same basice file in Unity, all were imported OK).
|
|
We now this has to be rework completely anyway, but until then, better to avoid crash!
|
|
degenerated
matrices, so better to use inverted_safe() in those cases.
|