Introducing Handplane Baker

12357
AlecMoody
interpolator
Offline / Send Message
Pinned
AlecMoody interpolator
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

  • Jarvgrimr
    Offline / Send Message
    Jarvgrimr polycounter lvl 8
    Sounds great Alec, I look forward to the next update. 

    One thing I noticed:

    - Handplane is WAY more sensitive to picking up intersections, or seeing intersections where there are none. My cages have to be inflated far beyond what is necessary in xNormal. Is this a setting I am using incorrectly? Or is this something to do with Handplane?


    I'll see if I can get a screengrab of what I mean later to illustrate.
  • Tetranome
    Offline / Send Message
    Tetranome polycounter lvl 3
    Hi guys.

    Sorry if this has already been asked, but does Handplane support “Averaged projection mesh" or “Explicit mesh normals”? Or both? - and in that case, how do I switch between the two?

    Thanks!
  • Fuboski
    Offline / Send Message
    Fuboski null
    I'm a Blender (v2.77) user. My goal is create the mesh in Blender and then export it on Unity 5.3 I read the help center on site and I would like to ask you a thingh. You wrote in Unity 3.5 Workflow -  Export: "your low poly object must include mesh normals but does not need tangent"



    IF I EXPORT IN FBX 
    Does this mean that i have to export my low poly from Blender to Handplace without tangent space for the baking?       If i didn't follow this step I would have bad results?
    Should the stats for the export be like the image below?

    Another question: i'm the only with a normal map // tif 16 // of 24 MB size???. I baked a cube smoothed and the normal created had this size: 24 MB . .  . it's so huge.
    The stats used are:

     
  • AtticusMars
    Offline / Send Message
    AtticusMars greentooth
    An uncompressed 16 bit RGB image at 2048x2048 will be exactly 24mb so that is to be expected. I'm not familiar with Unity but usually you'd end up converting the map to an 8 bit compressed image at some point so it shouldn't matter how large the bake output is.
  • AlecMoody
    Offline / Send Message
    AlecMoody interpolator
    @Fuboski
    Your export into handplane or into your game engine must include mesh normals but does not need mesh tangents. If you do include mesh tangents, they will be ignored by the baker and by unity if you are using the correct settings.

  • Fuboski
    Offline / Send Message
    Fuboski null
    Thank you so much very clear!
    Tetranome when he said 
    Sorry if this has already been asked, but does Handplane support “Averaged projection mesh" or “Explicit mesh normals”? Or both? - and in that case, how do I switch between the two?

    EarthQuake (http://polycount.com/discussion/107196/youre-making-me-hard-making-sense-of-hard-edges-uvs-normal-maps-and-vertex-counts) very important. In particular:

    Terms
    First things first, lets define some terminology. “Cage” can be a little confusing, and app specific, so I’ll try not to use that. There are two basic methods for projecting a normal map bake.
    • “Averaged projection mesh”
    This method will ignore your lowpoly mesh normals, meaning if you have hard edges/smoothing or any sort of custom edited normals on your lowpoly the “bake” mesh will average everything. The biggest advantage here is that you can use hard edges without any seams or negative artifacts.
    • “Explicit mesh normals”
    This method uses the lowpoly mesh normals directly for your projection direction. What this means is if you have hard edges or smoothing group splits on your lowpoly your “bake mesh” will also have those splits, and you will get gaps in your bake in those areas.
    If you’re using this method, but making sure to avoid any hard edges/smoothing group splits, all you’re really doing is using an “Averaged projection mesh” but without the inherent benefits of using an “Averaged projection mesh”(like the ability to use hard edges). Suggesting others should do so is akin to saying “never use triangles”, or “always use quads”, it’s simply bad advice that doesn’t tell the whole story, and confuses novice users more than it helps.

    EarthQuake explained every single baking program in order to understand which method was used.

    • In Max:
    By default you are using an “Averaged projection mesh”.
    If you go into RTT options and turn on “Use offset” you are essentially switching from “Averaged projection mesh” to “Explicit mesh normals” for projection.
    • In Maya
    When you select “match using: Geometry Normals”, which is the setting by default in the transfer maps dialog, you are using an “Averaged projection mesh”.
    If you change the setting to “match using: Surface Normals” you are using “Explicit mesh normals” for projection.
    • In Xnormal
    By default, if you use the simple ray trace distance settings, you are using “Explicit mesh normals” for projection”.
    If you load your own cage, exported from Max for instance, you are using an “Averaged projection mesh”. If you set up your own cage within Xnormal’s 3d editor and save it out, you are also using and “Averaged projection mesh”.


    AlecMoody, what method is used in Handplane3D Baker?Is the situation completely different or similar?

  • Fuboski
    Offline / Send Message
    Fuboski null
    If i wrote anything wrong please edit and correct ìt @EarthQuake . . .  i'm new in this argument.
  • AlecMoody
    Offline / Send Message
    AlecMoody interpolator
    Handplane only uses  averaged projections. I don't believe there is a good use case for split projections. We are going to add a few more controls for ray projection angle without cages but splitting projections will not be one of them.
  • Tetranome
    Offline / Send Message
    Tetranome polycounter lvl 3
    Thanks for clearing that up fellas ^_^
  • Fuboski
    Offline / Send Message
    Fuboski null
    So the unreal 4 map with inverted green channel is correct in unity 5.3. I think a last minute communication breakdown caused us to get these reversed. For now, unity 5.3 users should bake unreal 4 and invert the green. I still need to test unreal 4 to see if it should actually be a green channel inverted u5.3 output.

    AlecMoody , it's possibile to invert green channle directly on handplane? For unity 5.3 should i still use the workflow you describe above?

  • Hypocrita
    Offline / Send Message
    Hypocrita vertex
    Hey! Awesome piece of software you've got there. =-)

    I've got a question, though. Sometimes during a bake, the program just freezes up. Nothing gets saved and no progress is made no matter how long I let it sit there.
    I'm just curious as to why this is the case.

    Thanks!
  • Soul Exist
    Offline / Send Message
    Soul Exist polycounter lvl 2
    For me I think a good addition would be allowing the baker to bake an alpha channel when you set edge padding to 0. 
  • Tetranome
    Offline / Send Message
    Tetranome polycounter lvl 3
    Yeah, that's a pretty good idea. A good way around that for most cases is to bake a normal map with padding 0 and then use the magic wand tool on the base colour.
  • Fwap
    Offline / Send Message
    Fwap Polycount Sponsor
    When i use handplane my CPU maxes out at 100% anyone else getting similar results?
    On a work machine so can't disclose what hardware, but suffice to say it's pretty beefy. 
  • supaclueless
    Offline / Send Message
    supaclueless polycounter lvl 6
    @Fwap I recently upgraded my computer but before I upgraded it handplane would use also 100% of my CPU as well (it was a AMD phenom 2 x6 so yes its quite an old CPU), I have yet to test my new CPU to see the usage amount but I will let you know when I actually bake something.

  • Soul Exist
    Offline / Send Message
    Soul Exist polycounter lvl 2
    Same. I'm not that knowledgeable in how computers perform but I'm running an Nvidia Geforce GTX 960 with 16Gbs of RAM and It's using 100% of my CPU as well.
  • JedTheKrampus
    Offline / Send Message
    JedTheKrampus polycounter lvl 3
    Fwap said:
    When i use handplane my CPU maxes out at 100% anyone else getting similar results?
    On a work machine so can't disclose what hardware, but suffice to say it's pretty beefy. 


    That's because it uses the CPU for baking. If you need a core for something else while it bakes you can set CPU affinity to all cores but one in your task manager if there isn't an option to reduce the number of threads used for the baker. Of course, this will make the bake take longer. It's a feature, not a bug.
  • AlecMoody
    Offline / Send Message
    AlecMoody interpolator
    You can set how many threads to use in the settings tab. Its roughly linear so if you have 8 available threads, setting it to 4 will take twice as long. I usually set mine to 7 (4 cores + hyperthreading = 8 threads). A setting of 0 uses all available threads.
  • marul
    Offline / Send Message
    marul polycounter lvl 7
    I had trouble running the program in windows 7 64bit. It gives the error "The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing from your computer. Try reinstalling the program to fix this problem." I tried reinstalling but it didn't help.
  • supaclueless
    Offline / Send Message
    supaclueless polycounter lvl 6
    @AlecMoody @JedTheKrampus Thanks for pointing that out (I suspected it but was too blockheaded to realize it). Also I quite like the results now i get from using the baker instead of 3d-shitty max's bake. With my new setup i get about 30 secs on baking 4k obj-space map in 4x AA for a 4 million poly obj compared to my old system which took 4000 seconds for even 2 million.

    I still have yet to compare it to 3ds max on my new setup but I doubt its faster than this. The only major downside I have with handplane is that its quite annoying to insure a clean bake at times (get alot of normal specks and missed spots, also skewing on flat surfaces unless some tweaking is done), but once I get the clean bake everything else goes smoothly.
  • supaclueless
    Offline / Send Message
    supaclueless polycounter lvl 6
    @marul those errors sounds like you are missing a C++ redistributable package. Update your windows or try getting the 2015 C++ Redistributable if you don't have it.
  • bigodon
    Offline / Send Message
    bigodon triangle
    It's really faster baker than xnormal, i'm impressed
    but i think i missed something here, this is a really noob question (please don't laugh? or at least a little): if i have many meshes and want separate maps for each one, is possible to do? i didn't see anything on output for that.
  • JoseConseco
    Offline / Send Message
    JoseConseco polycounter lvl 6
    Are there any chances for ID map setup from object materials? Right now it is only possible to set ID per object. But what if I have one object, with many materials, and  I don't want to split those materials into separate meshes(to avoid seam on normal maps).
  • Soul Exist
    Offline / Send Message
    Soul Exist polycounter lvl 2
    I take back what I said about the ability to bake an alpha map when you set edge padding to 0. You could just set a white material for your Material ID bake and use that.  
  • AlecMoody
    Offline / Send Message
    AlecMoody interpolator
    I think that would still be a good map output. I don't want people going through all of their objects and changing their mat color just to get an alpha mask.
  • eyo
    Offline / Send Message
    eyo polycounter lvl 6
    Hey there, I'm using v0.9.2 and getting hard normal artifacts out of zbrush objs, has this issue been address yet?
  • Pilumijus
    Offline / Send Message
    Pilumijus triangle
    Hi !
    I've been trying to bake a materials PSD map, but with a non-square texture (1024 in width and 2048 in height), using v0.9.2
    The psd seems to flip the two dimensions in Photoshop, so it becomes 2048 in width and 1024 in height, and half of the texture being cropped out in height.

    Anyway, it works just fine when I try it with a 2048x2048, minor bug to an awesome baker :)
  • AlecMoody
    Offline / Send Message
    AlecMoody interpolator
    Pilumijus said:
    Hi !
    I've been trying to bake a materials PSD map, but with a non-square texture (1024 in width and 2048 in height), using v0.9.2
    The psd seems to flip the two dimensions in Photoshop, so it becomes 2048 in width and 1024 in height, and half of the texture being cropped out in height.

    Anyway, it works just fine when I try it with a 2048x2048, minor bug to an awesome baker :)
    Thanks for the bug report- I will add that to the list.
    eyo said:
    Hey there, I'm using v0.9.2 and getting hard normal artifacts out of zbrush objs, has this issue been address yet?

    I am going to be testing a build after work tonight that has some smoothing override functions. The current default behavior is to use hard edges when the highpoly doesn't have normals ( so zbrush files match the viewport). The new functionality will smooth the mesh based on smoothing groups/hard edges - if no normals or smoothing info is found, it will use hard edges. Additionally, there will be an override function to force smoothing globally.

  • eyo
    Offline / Send Message
    eyo polycounter lvl 6
    thanks for the update, really appreciate it!
  • Sebostian
    Offline / Send Message
    Sebostian triangle
    Really look for update! 
    I use Handplane baker for current work, but some issues some times stop my work, it's - Not fully triangulated error, after fine work before, with no changes in obj files! (Only with multiple objects, more than 10 or more)
  • Soul Exist
    Offline / Send Message
    Soul Exist polycounter lvl 2
    I think including an abort button would be really helpful. You can't quit mid bake when you've make a mistake so you just have to wait it out haha. 
  • GhostDetector
    Offline / Send Message
    GhostDetector polycounter lvl 4
    Hello,

    I'm trying run handplane baker but i get an error.

    "The program can't start because api-ms-win-crt-string-I1-1-0.dll is missing from your compter.  Try reinstalling the program to fix this problem"

    I re-installed, changed, and repaired the installation/set-up and nothing worked so far.  Could I get a link to a previous verst

    Version 0.9.2 64bit.
    OS: Windows 8.1

    Edit: Issue resolved (solution: Update/Install ( KB2999226 (Universal CRT)  Visual C++ Redistributable for Visual Studio 2015) )
  • Olninyo
    Offline / Send Message
    Olninyo polycounter lvl 3
    Looking great already, just took it for a quick spin.

    I'm not getting the speeds you guys are recording, more like 40 seconds for a normal map bake @2k 4x super sampling.
    I also ran an AO raytraced bake @4k 1X sampling and it never finished, app dropped to zero CPU usage in task manager.
    I had some issues when resizing the app where it would ping around and snap out of fullscreen sometimes. Could be a windows 10 thing going wrong?

    Loving the projection groups, ID tools, and volumetric gradient map.

    Some things I instantly missed from xNormal: the visual feedback of seeing tiles baked, though I guess if I was getting times as fast as yours that wouldn't be an issue, I could just check the final map.
    And also (this may just be me being blind) no cancel bake button?

    Good luck!

  • guats
    Offline / Send Message
    guats polycounter lvl 2
    Hey there Alec,

    I'm now using this in my production workflow in our game. It's great! It's really fast and the bakes come out quality most of the time without using cages.

    Two options I think would be really great are...

    1. transparent background around UV islands (no fill) I guess everything inside a UV island and it's padding to be opaque and everything beyond to be transparent.
    2. Export bake groups to separate image files, or layers in a single .psd. Each file would be output with the bake group's name as it's file name, and the same would happen for the Photoshop layers (if possible).

    Having the bakes come out as one flattened image makes it hard to swap parts out f they did not bake well.

    If Handplane Baker had this would make alteration of your maps so much easier.

    Thanks for all your hard work so far. Really appreciate it.
  • AlecMoody
    Offline / Send Message
    AlecMoody interpolator
    Olninyo said:
    Looking great already, just took it for a quick spin.

    I'm not getting the speeds you guys are recording, more like 40 seconds for a normal map bake @2k 4x super sampling.
    I also ran an AO raytraced bake @4k 1X sampling and it never finished, app dropped to zero CPU usage in task manager.
    I had some issues when resizing the app where it would ping around and snap out of fullscreen sometimes. Could be a windows 10 thing going wrong?


    What are your system specs?
  • 3Dyan
    Offline / Send Message
    3Dyan polycounter lvl 6
    Is the classic HP functionality gone?
    If I already have an object space normal map and simply wish to convert it for usage in UE4, is there a way to do that?
  • AlecMoody
  • Dylan Brady
    Offline / Send Message
    Dylan Brady polycounter lvl 6
    thank you for that link!
  • airbrush
    Offline / Send Message
    airbrush polycounter lvl 9
    Hi, wondering if you had a chance to fix the AO baking white issue i emailed you about a while back.

    The fix is the xml needs IgnorePerVertexColor="true" instead of false in the base   _settings.xml. Vcol xml is fine the way it is.
  • AlecMoody
    Offline / Send Message
    AlecMoody interpolator
    I looked back through are email conversation and don't see anything in there about AO.
  • angadsingh88
    Hey guys, 
    Am not able to get any information in the output maps, it comes out blank. Please help. 


  • supaclueless
    Offline / Send Message
    supaclueless polycounter lvl 6
    @angadsingh88 One of the main reasons that happens to me is when your HP is not inside your LP itself. Make sure your HP Transform matches your LP (the movement gizmo coordinates).
  • angadsingh88
    @supaclueless, at first i thought tht was the problem but then i baked it in xnormal and it was fine. is there a specific process of exporting the meshes? am using 3dsmax 2014.
  • supaclueless
    Offline / Send Message
    supaclueless polycounter lvl 6
    For me I would make sure that my HP pieces match the LP in terms of their transform location. These are my export settings.

    HP


    LP (using fbx 2013 export)


    one thing to make sure too is to xform ALL meshes (HP and LP) and make sure you don't have flipped normals.
  • angadsingh88
    @supaclueless Thanks a ton! will try these out. 
  • angadsingh88
    @supaclueless Hey, It Worked!! Thanks so much!!
     but there were a couple of mismatches. I tried a couple of ways. 

    1) I used your method for exporting, but didnt use x form. Handplane worked but gave a lot of intersecting issues.

    2) Used Reset xForm on all the meshes (including the cage mesh)then exported them through your method. Handplane gave a blank normal map. 

    3) Used XForm on all the two High & Low meshes, then on the low Made a projection and gave it a .5 push, and exported the cage. 
    those results came out great! but hand plane had the red dot for the cage. 






  • supaclueless
    Offline / Send Message
    supaclueless polycounter lvl 6
    Handplane should not be giving red intersection color (like 3ds max, i think thats what you are talking about) at all so I'm not sure of what you are seeing. If you can please post your texture map.
    Also forgot to let you know, try cranking your "Back Ray Offset Scale" in "Settings" tab to a higher number if you see that your mesh is not fully grabbing its normals (don't know a better way to describe this).
  • angadsingh88
    @supaclueless Here is how it cane out.

    also increased the Back Ray Offset Scale to 1000 but it didn't help.
    I tried multiple objects bake but they gave out some intersecting issues, not a lot but some. I might have to explode the meshes, but that goes against the point of hand plane. 

  • supaclueless
    Offline / Send Message
    supaclueless polycounter lvl 6
    @angadsingh88 oh I completely misread what you said about the red dot. The red dot on handplane just indicates that the cage for your lowpoly is not an exact match for your model so handplane will only use your cage to control ray distance but not ray direction as well (that will only be controlled by the cage if the indicator is green, meaning that the cage is an exact match of the lowpoly model).

    Overall in my use, it isn't too big a deal for me but if you want perfect matching cages you have to not tweak the cage in any manual way, but I have cages where sometimes i use the the push modifier and it still controls its direction + distance and other times it doesn't so I have not figured out 100% exactly how it works.

    You would have to ask @AlecMoody on that one as my knowledge on this is merely quoting his video tutorial.

    Reference:
    Handplane Baker Alpha 1
  • angadsingh88
    @supaclueless Cool thanks. 

    Also do you explode your meshes and then bake, cuz i tried to bake it like in the tutorial and it had intersecting issues. 
12357
Sign In or Register to comment.