threejs优化管道(tube), 解决了管道拐角显示问题
import * as THREE from "three";
import { TubePath } from "three-tube-path";
class ThreeTube {
constructor(
path,
radius = 1,
color = "#00ff00",
opacity = 1,
elbowSegmentNum = 10,
elbowSegmentOffset = 0.01,
radialSegments = 24,
closed = false
) {
const tubePath = new THREE.CatmullRomCurve3(path);
const pathToUMapping = TubePath.pathToUMapping(tubePath, elbowSegmentNum, elbowSegmentOffset);
const geometry = new TubePath(tubePath, pathToUMapping, radius, radialSegments, closed);
const material = new THREE.MeshStandardMaterial({
color: color,
side: THREE.DoubleSide,
transparent: true,
opacity: opacity,
});
const tube = new THREE.Mesh(geometry, material);
return tube;
}
}
export default ThreeTube;
npm install three-tube-path --save
import ThreeTube from "./ThreeTube";
const path = [new THREE.Vector3(-5, -5, 0), new THREE.Vector3(-5, 5, 0), new THREE.Vector3(5, 5, 0)];
const tube = new ThreeTube(path);
scene.add(tube);