How to use aframe - 10 common examples

To help you get started, we’ve selected a few aframe examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github Kif11 / three-body / src / components / FireManager.js View on Github external
import AFRAME from 'aframe';
const THREE = AFRAME.THREE;

AFRAME.registerComponent('fire-manager', {
  init: function () {
    this.el.addEventListener('vertex-cache-loaded', (evt) => {
      this.model = this.el.object3D.children[0];
      this.model.visible = false;
    });

    this.el.sceneEl.addEventListener('start-char-fire', (evt) => {
      this.el.emit('start-vertex-animation'); // vertex cache texture waits for this event to start the animation
      this.animateScale = true;
      this.model.visible = true;
    });

    this.el.sceneEl.addEventListener('stop-char-fire', (evt) => {
      this.el.emit('stop-vertex-animation');
      this.animateScale = true;
      this.model.visible = false;
github delapuente / aframe-sharedspace-component / src / positional-audio-patch.js View on Github external
this.audioLoader.load(src, function (buffer) {
      self.pool.children.forEach(function (sound) {
        sound.setBuffer(buffer);
      });
      self.loaded = true;

      // Remove this key from cache, otherwise we can't play it again
      AFRAME.THREE.Cache.remove(src);
      if (self.data.autoplay || self.mustPlay) { self.playSound(); }
      self.el.emit('sound-loaded');
    });
  }
github Kif11 / three-body / src / components / WebUIController.js View on Github external
import AFRAME from 'aframe';

AFRAME.registerComponent('web-ui-controller', {
  init: function () {
    const { sceneEl } = this.el;
    const startBtnEl = document.getElementById('startBtn');
    const mainScene = document.getElementById('mainScene');
    const introScreen = document.getElementById('introScreen');
    const enterVRButton = document.querySelector('.VRButton');
    const introText = document.getElementById('introText');
    const winningText = document.getElementById('winningText');
    const losingText = document.getElementById('losingText');
    const creditText = document.getElementById('creditText');
    const mainCamera = document.getElementById('camera');

    sceneEl.addEventListener('loaded', (event) => {
      // all game assets loaded
      introScreen.classList.remove('hidden');
    });
github kabbi / zanzarah-tools / src / three / OrbitControls.js View on Github external
THREE.OrbitControls = function (object, domElement) {
  this.object = object;

  this.domElement = (domElement === undefined) ? document : domElement;

  // Set to false to disable this control
  this.enabled = true;

  // "target" sets the location of focus, where the object orbits around
  this.target = new THREE.Vector3();

  // How far you can dolly in and out ( PerspectiveCamera only )
  this.minDistance = 0;
  this.maxDistance = Infinity;

  // How far you can zoom in and out ( OrthographicCamera only )
  this.minZoom = 0;
  this.maxZoom = Infinity;

  // How far you can orbit vertically, upper and lower limits.
  // Range is 0 to Math.PI radians.
  this.minPolarAngle = 0; // radians
  this.maxPolarAngle = Math.PI; // radians

  // How far you can orbit horizontally, upper and lower limits.
  // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].
github kabbi / zanzarah-tools / src / three / OrbitControls.js View on Github external
this.update = (function () {
    const offset = new THREE.Vector3();

    // so camera.up is the orbit axis
    const quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0));
    const quatInverse = quat.clone().inverse();

    const lastPosition = new THREE.Vector3();
    const lastQuaternion = new THREE.Quaternion();

    return function update() {
      const position = scope.object.position;

      offset.copy(position).sub(scope.target);

      // rotate offset to "y-axis-is-up" space
      offset.applyQuaternion(quat);

      // angle from z-axis around y-axis
      spherical.setFromVector3(offset);

      if (scope.autoRotate && state === STATE.NONE) {
        rotateLeft(getAutoRotationAngle());
      }
github kabbi / zanzarah-tools / src / three / BSPLoader.js View on Github external
_parseGeometry(data) {
    const geometry = new THREE.Geometry();

    const { vertices } = data;
    for (const [ x, y, z ] of vertices) {
      geometry.vertices.push(new THREE.Vector3(x, y, z));
    }

    const { indices, colors } = data;
    for (const [ materialIndex, a, b, c ] of indices) {
      const indexes = [a, b, c];
      const faceColors = colors ? indexes.map(index => {
        const color = colors[index];
        return new THREE.Color(parseInt(color, 16) & 0xFFFFFF)
          .multiplyScalar(ColorMultiplier);
      }) : null;
      geometry.faces.push(new THREE.Face3(a, b, c, null, faceColors, materialIndex));
    }

    const { textureCoords } = data;
    const uvLayer = geometry.faceVertexUvs[0] = [];
    // eslint-disable-next-line no-unused-vars
github kabbi / zanzarah-tools / src / three / TransformControls.js View on Github external
this.handles = new THREE.Object3D();
    this.pickers = new THREE.Object3D();
    this.planes = new THREE.Object3D();

    this.add(this.handles);
    this.add(this.pickers);
    this.add(this.planes);

    // // PLANES

    const planeGeometry = new THREE.PlaneBufferGeometry(50, 50, 2, 2);
    const planeMaterial = new THREE.MeshBasicMaterial({ visible: false, side: THREE.DoubleSide });

    const planes = {
      XY: new THREE.Mesh(planeGeometry, planeMaterial),
      YZ: new THREE.Mesh(planeGeometry, planeMaterial),
      XZ: new THREE.Mesh(planeGeometry, planeMaterial),
      XYZE: new THREE.Mesh(planeGeometry, planeMaterial),
    };

    this.activePlane = planes.XYZE;

    planes.YZ.rotation.set(0, Math.PI / 2, 0);
    planes.XZ.rotation.set(-Math.PI / 2, 0, 0);

    for (const i in planes) {
      planes[i].name = i;
      this.planes.add(planes[i]);
      this.planes[i] = planes[i];
    }

    // // HANDLES AND PICKERS
github kabbi / zanzarah-tools / src / three / TransformControls.js View on Github external
this.planes = new THREE.Object3D();

    this.add(this.handles);
    this.add(this.pickers);
    this.add(this.planes);

    // // PLANES

    const planeGeometry = new THREE.PlaneBufferGeometry(50, 50, 2, 2);
    const planeMaterial = new THREE.MeshBasicMaterial({ visible: false, side: THREE.DoubleSide });

    const planes = {
      XY: new THREE.Mesh(planeGeometry, planeMaterial),
      YZ: new THREE.Mesh(planeGeometry, planeMaterial),
      XZ: new THREE.Mesh(planeGeometry, planeMaterial),
      XYZE: new THREE.Mesh(planeGeometry, planeMaterial),
    };

    this.activePlane = planes.XYZE;

    planes.YZ.rotation.set(0, Math.PI / 2, 0);
    planes.XZ.rotation.set(-Math.PI / 2, 0, 0);

    for (const i in planes) {
      planes[i].name = i;
      this.planes.add(planes[i]);
      this.planes[i] = planes[i];
    }

    // // HANDLES AND PICKERS

    const setupGizmos = function (gizmoMap, parent) {
github kabbi / zanzarah-tools / src / three / OrbitControls.js View on Github external
// current position in spherical coordinates
  const spherical = new THREE.Spherical();
  const sphericalDelta = new THREE.Spherical();

  let scale = 1;
  const panOffset = new THREE.Vector3();
  let zoomChanged = false;

  const rotateStart = new THREE.Vector2();
  const rotateEnd = new THREE.Vector2();
  const rotateDelta = new THREE.Vector2();

  const panStart = new THREE.Vector2();
  const panEnd = new THREE.Vector2();
  const panDelta = new THREE.Vector2();

  const dollyStart = new THREE.Vector2();
  const dollyEnd = new THREE.Vector2();
  const dollyDelta = new THREE.Vector2();

  function getAutoRotationAngle() {
    return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;
  }

  function getZoomScale() {
    return Math.pow(0.95, scope.zoomSpeed);
  }

  function rotateLeft(angle) {
    sphericalDelta.theta -= angle;
  }
github kabbi / zanzarah-tools / src / three / OrbitControls.js View on Github external
const STATE = { NONE: -1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5 };

  let state = STATE.NONE;

  const EPS = 0.000001;

  // current position in spherical coordinates
  const spherical = new THREE.Spherical();
  const sphericalDelta = new THREE.Spherical();

  let scale = 1;
  const panOffset = new THREE.Vector3();
  let zoomChanged = false;

  const rotateStart = new THREE.Vector2();
  const rotateEnd = new THREE.Vector2();
  const rotateDelta = new THREE.Vector2();

  const panStart = new THREE.Vector2();
  const panEnd = new THREE.Vector2();
  const panDelta = new THREE.Vector2();

  const dollyStart = new THREE.Vector2();
  const dollyEnd = new THREE.Vector2();
  const dollyDelta = new THREE.Vector2();

  function getAutoRotationAngle() {
    return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;
  }

  function getZoomScale() {