gl-simplicial-complex v3.0.4
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-complexAPI
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 contextparamsis 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 arraysvertexColorsA list of per vertex color attributes encoded as length 3 rgb arraysvertexUVscellUVsvertexIntensitycellIntensitycellColorsA list of per cell color attributesmeshColorA constant color for the entire meshvertexNormalsAn array of per vertex normalscellNormalsAn array of per cell normalsuseFacetNormalsA flag which if set totrueforcescellNormalsto be computedpointSizesAn array of point sizespointSizeA single point size floatambientLightdiffuseLightspecularLightlightPositionroughnessfresnel
Returns A renderable mesh object
mesh.draw(params)
Draws the mesh to the current buffer using a Phong material.
paramsis an object that has the following propertiesmodelThe model matrix for the objectviewThe view matrix for the cameraprojectionThe projection matrix for the display
mesh.update(params)
Updates the contents of the simplicial complex in place.
paramsis 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:
positionsthe position of the picked point on the meshcellIdthe index of the closest cellcellthe cell of the closest pointindexthe 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