geometry几何体
大约 3 分钟
一个模型是由几何体Geometry和材质material组成。Three.js内置了很多的几何体种类,如:立方体、三棱锥、球、八面体、十二面体、二十面体等等
当前Three.js内置了这两种几何体类型Geometry和BufferGeometry,这两个几何体类型都是用于存储模型的顶点位置、面的索引、法向量、颜色、uv纹理以及一些自定义的属性
- Geometry
- 使用了
Three.js提供的THREE.Vector3或者THREE.Color这样的对象来存储数据 - 易与阅读和编辑
- 性能弱一些
- 适合动画场景
- BufferGeometry
- 存储数据原始
- 不易阅读和编辑
- 性能好
- 适合存储一些放入场景内不需要再额外操作的模型
两种几何体类型可以互转
- BufferGeometry 转换成 Geometry
var geo = new THREE.Geometry()
geo.fromBufferGeometry(bufferGeometry)
- Geometry 转换成 BufferGeometry
var bufferGeo = new THREE.BufferGeometry()
bufferGeo.fromGeometry(geometry)
立方体
var geometry = new THREE.BoxGeometry(1, 1, 1)
var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 })
var cube = new THREE.Mesh(geometry, material)
scene.add(cube)
BoxGeometry参数
width浮点类型height浮点类型depth浮点类型widthSegments可选,整数类型,沿着边的宽度分割面的数量,默认1heightSegments可选,整数类型,沿着边的高度分割面的数量,默认1depthSegments可选,整数类型,沿着边的深度分割面的数量,默认1
圆形
var geometry = new THREE.CircleGeometry(5, 32)
var material = new THREE.MeshBasicMaterial({ color: 0xffff00 })
var circle = new THREE.Mesh(geometry, material)
scene.add(circle)
CircleGeometry参数
radius浮点类型,圆的半径,默认值1segment整数类型,段数(三角形),最小值3,默认值8thetaStart第一段的起始角度,默认值0thetaLength圆形扇形的中心角,通常称为theta,默认值2*PI
圆锥
var geometry = new THREE.ConeGeometry(5, 20, 32)
var material = new THREE.MeshBasicMaterial({ color: 0xffff00 })
var cone = new THREE.Mesh(geometry, material)
scene.add(cone)
ConeGeometry参数
radius浮点类型,底部圆锥得半径,默认值1height浮点类型,圆锥体高度,默认值1radialSegments整数类型,圆锥周围得分段面数,默认值8heightSegments整数类型,沿圆锥体高度的面的行数,默认值1openEnded布尔类型,圆锥体底部是否隐藏,默认falsethetaStart浮点类型,第一段的起始角度,默认0thetaLength浮点类型,圆形扇形的中心角,默认2*PI
圆柱
var geometry = new THREE.CylinderGeometry(5, 5, 20, 32)
var material = new THREE.MeshBasicMaterial({ color: 0xffff00 })
var cylinder = new THREE.Mesh(geometry, material)
scene.add(cylinder)
CylinderGeomertry参数
radiusTop浮点类型,顶部圆柱体半径,默认值1radiusBottom浮点类型,底部圆柱体半径,默认值1heightradialSegmentsheightSegmentsopenEndedthetaStartthetaLength
球
var geometry = new THREE.SphereGeometry(5, 32, 32)
var material = new THREE.MeshBasicMaterial({ color: 0xffff00 })
var sphere = new THREE.Mesh(geometry, material)
scene.add(sphere)
SphereGeometry参数
radius浮点类型,球体半径,默认值1widthSegments整数类型,水平线段的数量,最小值3,默认8heightSegments整数类型,垂直段的数量,最小值2,默认6phiStart浮点类型,指定水平渲染起始角度,默认0phiLength浮点类型,指定水平渲染角度大小,默认2*PIthetaStartthetaLength
平面
var geometry = new THREE.PlaneGeometry(5, 20, 32)
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, side: THREE.DoubleSide })
var plane = new THREE.Mesh(geometry, material)
scene.add(plane)
PlaneGeometry参数
widthheightwidthSegments整数类型,宽度分段数,默认1heightSegments整数类型,高度分段数,默认1
圆环
var geometry = new THREE.TorusGeometry(10, 3, 16, 100)
var material = new THREE.MeshBasicMaterial({ color: 0xffff00 })
var torus = new THREE.Mesh(geometry, material)
scene.add(torus)
TorusGeometry参数
radius浮点类型,圆环半径,从圆环中心到管中心,默认1tube浮点类型,管的半径,默认0.4radialSegments整数类型,横向分段数,默认8tubularSegments整数类型,纵向分段数,默认6arc浮点类型,绘制的弧度,默认2*PI
