Batchtool Baker

Hi today I release first version of baking addon for Blender and Substance Batchtools. You can get it here
This addon is based on Meltdown script by Piotr Adamowicz. I left the UI stuff not changed too much but I reworked the core of addon to integrate it with Substance Batchtools, fixed bugs, added new features, optimized redundant stuff etc.

I developed it for few reasons:

  • Substance Batchtools speed – you can bake 4k textures in minutes (compared to hours in blender)
  • Substance Batchtools reduced ram usage – I can bake hipoly meshes, without risk running out of ram
  • I wanted to have quick way to bake complex objects made with GroupPro addon. But you don’t have to use it. This addon works for baking normal objects too.
  • Easy iteration – no need to click Import/Export multiple times in blender, and your external baking app. This is usually tedious and time consuming process. All objects are exported automatically in background.  Also addon is smart enough to know when object was changed, and export it only when needed.
  • Easy way to re-bake only parts of your texture, that were changed/updated. I will explain how to do this later below.

For this addon to work you have to have Substance Designer, and then install Substance Batchtools from all www.allegorithmic.com.

To install Batchtools on your PC, go to www.allegorithmic.com, login and go to Download tab.

 

Download

Then click on the icon, as shown in image above and grab Substance Batchtools.BatchToolDownload

After installing BatchTools you are good to go.
Run blender and search for ‘bake‘ phase(1). Enable Batchtools Baker, and point it (2) to sbsbaker.exe file, located in your Substance Batchtool installation folder. In my case it was located in: ‘E:\Program Files\Allegorithmic\Substance BatchTools\5\sbsbaker.exe

Batchtool Baker Addon Preferences

After that you will have new tab in 3d View -> Tool shelf -> Baking.

Basic steps for baking are (make sure your blend file is saved):

  • click button ‘Add Bake Job‘. Few options will popup (file path, resolution, etc)
  • click ‘Add Pair‘ button, to select lowpoly mesh (with uv), and highpoly mesh.
  • click ‘Add Pass‘ and select baking type you want to perform (normal, id, ao etc)

When you are done you can bake by pressing ‘Bake’ button on top. By default output directory is set to:  ‘path to your blend file’/textures/‘. You can change it with Path property (just below Dilation parameter). Also you can open destination folder from blender by: shift+LMB clicking on folder icon.

Bake Job‘ corresponds to single UV set (one texture). When you want to bake another texture (eg. separate texture for head, and separate for body) then just add new ‘Bake Job’ for head. Each ‘Bake Job’ can bake multiple sets of high-low poly pairs and passes.

Pairs‘ multiple high-low poly pairs are useful when thing, that you are baking, is composed of many objects, but we don’t want them to influence each other. For example lets say body of character, has pants and shoes that are overlapping each other. Without this addon, you would have to move shoes object away from pants object, so they are not affecting each-other while baking. But with Batchtool Baker, you can just create two pairs high-low poly of objects  – one for pants, one for shoes. No need to move them away.

Passes‘ Batchtool Baker in blender supports following passes:

  • “MAT_ID” – from material color, Vertex Color, Mesh ID, Submesh ID
  • “AO”
  • “NORMAL” (Tangent and World Space, OpenGL and DirectX mode)
  • “UV”
  • “CURVATURE” – it requires normal map pass (just put normal pass bake, before/above curvature map bake)
  • “POSITION”  – all axis or one axis.
  • “THICKNESS”
  • “HEIGHT”
  • “OPACITY”

In addon preferences you can define suffix for each of those passes. So when your bake name is ‘head’, then your will get files like: head_ao, head_id, head_norm, etc (depending on your passes).

Each lowpoly-highpoly pair has bunch of settings.
First two fields are used for selecting your high,lowpoly objects. For highpoly you can also use group of objects or Group Instance (preferably made with GroupPro addon 🙂 ).

Grid this button, when enabled allows you to select cage object. When disabled you can tweak forward and rear ray distance multiplier. Those values work as multipliers for main Rear and Forward ray distances defined just blow AA samples parameter. So eg. when you set rear distance to 0,02, and rear multiplier to 10, then the resulting rear ray distance is 0,2  (0,02*10).

PairSideButtonsX – deletes current low-high poly pair
Camera – disable baking of current low-high poly pair. Cool feature here is, that if you previously baked current low-high pair, and then disable it, script will use result of previous bake for new bake. This may save you some time, when you wan to re-bake only some pairs of objects, then just disable ‘Camera’ icon for not needed pairs and previous bake will be used for those.

Refresh – when enabled addon will export fbx file, with current pair of objects, on next bake. When disabled, fbx file will not be exported. Useful when working with heavy meshes, tweaking bake parameters, and you do not want to export all that heavy geometry on each small change. Actually script automatically detects any change to hipoly mesh and enables this button when needed. However there are some bugs in blender eg. if you grab hipoly object, and cancel grab command, update event on mesh will be triggered, resulting in enabling ‘Refresh’ icon, even though no geometry or position was changed. That is why, I added this manual override button, so you can disable exporting FBX file on new bake.

There are similar buttons placed on header of Pairs list:

 They are here just for convenience – they allow to disables/enables exporting fbx and baking for all mesh pairs, with one click. See example:

 

 

 

BakeDisable

And the last icon I wanted to explain – green icon – means baking of current baked job is enabled. If you click on it, it will become red – disable baking of bake job.

 

At he bottom I showed you example of how those features could be used. We have two pairs of objects:

  • pipe_low‘ and ‘PipeHi‘ (group of multiple objects)
  • cylinder_low‘ and ‘cylinder-hi

We see that ‘Camera’ icon is disabled for ‘pipe_low’ but it is baked into image, because addon used previous bake result for this pair of objects.
Cylinder_low – is using cage ‘cylinder_lowCage’ object. It has enabled ‘Camera’ icon – so it was baked. Also it has enabled ‘refresh’ icon, so geometry was updated with new fbx file on bake. This is very simple setup,  so there is no much gain in terms of speed. But on complex models, you can introduce changes only where those are needed, without re-baking everything.

Example Batchtool Baker

Update:
I just added object picker for highpoly, lowpoly and cage.

Object Picker

Update 1.03 (more info)

  • added ability to bake second or next uv set (UV map)
  • preview of frontal/rear ray distance
  • one click cage setup

Update 1.11 (more info in this post)

PivotPro Blender addon, some art too.

Hi I just finished making new blender addon  – baking tool for substance designer users. It will allow you quicly bake ao, normal, ID etc. in allegorithmic BatchTools software. Baking times will be no longer problem ;). Bad new is it will cost $ but not much (5-15$ I think). I have to test it bit more, but it should be out in 1-2 weeks.

Also PivotPro addon (free) is now available on github. PivotPro will allow you to create temporary pivot point, that can be easily moved, snapped and used for pivot point for rotation, scaling, snapping point reference.

Blender PivotPro addon

PivotPro in action

If you like it you can support me by giving any sum through gumroad.
And here is part of manual for this addon (full manual is provided with gumroad link above):
Now you can press rotate, scale, move selected objects around red pivot point. To do this use:

  • shift + R to rotate box around red pivot
  • shift + S to scale box around red pivot
  • shift + G – by default behaves like ordinary grab. But if you enable snapping, box will be snapped to desired vertex/edge/face by red pivot location. Also when nothing is selected, you can use shift+G to translate red pivot to new location, eg. below I used shift+G, then ‘Z’, to move red pivot 1BlenderUnit up in Z axis.

Example of snapping with pivotPro:

PivotPro snapping example animation

Example with grid snapping:

PivotPro snapping to grid

And some stuff  I made in past months:

Yamato battleship

GroupPro

GroupPro was made because default blender group instances are powerful, but it is not user friendly to work with. With GroupPro I managed to get rid of all annoying features of group instances:

  • you can edit any instances on scene, not just the ‘source’ one
  • you can work in recursive way – group instances, can be made of other subgroups, which can be made of subgroups etc. At any stage subgroup can be edited and saved, with all instances updated in realtime
  • easy mirroring of selected groups, that fixes group instance mirror
  • adjusting origin of group, without destroying positions of other instances placed in scene, or in another groups
  • nice UI, that makes group instances easy to work with

This makes working with huge scenes with lots of objects easy and gives all the pros of group instances:

  •  less memory memory usage
  •  easy selection of multiple objects with one click

Here is video tutorial/demo how to use addon (for version 1.0):
https://vimeo.com/139789313

Update 1.01:

  • preventing ability to edit linked library groups – editing linked library objects it is not supported by GroupPro,
  •  ‘flip’ options correctly stores groups assigned to mirrored objects,
  •  bounding box for edited group is now displayed only for visible objects and bbox is displayed now in xray mode to make it easily visible).

Update 1.02:

  • Delete Group – deletes group with subgroups and objects that this group is made of permanently from blender file
  • Make unique – Makes selected Group separate instance.

    GroupPro – MakeUnique command

  • Convert to geometry – It splits Grouped object into separate, individual mesh objects.
  • Initialize Groups – Helps to cleanup garbage objs. after pasting group from another file

Update 1.03

  • Added pop-up menu with GroupPro commands under ‘Ctrl+X’ hotkey

Update 1.04

  • fixed problems with displaying instances of group that was being edited
  • fixed problems with ‘Set origin’ command
  • added ‘Cleanup’ command – deletes unused groups with content.  Unused groups = groups that are currently not being linked to scene). More info with example in manual.

Update 1.05

  • refactored code for editing and closing groups (simpler, more speed)
  • added ‘MaxDepth’ parameter for ‘MakingUnique’ groups- Maximum depth for which unique groups will be created. 0-inifinite depth, default=1 (use F6 panel to change maxDepth)

    MakeUnique – maxDepth demo

  • bug fixes

And here is Yamato battleship  I made to stress test new addon:

Yamato battleship Yamato battleship Yamato battleship Yamato battleship Yamato battleship Yamato battleship

Using Unreal Engine 4 for asset rendering.

It is not step by step tutorial how to setup your asset for rendering in Unreal Editor 4, but more of a help to get idea how simple  it is. UE4 options/buttons are self explanatory so I won’t be writing that ‘point light’ button is placing point light on scene :).

I used Unreal Editor only once before, few years ago (it was UE3 back then), but only for brief amount of time, so you could say I’m new to Unreal Engine 4. I decided to try if, new Unreal Engine 4, with PBR and advanced camera post-processing, is good for asset rendering, and I mean no ordinary lowpolly asset rendering, but for hipoly -2 milion sculpts with vertex color data out of sculpting software. So I downloaded new free UE4 from here, and quickly chewed through some build in tutorial. I have to admit UE4 is very easy to use, everything is well designed, easy to reach.
You want too add light? Just use panel of left.
Import your model/texures? Just right click on ‘Content Browser’ (bottom left panel)  ‘Props’ folder, and choose -> new asset -> import. For 2,4 million triangles sculpt with vertex color data it took around 1-2 minutes to load.
Here is how my scene looks, with 2 point lights, one environment light and camera:

Unreal Editor 4

Unreal Editor 4

You can see it is pretty basic. All the postprocess effects are binded to camera. So when you place one on your scene, just select it and go to bottom right panel with all the settings for bloom, flares and stuff.a

The most complex part is setting the material, especially if you are not used to node based workflow. But you can click on the flashing icon (I gueess it flashes only on fresh installs) on the top right to get some quick tutorial how to setup your material. As you can see, on image below, I could use vertex color data, but I decided to go with white.

Unreal Editor Material setup

Unreal Editor Material setup

So the most important question is, where is the render button? Well it is hidden in the corner of 3d view:

Unreal Editor Menu

 

Then you will see this box:

Unreal Editor high resolution screenshoot

Unreal Editor high resolution screenshoot

However at the time of writing this post, renders are broken – they tend to have way to much bloom, flares. They simply do not match what is on your screen. Hopefully this will be fixed. In a mean time I just used ‘print scrn’ key on keyboard. But before you do, you may want to disable all the gizmos – with ‘G’ key, and go to fullscreen with ‘F11’ key. Both options are available from the same menu, where ‘high resolution screenshot’ is (see 2 images above).  And here goes the results:

LuxCore vs Mitsuba vs Cycles round 3

Lux2

Because of release of new Luxrenderer,  I made quick test of Cycles vs LuxCore 1.5 (blender exporter is in zip file)  vs Mitsuba 5.0 on CPU rendering.

My specs are

  • CPU: InterCore i5-4670K @3,4Ghz,
  • GPU: NVIDIA 660GTX

Scene setup is the same:

  • 128  PathTracing samples on CPU device.
  • Sobol sampler
  • ray depth 6
  • light – HDR env probe
  • material setup is the same (contains most used materials – diffuse, glossy, metalic, glass)

And here are the results (btw. description on image is wrong, It should be CPU not GPU):

LuxCore Cycles Mitsuba path tracing

LuxCore Cycles Mitsuba
path tracing

As you can see in image above, Cycles is fastest, but render has more noise than Mitsuba. LuxCore is slowest, and has more noise than both Cycles and Mitsuba. But still new LuxCore 1.5 renders are a lot faster than old LuxRender.
One more test in darker place. LuxCore quality is getting closer to cycles in darker scenes:
Mitsuba Lux Cycles

GPU test – tile size set to 128. Cycles Cuda vs LuxCore OpenCL on NVIDIA 660GTX. CUDA are always faster than OpenCl on Nvidia, so maybe results could be different if we compared LuxCore on AMD GPU, but I do not have one.
Cycles vs LuxCore GPUSummary:

CPU SPEED: Mitsuba wins giving faster renders with less noise.  Cycles takes second place and Lux third (new luxCore 1.5 is way faster than older LuxRender – up to 10x!,  but still not as fast as Cycles). Another advantage of Mitsuba are additional integrators eg. Photon Mapping is great for indoor scenes, caustics, etc. Lux has also other integrators than PathTracing, but usually is not as fast as above.
GPU SPEED: Cycles wins, but maybe LuxCore on AMD GPUS will bee faster? Will have to wait and see. But on my NVIDIA 660GTX Cycles is faster with Cuda, than Lux with OpenCl, but that is to be expected. Cuda>OpenCL on Nvidia. Mitsuba do not have GPU support.

Usability/Features:
LuxRender – easy to setup lightning, quite easy setup of renderer, has realtime vieport rendering, easy and good looking sun&sky lightning, node based materials (soon) gives lots of flexibility (but not as much as Cycles), renderpasses, displacement,  strands.  But no fast/easy solution for SSS.

Mitsuba: easy to setup render – just set number of samples and you are good to go, easy lightning, good and easy sun&sky setup, basic renderpasses, basic sss.   But it lacks lots of features: no vieport rendering,  just basic strands support, no node materials, no displacement.

Cycles: it is most powerful but hardest to learn into IMO. Some features works only in ‘experimentl’ mode.  It supports: complex node materials, realtime vieport rendering, fast sss (best of all above), renderpasses, fast but complex to sun&sky setup, displacement, motion blur.  There are lots of sliders to adjust render speed vs quality, but they are not user friendly and you may find yourself wasting a lot of time adjusting those. Mitsuba is way easier here – just one slider ‘number of samples’, gets the job done in 90%  of cases.
Also you may find that Cycles gives bad looking glossy reflections for hight values of roughness eg see here. There is node setup that solves that, but again it is not easy to fix. So I could say for Cycles ‘with great power comes great responsibility’ :D.

Lots of sculpts

Mostly having fun in 3d coat. Dynamic tessellation is way better that zremesh. No need to remesh and loosing detail like in zbrush. Pros compared to zbrush:

  • instances!!! (eg, sculpt one finger, and have all other updated in realtime)
  • ability to group objects in tree structure (child – parent). This allow of transformation of whole group of objects at once. I zbrush you can move only one tool at time (unless going with zpose)
  • easy way of posing multiple objects at once (no need to merge). Same goes for move brush.
  • easy gradient masking – awesome to pose hipoly sculpt. In zbrush you have to make lowpoly version of sculpt first to get smooth masking with transpose tool – bit time consuming.
  • painting with layers and blending modes.
  • Cool and fast booleans – especially in voxel mode. Great for hardsurface stuff

Bad things:

  • exporter for blender dosen’t seems to work. Too zbrush too 😦
  • I didn’t managed to export vertex color from blender back to 3d coat recently. It was pain in the .. in my last project (yellow girl),
  • some stuff is buggy, or not functional at but recent 4.1 release fixed lots of stuff.
  • bad default navigation imo, but you will be able to customize it
  • default brushes are not good but Artman Preset is awesome. Use custom presets