Conform By UV

Conform By UV is a plugin for LightWave 3D that I’ve developed together with Lee Perry-Smith who came up with all the ideas and also contributed with the logo and testing.

The concept behind this plugin is to be able to have a base mesh and conform it to other variations, even if the variations have gone through major changes. Like chopping off and replacing body parts, dramatically altering the look, size and proportions. The plugin uses the UV layout as a point of reference to find which points to match between the source and destination mesh to perform the conform. The only requirement is that the UV map layout is basically kept identical between the different meshes to be used.
By using the UV layout to make the conform, point order and point count becomes irrelevant. This is especially useful when working with sculpting applications and then bringing back variations to be used for morphs or new meshes.

A variation of this plugin, Transfer By UV, is also available, which transfers Vertex Maps with this method.

Usage

Conform By UV 1.1Select the foreground and background layer to conform between and then the UV map to be used for matching and run the plugin. It’s important to have in mind that the UV maps of the meshes to conform between must have more or less identical UV layout for this plugin to generate good results.

Mode

The plugin can operate in three different modes: Normal, Cleanup UV and Morph Batch selectable from the dropdown menu.

Normal

The basic functionality, where the the foreground layer conforms to the background layer. The Unweld BG Data and Subdivide BG Data options can be used together with this mode. The conform can also be stored in a morph target (default).

Cleanup UV

Conforms the foreground layer’s UV map to the background layer instead of the geometry. This can be useful to cleanup UV maps that are slightly different. Unweld BG Data, Subdivide BG Data and Unweld & Merge FG options can be used together with this mode. Unweld BG Data and Unweld & Merge FG are particularly useful to enable if there’s many discontinuous UV seams that the plugin doesn’t manage to catch otherwise.

Morph Batch

Lets you select multiple background layers which will be conformed into the foreground as endomorphs. The morph prefix setting can be used for a custom prefix. To speed up the process this mode doesn’t use the extra options, so make sure you have well behaved meshes for this plugin in your layers before using this mode.

Tolerance

The tolerance setting is used in all modes and tells the plugin how far away a point can be in the UV space until it’s not considered for matching. The UV space is calculated from 0-1, so the default setting of 0.02 is 2% tolerance in the UV space. The lower the tolerance the more accurate the matching will be. If the UV maps are 100% identical a setting of 0 could be used, but most of the time where there is slight differences a tolerance of 0.01 to 0.05 seems to work well.

Options

When to use the different options available.

Unweld BG Data

This option unwelds the background layer before doing the matching. The reason one would want to do this is if there’s discontinuous UV seams that the plugin doesn’t match correctly. This doesn’t always happen, it depends on how the mesh is constructed but if it does, this is a useful option. Only use this option when needed as it slows down the calculation quite a lot.

Subdivide BG Data

This option subdivides the background layer to create in-between geometry before doing the matching. This can be really handy to use if the background UV matches border wise but has less geometry than the foreground. It can also take care of situations where the UV maps have too much of a difference in certain regions so the matching isn’t perfect, and would then increase the possibility of making a good match even in those cases.
This option comes with a penalty of much longer calculation time, so use with caution.

Unweld & Merge FG

This option is only used in the Cleanup UV mode, and unwelds the foreground before doing the matching and merges the points back when it’s complete. This is useful if the cleanup mode doesn’t catch discontinuous UV seams. If you combine it with Unweld BG Data discontinuous UV accuracy should be even higher. As it adds to the calculation time, only use this option if you don’t get the desired result without it.

Additional Features

  • The plugin respects point and polygon selections, so you can select an ear, head or hand etc. before running the plugin to only conform that part to the background. It’s also useful to use selections if it exists problem areas that don’t conform properly to include/exclude what you want to conform in the mesh.
  • The conform process can be aborted by pressing the ESC key while the progress bar is running.
  • When the plugin has finished working a report window pops up, giving some information about the result of the operation. If there were points overlapping or points not finding any matches with the background, you have the option here to create point selection sets of the problem points so you easy can select and correct those areas afterwards manually if needed. The selection sets are named UnMatched and Overlap.
  • If you need to delete the generated selection sets, you can do that in Modeler’s Vertex Map Window » Selections Sets » UnMatched/Overlap » Right Click » Delete » Voila!

Have fun conforming!

Demonstration

Lee has made a really nice video tutorial demonstrating how and when to use this tool.

Download

Available downloads for the Conform By UV plugin.

Latest Release

Older Releases

Source Code

Conform by UV is released as an open source project under the new BSD License.
The project is hosted on GitHub where the repository can be browsed or forked.

Or use git to clone the repository with complete history:
git clone git://github.com/artstorm/conform-by-uv.git

Contribute

I’m very interested in your contributions… What else deserves to be in this plugin? How can it be improved? Coders, feel free to fork the repository, make any updates and then send me a pull request. Non-coders, submit a request in the issue tracker.

Support

There is no official support for this plugin, but if you run into any problems or bugs, you can file a report in the issue tracker and it will be looked into. You need to have a Google Account to file a new issue.

Compability

Conform by UV has been tested with LightWave 3D 9.6, 9.6.1 OB, HC – Win32, Win64 and should work fine on Mac OS as well.

Changelog

The development history of Conform By UV.

Version 1.2 – 27 Oct 2010

  • Added automatic loading and saving of settings between sessions.
  • Loads the logo from disk instead of having to compile the script to embed it.
  • Released the script as open source under an Attribution Assurance License.

Version 1.1 – 26 Mar 2010

  • Added a Create Morph option for the normal mode.
  • Implemented some logic to the gadgets in the GUI.
  • Fixed a bug in Morph Batch mode where variation in point count could confuse the tool.

Version 1.0 – 16 Mar 2010

  • First public release of the plugin.
  • Pingback: New Conform By UV Lightwave tool | Infinite-Realities()

  • Pingback: Conform By UV mini tutorial | Infinite-Realities()

  • Timothy Albee

    This tool is absolutely brilliant! Lee had approached me about it, and I am just thrilled to see what you’ve done!

    I’ve tested it on some high-end models and the results are exactly as advertised!

    I’ve talked with Lee about the following, and he suggested I get with you about it as well:

    First… I am very impressed that you’ve created, in essence, a roadmap to calculate and extrapolate deviation (deltas) from FG point to BG point location! (I’d have thought this the much more challenging route to go… but closely examining my tests… you nailed it!)

    I would very much love to suggest two things – to include the “easy” way of doing things as well:

    * I would love to have the tool simply copy/extrapolate the XYZ delta information stored in the Morph-VMaps, being able to choose some or all of the existing Endomorphs to process at once. (So I could copy all of my 64 morphs I average on my production characters at once, from one Endomorphed mesh to another. :)

    * And since Morphs maps are just VMaps… Can you imagine how incredibly helpful it would be to be able to do the same thing with WeightMaps? You could re-weight a character that lost its weightmaps in detailing, in an ‘instant!’ (And with your extrapolation… I’m thinking that Ultra-/Lowpoly model to high-poly model “projection” would blow XSI’s “GATOR” out of the water, for streamlining the Rigging process!)

    Anyway… one artist to another… one coder to another… you guys did great work! And it’s people such as yourselves that make the LW community the great place it is!

    • http://artstorm.net/ Johan

      Hey Timothy,

      I’m happy you find it useful. :)

      Yes, Lee mentioned some of these ideas to me yesterday, and actually transferring weight maps with this method was something I’ve had in mind myself to implement. Anything to speed the rigging process up is something I’m quite anxious about as well.
      I’ll make a few tests and see how it works out and if everything works fine I’ll setup a GUI for some user interaction and get it out.

      And as you mentioned, weights, morphs – they are all VMaps in the end, so going with weights, adding the choice to bring over morphs etc is making sense.

      Cheers,
      Johan

      • Timothy Albee

        Johan,

        We’ve got detailed testing results from high-definition human heads… Could you jot me a note at my email logged with these posts so I’m not overflowing your forum?

        Thanks!
        Timothy

        • http://www.earthwormjim.free.fr Alexx

          Hi guys,

          I’m working since a long time on a similar script wich don’t need uv to work (the first version came out even before XSI’s gator I think)

          Recently I’ve worked on a new version, it’s here in beta:
          http://earthwormjim.free.fr/lscript/modeler/weighter2/
          (send me the displayed script ID by email to get the registration key)

          By the way Tim, what about the black out ? Did you get my last emails ? Where are you ?

          • http://artstorm.net/ Johan

            Hey Alexx,

            Thanks for the link to your script, I browsed the documentation and it definitely looks interesting. I’ll have to take a closer look at it. :)

            Cheers,
            Johan

          • Timothy Albee

            Alex! My apologies for not being in touch! (In short, the breaking of my marriage and subsequent divorce proceedings have been only one of the many battles to be fought in recent months/years.)

            *points to Alex* Johan, this is the guy I was mentioning, who did that great raytracing thing in LScript.

            Both tools have their best places, and best uses.

            In my experience, they compliment each-other, and exist in a beautiful co-harmonic.

            BTW… Alex… I would totally say that Weighter2 is more than ready for full release.

            I have been writing an article on both these tools, for HDRI 3D. It should hit newsstands in about 3 months… so… make sure you have your work ready to be purchased/downloaded/whatever by then!

            Also… if you the homepage for the tools(s) will change, let me know that URL so I can direct readers to where the tools may be found.

            All the best!
            Timothy

  • http://www.earthwormjim.free.fr Alexx

    Hi Tim !

    Glad to read you again ;)
    I’ll manage to get the script ready soon !

  • Haitham

    Hello,
    I can’t find the video tutorial. Both websites seem to be pointing at each other for the tutorial??
    http://www.ir-ltd.net/conform-by-uv-mini-tutorial/
    and this page.

    Kindly, where can I find the tut? Thanks! :)

    • http://artstorm.net/ Johan

      Haitham,

      Thanks for pointing it out. I checked with Lee, and the video link on Infinite Realities got lost during a recent site make over. He’ll try to get the link back up. For now I uploaded it to Vimeo and embedded it here, so you can take a look at the tutorial video from Lee under the Demonstration section a bit up on this page.

      Cheers,
      Johan