gl-simplicial-complex

3.0.4 • Public • Published

gl-simplicial-complex

Basic module for drawing a simplicial complex. This code can be used to get something on the screen quickly. It is useful for debugging and prototyping, though in a real 3d engine you would probably want to write your own shaders and vertex formats.

Example

var shell = require("gl-now")()
var camera = require("game-shell-orbit-camera")(shell)
var mat4 = require("gl-matrix").mat4
var bunny = require("bunny")
var createSimplicialComplex = require("gl-simplicial-complex")
 
var mesh
 
shell.on("gl-init", function() {
  var gl = shell.gl
  gl.enable(gl.DEPTH_TEST)
  bunnyMesh = createSimplicialComplex(gl, bunny)
})
 
shell.on("gl-render", function() {
  bunnyMesh.draw({
    view: camera.view(),
    projection: mat4.perspective(mat4.create(),
          Math.PI/4.0,
          shell.width/shell.height,
          0.1,
          1000.0)
  })
})

Try out the example in your browser

Install

npm instal gl-simplicial-complex

API

var createSimplicialComplex = require("gl-simplicial-complex")

var mesh = createSimplicialComplex(gl, params)

Creates a simplicial complex that can be drawn directly in a WebGL context.

  • gl - is a handle to a WebGL context

  • params is an object that has the following properties:

    • cells (Required) An indexed list of vertices, edges and/or faces.
    • positions (Required) An array of positions for the mesh, encoded as arrays
    • vertexColors A list of per vertex color attributes encoded as length 3 rgb arrays
    • vertexUVs
    • cellUVs
    • vertexIntensity
    • cellIntensity
    • cellColors A list of per cell color attributes
    • meshColor A constant color for the entire mesh
    • vertexNormals An array of per vertex normals
    • cellNormals An array of per cell normals
    • useFacetNormals A flag which if set to true forces cellNormals to be computed
    • pointSizes An array of point sizes
    • pointSize A single point size float
    • ambientLight
    • diffuseLight
    • specularLight
    • lightPosition
    • roughness
    • fresnel

Returns A renderable mesh object

mesh.draw(params)

Draws the mesh to the current buffer using a Phong material.

  • params is an object that has the following properties
    • model The model matrix for the object
    • view The view matrix for the camera
    • projection The projection matrix for the display

mesh.update(params)

Updates the contents of the simplicial complex in place.

  • params is a list of parameters which are in the same format as createSimplicialComplex

mesh.drawPick(params)

Draws the mesh for the purposes of point picking and selection.

mesh.pick(pickData)

Using the output from gl-select finds the point on the mesh closest to the given pick data.

Returns An object with the following properties:

  • positions the position of the picked point on the mesh
  • cellId the index of the closest cell
  • cell the cell of the closest point
  • index the index of the closest vertex

mesh.dispose()

Destroys the mesh object and releases all resources assigned to it.

Credits

(c) 2013 Mikola Lysenko. MIT License

Package Sidebar

Install

npm i gl-simplicial-complex

Weekly Downloads

2

Version

3.0.4

License

MIT

Last publish

Collaborators

  • mikolalysenko