three学习(十八)——TubeGeometry与LatheGeometry

526 阅读2分钟

前言

本节我们介绍两种几何体,这两个几何体的渲染离不开前面讲解的曲线知识。如果之前你了解过这两个几何体,学完曲线再看一遍肯定有更加深刻的理解。

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);

P~{FNB8YMQQ5W0CT`KVD@R4.png

做到这我们也能理解这些几何体本质还是点的渲染。

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);

UR2QN8%IEROUXJM()6N@Q.png

总结

以上就是TubeGeometry与LatheGeometry几何体的用法,前者需要曲线路径,后者需要Vector2数组,两者本质都是由点确定轮廓然后根据自己的算法去渲染。从第一小节到现在,我们肯定知道了点的重要性,也认识了很多几何体与Api,这些不必刻意去背,用到的时候去查就好。