3d-view-controls

中文文档
2.2.2发布于 2018/01/30MITCommonJS近 30 天下载 9053

装有钩子的3D相机进行输入处理

中文使用文档
文档目录4 节
  1. 构造器
  2. 几何属性
  3. 方法
  4. 调制参数

三维视图控制

易于使用带有输入绑定的3D相机.

默认控制 :

按钮互动
左侧鼠标旋转
移动 + 左鼠标 或者说 水平滚动滚动
右侧鼠标泛语
中间鼠标 或者说 垂直滚动缩放

示例

以下是应用程序中如何使用此模块的完整实例:

var createCamera = require('3d-view-controls')
var bunny = require('bunny')
var perspective = require('gl-mat4/perspective')
var createMesh = require('gl-simplicial-complex')

var canvas = document.createElement('canvas')
document.body.appendChild(canvas)
window.addEventListener('resize', require('canvas-fit')(canvas))

var gl = canvas.getContext('webgl')

var camera = createCamera(canvas, {
  eye:    [50,0,0],
  center: [0,0,0],
  zoomMax: 500
})

var mesh = createMesh(gl, {
  cells:      bunny.cells,
  positions:  bunny.positions,
  colormap:   'jet'
})

function render() {
  requestAnimationFrame(render)
  if(camera.tick()) {
    gl.viewport(0, 0, canvas.width, canvas.height)
    gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
    gl.enable(gl.DEPTH_TEST)
    mesh.draw({
      projection: perspective([], Math.PI/4, canvas.width/canvas.height, 0.01, 1000),
      view: camera.matrix
    })
  }
}
render()

你可以在浏览器里试试看。 。 。 .

安装

npm i 3d-view-controls

API 密码

构造器

var camera = require('3d-view-controls')(element[, options])

创建新的相机对象.

  • element 是一个 DOM 节点,该节点上
  • options 是具有下列可选属性的对象:
    • eye - 相机在世界坐标中的位置(默认) [0,0,10](中文(简体) )
    • center - 世界坐标中的相机目标(故障) [0,0,0](中文(简体) )
    • up - 相机的上升向量(默认) [0,1,0](中文(简体) )
    • mode - 相机的交互模式(默认) 'orbit'(中文(简体) )
    • delay - 以毫秒内插表示的延迟相互作用(过失) 16(中文(简体) )
    • rotateSpeed - 旋转缩放系数(默认) 1(中文(简体) )
    • zoomSpeed - 缩放系数(默认) 1(中文(简体) )
    • translateSpeed - 翻译/扩展尺度系数(默认) 1(中文(简体) )
    • flipX - 旋转的翻转 X 轴( 默认) false(中文(简体) )
    • flipY - 旋转的倒转 Y 轴( 默认) false(中文(简体) )
    • zoomMin - 最小缩放距离( 默认) 0.01(中文(简体) )
    • zoomMax - 最大缩放距离( 默认) Infinity(中文(简体) )

几何属性

请注意,您可以通过分配来更新任何属性 。 例如:

camera.eye = [100, 100, 100]

camera.matrix = [
  1, 0, 0, 0,
  0, 1, 0, 0,
  0, 0, 1, 0,
  0, 0, 0, 1]

camera.matrix

4x4矩阵被编码为长度为16个阵列,代表了从世界坐标到取景(相机)坐标的等同变相.

camera.mode

当前相机的交互模式 。 可能的数值包括:

  • orbit - 自由轨道运行模式
  • turntable - 表现得像转盘/金巴
  • matrix - 人工矩阵控制

camera.eye

相机在世界坐标中的位置

camera.up

世界坐标的向量

camera.center

世界坐标中的相机目标

camera.distance

欧几利得相距 eye 改为 center

方法

camera.tick()

更新相机状态。 在每个帧被渲染前调用此来计算相机的当前状态.

回返 true 如果相机状态自上次呼叫以来已经改变 tick

camera.lookAt(center, eye, up)

设置相机中心/ 视/ 上向量以查看固定目标

  • center 是相机的新中心/ 目标
  • eye 是相机在世界坐标中的位置
  • up 是一个向量指向上

camera.rotate(yaw, pitch, roll)

对相机采用递增旋转

  • yaw 是 y 轴的旋转量( 以相机的 xz 平面计)
  • pitch 是旋转 x 轴( 在相机的yz平面) 的量
  • roll 是围绕前向轴旋转的量(以相机的xy平面计)

camera.pan(dx, dy, dz)

在相机上应用相对运动, 在视图坐标中移动

  • dx,dy,dz 是相机运动向量的组件

camera.translate(dx, dy, dz)

翻译世界坐标中的相机

  • dx,dy,dz 是翻译向量的组件

调制参数

camera.distanceLimits

一个代表 [lo,hi] 以缩放距离为界. 请注意: 0 < lo < hi。 。 。 .

camera.flipX

控制相机旋转是否沿x轴翻转的旗帜

camera.flipY

控制相机旋转是否沿Y轴翻转的旗帜

camera.delay

相机状态插值( ms)的延迟量

camera.rotateSpeed

相机旋转速度缩放系数

camera.zoomSpeed

相机缩放速度缩放系数

camera.translateSpeed

相机翻译速度缩放因子

camera.element

相机上的DOM元件

未来

扩展到支持更多输入类型 :

  • 触摸
  • 键盘
  • 游戏Pad
  • VR吗?

许可证

(c) 2015年Mikola Lysenko。 MIT 许可证

版本与发布记录

3d-view-controls 共发布 9 个版本,首次发布于 2015/02/19;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.2.2latest2018/01/308 年前
2.2.12018/01/308 年前
2.2.02017/02/229 年前
2.1.12015/04/1011 年前
2.1.02015/04/0811 年前
2.0.12015/04/0711 年前

关于 3d-view-controls 的常见问题

3d-view-controls 是什么?

装有钩子的3D相机进行输入处理

如何安装 3d-view-controls?

在项目目录运行 npm install 3d-view-controls,或使用 pnpm add / yarn add / bun add。

3d-view-controls 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/3d-view-controls 是否存在。

3d-view-controls 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

3d-view-controls 可以商用吗?

3d-view-controls 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

3d-view-controls 的下载量有多少?

根据 npm 官方下载统计,3d-view-controls 在 2026/10/04 – 2026/11/02 这 30 天内被下载 9,053 次,日均约 302 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

3d-view-controls 还在维护吗?

最新版本 2.2.2 发布于 2018/01/30(8 年前);至今共发布 9 个版本,其中过去 12 个月发布了 0 个;首次发布于 2015/02/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。