Modified SGCT configuration commands to allow aspect ratio tracked keyword in openspace config file (#560)

This commit is contained in:
Gene Payne
2018-03-20 08:24:01 -06:00
committed by Alexander Bock
parent d64a0df5f6
commit 9a44d9c9df
2 changed files with 44 additions and 21 deletions
+4 -4
View File
@@ -7,13 +7,13 @@ return {
-- occurs in a single window, a fisheye projection, or a dome cluster system
-- A regular 1280x720 window
SGCTConfig = sgct.config.single{},
SGCTConfig = sgct.config.single{tracked=true},
-- A regular 1920x1080 window
-- SGCTConfig = sgct.config.single{1920, 1080},
-- SGCTConfig = sgct.config.single{1920, 1080, tracked=true},
-- A windowed 1920x1080 fullscreen
-- SGCTConfig = sgct.config.single{1920, 1080, border=false, windowPos={0,0}, shared=true, name="WV_OBS_SPOUT1"},
-- SGCTConfig = sgct.config.single{1920, 1080, border=false, windowPos={0,0}, shared=true, name="WV_OBS_SPOUT1", tracked=true},
-- A 1k fisheye rendering
-- SGCTConfig = sgct.config.fisheye{1024, 1024},
@@ -22,7 +22,7 @@ return {
-- SGCTConfig = sgct.config.fisheye{1024, 1024, res={4096, 4096}, quality="2k", tilt=27},
-- Streaming OpenSpace via Spout to OBS
-- SGCTConfig = sgct.config.single{2560, 1440, shared=true, name="WV_OBS_SPOUT1"},
-- SGCTConfig = sgct.config.single{2560, 1440, shared=true, name="WV_OBS_SPOUT1", tracked=true},
-- SGCTConfig = "${CONFIG}/spout_output.xml",
+40 -17
View File
@@ -94,10 +94,10 @@ function sgct.config.cube(arg) end
##########################################################################################
]]--
function generateSingleViewportFOV(down, up, left, right)
function generateSingleViewportFOV(down, up, left, right, tracked)
return
[[
<Viewport>
<Viewport ]]..tracked..[[>
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<PlanarProjection>
@@ -110,10 +110,10 @@ end
function generateSingleViewport(lowerLeft, upperLeft, upperRight)
function generateSingleViewport(lowerLeft, upperLeft, upperRight, tracked)
return
[[
<Viewport>
<Viewport ]]..tracked..[[>
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<Projectionplane>
@@ -127,7 +127,7 @@ end
function generateFisheyeViewport(fov, quality, tilt, background, crop, offset)
function generateFisheyeViewport(fov, quality, tilt, background, crop, offset, trackedSpecifier)
local b = [[
<Background
r="]]..background["r"]..[["
@@ -161,7 +161,7 @@ function generateFisheyeViewport(fov, quality, tilt, background, crop, offset)
end
return [[
<Viewport name="fisheye">
<Viewport name="fisheye" ]]..trackedSpecifier..[[>
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<FisheyeProjection fov="]]..fov..[[" quality="]]..quality..[[" tilt="]]..tilt..[[">
@@ -679,14 +679,20 @@ function sgct.config.single(arg)
arg["fov"] = { down = 16.875, up = 16.875, left = 30.0, right = 30.0 }
end
end
if (arg["tracked"] ~= nil and arg["tracked"] == true) then
trackedSpecifier = "tracked=\"true\""
else
trackedSpecifier = "tracked=\"false\""
end
arg["viewport"] = generateSingleViewportFOV(
arg["fov"]["down"],
arg["fov"]["up"],
arg["fov"]["left"],
arg["fov"]["right"]
arg["fov"]["right"],
trackedSpecifier
)
return sgct.makeConfig(generateSingleWindowConfig(arg))
end
@@ -766,13 +772,20 @@ function sgct.config.fisheye(arg)
arg["background"] = { r = 0.1, g = 0.1, b = 0.1, a = 1.0 }
end
if (arg["tracked"] ~= nil and arg["tracked"] == true) then
trackedSpecifier = "tracked=\"true\""
else
trackedSpecifier = "tracked=\"false\""
end
arg["viewport"] = generateFisheyeViewport(
arg["fov"],
arg["quality"],
arg["tilt"],
arg["background"],
arg["crop"],
arg["offset"]
arg["offset"],
trackedSpecifier
)
return sgct.makeConfig(generateSingleWindowConfig(arg))
@@ -781,7 +794,7 @@ end
function sgct.config.cube(arg)
function getCubeWindow(location, res, size)
function getCubeWindow(location, res, size, trackedSpecifier)
local pos
local lowerLeft
local upperLeft
@@ -826,14 +839,14 @@ function sgct.config.cube(arg)
arg["windowSize"] = size
arg["windowPos"] = pos
arg["res"] = { res, res }
arg["viewport"] = generateSingleViewport(lowerLeft, upperLeft, upperRight)
arg["viewport"] = generateSingleViewport(lowerLeft, upperLeft, upperRight, trackedSpecifier)
return generateWindow(arg)
end
function getControlWindow(down, up, left, right)
function getControlWindow(down, up, left, right, trackedSpecifier)
arg = {}
arg["viewport"] = generateSingleViewportFOV(down, up, left, right)
arg["viewport"] = generateSingleViewportFOV(down, up, left, right, trackedSpecifier)
return generateWindow(arg)
end
@@ -843,9 +856,19 @@ function sgct.config.cube(arg)
arg["scene"] = generateScene(arg)
arg["settings"] = generateSettings(arg)
arg["window"] = getControlWindow(16.875, 16.875, 30.0, 30.0) .. getCubeWindow('front', res, size) .. getCubeWindow('back', res, size) ..
getCubeWindow('left', res, size) .. getCubeWindow('right', res, size) ..
getCubeWindow('up', res, size) .. getCubeWindow('down', res, size)
if (arg["tracked"] ~= nil and arg["tracked"] == true) then
trackedSpecifier = "tracked=\"true\""
else
trackedSpecifier = "tracked=\"false\""
end
arg["window"] = getControlWindow(16.875, 16.875, 30.0, 30.0, trackedSpecifier) ..
getCubeWindow('front', res, size, trackedSpecifier) ..
getCubeWindow('back', res, size, trackedSpecifier) ..
getCubeWindow('left', res, size, trackedSpecifier) ..
getCubeWindow('right', res, size, trackedSpecifier) ..
getCubeWindow('up', res, size, trackedSpecifier) ..
getCubeWindow('down', res, size, trackedSpecifier)
arg["user"] = generateUser(arg)
arg["capture"] = generateCapture(arg)