MCPcopy Create free account
hub / github.com/SpectacularAI/sdk / MapRenderer

Class MapRenderer

python/cli/visualization/visualizer_renderers/renderers.py:93–243  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

91 glDisable(GL_DEPTH_TEST)
92
93class MapRenderer:
94 def __init__(
95 self,
96 pointSize=2.0,
97 pointOpacity=1.0,
98 keyFrameCount=None,
99 colorMode=0,
100 voxelSize=None,
101 maxZ=None,
102 visualizationScale=20,
103 skipPointsWithoutColor=False,
104 renderPointCloud=True,
105 renderSparsePointCloud='auto',
106 renderKeyFrames=True,
107 renderMesh=False):
108 self.renderSparsePointCloud = renderSparsePointCloud
109
110 # constant for entire visualization
111 self.voxelSize = 0 if voxelSize is None else voxelSize
112 self.skipPointsWithoutColor = skipPointsWithoutColor
113 self.maxZ = maxZ
114 self.visualizationScale = visualizationScale
115 self.renderPointCloud = renderPointCloud
116 self.renderKeyFrames = renderKeyFrames
117 self.renderMesh = renderMesh
118
119 # can be adjusted
120 self.pointSize = pointSize
121 self.opacity = pointOpacity
122 self.maxRenderKeyFrames = keyFrameCount
123 self.colorMode = colorMode
124
125 self.keyFrameCameraToWorldMatrices = {}
126 self.pointCloudRenderers = {}
127 self.sparsePointCloudRenderer = None
128 self.keyFrameRenderer = KeyFrameRenderer()
129 # self.meshRenderer = MeshRenderer() # TODO: fix
130
131 def onMappingOutput(self, mapperOutput):
132 for kfId in mapperOutput.updatedKeyFrames:
133 keyFrame = mapperOutput.map.keyFrames.get(kfId)
134
135 # Remove deleted key frames from visualisation
136 if not keyFrame:
137 self.keyFrameCameraToWorldMatrices.pop(kfId, None)
138 rendr = self.pointCloudRenderers.pop(kfId, None)
139 if rendr is not None: rendr.cleanup()
140 continue
141
142 primaryFrame = keyFrame.frameSet.primaryFrame
143 self.keyFrameCameraToWorldMatrices[kfId] = primaryFrame.cameraPose.getCameraToWorldMatrix()
144
145 if not keyFrame.pointCloud: continue
146 if keyFrame.pointCloud.empty(): continue
147
148 if self.renderSparsePointCloud == 'auto':
149 self.renderSparsePointCloud = False
150 self.sparsePointCloudRenderer = None

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected