经纬志
首页 / three.js / API 文档

SphereGeometry

先看结论

球体几何。按经纬度切片生成顶点,可以只取一部分经度或纬度范围, 得到半球、球冠或球带。

最后验证 2026-11-03 · three.js 0.160.0 · 更新 2026-10-29 · 引用本文
new THREE.SphereGeometry(radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength)

构造参数

参数默认说明
radius1球半径
widthSegments32经度方向分段数,最小 3
heightSegments16纬度方向分段数,最小 2
phiStart0起始经度,弧度
phiLength2π经度跨度,默认整圈
thetaStart0起始纬度,0 为北极
thetaLengthπ纬度跨度,π 为从北极到南极

示例:地球仪与半球

// 完整球体
const globe = new THREE.Mesh(
  new THREE.SphereGeometry(100, 64, 32),
  new THREE.MeshStandardMaterial({
    map: earthTexture,
    roughness: 0.9,
    metalness: 0
  })
);
scene.add(globe);

// 上半球,做穹顶
const dome = new THREE.Mesh(
  new THREE.SphereGeometry(60, 48, 16, 0, Math.PI * 2, 0, Math.PI / 2),
  new THREE.MeshBasicMaterial({
    color: 0x6f9ed8,
    side: THREE.DoubleSide,
    transparent: true,
    opacity: 0.35
  })
);
dome.position.y = 0;
scene.add(dome);

UV 与贴图

widthSegments 沿经度展开 UV 的 U 方向, heightSegments 对应 V 方向。经度分段越多, 东西方向的贴图越细腻;纬度分段决定南北方向的过渡。 球体两极的三角形会被压扁,贴图在极点附近出现收敛,这是等距柱状投影的固有现象。

分段数怎么定

用途建议分段
远处的小球、标记16 × 8
常规地球仪48 × 24 到 64 × 32
近景、需要轮廓平滑96 × 48 以上

顶点数按 widthSegments × heightSegments × 2 增长, 分段翻倍顶点数翻四倍。近景球体只占屏幕一小块时,提高分段收益很低。

半球的朝向

thetaStart: 0、thetaLength: π/2 得到的是上半球, 开口朝下。要得到朝上的碗形,把 thetaStart 设为 π/2、thetaLength 设为 π/2, 或者直接旋转整个网格。

球体内部要开双面。把相机放进球体内部时,默认的 FrontSide 会把球面剔除,看到的是透明背景。 材质设置 side: THREE.BackSide 才是正确的球幕做法。

引用本文

经纬志(2026)。《SphereGeometry》。https://www.jingweizhi.com/three/api/sphere-geometry.html(访问日期 2026-11-03)。