本章介绍,在 three 中默认的几何体类型,并列举出使用方法以及一些小技巧的分享,分段次数越多,性能越差,但是显示效果会越好,由于作者水平有限,文章之中难免有不当之处,欢迎在评论区讨论。
立方缓冲几何体 立方缓冲几何体有六个参数
- width 宽度 X 轴面的宽度 默认值为 1
- height 高度 Y 轴面的宽度 默认值为 1
- depth 深度 Z 轴面的宽度 默认值为 1
- widthSegments (可选)宽度的分段数,默认值是 1。
- heightSegments (可选)高度的分段数,默认值是 1。
- depthSegments (可选)深度的分段数,默认值是 1。
以下立方体为一个宽高深都为一的立方体,每个分段数将当前面,分为对应的正方形个数,每个正方式会被切割成两个三角形
// BoxGeometry(width : Float, height : Float, depth : Float, widthSegments : Integer, heightSegments : Integer, depthSegments : Integer)
new THREE.BoxGeometry( 1, 1, 1, 2, 2, 2);
胶囊图形类几何体 有四个参数
- radius 胶囊半径 默认值 1
- length 中间区域的长度 默认值 1
- capSegments 构造盖子每一个面的分段数
- radialSegments 胶囊表面的分段数
以下是一个胶囊几何体 capSegments 每个分段会将半球分成上 上半球 下半球 每个半球分成两段 每个段会分为一个正方形使用两个三角形分切, radialSegments 分面多少个细节面当为 3 时会类似于一个三角形 为 8 时比较接近圆形
// CapsuleGeometry(radius : Float, length : Float, capSegments : Integer, radialSegments : Integer);
new THREE.CapsuleGeometry( 1, 1, 4, 8 );
圆形缓冲几何体
- radius 圆形的半径,默认值为1
- segments 分段三角面的数量,最小值为 3 默认值为 32 每一个分段对应一个三角
- thetaStart 第一个分段的起始角度 默认为 0
- thetaLength 扇形区的中心角 默认值为 2 * Pi 通常被称为“θ”(西塔)使其成为一个完整的圆
以下是一个圆形缓存几何体的示例
// CircleGeometry(radius : Float, segments : Integer, thetaStart : Float, thetaLength : Float)
// 一个半径为 5 而分成 32 个三角的圆
new THREE.CircleGeometry( 5, 32 );
圆锥缓冲几何体
- radius 圆锥底部的半径 默认值 1
- height 圆锥的高度,默认值为1。
- radialSegments 圆锥侧面周围的分段数,默认为32,最小值 为 3
- heightSegments 圆锥侧面沿着其高度的分段数,默认值为1。
- openEnded 圆锥底部是否封闭
- thetaStart 第一个分段的起始角度,默认为0
- thetaLength 默认值为 2 * Pi 通常被称为“θ”(西塔)使其成为一个完整的圆锥
以下是一个圆锥缓存几何体的示例
// ConeGeometry(radius : Float, height : Float, radialSegments : Integer, heightSegments : Integer, openEnded : Boolean, thetaStart : Float, thetaLength : Float)
// 半径为 5 圆锥高度为 20 圆角分段数为 32 即由32个三角组成一个圆锥
new THREE.ConeGeometry( 5, 20, 32 );
圆柱缓冲几何体
- radiusTop 圆柱的顶部半径,默认值是1。
- radiusBottom 圆柱的底部半径,默认值是1。
- height 圆柱的高度,默认值是1。
- radialSegments 圆柱侧面周围的分段数,默认为32 最小值为 3。
- heightSegments 圆柱侧面沿着其高度的分段数,默认值为1。
- openEnded 一个Boolean值,指明该圆锥的底面是开放的还是封顶的。默认值为false,即其底面默认是封顶的。
- thetaStart 第一个分段的起始角度,默认为0
- thetaLength 默认值为 2 * Pi 通常被称为“θ”(西塔)使其成为一个完整的圆柱
以下是一个圆锥缓存几何体的示例 openEnded 表示顶部与底部是否封闭 radialSegments 值为 3 时类似于三角柱, heightSegments 表示每一个切面分面多少个正方形
// CylinderGeometry(radiusTop : Float, radiusBottom : Float, height : Float, radialSegments : Integer, heightSegments : Integer, openEnded : Boolean, thetaStart : Float, thetaLength : Float)
new THREE.CylinderGeometry( 5, 5, 20, 32 );
十二面缓冲几何体
- radius 十二面体的半径,默认值为1。
- detail 默认值为0。将这个值设为一个大于0的数将会为它增加一些顶点,使其不再是一个十二面体。
以下是一个十二面几何体 示例 需要注意的是 detail 表级细度级别,为 (5^n) * 12 个面
// DodecahedronGeometry(radius : Float, detail : Integer)
// 半径为10的十二面几何体
new THREE.DodecahedronGeometry(10, 0);