gl-shape v1.0.1
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-shapeexample
Define data for your shape
var data = {
complex: require('bunny'),
position: [0, 10, 20],
scale: [1, 2, 1]
}Then create it
var shape = require('gl-shape')(data)You can bind its geometry to a shader
shape.attributes.geometry.bind(shader)Use its matrices to set uniforms
shader.uniforms.model = shape.attributes.modelAnd update its position (which updates its underlying model matrix)
shape.position([0, 10, 0])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
complexthe simplicial complex, must havepositionsandfaces, may also haveuvsandnormals. If normals are not provided, vertex normals will be computed usingnormals.
And the following are optional
positionan 3 vector with a positionscalean 3 vector with a scale in each dimension or a scalarrotationan object with rotation anglethetaand 3 vectoraxismodela 4x4 matrix for directly specifying the model matrixflattena 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
geometrythe renderable geometrymodelthe 4x4 model matrixmodelNormalthe 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.