three-prism-geometry
Version:
A lightweight prism geometry for three.js.
52 lines (38 loc) • 1.67 kB
Markdown
A lightweight geometry class for [three.js](https://threejs.org/) that generates true prisms with parallel top and bottom faces and a variable offset vector between the two.
## Features
- Simple API: base polygon + offset vector
- Works with any 3D base polygon (convex or slightly concave)
- You control the facing of the sides (reverse your point array if side faces are on the inside)
- Fully closed mesh (CSG-ready)
- Automatic normal calculation
- Built-in validation (planarity, offset direction)
## Installation
**NPM:**
```Console
npm i three-prism-geometry
```
## Usage
Create a prism geometry from a set of coplanar base points and an offset vector.
The top face will be the base polygon translated by the given offset.
**Note:**
The order of the input points matters. The points array should describe the base polygon in consistent winding order (clockwise or counter-clockwise as seen from outside the prism). If the side faces appear dark or look like they are lit from the inside, reverse the array before passing it to `PrismGeometry`:
```js
import * as THREE from "three";
import { PrismGeometry } from "three-prism-geometry";
const points = [
new THREE.Vector3( 0, 0, 0),
new THREE.Vector3( 1, 0, 0),
new THREE.Vector3( 1, 1, 0),
new THREE.Vector3( .5, .5, 0),
new THREE.Vector3( 0, 1, 0)
];
const offset = new THREE.Vector3(0, 1, -1);
const geometry = new PrismGeometry(points, offset);
const material = new THREE.MeshStandardMaterial({
color: 0x3399ff,
flatShading: true
});
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
```