@@ -82,7 +82,6 @@ export const Sphere = ({textures} : {textures: THREE.Data3DTexture[] | THREE.Dat
8282 const [ boundsObj , setBoundsObj ] = useState < Record < string , THREE . Vector4 > > ( { } )
8383 const [ bounds , setBounds ] = useState < THREE . Vector4 [ ] > ( new Array ( 10 ) . fill ( new THREE . Vector4 ( - 1 , - 1 , - 1 , - 1 ) ) )
8484 const [ height , width ] = useMemo ( ( ) => isFlat ? dataShape : [ dataShape [ 1 ] , dataShape [ 2 ] ] , [ dataShape ] )
85-
8685 useEffect ( ( ) => { //This goes through the list of highlighted squares and removes those that aren't included in the timeseries object.
8786 let boundIDs = Object . keys ( boundsObj )
8887 const tsIDs = Object . keys ( timeSeries )
@@ -131,7 +130,7 @@ export const Sphere = ({textures} : {textures: THREE.Data3DTexture[] | THREE.Dat
131130 nanAlpha : { value : 1 - nanTransparency } ,
132131 displaceZero : { value : - valueScales . minVal / ( valueScales . maxVal - valueScales . minVal ) } ,
133132 displacement : { value : sphereDisplacement } ,
134- fillValue : { value : fillValue } ,
133+ fillValue : { value : NaN } ,
135134 } ,
136135 vertexShader : isFlat ? sphereVertexFlat : sphereVertex ,
137136 fragmentShader : isFlat ? flatSphereFrag : sphereFrag ,
@@ -149,42 +148,31 @@ export const Sphere = ({textures} : {textures: THREE.Data3DTexture[] | THREE.Dat
149148 return mat ;
150149 } , [ shaderMaterial ] )
151150
151+ const updateMaterial = ( material : THREE . ShaderMaterial ) => {
152+ const uniforms = material . uniforms ;
153+ uniforms . map . value = textures
154+ uniforms . selectTS . value = selectTS
155+ uniforms . selectBounds . value = bounds
156+ uniforms . cmap . value = colormap
157+ uniforms . maskValue . value = maskValue
158+ uniforms . cOffset . value = cOffset
159+ uniforms . cScale . value = cScale
160+ uniforms . animateProg . value = animProg
161+ uniforms . latBounds . value = new THREE . Vector2 ( deg2rad ( latBounds [ 0 ] ) , deg2rad ( latBounds [ 1 ] ) )
162+ uniforms . lonBounds . value = new THREE . Vector2 ( deg2rad ( lonBounds [ 0 ] ) , deg2rad ( lonBounds [ 1 ] ) )
163+ uniforms . nanColor . value = new THREE . Color ( nanColor )
164+ uniforms . nanAlpha . value = 1 - nanTransparency
165+ uniforms . displaceZero . value = - valueScales . minVal / ( valueScales . maxVal - valueScales . minVal )
166+ uniforms . displacement . value = sphereDisplacement
167+ uniforms . fillValue . value = fillValue ?? NaN
168+ }
169+
152170 useEffect ( ( ) => {
153171 if ( shaderMaterial ) {
154- const uniforms = shaderMaterial . uniforms ;
155- uniforms . map . value = textures
156- uniforms . selectTS . value = selectTS
157- uniforms . selectBounds . value = bounds
158- uniforms . cmap . value = colormap
159- uniforms . maskValue . value = maskValue
160- uniforms . cOffset . value = cOffset
161- uniforms . cScale . value = cScale
162- uniforms . animateProg . value = animProg
163- uniforms . latBounds . value = new THREE . Vector2 ( deg2rad ( latBounds [ 0 ] ) , deg2rad ( latBounds [ 1 ] ) )
164- uniforms . lonBounds . value = new THREE . Vector2 ( deg2rad ( lonBounds [ 0 ] ) , deg2rad ( lonBounds [ 1 ] ) )
165- uniforms . nanColor . value = new THREE . Color ( nanColor )
166- uniforms . nanAlpha . value = 1 - nanTransparency
167- uniforms . displaceZero . value = - valueScales . minVal / ( valueScales . maxVal - valueScales . minVal )
168- uniforms . displacement . value = sphereDisplacement
169- uniforms . fillValue . value = fillValue
172+ updateMaterial ( shaderMaterial )
170173 }
171174 if ( backMaterial ) {
172- const uniforms = backMaterial . uniforms ;
173- uniforms . map . value = textures
174- uniforms . selectTS . value = selectTS
175- uniforms . selectBounds . value = bounds
176- uniforms . cmap . value = colormap
177- uniforms . maskValue . value = maskValue
178- uniforms . cOffset . value = cOffset
179- uniforms . cScale . value = cScale
180- uniforms . animateProg . value = animProg
181- uniforms . latBounds . value = new THREE . Vector2 ( deg2rad ( latBounds [ 0 ] ) , deg2rad ( latBounds [ 1 ] ) )
182- uniforms . lonBounds . value = new THREE . Vector2 ( deg2rad ( lonBounds [ 0 ] ) , deg2rad ( lonBounds [ 1 ] ) )
183- uniforms . nanColor . value = new THREE . Color ( nanColor )
184- uniforms . nanAlpha . value = 1 - nanTransparency
185- uniforms . displaceZero . value = - valueScales . minVal / ( valueScales . maxVal - valueScales . minVal )
186- uniforms . displacement . value = sphereDisplacement
187- uniforms . fillValue . value = fillValue
175+ updateMaterial ( backMaterial )
188176 }
189177 } , [ textures , animProg , colormap , cOffset , cScale , animate , bounds , selectTS , lonBounds , latBounds , nanColor , nanTransparency , sphereDisplacement , fillValue , maskValue , valueScales ] )
190178
0 commit comments