Monday 27 April 2015

OctaneRender for Poser 3 Month FREE Trial

The OctaneRender for Poser plugin has been made available as a 3 month free trial (ie. nothing to pay for Octane or the Poser plugin for 3 months) as part of the OctaneVR competition.  See http://home.otoy.com/vr-competition/ for details.  

Also make sure you try the Try Octane In Your Browser option - it is very cool.

As a reminder, you will need Windows 32 or 64 bit, or OSX 64 bit, Poser 9/10 or Poser Pro 2012/2014, and an NVidia card (GTX 500 series or later).  OpenCL support is scheduled to be added in Octane 3.

Sunday 19 April 2015

Sync'ing the Octane Daylight texture rotation with the North Offset

This applies to Octane Standalone and OctaneRender for Nuke.

If you want to have the Daylight Environment Sky Texture rotate as you change the North Offset, you can do this with an LUA Scripted Graph.

Use the following LUA code in the Scripted Graph shown below.  To rotate the sun and IBL, adjust the X slider in the North Offset of the Scripted Graph node.

NOTE: Using this approach in OctaneRender for Nuke will result in the North Offset slider not working in the OctaneRender node.  Instead, adjust the north offset in the Script Graph via the Edit Octane Scene button.


   local inputs, outputs, northOffsetOut, sphericalRotationOut  
   local MyGraphScript = {}  
   
   -- onInit function, this is called once in the beginning.  
   function MyGraphScript.onInit(self, graph)  
     -- input and output infos  
     local inputInfos = {  
       {type=octane.PT_FLOAT, label="North offset", defaultNodeType=octane.NT_FLOAT}  
     }  
       
     local outputInfos = {  
       {type=octane.PT_FLOAT, label="North offset"},  
       {type=octane.PT_FLOAT, label="Spherical Rotation"}  
     }  
   
     inputs = graph:setInputLinkers(inputInfos)  
     outputs = graph:setOutputLinkers(outputInfos)  
       
     northOffsetOut = octane.node.create{ type=octane.NT_FLOAT, name="North offset", graphOwner=graph }  
     outputs[1]:connectTo("input", northOffsetOut)  
       
     sphericalRotationOut = octane.node.create{ type=octane.NT_FLOAT, name="pherical Rotation", graphOwner=graph }  
     outputs[2]:connectTo("input", sphericalRotationOut)  
       
   end  
     
   -- this function is called every time the value of an input linker changes  
   function MyGraphScript.onEvaluate(self, graph)  
     local northOffsetIn = self:getInputValue(inputs[1])  
     northOffsetOut:setAttribute("value", {northOffsetIn[1], 0, 1})  
     sphericalRotationOut:setAttribute("value", {0, -northOffsetIn[1] * 180, 0})  
       
   end  
     
   return MyGraphScript  

Wednesday 8 April 2015

OctaneRender for Nuke Released as Open Beta

OctaneRender for Nuke is a Nuke 8/9 (incl Studio/X) plugin which enables users to render Nuke 3d geometry and/or existing Octane scene in OctaneRender from within the Nuke application.

Features include:
  1. Render OCS and ORBX scenes created with Octane Standalone or any of the Octane plugins.  Any animated geometry or camera data from the OCS/ORBX file (in an ABC Scene Node) is tied to the Nuke timeline, so scrubbing the timeline will move the Octane time to the relevant point.

  2. Nuke 3d geometry (Cylinder, Cube, Card, Sphere and GeoRead) with can the rendered with the OctaneRender Node, or if the OctaneRender node has already had an OCS/ORBX file imported, any Nuke 3d geometry will be added to the scene.

  3. Access all Octane Render Passes (currently 38 different passes available) in the Nuke channel.

  4. Edit Octane materials and render settings via the Octane NodeGraph editor window.  Changes made in the NodeGraph window update immediately in the Nuke viewer.

  5. Integration with HDR Light Studio, including LightPainting by mouse clicking the Nuke Viewer.

  6. Live updating of Nuke 3d Geometry transform changes to the Octane scene (and the Nuke Viewer).  So if you move a cube, the Octane render picks the movement up immediately - no need for a scene refresh.
  7. Export an animation sequence (which can contain both import Octane geometry and Nuke 3d geometry) to ORBX or OCS for sending to a render farm.

  8. Import Octane geometry (from ABC and OBJ Mesh nodes) into the Nuke 3d scene for visualization purposes.
  9. The Octane camera can be controlled from a Nuke 3d Camera (connected to the OctaneRender node).

     
  10. Render animation sequences via the OctaneRender node as you would with the Nuke ScanlineRender node.
  11. Focus, Material, White Balance and HDR Light Studio LightPaint picking (by clicking geometry in the Nuke Viewer window) is supported.
  12. Ability to switch on Caching, so each render is then placed in the Nuke cache for
    fast replay.

Limitations
  1. Nuke 3d Geometry which is exposed to Nuke plugins as Point Clouds will not be rendered.
  2. The plugin assumes there is one rendertarget node in the Octane scene.  Multiple rendertarget nodes are not supported.
  3. Octane Node pin values set using the “Edit Octane Scene” button cannot be animated.  Animation of these pins is planned in the future.
  4. Nuke 3d Geometry Shaders are not converted to Octane Materials when rendering Nuke 3d geometry.  You will need to setup the Octane Materials separately via the Edit Octane Scene button.
  5. The Nuke UI is blocked whilst rendering each frame when Cache Renders is enabled.
NOTE: Due to the high load that Nuke puts on GPU enabled cards, it is highly recommended that you use your on-board graphics or a second graphics card as the Windows display adapter

If you have any questions, or want more details - pls go to http://render.otoy.com/forum/viewtopic.php?f=7&t=45781.

Friday 2 January 2015

Playing a sound file after rendering an animation in OctaneRender for Poser

I had a request from a user wanting to play a sound file once the rendering of an animation as complete in OctaneRender for Poser.  This can be done with a python script:

   
 import winsound  
 import time  
 import threading  
 from threading import Thread, Event  
   
 class CheckAnimationFinishedThread(Thread):  
   def __init__(self, event):  
     Thread.__init__(self)  
     self.stopped = event  
   
   def run(self):  
     while not self.stopped.wait(0.5):  
       if not octanePlugin.UiManager.GetSetupForm().renderingAnimation:  
         # Stop the thread  
         stopFlag.set()  
           
         # Play the sound file  
         winsound.PlaySound("C:\Users\Public\Documents\Poser Pro 2014 Content\Runtime\LipSync\Audio Files\HiThere.wav", winsound.SND_FILENAME)  
         
 octanePlugin = __import__("OctaneRender for Poser")   
 if not octanePlugin.UiManager.IsSetupWindowOpen():  
   print "Setup Window not open"  
 else:  
   octanePlugin.UiManager.GetSetupForm().EventRenderAnimation(None)  
     
   # Start the thread to check for the end of rendering the animation  
   stopFlag = Event()  
   thread = CheckAnimationFinishedThread(stopFlag)  
   thread.start()  
   

Copy the above code into a file called RenderOctaneAnimation.py and save to the C:\Program Files\Smith Micro\Poser Pro 2014\Runtime\Python\poserScripts\ScriptsMenu folder (assuming Poser is installed in C:\Program Files).  Then open the OctaneRender for Poser plugin, and run the above script from the Poser->Scripts menu->RenderOctaneAnimation.  This will start the plugin rendering the animation, and once complete, it will play the HiThere.wav file.  You can play any file by changing the code above.