Great Karma results!

   9302   20   7
User Avatar
Member
433 posts
Joined: April 2018
Offline
I've been vocal in the past about Karma's slowness and complexity, but I have to say I've been digging in more recently and am finding lots to like.

I'm working on developing a unique visual style for a big project I have planned and I'm searching for a rendering solution that gives me total artistic control and a smooth workflow. So far Octane has gotten me the closest to what I'm after. But I recently took the plunge, moved my scene over to Solaris and really made an effort to understand advanced Karma shading and rendering.

First things first, you HAVE to use "image" view in the viewport. That's the only way to go. After I figured that out things fell into place and I was able to get a fantastic render with my desired look. This took only 30 minutes on my slow laptop, just about the same as Octane in the same scene.

Honestly, this is very exciting. Karma is still a bit slow and has some bugs, but it's really close to greatness. Can't wait to see what SideFX does with it!

Attachments:
karma_octane.png (8.0 MB)

Subscribe to my Patreon for the best CG tips, tricks and tutorials! https://patreon.com/bhgc [patreon.com]

Twitter: https://twitter.com/brianhanke [twitter.com]
Behance: https://www.behance.net/brianhanke/projects [www.behance.net]
User Avatar
Member
642 posts
Joined: Aug. 2013
Offline
Hey Brian.

I hope you are OK. Would you be able to share your render settings please?

Best Mark
User Avatar
Member
433 posts
Joined: April 2018
Offline
Mark Wallman
Would you be able to share your render settings please?

Sure, here you go. Nothing fancy, but what made a huge difference was lowering Color Limit from 10 to 5. I was getting a ton of SSS fireflies to the right of the nose until I made that change. I assume it's like GI Clamp in Octane? Didn't make the rest of the scene darker, so why not.

Another thing that helped render speed a ton was using the light linker. The dome light is there only for background color, so it doesn't light anything. The chin light only hits the face and front hair, not the lashes or brows, etc.



Edited by BrianHanke - Feb. 6, 2021 07:21:24

Attachments:
karma01.png (55.0 KB)
karma02.png (29.0 KB)
linker.png (50.7 KB)

Subscribe to my Patreon for the best CG tips, tricks and tutorials! https://patreon.com/bhgc [patreon.com]

Twitter: https://twitter.com/brianhanke [twitter.com]
Behance: https://www.behance.net/brianhanke/projects [www.behance.net]
User Avatar
Member
433 posts
Joined: April 2018
Offline
And another cool thing! I discovered the "husk" command line render utility. Just save out a USD of your scene and literally all you do is type "husk <usdfilename>" (and add -V <0-9> for verbose output if you want and -n <numframes> for an animation) and it will pop out your images from the command line. No need to keep Houdini running. This little animation took only 10 minutes a frame and it's shockingly clean. Never imagined I'd say this, but I'm pretty much a Karma convert at this point!

Subscribe to my Patreon for the best CG tips, tricks and tutorials! https://patreon.com/bhgc [patreon.com]

Twitter: https://twitter.com/brianhanke [twitter.com]
Behance: https://www.behance.net/brianhanke/projects [www.behance.net]
User Avatar
Member
642 posts
Joined: Aug. 2013
Offline
Hi Brian.

Thanks for all the info. Can I ask how you got the hair into Karma and what shaders you used for it.

Also are you dynamic payloading the USD hair in and using the Karma procedural for the hair? I have not looked into hair/fur at all yet in USD but I know I will need to at some point.

Best Mark
User Avatar
Member
122 posts
Joined: Sept. 2018
Online
Big thanks to you Brian! Love seeing your results and tests. I'm always trying to use Karma for work but end up using Mantra in the end because of small little things I can't get working in Karma. My recent issue was using pscale in a shader to randomize emission color. For some reason, this won't work in Karma but perfectly fine in Mantra.
But seeing your results gives me hope that Karma needs just a little more dev time and extensive documentation but then it will become a great Mantra replacement.
User Avatar
Member
433 posts
Joined: April 2018
Offline
Mark Wallman
Hi Brian.

Thanks for all the info. Can I ask how you got the hair into Karma and what shaders you used for it.

Also are you dynamic payloading the USD hair in and using the Karma procedural for the hair? I have not looked into hair/fur at all yet in USD but I know I will need to at some point.

Best Mark

The hair is brought in via SOP import. It's mostly cached out as bgeo in my /obj. I built my own custom hair workflow for this project. It doesn't use the Houdini shelf tools, instead each section is based on hair generate nodes for guides and hair, with painted density and a bunch of brushing and clumping and such. The shader is the default Houdini hair, with ramps for the color changes.

Edited by BrianHanke - Feb. 10, 2021 12:28:06

Attachments:
hair.png (46.9 KB)

Subscribe to my Patreon for the best CG tips, tricks and tutorials! https://patreon.com/bhgc [patreon.com]

Twitter: https://twitter.com/brianhanke [twitter.com]
Behance: https://www.behance.net/brianhanke/projects [www.behance.net]
User Avatar
Member
433 posts
Joined: April 2018
Offline
No_ha
Big thanks to you Brian! Love seeing your results and tests. I'm always trying to use Karma for work but end up using Mantra in the end because of small little things I can't get working in Karma. My recent issue was using pscale in a shader to randomize emission color. For some reason, this won't work in Karma but perfectly fine in Mantra.
But seeing your results gives me hope that Karma needs just a little more dev time and extensive documentation but then it will become a great Mantra replacement.

Thanks, glad you liked! Yep, I can imagine there are a lot of edge cases like that that just don't quite work yet. I too have hope for Karma after this. Definitely needs more documentation and examples. SideFX always delivers!
Subscribe to my Patreon for the best CG tips, tricks and tutorials! https://patreon.com/bhgc [patreon.com]

Twitter: https://twitter.com/brianhanke [twitter.com]
Behance: https://www.behance.net/brianhanke/projects [www.behance.net]
User Avatar
Member
260 posts
Joined: March 2011
Online
No_ha
Big thanks to you Brian! Love seeing your results and tests. I'm always trying to use Karma for work but end up using Mantra in the end because of small little things I can't get working in Karma. My recent issue was using pscale in a shader to randomize emission color. For some reason, this won't work in Karma but perfectly fine in Mantra.
But seeing your results gives me hope that Karma needs just a little more dev time and extensive documentation but then it will become a great Mantra replacement.

Can you post your problems? I´m using Karma for a while and It´s working (mostly) as aspected (from Mantra).
User Avatar
Staff
4432 posts
Joined: July 2005
Offline
BrianHanke
And another cool thing! I discovered the "husk" command line render utility. Just save out a USD of your scene and literally all you do is type "husk <usdfilename>" (and add -V <0-9> for verbose output if you want and -n <numframes> for an animation) and it will pop out your images from the command line. No need to keep Houdini running. This little animation took only 10 minutes a frame and it's shockingly clean. Never imagined I'd say this, but I'm pretty much a Karma convert at this point!

Yes, this is a pretty cool little side benefit of the USD/Hydra "always live rendering" philosophy... You can run husk this way directly from the USD Render ROP as well. And (I almost hesitate to say this) it's not just a karma thing. Any render delegate is likely to get a big boost using this mode (depending of course on how much your scene changes from frame to frame).

Great looking renders!
User Avatar
Member
642 posts
Joined: Aug. 2013
Offline
Hi.

Like Mark said, using Husk is fantastic. This coupled up with PDG is really powerful. To render in Deadline now I set a few custom paths... and that is it. No setting Deadline up for Renderman/Karma/Arnold/3Delight/18.5 etc

All I have to do is use a PDG deadline TOP which is picking up the USD render LOP which in turn is picking up the Husk command.

Super smooth. SideFX have really thought about making rendering as flexible as possible!

Best Mark
User Avatar
Member
122 posts
Joined: Sept. 2018
Online
guilhermecasagrandi
Can you post your problems? I´m using Karma for a while and It´s working (mostly) as aspected (from Mantra).
Here is a file I made for demonstration, it's not the actual project, NDAs and all.

Mantra:


Karma:

Attachments:
2021-02-13 19_42_03-E__Temporary_Bugreports_Karma_Color_Mantra_Karma_Emission_Color.hiplc - Houdini .jpg (57.8 KB)
2021-02-13 19_42_33-E__Temporary_Bugreports_Karma_Color_Mantra_Karma_Emission_Color.hiplc - Houdini .jpg (52.0 KB)
Mantra_Karma_Emission_Color.hiplc (1.0 MB)

User Avatar
Member
260 posts
Joined: March 2011
Online
No_ha
guilhermecasagrandi
Can you post your problems? I´m using Karma for a while and It´s working (mostly) as aspected (from Mantra).
Here is a file I made for demonstration, it's not the actual project, NDAs and all.

Mantra:
Image Not Found


Karma:
Image Not Found

I think you should report a bug. It works with polygons, but doesn´t work with particles.
User Avatar
Staff
2589 posts
Joined: July 2005
Offline
It looks like the idattribute is not getting passed through from USD to Hydra. If you create a different attribute name, it seems to get through.

The other thing is that Karma doesn't automatically change the type of the primvar from integer to float. So, in the shader, you'd have to use declare the variable as "int my_id".

Please submit a bug about the missing idprimvar/attribute.
User Avatar
Staff
451 posts
Joined: June 2020
Offline
Alternatively if you want to maintain your SOP & material setup, in Solaris you can use a Python LOP with something similar to the snippet below, which will generate a float-based primvar:

from pxr import UsdGeom, Sdf

node = hou.pwd()
stage = node.editableStage()
geo = UsdGeom.Points(stage.GetPrimAtPath("/sopimport1/points_0"))

api = UsdGeom.PrimvarsAPI(geo.GetPrim())
pv = api.CreatePrimvar("id", Sdf.ValueTypeNames.FloatArray, "vertex")
pv.GetAttr().Set([float(id) for id in geo.GetIdsAttr().Get(hou.frame())], hou.frame())
Edited by robp_sidefx - Feb. 15, 2021 07:31:58
User Avatar
Member
8507 posts
Joined: July 2007
Online
robp_sidefx
Alternatively if you want to maintain your SOP & material setup, in Solaris you can use a Python LOP ...
may be easier and hopefully faster with Attribute Wrangle LOP:
Primitives: /sopimport1/points_0
Run On Elements Of Array Attributes: on
f@primvars:id = i@ids;
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Staff
451 posts
Joined: June 2020
Offline
Thanks Tomas ... I swear I'd started with exactly that and it wasn't working, so I switched to Python. Time for another cup of coffee I guess
User Avatar
Member
122 posts
Joined: Sept. 2018
Online
Does anybody know what the Offline Optimizations are that you can enable in Karma?
I just did a very simple test with a Pyro sim. It's very small in the frame and doesn't take long to render either way. I only rendered 10 frames in Karma one with them disabled and once enabled. Disabled it was 7 Minutes 30 seconds, enabled 5 minutes and 30 seconds. That's quite a big difference for just 10 frames. I previously ignored that as I had/have no idea what the consequences are but seems like there can potentially be significant speed gains.
User Avatar
Member
433 posts
Joined: April 2018
Offline
No_ha
Does anybody know what the Offline Optimizations are that you can enable in Karma?
I just did a very simple test with a Pyro sim. It's very small in the frame and doesn't take long to render either way. I only rendered 10 frames in Karma one with them disabled and once enabled. Disabled it was 7 Minutes 30 seconds, enabled 5 minutes and 30 seconds. That's quite a big difference for just 10 frames. I previously ignored that as I had/have no idea what the consequences are but seems like there can potentially be significant speed gains.

Hmm, I just checked it out on one of my simple Solaris test scenes. Didn't seem to improve render time. No volumes though, so maybe it does something to help with those?
Subscribe to my Patreon for the best CG tips, tricks and tutorials! https://patreon.com/bhgc [patreon.com]

Twitter: https://twitter.com/brianhanke [twitter.com]
Behance: https://www.behance.net/brianhanke/projects [www.behance.net]
User Avatar
Member
122 posts
Joined: Sept. 2018
Online
Guessing I would've assumed that it might preload more from disk as this is a huge bottleneck for me. My bgeo sequence is on a slow HDD and has big file sizes while also being compressed. That's the only thing I could imagine speeds up anything.
But this wouldn't really make sense looking at the tooltip which states:
Offline optimization will apply certain optimizations that are specific to non-interactive workflows. When rendering multiple frames in a single render, these optimizations may impact performance. For single frame renders, they may be significant.
Which sounds to me that these Optimizations are doing more in single frame renders? Also, there is a setting to disable them for multi-frame renders. Rendering a single frame didn't give me any difference, though.

Looking at Deadline:
Peak RAM usage
Optimize:
10.7 GB
Non:
12.8 GB

Average RAM usage:
Optimize:
7.1 GB
Non:
8.3 GB

This also doesn't seem to make any sense when guessing it preloads more, but again, my single frame test took the same time.
  • Quick Links