Extrude polygons/polylines. Born in maptalks.three project
npm i poly-extrude
<script type="text/javascript" src="https://unpkg.com/poly-extrude/dist/poly-extrude.js"></script>
import {
polygons,
extrudePolygons,
extrudePolygonsOnPath,
extrudePolylines,
cylinder,
expandPaths,
extrudeSlopes,
expandTubes,
plane
} from 'poly-extrude';
//if you use cdn,the namespace is polyextrude
// const {
// extrudePolygons,
// extrudePolylines
// } = window.polyextrude;
const polygons = [
//polygon
[
//outring
[
[x, y],
[x, y],
...........
],
//holes
[
[x, y],
[x, y], ...........
],
........
],
//other polygons
......
];
const polylines = [
// polyline
[
[x, y],
[x, y],
...........
],
//polyline
[
[x, y],
[x, y],
...........
],
];
const result = extrudePolygons(polygons, {
depth: 2
});
const {
positon,
normal,
uv,
indices
} = result;
//do something

extrudePolygons(polygons, options)polygonsoptions.depthoptions.top Whether to display the top const result = extrudePolygons(polygons, {
depth: 2
});
const {
positon,
normal,
uv,
indices
} = result;
//do something
building
buildings
china
muti polygon
ny buildings
custom shape

extrudePolygonsOnPath(polygons, options)polygonsoptions.extrudePath is lineoptions.openEndoptions.openEndUVoptions.polygonRotation const result = extrudePolygonsOnPath(polygons, {
extrudePath: [
[0, 0],
[100, 0]
]
});
const {
positon,
normal,
uv,
indices
} = result;
//do something
base demo
wireframe demo
with holes
with holes by custom shape
polygonRotation
extrude along spring
extrude taihu lake
extrude by curve

extrudePolylines(lines, options)linesoptions.depthoptions.lineWidthoptions.bottomStickGround Is the bottom attached to the groundoptions.pathUV generate Path UV const result = extrudePolylines(polylines, {
depth: 2,
lineWidth: 2
});
const {
positon,
normal,
uv,
indices
} = result;
//do something
line
line uv
line pathUV
line cutcorner
brige
brige bottomStickGround
extrude brige
spring
wall
street

cylinder(center, options)centeroptions.radiusoptions.heightoptions.radialSegmentsconst center = [0, 0];
const result = cylinder(center, {
radius: 1,
height: 2,
radialSegments: 6
});
const {
positon,
normal,
uv,
indices
} = result;
//do something
cylinder
___

expandPaths(lines, options)linesoptions.lineWidthconst result = expandPaths(polylines, {
cornerRadius: 0.5,
lineWidth: 2
});
const {
positon,
normal,
uv,
indices
} = result;
//do something
paths
street paths
brige paths
___

extrudeSlopes(lines, options)linesoptions.depthoptions.lineWidthoptions.side Which side serves as the slope, ‘left’ or ‘right’options.sideDepth slope depthoptions.bottomStickGround Is the bottom attached to the groundoptions.pathUV generate Path UVconst result = extrudeSlopes(polylines, {
depth: 1,
side: 'left',
sideDepth: 0,
lineWidth: 2
});
const {
positon,
normal,
uv,
indices
} = result;
//do something
slope
extrudeSlopes pathUV demo
___

expandTubes(lines, options)linesoptions.radiusoptions.radialSegmentsconst result = expandTubes(polylines, {
radius: 1,
radialSegments: 8
});
const {
positon,
normal,
uv,
indices
} = result;
//do something
tube
___

plane(width, height,devideW,devideH)widthheightdevideWdevideHconst result = plane(100, 100, 10, 10);
const {
positon,
normal,
uv,
indices
} = result;
//do something
plane demo
custom terrain demo

polygons(polygons, options)polygons const result = polygons(polygons, {
});
const {
positon,
normal,
uv,
indices
} = result;
//do something