gl-shape

create 3d shape for use with stack.gl

Last updated 5 years ago by
freeman-lab .

MIT ·
Repository ·
Bugs ·
Original npm ·
Tarball ·
package.json
$ cnpm install gl-shape

SYNC missed versions from
official npm registry.

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.

```
npm install gl-shape
```

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.

`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 have`positions`

and`faces`

, may also have`uvs`

and`normals`

. If normals are not provided, vertex normals will be computed using`normals`

.

And the following are optional

`position`

an 3 vector with a position`scale`

an 3 vector with a scale in each dimension or a scalar`rotation`

an object with rotation angle`theta`

and 3 vector`axis`

`model`

a 4x4 matrix for directly specifying the model matrix`flatten`

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 geometry`model`

the 4x4 model matrix`modelNormal`

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.

- 1.0.1 ... latest (5 years ago)

Maintainers (1)

Downloads

Today
0

This Week
0

This Month
1

Last Day
0

Last Week
1

Last Month
2

Dependencies (8)

- fast-isnumeric ^1.1.1
- gl-geometry ^3.1.0
- gl-mat3 ^1.0.0
- gl-mat4 ^1.1.4
- gl-vec3 ^1.0.3
- mesh-reindex ^1.0.0
- normals ^1.0.1
- unindex-mesh ^2.0.0

Dev Dependencies (10)

- bunny ^1.0.1
- canvas-fit ^1.5.0
- garnish ^5.0.2
- gl-context ^0.1.1
- gl-mat4 ^1.1.4
- gl-material ^1.0.0
- tap-spec ^4.1.1
- test-allclose ^1.1.0
- testron ^1.2.0
- watchify-server ^1.0.2

Dependents (3)

Copyright 2014 - 2017 © taobao.org |