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

求助:为何简单的Deck.GL OrbitView无法响应鼠标交互?

Deck.GL 鼠标事件无响应问题修复

你的代码存在两个核心配置错误,导致视图无法响应鼠标交互:

  • initialViewState 和 controller 是Deck 实例的全局配置项,你错误地将它们放到了 SimpleMeshLayer 的参数中,图层并不负责视图控制逻辑。
  • 创建 OrbitView 时未传入初始视图状态,导致控制器无法识别初始视角参数。

修正后的代码

const {Deck, OrbitView, SimpleMeshLayer, COORDINATE_SYSTEM} = deck;
const {CubeGeometry} = luma;

const viewState = {
    target: [0, 0, 0],
    zoom: 0,
    rotationOrbit: 145,
    rotationX: 65,
    minRotationX: -90,
    maxRotationX: 90,
    minZoom: -10,
    maxZoom: 10
}

const deck = new Deck({
  views: new OrbitView({
    orbitAxis: "Y"
  }),
  // 全局配置初始视图状态
  initialViewState: viewState,
  // 全局开启交互控制器
  controller: true,
  layers: [
    new SimpleMeshLayer({
      data: [
        {
          position: [-25, 0, 0],
          color: [255, 0, 0]
        },
        {
          position: [25, 0, 0],
          color: [0, 255, 0]
        }
      ],
      coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
      mesh: new CubeGeometry(),
      getPosition: d => d.position,
      getColor: d => d.color,
      getScale: [20, 20, 20]
    })
  ]
});

关键说明

调整后,OrbitView 控制器会正常监听鼠标事件,实现视角旋转、缩放等交互。核心逻辑是区分 Deck 实例与图层的职责边界:视图控制属于全局配置,图层仅负责数据渲染。

内容的提问来源于stack exchange,提问作者Bogdan Stăncescu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:20:32