gl-shape
v1.0.1
Published
create 3d shape for use with stack.gl
Downloads
6
Maintainers
Readme
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: 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.model
And 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
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.