three学习(二)——坐标轴与转换

211 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第6天,点击查看活动详情

前言

在three中,通过场景、相机、渲染器我们可以创建成一个3D图形,这个3D图形是静止的,利用requestAnimationFrame动画帧去render,我们就能转动3D图形查看,查看一会可能我们就分不清x、y、z轴啦,这时候我们就需要添加坐标轴帮助我们观察。

坐标轴

AxesHelper构造函数用于创建坐标轴,该方法接受一个参数size,表示每个轴的长度,默认为1。创建好以后需要添加到场景当中:

   const axesHelper = new THREE.AxesHelper(3);
   scene.add(axesHelper);

打开页面我们只会看到两条轴,这是因为z轴正对着前方,转动一下物体就能看到z轴啦。

QQ图片20230208232916.png 从图上很明显看出红、绿、蓝三条轴,其中红色代表x轴、绿色代表y轴、蓝色代表z轴

属性方法

AxesHelper有相关的属性与方法,继承于Line的,接下来我们来了解一下几种属性方法:

  • geometry:用于设置线的顶点,默认值是BufferGeometry()。
  • material:用于设置线的材质,可以设置颜色的。
  • isLine:是否是只读的,属性值为布尔值。
  • clone():克隆方法,相当于复制一条线。
  • computeLineDistances():用于计算出当前点到起始点的累计长度。
  • raycase():与射线产生交互。

转换

有了坐标轴,我们移动位置就能直观地观察到,下面我们来看一下操作物体的几种方式:

  • position(x,y,z):用于移动物体位置。
   cube.position.set(3, 0, 0);

QQ图片20230208235005.png

  • scale():用于物体的缩放。
  cube.scale.set(2, 1, 1);

QQ图片20230208235134.png

  • rotation():用于旋转物体。
cube.rotation.set(2, 1, 1);

QQ图片20230208235322.png

总结

以上就是three的坐标轴与转换,我们要记清楚每个坐标轴对应的颜色,物体的转换也跟CSS中的差不多,就是位移用pisition去操作。