1.1.0 • Published 7 years ago

@rreusser/regl-camera v1.1.0

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

@rreusser/regl-camera

A basic reusable "turntable" camera component for regl. (Secretly just spherical coordinates.)

THIS FORK

Is a fork of regl-camera published separately at @rreusser/regl-camera.

Example

const regl = require('regl')()
const camera = require('regl-camera')(regl, {
  center: [0, 2.5, 0]
})

const bunny = require('bunny')
const normals = require('angle-normals')

const drawBunny = regl({
  frag: `
    precision mediump float;
    varying vec3 vnormal;
    void main () {
      gl_FragColor = vec4(abs(vnormal), 1.0);
    }`,
  vert: `
    precision mediump float;
    uniform mat4 projection, view;
    attribute vec3 position, normal;
    varying vec3 vnormal;
    void main () {
      vnormal = normal;
      gl_Position = projection * view * vec4(position, 1.0);
    }`,
  attributes: {
    position: bunny.positions,
    normal: normals(bunny.cells, bunny.positions)
  },
  elements: bunny.cells
})

regl.frame(() => {
  regl.clear({
    color: [0, 0, 0, 1]
  })
  camera(() => {
    drawBunny()
  })
})

Install

npm i regl-camera

API

Constructor

var camera = require('regl-camera')(regl[, options])

module.exports of regl-camera is a constructor for the camera. It takes the following arguments:

  • regl is a handle to the regl instance
  • options is an object with the following optional properties:
    • center which is the center of the camera
    • theta the theta angle for the camera
    • phi the phi angle for the camera
    • distance the distance from the camera eye to the center
    • up the up vector for the camera
    • mouse set to false to turn off mouse events
    • damping multiplier for inertial damping (default 0.9). Set to 0 to disable inertia.

Command usage

camera(block)

regl-camera sets up an environment with the following variables in both the context and uniform blocks:

VariableTypeDescription
viewmat4The view matrix for the camera
projectionmat4The projection matrix for the camera
centervec3The center of the camera
eyevec3The eye coordinates of the camera
upvec3The up vector for the camera matrix
thetafloatLatitude angle parameter in radians
phifloatLongitude angle parameter in radians
distancefloatDistance from camera to center of objective

Note These properties can also be accessed and modified directly by accessing the object

License

(c) 2016 Mikola Lysenko. MIT License