@@ -43,10 +43,13 @@ def __init__(self, program):
43
43
self .uniformColorMode = glGetUniformLocation (self .program , "u_ColorMode" )
44
44
self .uniformHasColor = glGetUniformLocation (self .program , "u_HasColor" )
45
45
self .uniformHasNormal = glGetUniformLocation (self .program , "u_HasNormal" )
46
+ self .uniformMaxZ = glGetUniformLocation (self .program , "u_maxZ" )
47
+ self .uniformColorMapScale = glGetUniformLocation (self .program , "u_colorMapScale" )
46
48
47
49
class PointCloudRenderer :
50
+ pcProgram = None
51
+
48
52
def __init__ (self , pointCloud = None , pointSize = 1.0 , opacity = 1.0 , maxZ = None , colorMapScale = 1.0 ):
49
- self .pcProgram = None
50
53
self .pointCloud = pointCloud
51
54
self .vboPosition = None
52
55
self .vboColor = None
@@ -60,18 +63,11 @@ def __init__(self, pointCloud=None, pointSize=1.0, opacity=1.0, maxZ=None, color
60
63
self .colorMapScale = 0.05 * colorMapScale
61
64
62
65
def render (self , modelMatrix , viewMatrix , projectionMatrix ):
63
- if self .pcProgram is None :
66
+ if PointCloudRenderer .pcProgram is None :
64
67
assetDir = pathlib .Path (__file__ ).resolve ().parent
65
68
pcVert = (assetDir / "point_cloud.vert" ).read_text ()
66
- # Poor man's GLSL templates
67
- replaceMap = {
68
- '{MAX_Z}' : str (self .maxZ ),
69
- '{COLOR_MAP_SCALE}' : str (self .colorMapScale )
70
- }
71
- for k , v in replaceMap .items ():
72
- pcVert = pcVert .replace (k , v )
73
69
pcFrag = (assetDir / "point_cloud.frag" ).read_text ()
74
- self .pcProgram = PointCloudProgram (createProgram (pcVert , pcFrag ))
70
+ PointCloudRenderer .pcProgram = PointCloudProgram (createProgram (pcVert , pcFrag ))
75
71
76
72
if self .pointCloud is None : return
77
73
@@ -83,17 +79,19 @@ def render(self, modelMatrix, viewMatrix, projectionMatrix):
83
79
if self .opacity >= 1.0 : glDepthMask (GL_TRUE )
84
80
else : glDepthMask (GL_FALSE )
85
81
86
- glUseProgram (self .pcProgram .program )
87
- glUniformMatrix4fv (self .pcProgram .uniformModel , 1 , GL_FALSE , modelMatrix .transpose ())
88
- glUniformMatrix4fv (self .pcProgram .uniformView , 1 , GL_FALSE , viewMatrix .transpose ())
89
- glUniformMatrix4fv (self .pcProgram .uniformProjection , 1 , GL_FALSE , projectionMatrix .transpose ())
90
- glUniform3f (self .pcProgram .uniformCameraPositionWorld , self .cameraPositionWorld [0 ], self .cameraPositionWorld [1 ], self .cameraPositionWorld [2 ])
91
-
92
- glUniform1f (self .pcProgram .uniformPointSize , self .pointSize )
93
- glUniform1f (self .pcProgram .uniformOpacity , self .opacity )
94
- glUniform1i (self .pcProgram .uniformColorMode , self .colorMode )
95
- glUniform1i (self .pcProgram .uniformHasColor , 0 if self .pointCloud .colors is None else 1 )
96
- glUniform1i (self .pcProgram .uniformHasNormal , 0 if self .pointCloud .normals is None else 1 )
82
+ glUseProgram (PointCloudRenderer .pcProgram .program )
83
+ glUniformMatrix4fv (PointCloudRenderer .pcProgram .uniformModel , 1 , GL_FALSE , modelMatrix .transpose ())
84
+ glUniformMatrix4fv (PointCloudRenderer .pcProgram .uniformView , 1 , GL_FALSE , viewMatrix .transpose ())
85
+ glUniformMatrix4fv (PointCloudRenderer .pcProgram .uniformProjection , 1 , GL_FALSE , projectionMatrix .transpose ())
86
+ glUniform3f (PointCloudRenderer .pcProgram .uniformCameraPositionWorld , self .cameraPositionWorld [0 ], self .cameraPositionWorld [1 ], self .cameraPositionWorld [2 ])
87
+
88
+ glUniform1f (PointCloudRenderer .pcProgram .uniformPointSize , self .pointSize )
89
+ glUniform1f (PointCloudRenderer .pcProgram .uniformOpacity , self .opacity )
90
+ glUniform1i (PointCloudRenderer .pcProgram .uniformColorMode , self .colorMode )
91
+ glUniform1i (PointCloudRenderer .pcProgram .uniformHasColor , 0 if self .pointCloud .colors is None else 1 )
92
+ glUniform1i (PointCloudRenderer .pcProgram .uniformHasNormal , 0 if self .pointCloud .normals is None else 1 )
93
+ glUniform1f (PointCloudRenderer .pcProgram .uniformMaxZ , self .maxZ )
94
+ glUniform1f (PointCloudRenderer .pcProgram .uniformColorMapScale , self .colorMapScale )
97
95
98
96
if self .updated :
99
97
self .updated = False
0 commit comments