Hello again,
The prototype script shown below seems to work fine... some of the time.
It runs to completion on another machine with a single titan X card.
We built a new machine with 4 Titan X cards.
The script renders from 5000-9000 frames and it crashes the machine.
images are roughly 512 square. This takes a few hours.
In our initial tests each frame takes about 1 second.
I have not found any trace of the crash in the system logs.
The system appears as though it was reset after the crash.
The last image rendered is complete.
It is not related to the script as far as the number of frames rendered.
It does not seem to be related to
Initially the cards ran rather hot until I found the EVGA app to rev up the fans.
I've turned off all power saving features of windows and auto system update.
Any other ideas?
Cheers,
Craig
- Code: Select all
----------------------------------------------------------------------------------------------------
-- Shear animation using Octane Scatter node
-- animates the shear elements of a single scatter transform
-- @description renders an array of ortho views for holograms
-- @author Craig Newswanger & Ariel James
-- @version 0.3 August 4, 2015
-- @script-id Octane Shear Animation
------------------------------------------------------------------------------
-- Returns copies of the original scene graph, the camera node and the rendertarget.
-- This prevents us from modifying the original scene.
local function getSceneCopy()
-- get the selected render target
local selectedRt = octane.project.getSelection()[1]
if not selectedRt or selectedRt.type ~= octane.NT_RENDERTARGET then
octane.gui.showError{ text = "No render target selected" }
return nil
end
-- Create a full copy of the whole project so we don't modify the original project.
local copyScene = octane.nodegraph.createRootGraph("Project Copy")
local copyRt = copyScene:copyFromGraph(octane.project.getSceneGraph(), { selectedRt })[1]
-- check if the copied node is a render target with a thinlens camera connected to it
if not copyRt or copyRt.type ~= octane.NT_RENDERTARGET then
octane.gui.showError("No render target selected")
return nil
end
-- check if a thin lens camera is connected to the render target
local copyCam = copyRt:getInputNode(octane.P_CAMERA)
if not copyCam or copyCam .type ~= octane.NT_CAM_THINLENS then
octane.gui.showError("No thinlens camera connected to the render target")
return nil
end
return copyScene, copyRt, copyCam
end
local function saveRender(cScene, fName)
--Find parent direcotry of current project
local filePath = octane.project.getCurrentProject()
fileName = octane.file.getParentDirectory(filePath)
--Define new render folder and check if it exists
--renderFolder = fileName .. '/RenderFolder'
renderFolder = 'E:\\Death_Star_8-15-15'
exists = octane.file.exists(renderFolder)
--If the render folder does not exist create it
if not exists then
local result = octane.file.createDirectory(renderFolder)
end
renderFile = renderFolder .. '/' .. fName
print('FILE-NAME')
print(fName)
print('RENDER-FOLDER')
print(renderFile)
octane.render.start
{
renderTargetNode = cScene,
maxSamples = 10,
}
octane.render.saveImage(renderFile, octane.render.imageType.PNG8)
end
--
--Main
--
-- Get the render target and camera in global variables
SCENE_GRAPH, RT_NODE, CAM_NODE = getSceneCopy()
-- if getSceneCopy failed, halt the script
if SCENE_GRAPH == nil then return end
basename = "Death_Star_Battle"
for x = 255,0,-1 do
xshear = x/128 -1
for y = 255,0,-1 do
yshear = y/128 -1
xstr=string.format("%04d",255-x)
ystr=string.format("%04d",255-y)
filename= basename .. "_" .. ystr .. "_" .. xstr .. ".png"
print(filename,xshear,yshear)
local myScatterNode = octane.nodegraph.findItemsByName(SCENE_GRAPH,"myScatter",false)[1]
local matrix = { { 1, 0, xshear, 0 }, { 0, 1, yshear, 0 }, { 0, 0, 1, 0 } }
myScatterNode:setAttribute(octane.A_TRANSFORMS,{matrix})
saveRender(RT_NODE, filename)
end
end
-- reset the render engine
octane.render.reset()