diff --git a/src/experimental/filament/filament/drawable.cc b/src/experimental/filament/filament/drawable.cc index a8a6b317..c1e6eb32 100644 --- a/src/experimental/filament/filament/drawable.cc +++ b/src/experimental/filament/filament/drawable.cc @@ -161,7 +161,7 @@ void Drawable::Update(const mjModel* model, const mjvScene* scene, } SetTransform(geom); - UpdateMaterial(geom); + UpdateMaterial(geom, scene->flags[mjRND_IDCOLOR]); } void Drawable::AddMesh(int data_id) { @@ -203,11 +203,6 @@ void Drawable::SetDrawMode(Material::DrawMode mode) { renderables_.SetMaterialInstance(material_.GetMaterialInstance(mode)); } -void Drawable::SetUseDistinctSegmentationColors( - bool use_distinct_segmentation_colors) { - use_distinct_segmentation_colors_ = use_distinct_segmentation_colors; -} - void Drawable::SetTransform(const mjvGeom& geom) { // Flex and skin geometries are in global space. if (geom.type == mjGEOM_FLEX || geom.type == mjGEOM_SKIN) { @@ -321,7 +316,7 @@ void Drawable::SetTransform(const mjvGeom& geom) { } } -void Drawable::UpdateMaterial(const mjvGeom& geom) { +void Drawable::UpdateMaterial(const mjvGeom& geom, bool use_segid_color) { ObjectManager* object_mgr = material_.GetObjectManager(); const mjModel* model = object_mgr->GetModel(); @@ -405,7 +400,6 @@ void Drawable::UpdateMaterial(const mjvGeom& geom) { params.emissive = geom.emission; params.specular = geom.specular; params.glossiness = geom.shininess; - params.use_distinct_segmentation_colors = use_distinct_segmentation_colors_; if (geom.matid >= 0) { params.metallic = model->mat_metallic[geom.matid]; params.roughness = model->mat_roughness[geom.matid]; @@ -414,8 +408,8 @@ void Drawable::UpdateMaterial(const mjvGeom& geom) { } if (geom.segid >= 0) { - uint32_t segmentation_color = geom.segid; - if (use_distinct_segmentation_colors_) { + uint32_t segmentation_color = geom.segid + 1; + if (!use_segid_color) { constexpr double phi1 = 1.61803398874989484820; // Cached Phi(1). constexpr double coef1 = 1.0 / phi1; const double index = static_cast(geom.segid); diff --git a/src/experimental/filament/filament/drawable.h b/src/experimental/filament/filament/drawable.h index 2b2ffb3c..73602cbc 100644 --- a/src/experimental/filament/filament/drawable.h +++ b/src/experimental/filament/filament/drawable.h @@ -53,9 +53,6 @@ class Drawable { // beginFrame/endFrame. void SetDrawMode(Material::DrawMode mode); - // Updates whether to remap segmentation IDs to distinct colors when rendering - // segmentation. This is only really useful for visualization purposes. - void SetUseDistinctSegmentationColors(bool use_distinct_segmentation_colors); private: void AddMesh(int data_id); @@ -66,11 +63,10 @@ class Drawable { void SetTransform(const mjvGeom& geom); // Updates the material parameters of the drawable for rendering. - void UpdateMaterial(const mjvGeom& geom); + void UpdateMaterial(const mjvGeom& geom, bool use_segid_color); Material material_; Renderables renderables_; - bool use_distinct_segmentation_colors_ = false; }; } // namespace mujoco diff --git a/src/experimental/filament/filament/filament_context.cc b/src/experimental/filament/filament/filament_context.cc index 305e8474..8fa24a63 100644 --- a/src/experimental/filament/filament/filament_context.cc +++ b/src/experimental/filament/filament/filament_context.cc @@ -115,10 +115,7 @@ FilamentContext::FilamentContext(const mjrFilamentConfig* config, } } - scene_view_ = std::make_unique( - engine_, object_manager_.get()); - scene_view_->SetUseDistinctSegmentationColors( - config_.use_distinct_segmentation_colors); + scene_view_ = std::make_unique(engine_, object_manager_.get()); if (config_.enable_gui) { gui_view_ = std::make_unique(engine_, object_manager_.get()); } diff --git a/src/experimental/filament/filament/material.h b/src/experimental/filament/filament/material.h index 6313b5e5..c21f9fb1 100644 --- a/src/experimental/filament/filament/material.h +++ b/src/experimental/filament/filament/material.h @@ -60,7 +60,6 @@ class Material { float roughness = -1.0f; float emissive = -1.0f; bool tex_uniform = false; - bool use_distinct_segmentation_colors = false; }; Material(ObjectManager* object_mgr); diff --git a/src/experimental/filament/filament/scene_view.cc b/src/experimental/filament/filament/scene_view.cc index a954f6da..41cb61ef 100644 --- a/src/experimental/filament/filament/scene_view.cc +++ b/src/experimental/filament/filament/scene_view.cc @@ -210,11 +210,6 @@ void SceneView::SetColorGradingOptions(const ColorGradingOptions& opts) { color_grading_options_ = opts; } -void SceneView::SetUseDistinctSegmentationColors( - bool use_distinct_segmentation_colors) { - use_distinct_segmentation_colors_ = use_distinct_segmentation_colors; -} - void SceneView::SetEnvironmentLight(std::string_view filename, float intensity) { auto* ibl = object_mgr_->LoadFallbackIndirectLight(filename, intensity); @@ -359,8 +354,6 @@ void SceneView::UpdateScene(const mjrContext* context, const mjvScene* scene) { auto drawable = std::make_unique(object_mgr_, *geom); drawable->AddToScene(scene_); - drawable->SetUseDistinctSegmentationColors( - use_distinct_segmentation_colors_); drawable->Update(object_mgr_->GetModel(), scene, *geom); drawables_.push_back(std::move(drawable)); } diff --git a/src/experimental/filament/filament/scene_view.h b/src/experimental/filament/filament/scene_view.h index 596061aa..223e4940 100644 --- a/src/experimental/filament/filament/scene_view.h +++ b/src/experimental/filament/filament/scene_view.h @@ -55,10 +55,6 @@ class SceneView { // Updates the color grading options for the main render view. void SetColorGradingOptions(const ColorGradingOptions& opts); - // Updates whether to remap segmentation IDs to distinct colors when rendering - // segmentation. This is only really useful for visualization purposes. - void SetUseDistinctSegmentationColors(bool use_distinct_segmentation_colors); - // Updates the environment light using the KTX image at the given path. void SetEnvironmentLight(std::string_view filename, float intensity); @@ -104,7 +100,6 @@ class SceneView { ColorGradingOptions color_grading_options_; DrawMode active_mode_ = DrawMode::kNumDrawModes; float aspect_ratio_ = 1.0f; - bool use_distinct_segmentation_colors_ = false; }; } // namespace mujoco diff --git a/src/experimental/filament/render_context_filament.h b/src/experimental/filament/render_context_filament.h index 3e88f8ab..65c4e66c 100644 --- a/src/experimental/filament/render_context_filament.h +++ b/src/experimental/filament/render_context_filament.h @@ -51,10 +51,6 @@ struct mjrFilamentConfig { // Whether or not to enable GUI rendering. bool enable_gui; - - // Whether to remap segmentation IDs to distinct colors for visual display. - // This is only really useful for visualization purposes in studio. - bool use_distinct_segmentation_colors; }; void mjr_defaultFilamentConfig(mjrFilamentConfig* config); diff --git a/src/experimental/studio/app.cc b/src/experimental/studio/app.cc index d9c7cfae..3c61ae0e 100644 --- a/src/experimental/studio/app.cc +++ b/src/experimental/studio/app.cc @@ -142,7 +142,6 @@ App::App(int width, int height, std::string ini_path, render_config.load_asset = &App::LoadAssetCallback; render_config.load_asset_user_data = this; render_config.enable_gui = true; - render_config.use_distinct_segmentation_colors = true; #if defined(USE_FILAMENT_OPENGL) render_config.graphics_api = mjGFX_OPENGL; #elif defined(USE_FILAMENT_VULKAN)