Jump to content

New Clothing Body Style Converter Beta v0.89f (10-26-2014)


gerra6

Recommended Posts

Posted

Making a lattice with the latest version, with 2-step enabled, I got this error

 

 

 

 

Main Search

search_targets 1

Template Vertices: 4560

search_resolution 1

Building Vertex Dictionary

Target Mesh Vertices 3934

Building Vertex Dictionary

searching for Targets

196 of 3934 verts searched

393 of 3934 verts searched

589 of 3934 verts searched

785 of 3934 verts searched

981 of 3934 verts searched

1177 of 3934 verts searched

1377 of 3934 verts searched

1574 of 3934 verts searched

1770 of 3934 verts searched

1966 of 3934 verts searched

2163 of 3934 verts searched

2359 of 3934 verts searched

2555 of 3934 verts searched

2751 of 3934 verts searched

2947 of 3934 verts searched

3143 of 3934 verts searched

3341 of 3934 verts searched

3537 of 3934 verts searched

3737 of 3934 verts searched

3934 of 3934 verts searched

Lattice Morph None

Saving Lattice to F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\Clothing Converter\lattice\test.lat

Traceback (most recent call last):

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\make_lattice.py", line 299, in <module>

    input('\nWork done, press enter to close.')

AttributeError: 'Logger' object has no attribute 'errors'

Error in sys.excepthook:

Traceback (most recent call last):

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\make_lattice.py", line 293, in keep_alive

    input('\nAn Error Occurred, press enter to close.')

AttributeError: 'Logger' object has no attribute 'errors'

Original exception was:

Traceback (most recent call last):

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\make_lattice.py", line 299, in <module>

    input('\nWork done, press enter to close.')

AttributeError: 'Logger' object has no attribute 'errors'

 

Also, when applying the generated lattice to clothing, I don't notice any improvement in the cleavage crash using the 2-step lattice.

 

attachicon.gifClevage Crash.zip

 

PS - After more testing, I also get this error when I tried to enable mesh customisation during the clothing conversion process

 

**********Meshes Initialized**********

******nif_gender******

FEMALE

Traceback (most recent call last):

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 342, in <module>

    Main()

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 333, in Main

    process_nif(this_file, lattice, lattice_dict)

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 159, in process_nif

    axis_menu = NodeMovementMenu(target_nif.meshes, c_s)

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\kg\ui_tools.py", line 231, in __init__

    self.node2[m.lbl] = uiToggle(temp_frame, 'Alternate Constraints', 'PACK', arrange = 'GRID', col = 0, colspan = 3, row = 11)

TypeError: __init__() got multiple values for argument 'arrange'

Error in sys.excepthook:

Traceback (most recent call last):

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 337, in keep_alive

    input('\nAn Error Occurred, press enter to close.')

AttributeError: 'Logger' object has no attribute 'errors'

Original exception was:

Traceback (most recent call last):

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 342, in <module>

    Main()

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 333, in Main

    process_nif(this_file, lattice, lattice_dict)

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 159, in process_nif

    axis_menu = NodeMovementMenu(target_nif.meshes, c_s)

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\kg\ui_tools.py", line 231, in __init__

    self.node2[m.lbl] = uiToggle(temp_frame, 'Alternate Constraints', 'PACK', arrange = 'GRID', col = 0, colspan = 3, row = 11)

TypeError: __init__() got multiple values for argument 'arrange'

 

 

 

 

Also, did you manage to make any progress on fixing underboob clipping?

 

Cheers

 

Hey, that first error (lattice generation) is the same error I get! 

Posted

89.h solves a major problem I was having. With previous versions I had a skirt where the original worked fine but the conversion always clipped around the thighs when crouching/sneaking. 89.h solves that completely. Thank you!

Posted

OK, Clothing Converter 89.g is now live at http://kgtools.org/

 

This includes an option to automatically generate and use a complex 2-step lattice.

 

The net effect should be identical to the method outlined here: http://www.loverslab.com/topic/27557-new-clothing-body-style-converter-release-candidate-v085a-10-04-2014/?p=960799

 

Instead of needing to run all of those extra steps to manage 'cleavage crash', just enable 'Two Step Lattice' with x-axis constraint when running Make Lattice.

 

To control how the two step lattice is applied when running Clothing Converter, select the appropriate material type from the 'Use Alternate Constraints' options, or enable 'customize meshes' and enable alternate constraints on individual meshes.

 

I just went back and read the post with the original procedure. I sort of understand it, but there are parts that I get lost on when trying to figure out how to convert that procedure into the .89h version of converter. Where I mainly get lost is on what the input is supposed to be on each of the steps, and how to translate those instructions into the "use alternate constraints" option in 89h.

Posted

Well i've stuck a version behind right now, I guess, but I've spent a few hours trying to rectify an inconsitency.

 

I've going cbbe > bodyslide (ffw). Using UV search on the lattice, the end dimensions are somewhere between the bodyslide and cbbe. Consequently, the hands and feet don't line up. The feet are better, but the shoulders are narrower than the target body, which brings the arms in which makes the wrists off-axis creating a gap.

 

Did I miss a step? previous cbbe > ffw conversions went without . . . . oooohhhh I just realized: skeleton.

 

I need to rerig the source outfit with the same skeleton (xpmse) 

 

Normally, I'd erase this, but it's relevant:

If you're going to convert outfits from Alans BBP Pack, you're going to need to convert the skeleton first.

Posted

Well, the first thing I should say, the two-step lattice is not a universal solution to cleavage-related issues.

 

Instead, it's a solution that eliminates the need to generate multiple lattices for certain types of tricky transforms.

 

Basically, it creates a single lattice that includes a UV (or index) search (which can induce major vertex movements) and a second nearest point on surface search based on the constrained results of the first search. Confused yet?

 

OK, so one of the big ways that cleavage distortion happens is when the UV/Index search moves vertexes a long ways in the X or Z axis directions (left right, up down).

 

If the nif includes, say, a shirt, then any vertices in that shirt are going to get moved along that big axis transform. You probably don't want that to happen, instead you want the shirt to respond to the movements of whatever is under it.

 

OK, so what you can do is make a lattice with 2-step lattice enabled. Select any axes that you want to limit movement on. Want to limit it on the XZ plane? Click X and Z.

 

The tool will then make a lattice that contains two entirely different transformations for clothing converter to use.

 

The main transform will be identical to the lattice you would normally get.

 

The alternate transform fairly complex to explain, so feel free to skip this bit.

 

 

 

1. First the tool takes the transform from the 1st step.

2. It discards any axes selected in the menu. So if the user selected 'x', then the tool will treat each transformation vector as (0,y,z) instead of (x,y,z)

3. The tool applies each transformation vector as a search offset to each vector. In practical terms, this is equivalent to running a mesh through clothing converter.

4. The tool runs a nearest point on surface search using the modified vertex locations

5. The tool saves the resulting transforms (original vertex location to final vertex location from step 4) as an alternate transform in the lattice

 

 

 

To make use of the alternate transform, simply tell the tool which material types or meshes to use it with.

Posted

I have no idea if I'm doing something wrong, or maybe missing a stage in the process...

For your convenience, here are the meshes I tried to convert, and the body types I made the lattices from -

The problem appears to be the from nif that you are using. It's been chopped up and is missing substantial segments.

 

To fix this, you'll need to find a complete version of the from body.

 

So, why does the body need to be complete? Mostly because the from body defined the shape of the lattice. Gaps in the lattice lead to distortions in the conversions.

Posted

Did I miss a step? previous cbbe > ffw conversions went without . . . . oooohhhh I just realized: skeleton.

Yeah, different skeletons can radically alter the bind poses and positions in the meshes.

 

In particular, pairing hands/feet/head with a body that was rigged with a different skeleton rarely ends well.

Posted

Making a lattice with the latest version, with 2-step enabled, I got this error

It appears that my error handling module has begun introducing errors. Joy.

 

Now that I've finally got errors writing to the log file, I'll disable it in the next version.

 

Also, did you manage to make any progress on fixing underboob clipping?

Not really, although a 2-step lattice with Z enabled might help a bit, depending on the meshes that you are converting.

 

Ultimately, the only real fix is likely happen when I finally get clipping eliminator working.

Posted

 

Making a lattice with the latest version, with 2-step enabled, I got this error

It appears that my error handling module has begun introducing errors. Joy.

 

Now that I've finally got errors writing to the log file, I'll disable it in the next version.

 

Also, did you manage to make any progress on fixing underboob clipping?

Not really, although a 2-step lattice with Z enabled might help a bit, depending on the meshes that you are converting.

 

Ultimately, the only real fix is likely happen when I finally get clipping eliminator working.

 

Thanks, did you see this one as well?

 

 

 

**********Meshes Initialized**********

******nif_gender******

FEMALE

Traceback (most recent call last):

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 342, in <module>

    Main()

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 333, in Main

    process_nif(this_file, lattice, lattice_dict)

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 159, in process_nif

    axis_menu = NodeMovementMenu(target_nif.meshes, c_s)

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\kg\ui_tools.py", line 231, in __init__

    self.node2[m.lbl] = uiToggle(temp_frame, 'Alternate Constraints', 'PACK', arrange = 'GRID', col = 0, colspan = 3, row = 11)

TypeError: __init__() got multiple values for argument 'arrange'

Error in sys.excepthook:

Traceback (most recent call last):

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 337, in keep_alive

    input('\nAn Error Occurred, press enter to close.')

AttributeError: 'Logger' object has no attribute 'errors'

Original exception was:

Traceback (most recent call last):

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 342, in <module>

    Main()

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 333, in Main

    process_nif(this_file, lattice, lattice_dict)

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\convert_clothing.py", line 159, in process_nif

    axis_menu = NodeMovementMenu(target_nif.meshes, c_s)

  File "F:\Pose Convertor Non Blebder\Tools RC_85_a\Tools RC_89_h_Light\kg\ui_tools.py", line 231, in __init__

    self.node2[m.lbl] = uiToggle(temp_frame, 'Alternate Constraints', 'PACK', arrange = 'GRID', col = 0, colspan = 3, row = 11)

TypeError: __init__() got multiple values for argument 'arrange'

 

 

Posted

Thanks, did you see this one as well?

Yeah. I goofed when I added the button to the customize meshes page.

 

It'll be fixed in the next upload.

Posted

OK, I've posted an update to http://kgtools.org/

 

v.0.89.h to v.0.89.i

1. Resolved 0.89.h crash error when Customize Meshes option was enabled.

2. Clarified error when running the tool and no From/Template nif was selected

3. Resolved error that would occasionally occur when the tool finished processing a mesh

Posted

 

Did I miss a step? previous cbbe > ffw conversions went without . . . . oooohhhh I just realized: skeleton.

Yeah, different skeletons can radically alter the bind poses and positions in the meshes.

 

In particular, pairing hands/feet/head with a body that was rigged with a different skeleton rarely ends well.

 

 

Thx for confirmation.

 

Also, sidetrack: why advance versions in letters now instead of incrementing numbers?

Posted

Thx for confirmation.

 

Also, sidetrack: why advance versions in letters now instead of incrementing numbers?

Well, mostly because I don't want to hit 1.0 yet.

Posted

 

Thx for confirmation.

 

Also, sidetrack: why advance versions in letters now instead of incrementing numbers?

Well, mostly because I don't want to hit 1.0 yet.

 

0.89.1

0.99.1

0.100.1

 

(=

Posted

 

I have no idea if I'm doing something wrong, or maybe missing a stage in the process...

For your convenience, here are the meshes I tried to convert, and the body types I made the lattices from -

The problem appears to be the from nif that you are using. It's been chopped up and is missing substantial segments.

 

To fix this, you'll need to find a complete version of the from body.

 

So, why does the body need to be complete? Mostly because the from body defined the shape of the lattice. Gaps in the lattice lead to distortions in the conversions.

 

 

Okay, I tried a completely different body type, and a different target mesh, I'm still getting the same problem.

 

 

Ir5TPvj.jpg

 

(from) body.nif

(to) body.nif

rap_0101.nif

Posted

Well, I'm not sure exactly what's causing it, but the upper body mesh that you are using in the to body nif is getting rendered as spaghetti by my tool.

 

The structure of the nif itself is a bit funky, but nothing that should necessarily cause spaghetti. Note, the hands and lower body appear to work fine.

 

Anyways, I was able to get good results with other nifs as the 'To' nifs. So try grabbing some bodies from Setbody Reloaded, Movomo and I spent countless hours cleaning and repairing those nifs, so hopefully any of those should work as your To nif.

 

Note: Your From and To nifs do not need to be a single nif. Just place the upper body, lower body, hands, and feet in a single folder. When select the 'From' or 'To' nif, just select all of the nifs at the same time.

 

Last Note: This is unrelated to the main issue. The Roberts feet with the detached toenails can't be used with UV search, the toenails occupy overlapping UV space which causes a whole lot of ugly. To fix that, after the conversion, just swap the mangled feet for a non-mangled version.

 

*edit*

 

Anyways, I'm going to spend a bit of time trying to figure out exactly why that particular upper body mesh is getting turned into spaghetti. There is some definite nastiness in the nif file structure (2 scene roots, geometry block is a child of a non scene root niNode), but it doesn't look like those are causing the problem.

Posted

Thanks! I'll try using meshes from Setbody and I'll post the results in a couple of days hopefully.

 

The one I've been using is SetBody_Reloaded_Blockhead_0_39_1_Data.7z. This has become my default standard set of meshes to work from, for anything Oblivion.

 

There is also a SetBody_Reloaded_Blockhead_0_39_Modders_Resource.7z that includes some already built, .pkg files.

 

 

The problem appears to be the from nif that you are using. It's been chopped up and is missing substantial segments.

 

To fix this, you'll need to find a complete version of the from body.

 

That has, for as long as I've been beating on these tools (and other 3d tools) been a limitation of the tool. You may be able to code a tool to extrapolate, that if there are multiple mesh pieces within a given set of 3d coordinates X, Y and Z, interpret that as one mesh and join or 'fill in' the 'empty' space. I have not seen a major 3d tool need for it until now, with these partial body meshes in Oblivion. I think whether or not that is even possible, would be to first determine how much variation is present in a typical Oblivion body in 3d space.; X, Y and Z max and min.

 

That mesh, even though it is one NIF, would be interpreted as two or more individual meshes in 3d space. So when ever I find an armor/clothing mesh I want to convert the first thing I test for is mesh 'completeness', followed by a What-the-Fuck-Body-is-That?! if it is not. Usually those meshes get filed on my back-burner of, I'd Love to convert it some day, just not today.

 

To add to this chaos, the same Oblivion MOD author can and did use multiple variations, of the same body type, over their years of MOD authoring. Some were even self-made 'tweaks' by the author, to get an armor/clothing item to not clip and/or custom fit for a certain in-game appeal. (Some even went as far as 'borrowing' other MOD authors variants and included/used them in their work. Krista and Colourwheel, or visa versa as one example.)

 

So I've found a certain amount of Pretesting & Evaluation of a mesh needs to be done upfront, before trying to do any kind of Conversion or Mesh Rigger work.

Posted

That has, for as long as I've been beating on these tools (and other 3d tools) been a limitation of the tool. You may be able to code a tool to extrapolate, that if there are multiple mesh pieces within a given set of 3d coordinates X, Y and Z, interpret that as one mesh and join or 'fill in' the 'empty' space.

My tool framework currently does something approaching that, minus the 'extrapolation.

 

Right now, when the tool builds a lattice, it combines all of the meshes (that match desired material type) in all of the nifs selected as 'From' nifs into a single composite logical mesh.

 

If you have two chopped up examples of the same body that, combined, cover the entire body, you can simply select both and the tool should seamlessly combine them into the lattice. Overlap between the meshes won't hurt anything, so long as the meshes match each other perfectly aside from the cutouts.

 

However, there are a couple of things that won't work. It won't extrapolate for missing empty space. If the two bodies don't match, they'll both compete to convert meshes and you'll get some truly awful distortions.

 

There are good reasons for this, the tool doesn't know or care whether it's converting bodies or cars. Although it's called clothing converter, it's really just a universal shape converter.

 

Feed it two shapes, and it will figure out how to convert the first shape into the second shape.

 

I have not seen a major 3d tool need for it until now, with these partial body meshes in Oblivion. I think whether or not that is even possible, would be to first determine how much variation is present in a typical Oblivion body in 3d space.; X, Y and Z max and min.

One thing that I could probably code, if there is demand, would be a sort of unversal mesh fill-in-the-gaps tool.

 

Here's the basic ides:

 

1. Select a partial body nif that's missing stuff

2. Select a full body nif that is a pretty good representation of the missing parts.

2.a. This body would need to use the same UV map as 1

2.b. Pretty good match between the chopped seams in 1 and the equivalent body spaces in 2. So, if you need arms copied from a mesh, ensure that the arms match the body you are copying too even if the rest of the body is radically different.

 

I should be able to write a tool that would borrow the gap faces from body 2 and slap them into the appropriate trishapes in body 1.

 

A prototype version of this tool would probably use a SeamMender type repositioning of edge faces copied from body 2 to fit them onto the edge seams of body 1.

 

If I get ambitious, a later version would actually cut an entirely new edge along the UV border between the mesh 1 and mesh 2.

 

*edit* Hmm, I just thought of a very clean method to cut a new edge, so the prototype would probably be pretty close to the final version.

 

Any interest?

Posted

Here's another one of those enhancement request thingies... Due to the variation in bodies like 7B, UNPB, etc., can we get an option to only convert the _0 or _1 meshes in a folder? So far, I've been doing it manually since I use separate _0 and _1 lattices. Alternatively, you could look for _0 and _1 lattices and do it automatically.

Posted

I renamed it 'strict seams' I think

 

 

 

1z5u8vq.jpg

 

 

 

its probably a problem on my side then ._.

 

Any ideas why i can not find anything even remotely connected to seams? Everything else works fine, just not that.

 

If you can't or won't help, i want to also thank you for this brilliant tool, i'll get allot of use out of it ,

even if i cant get a roberts male shaped hgec top

 

Seriously, you're my favorite Cylon toaster ever.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...