ThreeJS的图层

ThreeJS图层,基于AMap.GLCustomLayer,增加通用的配置,目前包含lights(灯光)、hdr。 可以通过获取scene来自定义添加模型。

提示

来源 @vuemap/vue-amap-extra 组件库

基础示例

自定义模型添加事件

静态属性

仅且可以初始化配置,不支持响应式。

名称类型说明
lightsArray配置灯光数据,具体参数见下面已废弃,请使用灯光组件,更适合后续灯光控制
hdrObjectHDR功能配置,具体参数见下面
alphaBooleancanvas是否包含alpha (透明度)。默认为 false
antialiasBoolean是否执行抗锯齿。默认为false
axesHelperBoolean是否开启debug的箭头,默认false
createCanvasBoolean是否创建新的canvas绘制threejs,默认false
webGLRendererParametersWebGLRendererParameters创建WebglRenderer时传递的数据,可以传preserveDrawingBuffer

动态属性

支持响应式。

名称类型说明
zoomsArray支持的缩放级别范围,默认范围 [2-20]
visibleBoolean是否显示,默认 true
zIndexNumber图层叠加的顺序值,1 表示最底层。默认 zIndex:120
opacityNumber透明度,默认 1

HDR配置

{
  urls: [], // HDR贴图下载地址,需要6个文件,代表6个方向
  path: '/', // HDR下载地址的路径前缀
  exposure: 1.0 // 光亮程度
}

灯光配置

{
  type: 'DirectionalLight', //灯光类型, 可选值见下面的字典
  args: [], //灯光初始化时需要的参数,具体参数顺序可以查看threejs官网灯光的说明。 采用 ...args 的方式进行初始化
  position: {
    x: 0,
    y: 0,
    z: 0
  }, //光源的位置
  lookAt: {
    x: 0,
    y: 0,
    z: 0
  } //光源查看的目标点
}

const lightTypes = {
  AmbientLight: THREE.AmbientLight, // 环境光  环境光会均匀的照亮场景中的所有物体
  DirectionalLight: THREE.DirectionalLight, // 平行光  平行光是沿着特定方向发射的光
  HemisphereLight: THREE.HemisphereLight, // 半球光  光源直接放置于场景之上,光照颜色从天空光线颜色渐变到地面光线颜色。
  PointLight: THREE.PointLight, // 点光源  从一个点向各个方向发射的光源。一个常见的例子是模拟一个灯泡发出的光
  RectAreaLight: THREE.RectAreaLight, // 平面光光源  平面光光源从一个矩形平面上均匀地发射光线。这种光源可以用来模拟像明亮的窗户或者条状灯光光源
  SpotLight: THREE.SpotLight // 聚光灯  光线从一个点沿一个方向射出,随着光线照射的变远,光线圆锥体的尺寸也逐渐增大
};

ThreeLayer添加事件

2.0.11版本开始,three-layer组件开始支持常用的鼠标事件,事件系统内对于组件库的组件会直接触发到各自的组件上, 而开发自定义添加的物体,如果给它的userData属性添加一个acceptEvent属性, 那么threeLayer的射线也会将它纳入计算,如同上面的示例中,只要添加了mesh.userData.acceptEvent = true那么该物体也会触发事件,便于后续扩展。

ref 可用方法

提供无副作用的同步帮助方法

函数参数返回说明
$$getInstance()AMap.CustomLayer获取实例
$$getSceneTHREE.Scene获取场景对象
$$getRenderWebGLRenderer获取WebGLRenderer对象
$$refresh刷新图层
$$addPass后处理实例添加后处理
$$removePass后处理实例移除后处理

事件

事件参数说明
initThreeLayeropen in new window实例初始化结束
clickObject3D点击图层,获取自定义的物体
mouseoverObject3D移动到自定义的物体上
mouseoutObject3D从自定义的物体上移除
最后更新时间:
贡献者: gyy, gu