constructor(vrDisplay, pointCloud) {
    super();
    if (!vrDisplay) {
      return;
    }

    this._vrDisplay = vrDisplay;
    this._numberOfPointsInLastPointCloud = 0;
    this._pointCloud = pointCloud || new window.VRPointCloud();

    vrDisplay.getPointCloud(this._pointCloud, false, 0, false);

    const points = this._pointCloud.points;
    const colors = new Float32Array(points.length);

    for (let i = 0; i < points.length; i += 3) {
      points[i] = points[i + 1] = points[i + 2] = MAX_FLOAT32_VALUE;
      colors[i] = colors[i + 1] = colors[i + 2] = 1;
    }

    this._positions = new BufferAttribute(points, 3);
    this.addAttribute('position', this._positions);
    this._colors = new BufferAttribute(colors, 3);
    this.addAttribute('color', this._colors);

    this.computeBoundingSphere();
    this.frustumCulled = false;
  }
@param {VRDisplay} vrDisplay
@param {VRPointCloud} pointCloud