gl-shape
Create 3d shapes for use with stack.gl
.
This module provides a constructor that wraps gl-geometry
and gl-mat4
, making it simpler to create a geometry from a simplicial complex and update its transforms.
install
npm install gl-shape
example
Define data for your shape
var data = complex: position: 0 10 20 scale: 1 2 1
Then create it
var shape = data
You can bind its geometry to a shader
shapeattributesgeometry
Use its matrices to set uniforms
shaderuniformsmodel = shapeattributesmodel
And update its position (which updates its underlying model matrix)
shape
See example.js for a complete example of a rendered 3d shape, and call npm start
to run it.
usage
shape = require('gl-shape')(gl, data)
Create a shape by providing a gl
context and shape data
.
The following properties on data
are required
complex
the simplicial complex, must havepositions
andfaces
, may also haveuvs
andnormals
. If normals are not provided, vertex normals will be computed usingnormals
.
And the following are optional
position
an 3 vector with a positionscale
an 3 vector with a scale in each dimension or a scalarrotation
an object with rotation angletheta
and 3 vectoraxis
model
a 4x4 matrix for directly specifying the model matrixflatten
a boolean flag that if true will convert indexed meshes to triangles for non-interpolated geometries
If position
, scale
, or rotation
are specified they will be used to set the model
matrix.
shape.attributes
All derived attributes are stored on shape.attributes
, and include
geometry
the renderable geometrymodel
the 4x4 model matrixmodelNormal
the normal vector for the model
shape.position(vector)
Update the position.
shape.scale(vector)
Update the scale along each dimension. Can also pass a single value.
shape.rotation(angle, axis)
Update the rotation.