在上一节中介绍了,立方体,胶囊体, 圆形体, 圆锥体, 圆柱体, 十二面缓冲几何体,的使用方法,在这一节将介绍边缘几何体, 挤压缓冲几何体, 二十面缓冲几何体,车削缓冲几何体,车削缓冲几何体, 车削缓冲几何体, 多面缓冲几何体, 圆环缓冲几何体, 形状缓冲几何体, 球缓冲几何体, 四面缓冲几何体, 圆环缓冲几何体, 圆环缓冲扭结几何体, 管道缓冲几何体, # 网格几何体 的基本使用方法。
EdgesGeometry 边缘几何体 这个API的作用主要将几何体转换成线条(边缘,通过角度控制是否显示某些线条) 有两个参数
- geometry 几何体
- thresholdAngle 显示线条的角度
代码示例
有哪些优点 能够用这个 API 调试模型检查形状, 与 mesh 或 lineSegMents 结合,使一个物体即能显示轮廓,又能显示实心面,主要能够通过线条使结构更清楚的展示以便发现潜在问题
// EdgesGeometry( geometry : BufferGeometry, thresholdAngle : Integer )
// 几何体角度小于 90 度的不显示
new THREE.EdgesGeometry( geometry, 90 );
ExtrudeGeometry 挤压缓冲几何体 两个参数 该对象将一个二维形状挤出为一个三维几何体 有两个参数
- shapes 包含形状的数组
- options 一个包含众多参数的对象
使用示例 需要特别注意的三个参数 depth 形状拉深的距离 bevelEnabled 是否在拉深的顶部与底部启用斜角 extrudePath 这个能使形状实现曲线拉深
主要优点 能使二维快速的转换为三维模型, 可以与其他几何工具库 如SVG结合使用,直接从矢量图形生成三维模型,通过自定义路径挤出,制作动画效果,例如沿着路径运动,或形变,再比如可以通过这些API制作一个SVG转 3d 模型的功能 。。。
// ExtrudeGeometry(shapes : Array, options : Object);
options 包含以下参数
- curveSegments — int,曲线上点的数量,默认值是12。
- steps — int,用于沿着挤出样条的深度细分的点的数量,默认值为1。
- depth — float,挤出的形状的深度,默认值为1。
- bevelEnabled — bool,对挤出的形状应用是否斜角,默认值为true。
- bevelThickness — float,设置原始形状上斜角的厚度。默认值为0.2。
- bevelSize — float。斜角与原始形状轮廓之间的延伸距离,默认值为bevelThickness-0.1。
- bevelOffset — float. Distance from the shape outline that the bevel starts. Default is 0.
- bevelSegments — int。斜角的分段层数,默认值为3。
- extrudePath — THREE.Curve对象。一条沿着被挤出形状的三维样条线。Bevels not supported for path extrusion.
- UVGenerator — Object。提供了UV生成器函数的对象。
// shape 形状数组 extrudeSettings 参数选项
new THREE.ExtrudeGeometry( shape, extrudeSettings );
IcosahedronGeometry 二十面缓冲几何体 有两个参数
- radius 几何体半径
- detail 默认值为 0 值每增加一时会使几何体的面增加 四倍 例:0 时是20个面 为 1 时是 80 个面
代码示例
主要优点,在 three 中提人工了一个对称的,均衡的多面体模形,使得创建球形物体更方便快捷
// IcosahedronGeometry(radius : Float, detail : Integer)
// 使用示例 一个20个面的几何体
new THREE.IcosahedronGeometry(5, 0);
LatheGeometry 车削缓冲几何体 有五个参数
- points 一个 Vector2 对象的数组 这些点连成一条线 通过 segments 将这些线分成多少个截面围成一个 按 phiLength 这个参数决定是否闭合的几何体
- segments 要生成多少个 points 组成的面
- phiStart 起始的角度
- phiLength 默认值为 2 * Pi 通常被称为“θ”(西塔)使其成为一个完整的圆 代码示例
主要优点, 通过简单的二维轮郭旋转生成复杂的形状,为在 three 中创建对称线性几何体提供了灵活高效的方法
// LatheGeometry(points : Array, segments : Integer, phiStart : Float, phiLength : Float)
new THREE.LatheGeometry(points, 120)
OctahedronGeometry 八面缓冲几何体 有两个参数
- radius 八面体的半径,默认值为1。
- detail 这个值每递增 1 面的数量递增四倍,默认 8 个面
使用示例
主要优点 比二十面更简洁,更高效
// OctahedronGeometry(radius : Float, detail : Integer)
new THREE.OctahedronGeometry(5, 0)
PlaneGeometry 平面缓冲几何体 平面缓冲几何体 有四个参数
- width 宽度
- height 高度
- widthSegments 平面宽度分段数
- heightSegments 平面高度分段数
使用示例 一般这个用来做地板接收投影
主要优点 在 three 新建地面,墙面, 界面 是主要功能,也适用于各种平面或网格表面的场景
// PlaneGeometry(width : Float, height : Float, widthSegments : Integer, heightSegments : Integer)
new THREE.PlaneGeometry(400, 400)
PolyhedronGeometry 多面缓冲几何体 有四个参数
- vertices 顶点数组
- indices 构成面的索引
- radius 开状的半径
- detail 这个值每递增 1 面的数量递增四倍,默认为构成的面的数量
使用示例
主要优点 高度自定义,灵活性,支持材质和纹理
// PolyhedronGeometry(vertices : Array, indices : Array, radius : Float, detail : Integer)
new THREE.PolyhedronGeometry(vertices, indices, 50, 0)
RingGeometry 圆环缓冲几何体 有六个参数
- innerRadius 内部半径 中间空心的半径
- outerRadius 外部半径 // 实体半径
- thetaSegments 形状分段数 圆环分成多少个面
- phiSegments 圆环半径分段数 每个页分成多少段 影晌粒度
- thetaStart 起始角度 开始角度
- thetaLength 默认值为 2 * Pi 通常被称为“θ”(西塔)使其成为一个完整的圆
使用示例
主要优点 适用于各种需要圆环或者边缘环线的多边形的场景
// RingGeometry(innerRadius : Float, outerRadius : Float, thetaSegments : Integer, phiSegments : Integer, thetaStart : Float, thetaLength : Float)
new THREE.RingGeometry( 1, 5, 32 );
ShapeGeometry 形状缓冲几何体 有两个参数
- shapes 一个单独的形状
- curveSegments 每一个形状的分段数 这个值越大越接近所绘制的形状
使用示例
主要优点 适用于将各种二维的线转换为二维的几何体,可以通过拉深将其转换为三维
// ShapeGeometry(shapes : Array, curveSegments : Integer)
new THREE.ShapeGeometry( heartShape );
SphereGeometry 球缓冲几何体
- radius 球体半径 默认为 1
- widthSegments 水平分段数,最小值为 3 ,类似于水平三角形
- heightSegments 垂直分段数,最小值为 3 类似于垂直三角形
- phiStart 水平的起始角度
- phiLength 水平角度的大小 默认值为 Math.PI * 2
- thetaStart 垂直的起始角度
- thetaLength 垂直角度的大小 默认值为 Math.PI
代码示例
主要优点, 适用于天体建模 以及常见的球形几何体
// SphereGeometry(radius : Float, widthSegments : Integer, heightSegments : Integer, phiStart : Float, phiLength : Float, thetaStart : Float, thetaLength : Float)
new THREE.SphereGeometry( 15, 32, 16 );
TetrahedronGeometry 四面缓冲几何体 两个参数
- radius 圆角半径
- detail 这个值每递增 1 面的数量递增四倍,默认 4 个面
代码示例
主要优点 比八面几何体简洁,性能更优
// TetrahedronGeometry(radius : Float, detail : Integer)
// 半径为5的四面几何体
new THREE.TetrahedronGeometry(5, 0)
TorusGeometry 圆环缓冲几何体 有五个参数
- radius 几何体半径
- tube 管道的半径
- radialSegments 横截面分段数 管道体平滑分为多少段
- tubularSegments 管道的分段数 管道线分为多少段
- arc 默认值为 2 * Pi 通常被称为“θ”(西塔)使其成为一个完整的圆
代码示例
主要优点 在 three 中制作环形 供提供基础模型
// TorusGeometry(radius : Float, tube : Float, radialSegments : Integer, tubularSegments : Integer, arc : Float)
new THREE.TorusGeometry( 10, 3, 16, 100 )
TorusKnotGeometry 圆环缓冲扭结几何体
- radius 圆环的半径
- tube 管道的半径
- tubularSegments 管道的分段数量 管道线分为多少段
- radialSegments 管道横截面分段数 管道体平滑分为多少段
- p 这个值决定了几何体将绕着其旋转对称轴旋转多少次 默认值是2
- q 这个值决定了几何体将绕着其内部圆环旋转多少次 默认值是3
代码示例
主要优点 创建复杂及精美的视觉效果
// TorusKnotGeometry(radius : Float, tube : Float, tubularSegments : Integer, radialSegments : Integer, p : Integer, q : Integer)
new THREE.TorusKnotGeometry( 10, 3, 100, 16 );
TubeGeometry 管道缓冲几何体 有五个参数
- path 管道的路径
- tubularSegments 组成这一管道的分段数 默认值为64
- radius 管道的半径 默认值为1
- radialSegments 管道横截面的分段数目,默认值为8
- closed 管道的两端是否闭合,默认值为false。
代码示例
主要优点 在 three 中创建管道几何体
// TubeGeometry(path : Curve, tubularSegments : Integer, radius : Float, radialSegments : Integer, closed : Boolean)
new THREE.TubeGeometry( path, 20, 2, 8, false );
WireframeGeometry 网格几何体 将几何体转换为网格 只有一个参数
- geometry 任意几何体对象
代码示例
主要优点 主要起到调试几何体的作用
// WireframeGeometry( geometry : BufferGeometry )
new THREE.WireframeGeometry( geometry );