Jump to content

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


Recommended Posts

Well the 7B vertex count is up to 187168 apparently on the template for at least one of the parts, and then 133640 for the next which ... seeeeeeems high to me but I could be woefully out of touch with what's considered normal. Anyway, installed the 64bit python and giving it another go. It's still running, which may be a good sign.

Link to comment

That particular vertex count is due to my tool converting the meshes into high resolution searchable surfaces.

 

With 200k apiece, the counts should be low enough to avoid any potential memory problems, but *shrug* I don't know yet.

 

I do need to look for ways to economize memory usage by these tools, although it may be tough to do, given the huge amount of data that needs to be attached to each and every vertex.

 

*Edit*

 

Yep, confirmed...it's running out of accessible memory. The 64 bit version of Python should be able to handle these meshes, but it's choking the 32 bit version.

 

When I refactor these tools, I'll see if I can come up with any good ways to reduce the amount of memory sucked up by each vertex. That's what's causing the problems.

 

Unfortunately, Python doesn't really allow me to directly manage memory, so I need to figure out if there are alternative ways to store/access this data that won't suck up so much memory.

Link to comment

So far the switch to 64bit is looking like a success partial success. It took basically FOREVER, but did eventually produce the attached lattice using the input templates I used before, and that lattice did then successfully convert ... 

 

... or rather it spat out a few meshes that looked a bit like they'd been chewed on. 0.0

 

Oy.

 

I'm gonna go ahead and attach the lattice with the before and after meshes so you can see what I was attempting. Then I guess I'll keep working on building more solid templates and see if I can figure out if it's a problem with this particular test outfit or ... or if I'm just using the wrong settings somewhere or something. Maybe I'll try UNP -> Sevenbase instead next time, that might be easier since the textures are compatible. IDK.

samples.zip

Link to comment

Ah.

 

If the textures aren't compatible, then it's extremely important to disable 'UV Search'.  Basically, the tool checks the file paths of the textures to determine whether or not they are compatible.  If the textures have the same path and file name, they are assumed to be the same texture, with the same UV map.

 

Enabling UV Search on nifs with identically named but incompatible textures will yield unpredictable results.

 

Unfortunately, disabling UV search means that the tool will resort to a nearest neighbor search, which does not always generate satisfactory results.

 

*Edit*

 

One method that I sometimes use to side-step this issue is to load the template nifs in Blender.  Once they're loaded, I use either armature bone deform methods (I can explain if needed), sculpt mode, and my Blender Clothing Converter to convert the To nif into roughly the shape of the From nif.  Once that's done, I export the To nif which matches the From shape.

 

Then use that modified nif as your 'From' nif in the Clothing converter.

Link to comment

got this during install. Does it matter?

Nah, it just means that you installed a version of Python 3.x that the Pyffi 3k installer didn't recognize.

 

The tool doesn't use qskope, so with any luck it should be fine.

Link to comment

Alright so I ran this for the first time in "a while"

 

So . . . question . . .

 

How complete do you consider this for Skyrim? Cuz tbph, the fucking thing works like a fucking charm. Christ on a stick this is awesome.

 

ADEC Tera original

 

 

post-37623-0-56444900-1395477927_thumb.jpgpost-37623-0-37313400-1395477926_thumb.jpg

 

 

 

result of my conversion to a bodyslide body.

 

post-37623-0-54821200-1395477925_thumb.jpgpost-37623-0-52360700-1395477928_thumb.jpgpost-37623-0-48778300-1395477929_thumb.jpgpost-37623-0-48036300-1395477930_thumb.jpg

 

 

Yeah I've got some holes, clipping problems. But that's just tweaky shit. Also, I know I haven't 'stretched' it too far. I mean the proportions of the 2 bodies are pretty close. And to be perfectly honest, if you can accurately convert like this, it will cover 90% of anyone that would use it.

 

WELL DONE.

Link to comment

That's what I like to hear.

 

In terms of quality, I'm reasonably happy with the current performance of the tool. It's not perfect, and I'd like to improve it further, but it's in a pretty good state right now.

 

In terms of performace...it's a sluggish beast. The back-end slosh that matches up vertices between meshes with different skinning transforms, different bone transforms, etc is a severe resource hog. I'm working on some major engine updates that should make things a bit more streamlined and robust on the back-end.

 

Major Planned Upgrades:

1. UV Remapping Feature (Convert nif from one texture standard to another): This may take the form of a separate stand-alone tool. I'm currently developing a framework that, when complete, will be able to convert between known UV maps. This will make it possible to generate high quality conversion lattices between meshes with different UV standards.

2. Smoothing near X-Axis: Add an option to Convert Clothing that will dampen movement towards the X-Axis to prevent the colliding cleavage problem

3. Improved compensation for different bone binds, skin transforms, etc: This should improve the ability of the tool to generate conversion lattices between meshes with different transforms and different skeletons

4. (Maybe) Improve the generation of the High Resolution Surfaces: Generate curved high resolution surfaces rather than planar division.

5. (Maybe) For Convert Clothing, dynamically increase vertex counts in areas where low vertex counts results in clipping.

Link to comment

It shouldn't cause a problem with Blender.

 

You can run multiple simultaneous installs of Python. Just install Python 3.x in a separate directory than Python 2.6.2

 

However, with multiple Pythons, you will need to ensure that your OS uses the correct version of Python when you run the 'light' version of my tools.

 

Either ensure that Python 3.3.3 is associated with .py files when you install it, or create a .bat file that launches the tools using the correct version of Python.

 

If your Python 3.3.3 is installed to C:\Python\Python33:

 

1. Create a file called Convert Clothing.bat and add the following lines to it

 

C:\Python\Python33\python.exe convert_clothing.py
pause 
2. Create a file called Make Lattice.bat and add the following lines to it

 

C:\Python\Python33\python.exe convert_make_lattice.py
pause 
Link to comment

That's what I like to hear.

 

In terms of quality, I'm reasonably happy with the current performance of the tool. It's not perfect, and I'd like to improve it further, but it's in a pretty good state right now.

 

In terms of performace...it's a sluggish beast. The back-end slosh that matches up vertices between meshes with different skinning transforms, different bone transforms, etc is a severe resource hog. I'm working on some major engine updates that should make things a bit more streamlined and robust on the back-end.

 

Major Planned Upgrades:

1. UV Remapping Feature (Convert nif from one texture standard to another): This may take the form of a separate stand-alone tool. I'm currently developing a framework that, when complete, will be able to convert between known UV maps. This will make it possible to generate high quality conversion lattices between meshes with different UV standards.

2. Smoothing near X-Axis: Add an option to Convert Clothing that will dampen movement towards the X-Axis to prevent the colliding cleavage problem

3. Improved compensation for different bone binds, skin transforms, etc: This should improve the ability of the tool to generate conversion lattices between meshes with different transforms and different skeletons

4. (Maybe) Improve the generation of the High Resolution Surfaces: Generate curved high resolution surfaces rather than planar division.

5. (Maybe) For Convert Clothing, dynamically increase vertex counts in areas where low vertex counts results in clipping.

 

Item 5:

 

can you reliably detect clipping?

 

The only caveat I would see with this would be that doing it too much may create game performance issues. But I will tell you that if "dynamic clipping resolution" were a feature, I would officially call you awesome. 

 

In terms of automating it, I think you have a couple of potential solutions

  1. rotating the edge that is actually embedded (when modelling a couple yrs ago I found that this solved clipping quite readily)
  2. creeping the outfit surface away from the body by small amounts
  3. adding verts to create a smoother surface
  4. outright deleting the polys of the body surface underneath the outfit.

Item #4 could be called destructive, to be sure, but to what end? It literally means nothing. I mean when you take off an outfit, the body is not revealed, it's replaced, right? So truly if you wanted to be brute about it, RIGHT NOW you could just delete concealed polygons. Clipping problems would go completely away, most players wouldn't be the wiser, and it would release about Ks of polygons to the scene.

 

The best bet would probably be some combination of the 4, with 4 being considered the most "fuck it" (not by me, tho). I think the numbered order is probably a good order of aggression for "dynamic clipping resolution". Rotate first, then move down the list until it's resolved.

 

 

On another note, I was thinking about a name for your: TES Tailor, ArmorSlide, and some other third thing that I fucking forgot.

TES Tailor because it's not just skyrim, Altho Sky Tailor has a better ring and as long as the "oblivion compatibility" is documented well, nobody will really care. and ArmorSlide suggests that it's a a companion app to BodySlide... which is my usage. While it's a different style app, it is almost required for anyone using bodyslide (creating bodies is easy, outfits, not so much).

Link to comment

Here's the latest experimental Beta. If reports are positive, I'll update the main download.

 

Convert Clothing Beta 45

 

ChangeLog

1. Significant Improvements to the back-end vertex matching algorithm. This should result in notable improvements to many former problem areas

2. Significant Improvements to the ability of the tool to work with meshes with unusual bone and/or skin transforms.

3. Elimination of 'wayward vertex' problem when converting meshes with bad or incompatible skinning.

 

Edit: Outdated Download Removed

Link to comment

Item 5:

 

can you reliably detect clipping?

Maybe. I haven't written the algorithm yet, but here's my plan for it.

 

I have a framework that can read or generate Vertex Normals and Face Normals, Tangents, and BiTangents, which collectively can be used to reliably tell me which side of a given mesh is inside, and which is outside.

 

I have a framework that can reliably and quickly detect the nearest neighbor to a given mesh.

 

So, one thing that I can do is compare two meshes on the same nif, use a combination of vertex normals, vertex locs, face normals, and face locs to determine whether one mesh 'wraps' the other mesh. I can then, presumably, use that same information to identify problem locations where a vertex or face that should be on the outside is on the inside.

 

It's all speculative at the moment.

 

Today, my focus has been on perfecting the geometry block localspace to shared worldspace and back to geometry block localspace transforms.

 

That code update is just about ready for roll-out.

 

An explanation of exactly what it does gets really complex really quickly, but the short explanation is that the back-end improvements should both improve the quality of clothing conversions and eliminate a major source of errors.

 

 

 

It gets really hairy because, for every bone that a given geometry block is skinned with, the code has to account for the base bone transform, the skinned bone transform, the geometry block transform, the skin instance transform, and any differences in bone bind transforms between equivalent bones on the two nifs I'm comparing. Then, to actually convert a vertex location to usable worldspace, I need to combine the composite skinned bone transforms with the normalized vertex weighting data. On the plus side...now that code is complete and fully functional, nifs that contain incompatibly skinned geometry blocks no longer pose a problem.

 

 

 

Item #4 could be called destructive, to be sure, but to what end? It literally means nothing. I mean when you take off an outfit, the body is not revealed, it's replaced, right? So truly if you wanted to be brute about it, RIGHT NOW you could just delete concealed polygons. Clipping problems would go completely away, most players wouldn't be the wiser, and it would release about Ks of polygons to the scene.

That might be the way to go. Since my framework automatically generates the partner Morph nif from the nif that it's actually modifying, any pruned faces and verts will modify the vertex order on both partner morph nifs.

 

TES Tailor because it's not just skyrim, Altho Sky Tailor has a better ring and as long as the "oblivion compatibility" is documented well, nobody will really care. and ArmorSlide suggests that it's a a companion app to BodySlide... which is my usage. While it's a different style app, it is almost required for anyone using bodyslide (creating bodies is easy, outfits, not so much).

All good names

Link to comment

Just when I thought I had this template process figured out - the UNP body is apparently the odd one out of the bunch. Hand/Foot meshes refuse to match up correctly with the body no matter what order I rig or copy in, so no matter what I do it's going to take manual adjustment to get something I can test there.

 

Downloading the new version to try and make a new lattice for my existing templates, meanwhile. I'll report back when I've tested it - and thanks again!

Link to comment

The earlier versions of Clothing converter tended to choke if a nif contained multiple meshes with incompatible skinning, or meshes with skinning incompatible with the bones in the nif. Very bad things tended to happen.

This latest update should fix those types of issues.

Incompatible UV maps will still cause problems if UV Search is enabled, but hopefully that issue will be resolved once I finish work on my automated UV converter.

In the meantime, here's

Clothing Converter Beta 46

ChangeLog:

 

45 to 46
1. New option added to Convert Clothing: 'Don't Cross X-Axis'. When enabled, it will not allow any vertex transforms to cross the x-axis. This eliminates the 'vertex crash' that otherwise occurs when cleavage collides.
2. Vertex Normal Calculation code improved: Re-calculation of vertex normals will now automatically mend seams caused by vertex doubles (i.e. along UV seams).

 

42 to 45

1. Significant Improvements to the back-end vertex matching algorithm. This should result in notable improvements to many former problem areas
2. Significant Improvements to the ability of the tool to work with meshes with unusual bone and/or skin transforms.
3. Elimination of 'wayward vertex' problem when converting meshes with bad or incompatible skinning.

Download:

Portable Package (all in one): Convert Clothing b_46.7z
Scripts Only (Requires separate Pyffi and Python 3.x install): Convert Clothing b_46_Light.7z

 

Please let me know how this update does.  If reports are positive, I'll update the front page with the new version.

Link to comment

The earlier versions of Clothing converter tended to choke if a nif contained multiple meshes with incompatible skinning, or meshes with skinning incompatible with the bones in the nif. Very bad things tended to happen.

 

This latest update should fix those types of issues.

 

Incompatible UV maps will still cause problems if UV Search is enabled, but hopefully that issue will be resolved once I finish work on my automated UV converter.

 

In the meantime, here's

 

Clothing Converter Beta 46

 

ChangeLog:

 

45 to 46

1. New option added to Convert Clothing: 'Don't Cross X-Axis'. When enabled, it will not allow any vertex transforms to cross the x-axis. This eliminates the 'vertex crash' that otherwise occurs when cleavage collides.

2. Vertex Normal Calculation code improved: Re-calculation of vertex normals will now automatically mend seams caused by vertex doubles (i.e. along UV seams).

 

42 to 45

1. Significant Improvements to the back-end vertex matching algorithm. This should result in notable improvements to many former problem areas

2. Significant Improvements to the ability of the tool to work with meshes with unusual bone and/or skin transforms.

3. Elimination of 'wayward vertex' problem when converting meshes with bad or incompatible skinning.

Download:

 

Portable Package (all in one): attachicon.gifConvert Clothing b_46.7z

Scripts Only (Requires separate Pyffi and Python 3.x install): attachicon.gifConvert Clothing b_46_Light.7z

 

Please let me know how this update does.  If reports are positive, I'll update the front page with the new version.

Latest beta crashes during lattice generation with this error (I know is hard to see the text, but the window closes too quickly to get a proper capture).

 

Edit - Here's a better version

 

Traceback (most recent call last):

  File "C:\Users\User\Desktop\Convert Clothing b_45\Convert Clothing b_46_Light\make_lattice.py", line 180, in <module>

    Main()

  File "C:\Users\User\Desktop\Convert Clothing b_45\Convert Clothing b_46_Light\make_lattice.py", line 113, in Main

    from_nif = file_util.load_nif(cs.get('template'), init_skin = False, init_mesh = True)

  File "C:\Users\User\Desktop\Convert Clothing b_45\Convert Clothing b_46_Light\kg\file_util.py", line 417, in __init__

    self.mergeSkeletonRoots()

  File "C:\Users\User\Desktop\Convert Clothing b_45\Convert Clothing b_46_Light\kg\file_util.py", line 1269, in mergeSkeletonRoots

    r.set_transform(mat_i * r.get_transform())

AttributeError: 'NiBinaryExtraData' object has no attribute 'set_transform'

>>>

 

post-800-0-12196700-1395663648_thumb.jpg

Link to comment

Thanks for the bug report.

 

Would you be willing to post the files you were working on when you got that error? To trigger that error, my guess would be that you were working with a nif that had an orphan niExtraData block (which is generally a bad thing)

 

This can happen if a modder deletes a geometry block (TriShape, TriStrips) improperly in nifskope. Every bloc that is an attribute of the deleted geometry block can end up as a scene root, which can get real ugly.

 

I'd like to take a look and see if my guess is correct.

 

Something like this: femaleupperbody.nif

Link to comment

Here's a patch that allows the tool to work-around orphan property blocks (NiBinaryExtraData, NiTexturingProperty, NiMaterialProperty, etc)

 

Convert Clothing v 47

 

Change Log

1. Orphan property type blocks will no longer crash the tool

 

Download:

 

Upgrade from Portable Beta 46 to Beta 47: Convert Clothing b_47_Upgrade.7z

(To install, copy the PythonPortable into your working Convert Clothing Beta 46 install)

 

Scripts Only Beta 47: Convert Clothing b_47_Light.7z

Link to comment

I hope it discards those orphans? (there are large numbers of meshes out there with all sorts of flock in them. I know, 'cos I'm always cleaning them out (grin)).

Yep.

 

One of the things that the latest iteration of the tool framework does is automatically merge all scene roots into a single root.

 

So any orphan niNodes or geometry blocks will be added as children to the main scene root.

 

If a nif has two scene roots, the children of the second scene root will be added as children to the main scene root and the second scene root itself will be removed.

 

Any orphan blocks that are do not belong to the niAVBlock family will simply be discarded.

 

If you like, I can add the merge scene root functionality into a stand-alone tool. That would allow you to clean the scene roots of entire folders of files at once.

Link to comment

Here's a patch that allows the tool to work-around orphan property blocks (NiBinaryExtraData, NiTexturingProperty, NiMaterialProperty, etc)

 

Convert Clothing v 47

 

Change Log

1. Orphan property type blocks will no longer crash the tool

 

Download:

 

Upgrade from Portable Beta 46 to Beta 47: attachicon.gifConvert Clothing b_47_Upgrade.7z

(To install, copy the PythonPortable into your working Convert Clothing Beta 46 install)

 

Scripts Only Beta 47: attachicon.gifConvert Clothing b_47_Light.7z

Ok, the tool doesn't crash now, but when a lattice is run on a mesh, no changes occur at all when it is saved, try these ones out.

 

 

 

Link to comment

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...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use