Add renderer purpose display toggles (Guide, Proxy, Render)

Exposes UsdGeomImageable purpose visibility as three per-viewport toggles
in the gear popup (Purpose: Guide / Proxy / Render), wired to
showGuides/showProxy/showRender on UsdImagingGLRenderParams. Defaults match
the USD render params defaults (Proxy on, Guide and Render off). Settings
persist per-viewport to viewport_settings.ini.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-30 07:02:35 +08:00
parent 205bf65ab3
commit 1c55907573
5 changed files with 42 additions and 3 deletions
+6
View File
@@ -659,6 +659,9 @@ void ViewportPanel::SaveSettings(const std::string& path) const
f << "ShowGrid=" << (s.showGrid ? 1 : 0) << "\n";
f << "ShowCameraGuide=" << (s.showCameraGuide ? 1 : 0) << "\n";
f << "Aov=" << s.aov << "\n";
f << "ShowGuides=" << (s.showGuides ? 1 : 0) << "\n";
f << "ShowProxy=" << (s.showProxy ? 1 : 0) << "\n";
f << "ShowRender=" << (s.showRender ? 1 : 0) << "\n";
f << "AAEnabled=" << (s.aaEnabled ? 1 : 0) << "\n";
f << "BgColorR=" << s.bgColorR << "\n";
f << "BgColorG=" << s.bgColorG << "\n";
@@ -727,6 +730,9 @@ void ViewportPanel::LoadSettings(const std::string& path)
else if (key == "ShowGrid") ts.showGrid = (val == "1");
else if (key == "ShowCameraGuide") ts.showCameraGuide = (val == "1");
else if (key == "Aov") ts.aov = val;
else if (key == "ShowGuides") ts.showGuides = (val == "1");
else if (key == "ShowProxy") ts.showProxy = (val == "1");
else if (key == "ShowRender") ts.showRender = (val == "1");
else if (key == "AAEnabled") ts.aaEnabled = (val == "1");
else if (key == "BgColorR") ts.bgColorR = toFloat(val, ts.bgColorR);
else if (key == "BgColorG") ts.bgColorG = toFloat(val, ts.bgColorG);
+17
View File
@@ -96,6 +96,9 @@ ViewportTileSettings ViewportTile::GetSettings() const
s.showGrid = m_renderer.ShowGrid();
s.showCameraGuide = m_renderer.ShowCameraGuide();
s.aov = m_renderer.GetCurrentAov().GetString();
s.showGuides = m_renderer.ShowGuides();
s.showProxy = m_renderer.ShowProxy();
s.showRender = m_renderer.ShowRender();
s.aaEnabled = m_renderer.GetAAEnabled();
const pxr::GfVec3f& bg = m_renderer.GetBackgroundColor();
s.bgColorR = bg[0]; s.bgColorG = bg[1]; s.bgColorB = bg[2];
@@ -114,6 +117,9 @@ void ViewportTile::ApplySettings(const ViewportTileSettings& s)
m_renderer.SetShowCameraGuide(s.showCameraGuide);
if (!s.aov.empty())
m_renderer.SetCurrentAov(pxr::TfToken(s.aov));
m_renderer.SetShowGuides(s.showGuides);
m_renderer.SetShowProxy(s.showProxy);
m_renderer.SetShowRender(s.showRender);
m_renderer.SetAAEnabled(s.aaEnabled);
m_renderer.SetBackgroundColor(pxr::GfVec3f(s.bgColorR, s.bgColorG, s.bgColorB));
m_renderer.SetBBoxMode(static_cast<BBoxMode>(s.bboxMode));
@@ -1052,6 +1058,17 @@ void ViewportTile::RenderCompactToolbar(int tileIndex)
if (ImGui::MenuItem("Camera Guide", nullptr, guide))
m_renderer.SetShowCameraGuide(!guide);
ImGui::Separator();
bool purGuide = m_renderer.ShowGuides();
if (ImGui::MenuItem("Purpose: Guide", nullptr, purGuide))
m_renderer.SetShowGuides(!purGuide);
bool purProxy = m_renderer.ShowProxy();
if (ImGui::MenuItem("Purpose: Proxy", nullptr, purProxy))
m_renderer.SetShowProxy(!purProxy);
bool purRender = m_renderer.ShowRender();
if (ImGui::MenuItem("Purpose: Render", nullptr, purRender))
m_renderer.SetShowRender(!purRender);
bool aaItem = m_renderer.GetAAEnabled();
if (ImGui::MenuItem("Anti-Aliasing", nullptr, aaItem))
m_renderer.SetAAEnabled(!aaItem);
+3
View File
@@ -32,6 +32,9 @@ struct ViewportTileSettings {
bool ambientLightOnly = true;
bool domeLightEnabled = false;
int shadingMode = 0;
bool showGuides = false;
bool showProxy = true;
bool showRender = false;
};
/// Named orthographic view directions.