ThreeJs学习笔记【day4】图元【1】

290 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情 >>

什么是图元

图元,就是就是一些 3D 的形状,在运行时根据大量参数生成,使用图元是种很常见的做法,像使用球体作为地球,或者使用大量盒子来绘制 3D 图形。 尤其是用来试验或者刚开始学习 3D。 对大多数 3D 应用来说,更常见的做法是让UI设计师在 3D 建模软件中创建 3D 模型, 像 BlenderMaya 或者 Cinema 4D。 因为咱们没有建模所需的技能,所以仅仅演示内置的图元

update in 2022年8月22日10:55:13 图元是threeJs里的基础材料,图元+材质+纹理构成一个完整的3D物体

立方缓冲几何体(盒子) BoxGeometry

BoxGeometry是四边形的原始几何类,它通常使用构造函数所提供的“width”、“height”、“depth”参数来创建立方体或者不规则四边形。

const width = 8;  // ui: 宽度
const height = 8;  // ui: 高度
const depth = 8;  // ui: 深度
const widthSegments = 4;  // ui: 宽度分段数
const heightSegments = 4;  // ui: 高度分段数
const depthSegments = 4;  // ui: 深度分段数
const geometry = new THREE.BoxGeometry(
    width, height, depth,
    widthSegments, heightSegments, depthSegments);

如图所示,长宽高,分段线 image.png

圆形缓冲几何体(平面圆) CircleGeometry

CircleGeometry是欧式几何的一个简单形状,它由围绕着一个中心点的三角分段的数量所构造,由给定的半径来延展。 同时它也可以用于创建规则多边形,其分段数量取决于该规则多边形的边数。

CircleGeometry一共接收四个参数,分别是,圆的半径,分成多少份,从多少度开始进行绘制, 绘制多少度,当绘制2π角度时,从多少度开始绘制这个参数无意义

const geometry = new THREE.CircleGeometry( 5, 32, 0, 2*Math.PI );
const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
const circle = new THREE.Mesh( geometry, material );
scene.add( circle );

image.png

圆锥缓冲几何体(锥形)ConeGeometry

平平无奇的圆锥体

ConeGeometry 接收6各参数,分别是 底部圆的半径,圆锥体高度,圆锥体侧面分段数(指的是,几面体,最小为三面体,也就是三角锥,数字越大,则越圆,)圆锥体侧面沿高度分段数(指的是,在垂直方向上的分段,数字越大,则形成的圆锥越光滑),从多少角度开始绘制,绘制多少度

const geometry2 = new THREE.ConeGeometry( 5, 20, 32 );
const cone = new THREE.Mesh( geometry2, material );
cone.position.x = 20

image.png