Home Technical Talk

Introducing Handplane Baker

134567
AlecMoody
ngon master
Offline / Send Message
Pinned
AlecMoody ngon master
Hello Polycount,

This is a long time coming for us- Handplane is now a full baking tool. Our goal with handplane baker is to build the most efficient baking tool for a production environment and make it free. We have a lot of cool features that should save you time and effort. I did a video overview of the tool which you can watch here:


https://www.youtube.com/watch?v=ACkX_t3QDnU&feature=youtu.be

You can get handplane baker on gumroad as $0+ name your own price here:

https://gumroad.com/l/znpF#

If you find a bug or have an issue- please take screenshots. If you get an error, or see some behavior that is clearly broken, please save a handplane project file and pack it up along with your models, then email them to me: alecmoody@gmail.com

Updates:

To get updates grab a new installer from gumroad. You can verify your version in the about window


11/12/2016 - v 0.9.3

*Fixed Issue where some users reported not having the correct Visual C++ distribution after installation

*Pressing the bake button while in progress now cancels the bake

*8 bit TGA output

*Added dithering for 8 bit outputs

*Fixed PNG not writing correctly for some users

*Added an option to generate smooth highpoly normals when no mesh normals are found

*Improved loading of mesh normals for high poly models

*Improved stability with large resolution and high sample count bakes

*Added option to suppress warnings for mesh triangulation

*Set default back ray distance to 5

*Added a button next to the output path that opens the output folder in explorer
*Included our old tangent space calculator, handplane 1.6 in the installer.


v 0.9.2

*Fixed some low level bugs exposed by meshes missing important information (texture coordinates, normals)

*Added notification for bake failures when models are missing texture coordinates, normals, or other critical info.


Patch 0.9.1 <- download a new installer from gumroad
*Fixes FBX issues some users were having

*Sets default image format to tiff 16

*Warns users if they are baking without an output folder set

Some of the highlights:

Fast and all CPU based

I have been doing my testing on 10-20 million triangle meshes. Loading and baking models that large is super quick. With the exception of our ray trace AO, all of our output maps are extremely fast. The raytrace AO is the slowest output but we also have an alternative post process AO that is very quick/smooth and works well in many circumstances. For a benchmark on large mesh handling (with an i7 4770k): A 20 million triangle mesh takes about 6 seconds to load into memory, building the projection structure takes an addition 5 seconds, and baking a 2k 4x super sample tangent space map takes 7 seconds. Totaling 18 seconds for a final quality 2k bake of 20 million triangles.


Projection groups

This lets you bake multiple meshes on top of each other into one output map. No more exploding models. Projection groups also let you do things like isolate ambient occlusion within a group, assign ray projection distances to multiple models at once, and assign materials. Here is an overview of the model loading and projection setup page of our UI:



PSD material output

You can create, save, and share libraries of material base colors. Assign them to pieces of your models and they are baked into an organized PSD set up with layer masks, ready for you to paint on. I am really hoping people post and share their material libraries so we can build a central repository for everyone to work from. You can name and edit colors for 3 material properties in the editor like this:



This is very flexible, and can be used for metalness, specular, or even something like dota2 material output. For dota2 output you would name your channels color, mask1, mask2 and then for the mask layers adjust each RGB color channel to set your desired metalness, color warp... We still need to figure out an a clean way to handle the alpha channel properties for specular exponent and self illumination. You can use the matID swatch color to get an additional 3 color channels but they aren’t masked nicely like the others. Suggestions are welcome.

The resulting PSD pulls in all the naming and colors done in handplane and looks like this:



New tangent space outputs

In addition to all of the tangent space outputs in older version of handplane we have added support for Unity 5.3, Unreal 4, and Source 2. All of these have also been ported to the tangent space calculator which I will post separately as handplane 1.6.




Future plans:

*More fast AO output options and improvements to what we currently have.

*I would like to look into substance painter integration or find ways to make our tool work seamlessly with substance.

*Figure out why exporting a model as FBX, and then exporting a second copy with push modifier results in a different file size. This is a pain for cages.


From suggestions:

*figure out FBX issue (someone who has this issue needs to send me files so I can reproduce it)
*Create warning with option to cancel when users bake without an output location set
*Add a button to the UI to open the output location in explorer
*.tga support <- Also make sure 8 bpp output is dithered
*Set tiff to default output. Personally, I don't like PNG files.
*Create a user editable default project



Please test our tool, break it, and post bugs and feedback in this thread. You can also find more info on the tool at http://www.handplane3d.com  The help page has lots of detailed information and provides a quick overview of the features.













Replies

  • SeveredScion
    Offline / Send Message
    SeveredScion polycounter lvl 12
    This looks great! The community thanks you!
  • RafaelDeJongh
    Offline / Send Message
    RafaelDeJongh polycounter lvl 4
    Awesome release! This sure looks quite interesting and especially fast! 

  • Falkrum
    Offline / Send Message
    Falkrum polycounter lvl 2
    Looks so promising! Thanks a lot for this tool!
  • Popeye9
    Offline / Send Message
    Popeye9 polycounter lvl 15
    Nice! Looking forward to giving this a go
  • Millenia
    Offline / Send Message
    Millenia polycount sponsor
    Nice one guys! Will definitely give it a spin :)
  • dzibarik
    Offline / Send Message
    dzibarik polycounter lvl 10
    Can't wait to try it. I've been using Handplane extensively even though Substane Designer can do the same but it was faster to setup in Handplane.
  • Fwap
    Offline / Send Message
    Fwap polycounter lvl 13
    Awesome work guys, can't wait to try it out.
  • Pabs
    Offline / Send Message
    Pabs polycounter lvl 12
  • Synaesthesia
    Offline / Send Message
    Synaesthesia polycounter
    Fantastic work, guys!
  • dzibarik
    Offline / Send Message
    dzibarik polycounter lvl 10
    So I've tried and so far it doesn't work for me. It bakes something but output files don't appear in the target directory. The project itself does though.

    Also no targa output?
  • WhiskyDelta
    Offline / Send Message
    WhiskyDelta polycounter lvl 6
    This looks really promising and can't wait to give it a try.

    I do however have a request and that is rather than just supporting a workflow whereby you split your HP into separate meshes based on material ID, you adopt a 3D max like option "match material ID's". 

    I work on models which splitting them and regrouping parts of the models according to their material ID to avoid bits of model being baked onto other parts would just not be feasible. I can see your current workflow would be OK for small (in physical size) models and ones where you only have say 30 or so separate elements to consider. However models I work on are made up of thousands of separate objects, several millions of triangles and are structured in layers logically. I group these thousands of objects into logical and localised meshes and the prospect of mashing up all of the layers and mesh groups to work for baking does not fill me with joy. This "match material ID" is literally the only reason I still solider on with 3D Max default scan line baking. Having the match material ID option means your bake will only project from your low poly model to correspondingly matched material ID geometry on your HP. No exploding required and it's just a case of setting up a 3 or so multi sub material, apply it to your high and low models and go around setting the material ID via modifiers or polygon selections and edits. Each mesh would then contain multiple material ID geometries and it matter about changing the logical layer and mesh structure just for baking. 

    Hopefully this makes sense, but if not happy to describe in a more detailed doc the predicament but a quick look at anyone of my threads would give you an idea of the models in create..

    Great work!

    Whisky
  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master
    Hi Whiskeydelta - to clarify, material ID and what material you assign has no effect on how models are grouped for projection purposes. We chose not to use material ID as a sorting tool because its harder to make function with different 3d software and object formats. Thousands of seperate models being baked at once  is a pretty extreme edge case and I think the trade offs of using matID are not worth it. I use that workflow when baking in max and assigning matIDs to dense high poly models is a pain. Also, for users baking dense sculpts, are they going to import them into another 3d package, assign matID, the export them again?


    We should add TGA output. I use tiff16 for everything because I like to have my source files with extra bit depth and TGA doesn't support 16bpp.
  • Blitzwood
    Offline / Send Message
    Blitzwood polycounter lvl 9
    I didn't test it yet but definitely will when I have some free time. Wish you guys a great success with the tool and hope are getting some nice donations too.
  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master
    I mostly agree about a 3d interface for cages but we ruled it out of an initial release. It is possible we will add one but I find bad 3d interfaces in other baking tools kind of infuriating to use (bad vertex selction and movement controls). If we did one I wouldn't want to bother unless we could make it work really well and deal with objects of different scales equally well. Also, the idea here is to be able to bake giant meshes that would be difficult to display in a regular DX window.
  • Dylan Brady
    Offline / Send Message
    Dylan Brady polycounter lvl 9
    Awesome! so this is what you guys have been working on all this time.
    Can't wait to give HP 1.6 a whirl.
  • Fuiosg
    Offline / Send Message
    Fuiosg polycounter lvl 5
    wow, it's christmas. Can't wait to try it out.
  • PacoCasares
    Offline / Send Message
    PacoCasares polycounter lvl 11
    This is really exciting and I can't wait to try out. Does this support baking color vertex IDs? Material IDs is a biggie in Substance Painter and I use it in my workflow. I can see you want to find a way to connect this with Painter? If so I can't wait! Exploding into objects and layering into PSD it's not fun. Thanks for your efforts. I'll make a donation if it does replace XNormal and/or knald 
  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master
    It does output a traditional multi colored material ID mask.
  • EduardoMC
    Offline / Send Message
    EduardoMC polycounter lvl 5
    Does Handplane Baker include the previous Handplane's ability to translate LowPoly/ObjectSpace Normal maps into different engine tangent maps?

    If so, is there a difference for DOTA 2 (source 2) Workshop assets between the older (awesome!) version of Source1 Handplane output and the Source 2 output in this new version of Handplane (Baker)?

    Thanks! And thank you for releasing all of these great tools! :smile:
  • Bek
    Offline / Send Message
    Bek interpolator
    First of all, this is awesome. I've just given it a quick spin and I'm very impressed; particularly with the speed. For a direct comparison to xNormal:

    4096x4096 tangent-space, 1x AA
    500,000k tri highpoly, 800 tri lowpoly, cage bake

    xNormal:
    Build: 0.4s, Render: 26.3s

    Handplane Baker:
    Build:  3.2s, Render: 4.0s

    So 7s for HPbaker, 27s for xN. Very nice. AO seemed very quick in comparison to xNormal as well.

    Being able to group projections seems interesting (as someone who still explodes meshes for various reasons), though I'm not yet sure it will be faster for me than exploding — I might expand on this later. A separate AO output for floaters is great; would've loved that in xN years ago. However, there's a few small things missing from xNormal I'd like to see added though:

    1. Ability to set a "Default" project. My baking setup in xN always points to the same lowpoly, cage, and highpoly that get overwritten when I export my meshes. Then I can just change the output filename and hit bake, without having to re-assign meshes every time. All that's needed for this to work in HP baker is the ability to change the default/startup project.
    2. Option to set normal map swizzle. I expect my MikkTspace to be Y+; currently it bakes out as Y-.
    3. Per-mesh Smooth/Harden normals option — sometimes useful when testing things and when wanting super-fine detail to bake down from a sculpt
    4. Does mesh scale matter in HP Baker? xN sometimes complains about potential problems with small-scale meshes, so my import scale is set to 10, but no similar option is in HP baker.
    Also, what does the ray offset numeric value do exactly?

    And lastly, I think I have a bug, or at least a situation xN handles better. Obviously my high/low poly geo is not ideal for baking, but it's still interesting that xNormal handles this situation so differently to HP baker. I can only assume those artifacts are a bug though. If you want I can send you the files for testing.
  • Stromberg90
    Offline / Send Message
    Stromberg90 polycounter lvl 11
    Really cool, been longing to see a new(free) baker than can rival xNormal :)

    I'm wondering, what license does handplane go under?
    Say if you decide to make a commercial version at some point, could the older free versions be used at a studio?
  • kodde
    Offline / Send Message
    kodde polycounter lvl 19
    Thanks!
    Looks promising. Going to give it a go.
  • Burpee
    Offline / Send Message
    Burpee polycounter lvl 9
    This is looking really really good! Thanks ! 

    Any chance for udim's support ?
  • dzibarik
    Offline / Send Message
    dzibarik polycounter lvl 10
    So it seems it doesn't bake in png, I had no problems with tiff.
  • Bek
    Offline / Send Message
    Bek interpolator
    dzibarik said:
    So it seems it doesn't bake in png, I had no problems with tiff.
    png (16 bit) worked for me. Just tried 8bit and it worked too.
  • kodde
    Offline / Send Message
    kodde polycounter lvl 19
    I just loaded one HP and one LP mesh, FBX. Tried baking just the tangent space NM with Maya 2013/2014 TS. When hitting Bake button I just get "Bake Failed." with no other info.

    Am I doing anything wrong?

    EDIT:
    Sorry I did get error messages. Had missed the vertical scroll bar at first.
    It just says it fails to load the HP and LP FBX files.
  • jermaineb
    Offline / Send Message
    jermaineb polycounter lvl 13
    fantastic :D i definitely will try this on my next project. I was wondering if it would be possible to have a thickness baking option for compatibility with substance?
  • Shrike
    Offline / Send Message
    Shrike interpolator
    Really nice, the PSD output and the multi mesh handling and everything, impressive
    Im not sure if I really understand the automatic splitting of objects, it just does kinda the same as the zbrush explode function while rendering out the maps for every object and then combining them back? And AO takes this into account ?
  • oglu
    Offline / Send Message
    oglu polycount lvl 666
    Burpee said:
    This is looking really really good! Thanks ! 

    Any chance for udim's support ?
    yes UDIMs would be great...
  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master
    Shrike said:
    Really nice, the PSD output and the multi mesh handling and everything, impressive
    Im not sure if I really understand the automatic splitting of objects, it just does kinda the same as the zbrush explode function while rendering out the maps for every object ?
    The projections groups aren't assigned automatically. You make a projection group, and then add the high and low meshes to that group. If you have multiple groups, handplane will only project information between objects that are in the same group (but will still calc raycast AO on everything unless you tell it not to). Nothing gets moved  during this.

    kodde said:
    I just loaded one HP and one LP mesh, FBX. Tried baking just the tangent space NM with Maya 2013/2014 TS. When hitting Bake button I just get "Bake Failed." with no other info.

    Am I doing anything wrong?

    Can you save a handplane project file, pack up your objects, and email them to alecmood@gmail.com  ?



  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master
    jermaineb said:
    fantastic :D i definitely will try this on my next project. I was wondering if it would be possible to have a thickness baking option for compatibility with substance?
    Yeah, I think that would be a good output. Does anyone know what thickness is exactly? When I bake those in substance I cant exactly tell what I am looking at.
  • bmc131
    Offline / Send Message
    bmc131 null
    I get failed to load mesh..
    Would love to see that you can load diffuse texture (not limited to one texture but if needed multiple) and bake that from Hi to Low mesh as well, I do that all the time with 3DsMax using scan data.
  • bmc131
    Offline / Send Message
    bmc131 null
    Almost worked using fbx files instead of obj..but got a crash when it tried loading the Hi res mesh..
  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master
    Can you send over your models? I have done 90% of my testing with FBX low and OBJ out of zbrush for the highpoly models. It sounds like there is an issue loading big FBX files. alecmoody@gmail.com
    Also, BMC131 and Kodde, what software are you using to export your FBX files?

    I tried to reproduce the issue here but can't so far- 5 million triangle FBX file loads and bakes fine:
    http://i.imgur.com/jfIOXci.png


  • bmc131
    Offline / Send Message
    bmc131 null
    Manage to bake eventually but it never saved my texture.
  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master
    Did you assign an output location for your texture? We should add a warning if there is not output location set.
  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master
    Current list of changes for a patch in the next few days:

    *figure out FBX issue (someone who has this issue needs to send me files so I can reproduce it)
    *Create warning with option to cancel when users bake without an output location set
    *Add a button to the UI to open the output location in explorer
    *.tga support <- Also make sure 8 bpp output is dithered
    *Set tiff to default output. Personally, I don't like PNG files.
    *Create a user editable default project



  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master

    Burpee said:
    This is looking really really good! Thanks ! 

    Any chance for udim's support ?
    I don't know much about udim's and I haven't worked with software that uses them. I'll look into it.
  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master

    Really cool, been longing to see a new(free) baker than can rival xNormal :)

    I'm wondering, what license does handplane go under?
    Say if you decide to make a commercial version at some point, could the older free versions be used at a studio?
    There are no restrictions on using it for commercial purposes. If we ever decide to do a paid version it will be a separate version with its own licensing that won't affect this.
  • Stromberg90
    Offline / Send Message
    Stromberg90 polycounter lvl 11
    Sweet :)

    Some nitpicks:
    -Name missing on the taskbar, only icon.
    -Option to use file name from the first mesh or similar.
    -When browsing for folder/file location, you can keep clicking in the "..." button, to open more windows, maybe disallow that and bring the current one to the front.
    -Buttons with grey text, to me that says they can't be clicked on, which is not the case in handplane.
    -A lock icon like photoshop, so that texture width and height changes together.

  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master

    Bek said:
    First of all, this is awesome. I've just given it a quick spin and I'm very impressed; particularly with the speed. For a direct comparison to xNormal:

    4096x4096 tangent-space, 1x AA
    500,000k tri highpoly, 800 tri lowpoly, cage bake

    xNormal:
    Build: 0.4s, Render: 26.3s

    Handplane Baker:
    Build:  3.2s, Render: 4.0s

    So 7s for HPbaker, 27s for xN. Very nice. AO seemed very quick in comparison to xNormal as well.

    Being able to group projections seems interesting (as someone who still explodes meshes for various reasons), though I'm not yet sure it will be faster for me than exploding — I might expand on this later. A separate AO output for floaters is great; would've loved that in xN years ago. However, there's a few small things missing from xNormal I'd like to see added though:

    1. Ability to set a "Default" project. My baking setup in xN always points to the same lowpoly, cage, and highpoly that get overwritten when I export my meshes. Then I can just change the output filename and hit bake, without having to re-assign meshes every time. All that's needed for this to work in HP baker is the ability to change the default/startup project.
    2. Option to set normal map swizzle. I expect my MikkTspace to be Y+; currently it bakes out as Y-.
    3. Per-mesh Smooth/Harden normals option — sometimes useful when testing things and when wanting super-fine detail to bake down from a sculpt
    4. Does mesh scale matter in HP Baker? xN sometimes complains about potential problems with small-scale meshes, so my import scale is set to 10, but no similar option is in HP baker.
    Also, what does the ray offset numeric value do exactly?

    And lastly, I think I have a bug, or at least a situation xN handles better. Obviously my high/low poly geo is not ideal for baking, but it's still interesting that xNormal handles this situation so differently to HP baker. I can only assume those artifacts are a bug though. If you want I can send you the files for testing.
    A default project is a good idea.

    Please do send over the files. I have noticed some projection weirdness with very small meshes where I have to set cages a little larger. I think this is a precision issue and the best fix is a global scale multiplier value in the settings. That way you can set one number and all meshes are affected seamlessly.

    When the baker doesn't get normals or smoothing info on a high poly model, it should bake as hard edged. This is to make the output match what you see in zbrush. I can look into that more. The model loading/projections page is already getting cluttered but I think a small button could be worked in well.

    I think our mikkspace output swizzles are both tied to what is expected in unreal 4 and unity 5.3. We could add an option to swizzle, but the outputs for UE4 and u5.3 have some minor differences and I don't want people to think they are interchangable.


  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master


    Bek said:

    4096x4096 tangent-space, 1x AA
    500,000k tri highpoly, 800 tri lowpoly, cage bake

    xNormal:
    Build: 0.4s, Render: 26.3s

    Handplane Baker:
    Build:  3.2s, Render: 4.0s

    The difference should actually be larger than that, im not sure the xnormal stats include time to load meshes into memory. Our tool should be ~5 times faster loading meshes into memory before it builds the projection structure or does any baking. It might not be noticeable until you get into big meshes with millions of triangles.
  • kodde
    Offline / Send Message
    kodde polycounter lvl 19
    AlecMoody said:
    Shrike said:
    Really nice, the PSD output and the multi mesh handling and everything, impressive
    Im not sure if I really understand the automatic splitting of objects, it just does kinda the same as the zbrush explode function while rendering out the maps for every object ?
    The projections groups aren't assigned automatically. You make a projection group, and then add the high and low meshes to that group. If you have multiple groups, handplane will only project information between objects that are in the same group (but will still calc raycast AO on everything unless you tell it not to). Nothing gets moved  during this.

    kodde said:
    I just loaded one HP and one LP mesh, FBX. Tried baking just the tangent space NM with Maya 2013/2014 TS. When hitting Bake button I just get "Bake Failed." with no other info.

    Am I doing anything wrong?

    Can you save a handplane project file, pack up your objects, and email them to alecmood@gmail.com  ?



    Not with the FBX I was using no. Can't share it. I'll see if I can get you another FBX which fails that I can share.

    I got it working with my original object when using OBJs instead.
  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master
    What software were the FBX files from? Also, one projection group or multiple? I have tried a single projection group 8 million triangle FBX so far with no issues. Maybe post FBX export settings? I would like to get this bug fixed ASAP so any details you can provide to help narrow it down would be helpful.
  • thomasp
    Offline / Send Message
    thomasp hero character
    very nice. will give it a go on a current project!

    a general feature wish from me would be to make this a multi platform solution. seems every other tool these days gives the choice of windows/mac/linux. i like having that option very much. :)

  • Bek
    Offline / Send Message
    Bek interpolator
    thomasp said:
    a general feature wish from me would be to make this a multi platform solution.
    +1, though since this is CPU based it probably runs fine in a VM. But yes, multi-platform would be most welcome.
    Our tool should be ~5 times faster loading meshes into memory before it builds the projection structure or does any baking. It might not be noticeable until you get into big meshes with millions of triangles.
    Sweet, I'll have to do some more tests sometime. Really liking what I've seen so far though.
  • JedTheKrampus
    Offline / Send Message
    JedTheKrampus polycounter lvl 8
    Handplane worked almost flawlessly in Wine when I tested it. Haven't tried the baker yet but it probably works fine and at near-native speeds.
  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master
    Cool. Any info you have on how well it runs in an emulator would be great.
    We chose to go all CPU for now because there were still big speed gains to be had over xnormal and GPU compute opens up a can of worms for hardware compatibility. I think GPU compute AO is something we would like to do at some point since there are limited ways to make raycast AO faster  on a CPU.
  • AlecMoody
    Offline / Send Message
    AlecMoody ngon master
    Also, a few people have asked about this- there is a sample material library in the handplane install root folder.
  • sefice
    Offline / Send Message
    sefice polycounter lvl 8
    Will definitely try this on my next piece!
134567
Sign In or Register to comment.