前言
本节我们介绍两种几何体,这两个几何体的渲染离不开前面讲解的曲线知识。如果之前你了解过这两个几何体,学完曲线再看一遍肯定有更加深刻的理解。
TubeGeometry
TubeGeometry:管道缓冲几何体,它能够沿着一条三维曲线创建出管道。构造函数如下:
TubeGeometry(path, tubularSegments, radius, radiusSegments, closed)
- path:三维曲线路径,通过curve创造出来的曲线路径。
- tubularSegments:管道路径分段数,分段数越高越圆滑,默认为64。
- radius:半径,设定管道粗细。
- radialSegments:切面圆弧的分段数。
- closed:管道两端口是否闭合。
//创建三维曲线路径
const path = new THREE.CatmullRomCurve3([
new THREE.Vector3(-5, 0),
new THREE.Vector3(-2, 2),
new THREE.Vector3(2, 2),
new THREE.Vector3(5, 0)
]);
const geometry = new THREE.TubeGeometry(path,50,1,50)
const material = new THREE.MeshBasicMaterial({ color: 0x8888 });
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
做到这我们也能理解这些几何体本质还是点的渲染。
LatheGeometry
LatheGeometry:车削缓冲几何体,主要用于渲染具体旋转特性的物体,比如花瓶、球体等。LatheGeometry通过2d或3d线轮廓旋转一圈而成,构造函数如下:
LatheGeometry(points, segments, phiStart, phiLength)
- points:点坐标数据,用Vector2表示的二维坐标。数组中的每个坐标X必须大于0。
- segments:圆周的分段数量,默认为12。
- phiStart:旋转的开始角度。
- phiLenght:旋转的角度,默认为2Π也就是一圈。
//创建Vector2点数组
const points = [
new THREE.Vector2(-1, 2),
new THREE.Vector2(1, 0),
new THREE.Vector2(2, -2)
];
//几何体
const geometry = new THREE.LatheGeometry(points, 50);
const material = new THREE.MeshBasicMaterial({
color: 0x8888,
side: THREE.DoubleSide
});
const mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
总结
以上就是TubeGeometry与LatheGeometry几何体的用法,前者需要曲线路径,后者需要Vector2数组,两者本质都是由点确定轮廓然后根据自己的算法去渲染。从第一小节到现在,我们肯定知道了点的重要性,也认识了很多几何体与Api,这些不必刻意去背,用到的时候去查就好。