Add per-viewport render settings persistence (delegate, grid, AA, bg, bbox, lighting)
ViewportTileSettings struct captures: render delegate, show grid, AA, background color, bbox mode, ambient-light-only, dome-light flags. ViewportPanel::SaveSettings() writes a simple INI file (layout + one [TileN] section per tile) to %APPDATA%\UsdLayerManager\viewport_settings.ini on Application::Shutdown(). ViewportPanel::LoadSettings() is called at the end of Application::Initialize() — after the viewport panel is constructed but before the first frame — so the saved render delegate is picked up by UsdSceneRenderer::InitRenderer() on the first Render() call. Layout (Single/HSplit/VSplit/Quad) and split ratios are also restored, creating the correct number of tiles before settings are applied. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -87,6 +87,33 @@ void ViewportTile::FrameScene()
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
ViewportTileSettings ViewportTile::GetSettings() const
|
||||
{
|
||||
ViewportTileSettings s;
|
||||
s.renderDelegate = m_renderer.GetCurrentRendererId().GetString();
|
||||
s.showGrid = m_renderer.ShowGrid();
|
||||
s.aaEnabled = m_renderer.GetAAEnabled();
|
||||
const pxr::GfVec3f& bg = m_renderer.GetBackgroundColor();
|
||||
s.bgColorR = bg[0]; s.bgColorG = bg[1]; s.bgColorB = bg[2];
|
||||
s.bboxMode = static_cast<int>(m_renderer.GetBBoxMode());
|
||||
s.ambientLightOnly = m_renderer.GetAmbientLightOnly();
|
||||
s.domeLightEnabled = m_renderer.GetDomeLightEnabled();
|
||||
return s;
|
||||
}
|
||||
|
||||
void ViewportTile::ApplySettings(const ViewportTileSettings& s)
|
||||
{
|
||||
if (!s.renderDelegate.empty())
|
||||
m_renderer.SetRendererPlugin(pxr::TfToken(s.renderDelegate));
|
||||
m_renderer.SetShowGrid(s.showGrid);
|
||||
m_renderer.SetAAEnabled(s.aaEnabled);
|
||||
m_renderer.SetBackgroundColor(pxr::GfVec3f(s.bgColorR, s.bgColorG, s.bgColorB));
|
||||
m_renderer.SetBBoxMode(static_cast<BBoxMode>(s.bboxMode));
|
||||
m_renderer.SetAmbientLightOnly(s.ambientLightOnly);
|
||||
m_renderer.SetDomeLightEnabled(s.domeLightEnabled);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
void ViewportTile::RefreshCameraList()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user