Skip to content

Commit 2f3c73f

Browse files
committed
fix #391 and #449 by increasing the fallback geometry resolution for equirect and cylinder layers
1 parent bcef5d5 commit 2f3c73f

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

packages/xr/src/layer.ts

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,12 @@ declare module 'three' {
145145
}
146146
}
147147

148+
const segmentPerAngle = 32 / Math.PI
149+
150+
function computeSegmentAmount(angle: number) {
151+
return Math.ceil(angle * segmentPerAngle)
152+
}
153+
148154
export function setXRLayerRenderTarget(
149155
renderer: WebGLRenderer,
150156
renderTarget: WebGLRenderTarget,
@@ -168,18 +174,29 @@ export function createXRLayerGeometry(
168174
switch (shape) {
169175
case 'cylinder':
170176
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)
172187
case 'equirect': {
173188
const centralHorizontalAngle = properties.centralHorizontalAngle ?? DefaultCentralHorizontalAngle
174189
const upperVerticalAngle = properties.upperVerticalAngle ?? DefaultUpperVerticalAngle
190+
const lowerVerticalAngle = properties.lowerVerticalAngle ?? DefaultLowerVerticalAngle
191+
const centralVerticalAngle = upperVerticalAngle - lowerVerticalAngle
175192
return new SphereGeometry(
176193
1,
177-
32,
178-
16,
194+
computeSegmentAmount(centralHorizontalAngle),
195+
computeSegmentAmount(centralVerticalAngle),
179196
-Math.PI / 2 - centralHorizontalAngle / 2,
180197
centralHorizontalAngle,
181198
Math.PI / 2 - upperVerticalAngle,
182-
upperVerticalAngle - (properties.lowerVerticalAngle ?? DefaultLowerVerticalAngle),
199+
centralVerticalAngle,
183200
).scale(-1, 1, 1)
184201
}
185202
case 'quad':

0 commit comments

Comments
 (0)