
Instancing is a powerful feature inside Octane. There are a few ways to approach it and also a few gotchas to be aware of. While more cumbersome to setup - currently the fastest and computationally more efficient way to instance in Octane is using object level instancing and will result in faster IPR build times. See Packed Primitive Instancing for the alternative method.
For object level instancing you need to split/setup each object you want to instance in a separate object. You can also use this method to instance other objects like volumes or lights. The objects do not need to have the viewflag enabled. Do note that the instanced objects will take their octane object parameters from these nodes, so you can set individual things like light id masks, trace sets, geometry properties etc.

Create an instance object node and inside setup the instance pointcloud, using attributes like @pscale, @scale, @orient, @N, @up as well as any attributes you might want to use for shading (see Instance Attributes). Note: If you just want a single instance per instance node, you can skip modifying the internals and just move the instance node around like any other object.

To point your instance to the objects you want to instance you can either do so via the “Instance Object” parameter if you have a single instance object

Or if you want to assign multiple items you can do so using an s@instance attribute - with the path of the object you want to instance (for example s@instance = “obj/box1”). RELATIVE PATHS ARE NOT SUPPORTED (for example “../../box1”). There are many ways to do this assignment. You can do it using a wrangle, you can use a name sop node, there is a labs instance attribute node, or I will also shamelessly plug my own instancing setup utility tool here.

By default houdini will only show the points in the viewport. To see the full geo set the point instancing setting to “fast/full point instancing” (There doesn’t seem to be a difference between the two when it comes to the viewport - also this setting does not affect octane in any way). Note: As opposed to packed primitives, these instances do not show point colors in the viewport.

