Jump to content


Using Soho: Indigo Renderer Support


  • Please log in to reply
89 replies to this topic

#25 Jason

Jason

    King Tapir

  • Administrators
  • 3,708 posts
  • Joined: 08-November 00
  • Name:Jason Iversen

Posted 21 March 2008 - 10:27 PM

Ok, here it is - my 0.1 alpha test it-might-blow-up version of Indigo4Houdini. I would love to have anyone and everyone play with it and pose questions, suggest changes, add features and make bug-fixes to this pipeline.


Please download: Indigo4Houdini on the Exchange




"The README" said:

INDIGO RENDERER for Houdini
===========================
Author: Jason Iversen,  jason@odforce.net

Indigo Renderer, v1.0.7+ required, http://www.indigorenderer.com
Houdini 9.1+ required, http://www.sidefx.com

For reference on the development of this stuff, and to report bugs or lavish praise, please see:
http://forums.odforc...?showtopic=6405
http://www.indigoren...opic.php?t=3119

Installing Indigo for Houdini.
------------------------------
You are required to install the indigo soho components in a location along the $HOUDINI_PATH.
It looks like $HOME/houdini9.1 is guaranteed for simple Windows installations of Houdini.
Unzip the .zip archive into your $HOME/houdini9.1 directory.  
Warning: if you have the file $HOME/houdini9.1/soho/parameters/SOHOparameters from
another 3rd render pipeline, these will have to be merged.

As for Indigo setup, install Indigo anywhere you like and you can either set an environment variable
called "$INDIGO_PATH" to the Indigo.exe executable, or you can edit the run_indigo.py and customize
the executable location. If so, open the file $HOME/houdini9.1/scripts/python/run_indigo.py and edit it.

The $TEMP environment variable should be set already but this is just a location to write the temporary
.igs scene file to.

You must install the indigo.otl Operator Type Library, and the easiest GUI method of doing this is to go
to the File > Install Digital Asset Library and browse for it and click Accept.


Using Indigo
------------
There are several new operators defined in the indigo.otl library:
   Objects > Indigo Light : the native Indigo light.
   SHOPs > Indigo * : all the shaders and their settings.
   ROPS > Indigo : the render settings exist here.

Rendering Parameters:
Look under 'Edit Rendering Parameters' on any node and browse through the available rendering switches
and settings that can be added to customize your output.
  
Geometry:
Indigo can also only render polygon triangles. NURBs, Primitive, Quads, etc will not render.
Either make your Generator SOPs (Sphere/Torus/etc) output Triangles or Alternating Triangles or
follow all your geometry with a Convert and a Divide. The SOHO pipeline cannot perform conversions
or tessellation of geometry for you.

Shaders:
There are two types of shaders: "shaders" and "mediums". All the Mediums start with "Indigo Medium: ..."
Mediums can be referred to by Shaders. If you go to your network Display Options ('d' over the
Network), you can turn on Dependency > Show Local Dependency Links and you'll see some nice
wires connecting these nodes.

Motion Blur:
Indigo cannot render motion blurred images, so don't worry about it:)

Cameras:
By default the camera will auto-focus on the object in the center of the frame. The 'fstop' parameter on the
Camera will control the depth of field still. You cannot shut off depth of field rendering in Indigo, only
reduce it as you would if you were shooting with a real camera.  To set your focus distance manually, add
the Rendering Parameters under the "Indigo > Camera" folder. Here you will see more optional parameters that
can be defined per Camera, such as "Autofocus", "Bloom", etc.

Lights:
The Indigo Light is a fully defined light source which should support all the options that Indigo can. Be
aware that if you use an HDR, it must be an EXR format file and must be in a latlong representation. Indigo can
also support .float spherical files but the exporter doesn't handle this currently.  The pipeline will also try
to convert (wrangle) normal Houdini Lights into Indigo too, mapping the parameters as best it can.


KNOWN ISSUES YOU SHOULD KNOW ABOUT and things TODO:
---------------------------------------------------
* The pipeline does not support Materials
* The pipeline does not yet support shaders applied by the Shader SOP.
  Geometry needs to split into seperate Models for Indigo. This is called "partitioning" in SOHO.
* Currently we invoke Indigo.exe, which will render forever until you terminate it. The ROP needs to
  support invoking Indigo.exe or indigo_console.exe with a time cutoff and output image name.
* Need to support the "background" light type.
* Need to support .float files for Environment Maps.

Please make lots of suggestions, fix bugs and that's it!
Enjoy!

Jason Iversen

jason iversen
++odforce guy, and supervisor @ r+h, jiversen-at-rhythm
odforce g+ page: https://plus.google.com/103473736257525043693

#26 Jason

Jason

    King Tapir

  • Administrators
  • 3,708 posts
  • Joined: 08-November 00
  • Name:Jason Iversen

Posted 27 March 2008 - 11:18 PM

Updated to Houdini4Indigo v0.2.

This new version supports almost all the features in the newly released Indigo v1.0.9 (stable) version.

Get it here: Indigo4Houdini v02 on the Exchange

"CHANGE HISTORY" said:

0.2 - 27 March 2008,
Updated to Indigo 1.0.9 (stable) release.
Added support for new renderer settings: Halt Time, Halt Samples, AntiAliasing, Aperture Diffraction, lots of other things etc.
Added support for new camera capabilities: aperture design stuff, obstacles.
Added Oren-Nayar material.
0.1 - Initial Release

"CHANGE HISTORY" said:

* The pipeline does not support Houdini-style Materials, only SHOPs.
* The pipeline does not yet support shaders applied by the Shader SOP.
  Geometry needs to split into seperate Models for Indigo. This is called "partitioning" in SOHO.
* Currently we invoke Indigo.exe with an output image name.
* Need to support the "background" light type.
* Maybe need to support .float files for Environment Maps.
* Need to layout the Rendering Parameters better, with appropriate disablewhen's.
* Need to add exit_portals
* Need to add mesh_lights
* Need to add support for directly reading .obj and .3ds. Auto-archiving would be useful for this.
* Need to complete the downsize/splat_filter parameters - these are only half-defined.
* Need to add override_res from the ROP

jason iversen
++odforce guy, and supervisor @ r+h, jiversen-at-rhythm
odforce g+ page: https://plus.google.com/103473736257525043693

#27 vmuriel

vmuriel

    Initiate

  • Members
  • PipPip
  • 125 posts
  • Joined: 25-March 06
  • Name:a a

Posted 28 March 2008 - 03:46 AM

Great work, Jason !!!!

cheer up!
Victor M. Muriel
www . vmuriel . com

#28 Jason

Jason

    King Tapir

  • Administrators
  • 3,708 posts
  • Joined: 08-November 00
  • Name:Jason Iversen

Posted 28 March 2008 - 08:09 AM

View Postvmuriel, on Mar 28 2008, 03:46 AM, said:

Great work, Jason !!!!

cheer up!

Thank you; I hope someone finds it useful and produces a good looking image:)
jason iversen
++odforce guy, and supervisor @ r+h, jiversen-at-rhythm
odforce g+ page: https://plus.google.com/103473736257525043693

#29 mtucker

mtucker

    Peon

  • Members
  • Pip
  • 78 posts
  • Joined: 16-June 05

Posted 28 March 2008 - 12:50 PM

I must say I was pretty excited about the idea of reporting bugs to Jason instead of the other way around. So I had to download it and give it a try :)

1. I'd suggest making the renderer exec path a parameter on the ROP (or a parameter passed to the python script). It would be nice to be able to render without having to edit the .py file or set an env var.
2. The Temp file calculation (tempdir + "temp.igs") doesn't work if $TEMP doesn't end with a slash. And the hardcoded temp.igs prevents multiple simultaneous renders. Maybe you should just use "os.tempnam()" or "os.tmpfile()" to create the temporary file?
3. Does the os.system() call block? If so, you can delete the temp file when you're done...
4. This is no doubt a problem specific to my setup, but I kept getting errors from python about being unable to "import os". I eventually changed the render command to use hython instead of python. Maybe you should change this to be the default because you know without a doubt that all Houdini users have hython, but plain python may or may not be there...
5. I tried rendering before reading the README, so my geometry had quads. Nothing rendered, but I didn't get any error messages (from indigo or the ROP). I would think SOHO could detect and complain if your polygons aren't triangles?

And last (but perhaps most important) I would love to have one of the hip files for the sample images you posted to this thread included in the download. It would provide a great jump start. I'm particularly confused about the material stuff right now - I can't find the shader/parameter that simply says "make my teapot blue"... But then I'm happy when I can make mantra render my teapots blue so I'm probably not your target audience for this :)

Mark

P.S. I assume you know this, but there is a link to your stuff on the exchange from the Indigo web site.

#30 Jason

Jason

    King Tapir

  • Administrators
  • 3,708 posts
  • Joined: 08-November 00
  • Name:Jason Iversen

Posted 29 March 2008 - 10:20 AM

View Postmtucker, on Mar 28 2008, 12:50 PM, said:

I must say I was pretty excited about the idea of reporting bugs to Jason instead of the other way around. So I had to download it and give it a try :)

What goes around comes around, I guess, ha!

Points 1 to 4 - this would be all nicely solved if (1) Indigo could accept the IGS piped in, and/or (2) SOHO natively supported the writing of an external file then launching a formatted commandline afterward  (like "indigo.exe %s").  I'll definitely make these changes you suggest, though -good ideas!

Point 5, unfortunately it seems as if SOHO doesn't have a soho.warning() function, only a soho.error(). I didn't want to error out because, believe it or not, sometimes it can be hard to ensure you are only sending triangles. Using the Divide SOP for triangulation has two problems: (1) It won't always create triangles! If two points of a quad are coincident, it'll skip the quad - I suppose to avoid generating zero-area triangles, or it can't decide which way to split it. You have to first consolidate points and then triangulate... which is an unexpected step for users. (2) If a mesh is animating, it'll triangulate the mesh differently frame to frame. I suppose it's making a decision based on the angles in the polygon, but this can causing twitching in the surface.  In the past, to have reliable/stable topology frame to frame I've had to triangulate a rest frame and snap this mesh to the animated point positions- something that could be avoided I think.  It'd be good to have the Divide SOP have a "Stable triangulate"  option which would handle both of these cases I mention.

If I use soho.error(), the exporter will then be too fussy I fear. Any chance of adding a soho.warning() to yellow-flag the ROP? Currently I just print a warning into a comment in the IGS file (which is obviously useless).

View Postmtucker, on Mar 28 2008, 12:50 PM, said:

1. I'd suggest making the renderer exec path a parameter on the ROP (or a parameter passed to the python script). It would be nice to be able to render without having to edit the .py file or set an env var.
2. The Temp file calculation (tempdir + "temp.igs") doesn't work if $TEMP doesn't end with a slash. And the hardcoded temp.igs prevents multiple simultaneous renders. Maybe you should just use "os.tempnam()" or "os.tmpfile()" to create the temporary file?
3. Does the os.system() call block? If so, you can delete the temp file when you're done...
4. This is no doubt a problem specific to my setup, but I kept getting errors from python about being unable to "import os". I eventually changed the render command to use hython instead of python. Maybe you should change this to be the default because you know without a doubt that all Houdini users have hython, but plain python may or may not be there...
5. I tried rendering before reading the README, so my geometry had quads. Nothing rendered, but I didn't get any error messages (from indigo or the ROP). I would think SOHO could detect and complain if your polygons aren't triangles?

And last (but perhaps most important) I would love to have one of the hip files for the sample images you posted to this thread included in the download. It would provide a great jump start. I'm particularly confused about the material stuff right now - I can't find the shader/parameter that simply says "make my teapot blue"... But then I'm happy when I can make mantra render my teapots blue so I'm probably not your target audience for this :)

Mark

P.S. I assume you know this, but there is a link to your stuff on the exchange from the Indigo web site.

jason iversen
++odforce guy, and supervisor @ r+h, jiversen-at-rhythm
odforce g+ page: https://plus.google.com/103473736257525043693

#31 edward

edward

    Grand Master

  • Members
  • PipPipPipPipPip
  • 3,339 posts
  • Joined: 10-September 02
  • Name:e.d.w.a.r.d. .

Posted 29 March 2008 - 12:48 PM

View PostJason, on Mar 29 2008, 02:20 PM, said:

(2) If a mesh is animating, it'll triangulate the mesh differently frame to frame. I suppose it's making a decision based on the angles in the polygon, but this can causing twitching in the surface.

I think a PolyReduce SOP set to 100% with Use Original Points enabled and a reference input could solve this case.
don't panic!

#32 Jason

Jason

    King Tapir

  • Administrators
  • 3,708 posts
  • Joined: 08-November 00
  • Name:Jason Iversen

Posted 31 March 2008 - 07:29 AM

View Postedward, on Mar 29 2008, 12:48 PM, said:

I think a PolyReduce SOP set to 100% with Use Original Points enabled and a reference input could solve this case.

Sounds risky, but I'll try it. I still vote for a Stable Triangulate (and a Quadrangulate;)) option though, as this sounds like triangulation is almost a side-effect of PolyReduce.
jason iversen
++odforce guy, and supervisor @ r+h, jiversen-at-rhythm
odforce g+ page: https://plus.google.com/103473736257525043693

#33 kubabuk

kubabuk

    Illusionist

  • Members
  • PipPipPip
  • 393 posts
  • Joined: 15-February 05
  • Location:Oliwa
  • Name:Kuba Roth

Posted 31 March 2008 - 09:02 AM

Hey Jason,

Thanks for the great exporter and useful SOHO example? I am slightly confused with the direction of skylight in you your exporter at the moment. Which axis in the exporter is vertical, Y or Z? Indigo uses Z as vertical and doesn't allow to go below 0, so does it mean if the houdini exporter uses the same layout? If yes do we have to rotate all model to that directions (rotate 90 on X), or is it done internally? It sounds simple but I am completely lost at the moment. Also to get different directions should I play between -1 and 1 values?

I am also experimenting with the exit_portals (which I really miss this feature in maxwell) and igi files, I am planning to add this settings to the plugin if you don't mind?.

Don't know if any of you use Violet at all, but recetly I used it to remove a noise from igi rendered files (using median filter). It works wonderfull much better then the median on exr files in Halo. Could somene explain me what might be the reason of such a difference? Would it be 32/16 bit differnce between these files?

thanks
kuba

#34 vmuriel

vmuriel

    Initiate

  • Members
  • PipPip
  • 125 posts
  • Joined: 25-March 06
  • Name:a a

Posted 31 March 2008 - 03:22 PM

For linux testers, there is a native Indigo beta version for linux 64 bits,

http://www.indigoren...p;limitstart=10

My early tests with this beta and Indigo4Houdini in Linux are very goods.

Attachment rendered in ten minutes.

Attached Thumbnails

  • im1207021645.png

Edited by vmuriel, 31 March 2008 - 08:03 PM.

Victor M. Muriel
www . vmuriel . com

#35 Jason

Jason

    King Tapir

  • Administrators
  • 3,708 posts
  • Joined: 08-November 00
  • Name:Jason Iversen

Posted 01 April 2008 - 09:16 PM

View Postkubabuk, on Mar 31 2008, 09:02 AM, said:

Thanks for the great exporter and useful SOHO example? I am slightly confused with the direction of skylight in you your exporter at the moment. Which axis in the exporter is vertical, Y or Z? Indigo uses Z as vertical and doesn't allow to go below 0, so does it mean if the houdini exporter uses the same layout? If yes do we have to rotate all model to that directions (rotate 90 on X), or is it done internally? It sounds simple but I am completely lost at the moment. Also to get different directions should I play between -1 and 1 values?

Currently I just swap the Z and Y components of the Sky Light direction parameters, but I was thinking of using the Indigo Light's rotations instead (optionally) as you would a Directional Light but the sun would start vertically above scene at {0,1,0} instead of down -Z as with regular lights.  I'll update the guide geometry so that it reflects the sun directional angle properly in the next release.

View Postkubabuk, on Mar 31 2008, 09:02 AM, said:

I am also experimenting with the exit_portals (which I really miss this feature in maxwell) and igi files, I am planning to add this settings to the plugin if you don't mind?.

That would be just fine:) I was imagining an "exit_portal" rendering parameter, if existent on an object would cause the exporter to output an exit_portal block instead?  There should also be an "Indigo Exit Portal" Object which would just have this parameter set on by default and have good representative geometry in it (a correctly oriented grid).

I was about to add a "meshlight" RenderingParameter and look at rounding out some of the other parms a bit - and I should write a little summary on "How to add further parameters to Indigo4Houdini".

If you get it working, please mail it back to me and I'll merge the changes:)  In fact, we should start maintaining a little set of hipfiles which demo such things.


View Postkubabuk, on Mar 31 2008, 09:02 AM, said:

Don't know if any of you use Violet at all, but recetly I used it to remove a noise from igi rendered files (using median filter). It works wonderfull much better then the median on exr files in Halo. Could somene explain me what might be the reason of such a difference? Would it be 32/16 bit differnce between these files?

Oh, whats "Violet"?  I haven't heard of it. Where do you find it?
jason iversen
++odforce guy, and supervisor @ r+h, jiversen-at-rhythm
odforce g+ page: https://plus.google.com/103473736257525043693

#36 Jason

Jason

    King Tapir

  • Administrators
  • 3,708 posts
  • Joined: 08-November 00
  • Name:Jason Iversen

Posted 01 April 2008 - 09:17 PM

View Postvmuriel, on Mar 31 2008, 03:22 PM, said:

For linux testers, there is a native Indigo beta version for linux 64 bits,

http://www.indigoren...p;limitstart=10

My early tests with this beta and Indigo4Houdini in Linux are very goods.

Attachment rendered in ten minutes.

Cute scene:)  I'm also curious how Mantra PBR handles something like this..
jason iversen
++odforce guy, and supervisor @ r+h, jiversen-at-rhythm
odforce g+ page: https://plus.google.com/103473736257525043693




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users