You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Three.js地球模型点击时如何获取对应纹理的正确像素坐标

问题解决说明

1. 判断点击命中的6面纹理

  • Three.js中BoxGeometry的6个面默认绑定的材质索引是固定的,和你传入的materialArray顺序完全对应:intersects[0].face.materialIndex返回值为0~5,分别对应右、左、上、下、前、后6个面的材质,直接通过该值即可判断当前点击的是哪张纹理。

2. y坐标偏差问题修复

问题原因

你出现y坐标偏差的核心原因是纹理坐标重复反转:
Three.js加载纹理时默认开启Texture.flipY = true,会自动将纹理的Y轴原点从左下角翻转到和图片一致的左上角,你代码中额外做了textureHeight - 计算值的操作,等于把Y轴又反转了一次,最终得到的y值是完全颠倒的。你实际拿到的219刚好符合「纹理总高度 - 预期值366」的计算结果,和这个问题完全匹配。

修复方案

二选一即可:

  • 方案1:所有纹理加载完成后设置texture.flipY = false,保持现有y坐标计算逻辑不变
  • 方案2:直接修改y坐标计算逻辑,去掉多余的反转操作,把y的计算代码改为:
y: Math.round(intersects[0].uv.y * textureHeight)

内容的提问来源于stack exchange,提问作者Ismail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:09:03