方法

构造器

介绍

class Vr360 {
  /**
   * @param options 构造参数配置
   * @returns Vr360 实例
   */
  constructor(options: Vr360Options) {
    ...
  }
}

点击查看 Vr360Options 类型

使用

import {Vr360, Vr360Options} from '@nicepkg/vr360-core'

const vr360Options: Vr360Options = {
  container: document.querySelector('#container'),
  tipContainer: document.querySelector('#tip-container'),
  spacesConfig: []
}
const vr360 = new Vr360(vr360Options)

相关类型

Vr360Options 构造参数
/**
 *  vr360 的构造参数
 */
interface Vr360Options {
  /**
   * 容器
   */
  container: HTMLElement

  /**
   * 提示的 element 节点
   */
  tipContainer?: HTMLElement

  /**
   * 初始显示的空间 id
   */
  initSpaceId?: string

  /**
   * 空间配置
   */
  spacesConfig: SpaceConfig[]
}
SpaceConfig 构造参数里的空间配置
/**
 * 空间配置
 */
interface SpaceConfig {
  /**
   * 空间 id
   */
  id: string

  /**
   * 相机配置
   */
  camera?: {
    /**
     * 位置
     */
    position: {
      x: number
      y: number
      z: number
    }

    /**
     * 缩放
     */
    scale?: {
      x: number
      y: number
      z: number
    }

    /**
     * 旋转
     */
    rotate?: {
      x: number
      y: number
      z: number
    }
  }

  /**
   * 提示配置列表
   */
  tips?: Tip[]

  /**
   * 空间贴图列表
   */
  cubeSpaceTextureUrls: {
    /**
     * 左侧贴图 url
     */
    left: string

    /**
     * 右侧贴图 url
     */
    right: string

    /**
     * 上侧贴图 url
     */
    up: string

    /**
     * 下侧贴图 url
     */
    down: string

    /**
     * 前侧贴图 url
     */
    front: string

    /**
     * 后侧贴图 url
     */
    back: string
  }
}
Tip 空间配置里的提示配置
interface Tip {
  /**
   * 提示 id
   */
  id: string

  /**
   * 跳转的空间 id
   */
  targetSpaceId?: string

  /**
   * 提示图案纹理贴图
   */
  textureUrl?: string

  /**
   * 位置
   */
  position: {
    x: number
    y: number
    z: number
  }

  /**
   * 缩放
   */
  scale?: {
    x: number
    y: number
    z: number
  }

  /**
   * 旋转
   */
  rotate?: {
    x: number
    y: number
    z: number
  }

  /**
   * 其它携带信息,比如你可以附加 title 、 content,在提示相关事件回调时你可以拿到
   */
  [key: string]: any
}

监听页面尺寸变化

介绍

class Vr360 {
  /**
   * 监听页面尺寸变化,更新画布尺寸
   * @returns 返回取消监听函数
   */
  public listenResize(): () => void {
    ...
  }
}

使用

import {Vr360} from '@nicepkg/vr360-core'

const vr360 = new Vr360({....})

vr360.render()

// 让渲染器监听页面尺寸变化,实时更新画布尺寸
const removeResizeListener = vr360.listenResize()

// 你可以随时移除监听
removeResizeListener()

刷新容器渲染宽高

介绍

class Vr360 {
  /**
   * 刷新容器渲染宽高
   */
  public updateContainerSize(): void {
    ...
  }
}

使用

import {Vr360} from '@nicepkg/vr360-core'

const vr360 = new Vr360({....})

vr360.render()

// 手动更新画布尺寸
vr360.updateContainerSize()

更新全景空间配置

介绍

class Vr360 {
  /**
   * 更新 spacesConfig
   * @param newSpacesConfig 新的空间配置
   */
  public updateSpacesConfig(newSpacesConfig: SpaceConfig[]): void {
    ...
  }
}

点击查看 SpaceConfig 类型

使用

import {Vr360, SpaceConfig} from '@nicepkg/vr360-core'

const spacesConfig: SpaceConfig[] = []
const vr360 = new Vr360({
  container: document.querySelector('#container'),
  tipContainer: document.querySelector('#tip-container'),
  spacesConfig
})

vr360.render()

spacesConfig.push([
  {
    ....
  }
])

// 手动更新空间配置
vr360.updateSpacesConfig(spacesConfig)

切换全景空间

介绍

class Vr360 {
   /**
   * 切换空间
   * @param id 空间 id
   */
  public switchSpace(id: string): void {
    ...
  }
}

使用

import {Vr360, SpaceConfig} from '@nicepkg/vr360-core'

const spacesConfig: SpaceConfig[] = [
  {
    id: 'spaceA',
    ...
  },
  {
    id: 'spaceB',
    ...
  }
]

const vr360 = new Vr360({
  container: document.querySelector('#container'),
  tipContainer: document.querySelector('#tip-container'),
  spacesConfig
})

vr360.render()

// 切换到 spaceB 空间
vr360.switchSpace('spaceB')

开始渲染全景

介绍

class Vr360 {
  /**
   * 渲染
   */
  public render(): void {
    ...
  }
}

使用

import {Vr360} from '@nicepkg/vr360-core'

const vr360 = new Vr360({....})

vr360.render()

把鼠标位置转换成 threejs 位置

介绍

class Vr360 {
  /**
   * 根据鼠标位置获取当前空间的位置
   * @param x 鼠标 x 坐标
   * @param y 鼠标 y 坐标
   * @returns 返回当前空间的位置
   */
  public getPositionFromMouseXY(x: number, y: number): {
    x: number
    y: number
    z: number
  } {
    ...
  }
}

使用

import {Vr360} from '@nicepkg/vr360-core'

const vr360 = new Vr360({
  container: document.querySelector('#container'),
  tipContainer: document.querySelector('#tip-container'),
  spacesConfig: [....]
})

vr360.render()

// 获取当前空间的位置
document.querySelector('#container').addEventListener('click', (e) => {
  const {x, y, z} = vr360.getPositionFromMouseXY(e.clientX, e.clientY)
  console.log('点击的画布里的空间位置为:', x, y, z)
})

注销全景实例

介绍

class Vr360 {
  /**
   * 销毁实例
   */
  public destroy(): void {
    ...
  }
}

使用

import {Vr360} from '@nicepkg/vr360-core'

const vr360 = new Vr360({....})

vr360.render()

// 销毁实例
vr360.destroy()