Draws a simplicial complex in WebGL
npm install gl-simplicial-complexgl-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
=======
``javascript
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
===
`javascript`
var createSimplicialComplex = require("gl-simplicial-complex")
* 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 to true forces cellNormals to be computedpointSizes
+ An array of point sizespointSize
+ A single point size floatambientLight
+ diffuseLight
+ specularLight
+ lightPosition
+ roughness
+ fresnel
+
Returns A renderable mesh object
* 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
$3
Updates the contents of the simplicial complex in place.
* params is a list of parameters which are in the same format as createSimplicialComplex
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
*