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 contextparams
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 arraysvertexColors
A list of per vertex color attributes encoded as length 3 rgb arraysvertexUVs
cellUVs
vertexIntensity
cellIntensity
cellColors
A list of per cell color attributesmeshColor
A constant color for the entire meshvertexNormals
An array of per vertex normalscellNormals
An array of per cell normalsuseFacetNormals
A flag which if set totrue
forcescellNormals
to be computedpointSizes
An array of point sizespointSize
A single point size floatambientLight
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 propertiesmodel
The model matrix for the objectview
The view matrix for the cameraprojection
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 ascreateSimplicialComplex
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 meshcellId
the index of the closest cellcell
the cell of the closest pointindex
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