Add Maya-style Render Layer panel
Render layers built on the existing USD sublayer architecture: each layer is a file-backed SdfLayer mounted as a sublayer and tagged via custom layer data, with membership stored in a UsdCollectionAPI on a hidden /RenderLayerData prim. Activating a layer applies its overrides and isolates it to its members. "Default" is virtual -- it means all render-layer sublayers muted. See docs/adr/0002-render-layer.md for the design and rationale. - RenderLayerManager: create/delete/rename/activate, membership, mute-based isolation. Sdf-level APIs are used while a layer is muted (Usd-level APIs can't see muted layers) and Usd-level APIs when active. - Commands: create/delete/rename/activate and add/remove members, all undoable. - RenderLayerPanel: layer list with one-click activation and a membership editor for the selected prims. - StageEditorPanel / SceneHierarchyPanel: badge render-layer-owned sublayers, disable their mute/remove controls (they're managed from the Render Layer panel so the two can't desync), and lock the edit target while a non-Default layer is active. - ConnectShaderAttrs/DisconnectShaderAttr: take an explicit editLayer captured at construction, so undo targets the same layer as execute even if the ambient edit target changed in between (e.g. a render-layer switch). Note: SceneHierarchyPanel.h also carries declarations for the sublayers section added in the following commit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include "IconManager.h"
|
||||
#include "StageEditorPanel.h"
|
||||
#include "SceneHierarchyPanel.h"
|
||||
#include "RenderLayerPanel.h"
|
||||
#include "ViewportPanel.h"
|
||||
#include "PropertyPanel.h"
|
||||
#include "TimelinePanel.h"
|
||||
@@ -11,6 +12,7 @@
|
||||
#include "MaterialEditorPanel.h"
|
||||
#include "../core/UsdStageManager.h"
|
||||
#include "../core/LayerManager.h"
|
||||
#include "../core/RenderLayerManager.h"
|
||||
#include "../core/PropertyManager.h"
|
||||
#include "../core/MaterialManager.h"
|
||||
#include "../core/CommandHistory.h"
|
||||
@@ -65,6 +67,12 @@ private:
|
||||
void AddReferenceToStage();
|
||||
void CreatePrimOnStage(const std::string& typeName);
|
||||
|
||||
/// Explicitly saves every render-layer SdfLayer, since at most one is
|
||||
/// ever in the stage's composition (unmuted) at a time and
|
||||
/// UsdStage::Save() only walks layers currently in composition — the
|
||||
/// rest would otherwise be silently dropped on save.
|
||||
void SaveDirtyRenderLayers();
|
||||
|
||||
// Playblast
|
||||
void CapturePlayblastFrame();
|
||||
|
||||
@@ -78,11 +86,13 @@ private:
|
||||
std::unique_ptr<IconManager> m_iconManager;
|
||||
std::unique_ptr<UsdStageManager> m_stageManager;
|
||||
std::unique_ptr<LayerManager> m_layerManager;
|
||||
std::unique_ptr<RenderLayerManager> m_renderLayerManager;
|
||||
std::unique_ptr<PropertyManager> m_propertyManager;
|
||||
std::unique_ptr<MaterialManager> m_materialManager;
|
||||
CommandHistory m_commandHistory;
|
||||
std::unique_ptr<StageEditorPanel> m_stageEditorPanel;
|
||||
std::unique_ptr<SceneHierarchyPanel> m_sceneHierarchyPanel;
|
||||
std::unique_ptr<RenderLayerPanel> m_renderLayerPanel;
|
||||
std::unique_ptr<ViewportPanel> m_viewportPanel;
|
||||
std::unique_ptr<PropertyPanel> m_propertyPanel;
|
||||
std::unique_ptr<TimelinePanel> m_timelinePanel;
|
||||
@@ -91,6 +101,7 @@ private:
|
||||
bool m_showDemoWindow;
|
||||
bool m_showStageInfo;
|
||||
bool m_showStageEditor;
|
||||
bool m_showRenderLayerPanel;
|
||||
bool m_showSceneHierarchy;
|
||||
bool m_showViewport;
|
||||
bool m_showPropertyPanel;
|
||||
|
||||
Reference in New Issue
Block a user