@@ -145,6 +145,12 @@ declare module 'three' {
145
145
}
146
146
}
147
147
148
+ const segmentPerAngle = 32 / Math . PI
149
+
150
+ function computeSegmentAmount ( angle : number ) {
151
+ return Math . ceil ( angle * segmentPerAngle )
152
+ }
153
+
148
154
export function setXRLayerRenderTarget (
149
155
renderer : WebGLRenderer ,
150
156
renderTarget : WebGLRenderTarget ,
@@ -168,18 +174,29 @@ export function createXRLayerGeometry(
168
174
switch ( shape ) {
169
175
case 'cylinder' :
170
176
const centralAngle = properties . centralAngle ?? DefaultCentralAngle
171
- return new CylinderGeometry ( 1 , 1 , 1 , 32 , 1 , true , Math . PI - centralAngle / 2 , centralAngle ) . scale ( - 1 , 1 , 1 )
177
+ return new CylinderGeometry (
178
+ 1 ,
179
+ 1 ,
180
+ 1 ,
181
+ computeSegmentAmount ( centralAngle ) ,
182
+ 1 ,
183
+ true ,
184
+ Math . PI - centralAngle / 2 ,
185
+ centralAngle ,
186
+ ) . scale ( - 1 , 1 , 1 )
172
187
case 'equirect' : {
173
188
const centralHorizontalAngle = properties . centralHorizontalAngle ?? DefaultCentralHorizontalAngle
174
189
const upperVerticalAngle = properties . upperVerticalAngle ?? DefaultUpperVerticalAngle
190
+ const lowerVerticalAngle = properties . lowerVerticalAngle ?? DefaultLowerVerticalAngle
191
+ const centralVerticalAngle = upperVerticalAngle - lowerVerticalAngle
175
192
return new SphereGeometry (
176
193
1 ,
177
- 32 ,
178
- 16 ,
194
+ computeSegmentAmount ( centralHorizontalAngle ) ,
195
+ computeSegmentAmount ( centralVerticalAngle ) ,
179
196
- Math . PI / 2 - centralHorizontalAngle / 2 ,
180
197
centralHorizontalAngle ,
181
198
Math . PI / 2 - upperVerticalAngle ,
182
- upperVerticalAngle - ( properties . lowerVerticalAngle ?? DefaultLowerVerticalAngle ) ,
199
+ centralVerticalAngle ,
183
200
) . scale ( - 1 , 1 , 1 )
184
201
}
185
202
case 'quad' :
0 commit comments