From 6f027b40b9c0bee03f2b7b317a385da4e38de6de Mon Sep 17 00:00:00 2001 From: bladtcasper-afk Date: Wed, 29 Jul 2026 14:05:44 +0200 Subject: [PATCH 1/3] Bugfix: tag visibility not changeable on group level. --- scripts/tag.py | 11 ++++++----- src/compas_viewer/scene/tagobject.py | 8 ++++++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/scripts/tag.py b/scripts/tag.py index 54fe01fc02..a06acb3c1f 100644 --- a/scripts/tag.py +++ b/scripts/tag.py @@ -7,8 +7,9 @@ t4 = Tag("Absolute height", (5, 0, 0), absolute_height=True, height=100) viewer = Viewer() -viewer.scene.add(t1) -viewer.scene.add(t2) -viewer.scene.add(t3) -viewer.scene.add(t4) -viewer.show() +tag_group = viewer.scene.add_group(name="tags") +tag_group.add(t1) +tag_group.add(t2) +tag_group.add(t3) +tag_group.add(t4) +viewer.show() \ No newline at end of file diff --git a/src/compas_viewer/scene/tagobject.py b/src/compas_viewer/scene/tagobject.py index 5127670185..7abaf0ff40 100644 --- a/src/compas_viewer/scene/tagobject.py +++ b/src/compas_viewer/scene/tagobject.py @@ -223,8 +223,12 @@ def _calculate_text_height(self, camera_position): def draw(self, shader, camera_position, width, height): """Draw the object from its buffers""" - if not self.show: - return + node = self + while node is not None and not node.is_root: + if not getattr(node, "show", True): + return + node = node.parent + shader.enable_attribute("position") if self.worldtransformation is not None: shader.uniform4x4("transform", self.worldtransformation.matrix) From 10b1cb3cd4abf4ebddcf196e2361065171bb5df4 Mon Sep 17 00:00:00 2001 From: bladtcasper-afk Date: Thu, 30 Jul 2026 12:50:24 +0200 Subject: [PATCH 2/3] Bugfix: text_aspect error after second viewer.show() --- src/compas_viewer/renderer/renderer.py | 6 ++++++ src/compas_viewer/scene/sceneobject.py | 1 + src/compas_viewer/scene/tagobject.py | 1 + 3 files changed, 8 insertions(+) diff --git a/src/compas_viewer/renderer/renderer.py b/src/compas_viewer/renderer/renderer.py index 2050f6abe7..c7cb66bef1 100644 --- a/src/compas_viewer/renderer/renderer.py +++ b/src/compas_viewer/renderer/renderer.py @@ -665,6 +665,12 @@ def paint(self, is_instance: bool = False): # Draw text tag sprites if there are any tag_objs = [obj for obj in self.viewer.scene.objects if isinstance(obj, TagObject)] if tag_objs: + # Tag objects are not part of the buffer manager, so they are not initialized by + # rebuild_buffers(). Initialize them here, where the GL context is guaranteed to be current. + for obj in tag_objs: + if not obj._inited: + obj.init() + # release the model shader and bind the tag shader self.shader_tag.bind() self.shader_tag.uniform4x4("viewworld", viewworld) diff --git a/src/compas_viewer/scene/sceneobject.py b/src/compas_viewer/scene/sceneobject.py index 1e117c102e..28fbe43801 100644 --- a/src/compas_viewer/scene/sceneobject.py +++ b/src/compas_viewer/scene/sceneobject.py @@ -156,6 +156,7 @@ def init(self): self._update_bounding_box() self.instance_color = Color.from_rgb255(*next(self.viewer.scene._instance_colors_generator)) self.viewer.scene.instance_colors[self.instance_color.rgb255] = self + self._inited = True def update(self, update_transform: bool = True, update_data: bool = False): """Update the object. diff --git a/src/compas_viewer/scene/tagobject.py b/src/compas_viewer/scene/tagobject.py index 7abaf0ff40..4bbbe1e47e 100644 --- a/src/compas_viewer/scene/tagobject.py +++ b/src/compas_viewer/scene/tagobject.py @@ -118,6 +118,7 @@ class TagObject(ViewerSceneObject, GeometryObject): def init(self): self.make_buffers() + self._inited = True def make_buffers(self): positions = [ From 04ff12afffa655f68f15047ca660fdd2d80d26d1 Mon Sep 17 00:00:00 2001 From: bladtcasper-afk Date: Thu, 30 Jul 2026 13:21:21 +0200 Subject: [PATCH 3/3] Fix added to CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cc624483f..2b68dc857c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +* Fixed tag visibility. Tags would still show even if group visibility was turned off. +* Fixed tag missing text_aspect error when opening a viewer a second time in a script. + ### Removed