前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >『Three.js』辅助坐标轴

『Three.js』辅助坐标轴

作者头像
德育处主任
发布2022-09-23 10:02:16
2.3K0
发布2022-09-23 10:02:16
举报
文章被收录于专栏:前端数据可视化

本文简介

点赞 + 关注 + 收藏 = 学会了

在日常开发和学习中,坐标轴能粗略的帮我们定位元素位置和关系。所以我使用 Three.js 学习和开发时基本都会打开坐标轴。

本文使用 Three.js 的版本:137

编码

在使用坐标轴之前,我们先创建一个元素,可以让我们更容易理解坐标轴。

代码语言:javascript
复制
<style>
  body {
    margin: 0;
  }
</style>

<div id="canvasBox"></div>

<script type="module">
  import {
    Scene,
    PerspectiveCamera,
    WebGLRenderer,
    BoxGeometry,
    MeshBasicMaterial,
    Mesh
  } from '../js/Three/Three.js'



  // 场景
  const scene = new Scene()

  // 相机
  const camera = new PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000)

  // 渲染器
  const renderer = new WebGLRenderer()

  // 将渲染器的大小设置为窗口的大小
  renderer.setSize(window.innerWidth, window.innerHeight)

  // 将渲染器绑定到指定的DOM元素中
  document.getElementById('canvasBox').appendChild(renderer.domElement)

  // 几何体
  const geometry = new BoxGeometry()

  // 网格基础材质,设置颜色
  const material = new MeshBasicMaterial({color: 0xff2299})
  const cube = new Mesh(geometry, material)
  scene.add(cube)

  // 设置摄像机在z轴上的距离
  camera.position.x = -3
  camera.position.y = 5
  camera.position.z = 5

  // 将摄像机的方向对准场景的中心点
  camera.lookAt(scene.position)

  // 适当的旋转一下立方体
  cube.rotation.x += 0.8
  cube.rotation.y += 0.8

  // 将场景和相机添加到渲染器中并执行渲染
  renderer.render(scene, camera)
</script>
01.png
01.png

效果出来了。

创建坐标轴

添加坐标轴需要引入 AxesHelper

代码语言:javascript
复制
<!-- 省略上面的 html 代码 -->
<script type="module">
  import {
    // 省略前面的引入
    AxesHelper
  } from '../js/Three/Three.js'

  // 省略部分代码...

  // 创建坐标轴
  const axes = new AxesHelper()
  // 将坐标轴添加到场景中
  scene.add(axes)

  // 将场景和相机添加到渲染器中并执行渲染
  renderer.render(scene, camera)
</script>
02.png
02.png

此时就可以看到坐标轴了

设置坐标轴长度

从上面的例子看,坐标轴有点短,所以在创建坐标轴的时候建议传入一个长度。

本例传个比较小的值做演示,真实项目会传50、100那样的。

代码语言:javascript
复制
const axes = new AxesHelper(2)
03.png
03.png

此时的坐标轴看上去就比之前长很多了。

设置坐标轴颜色

从上面的案例中可以发现,坐标轴默认的颜色是:红、绿、蓝。如果你希望自定义坐标轴的颜色,可以使用 setColors 进行修改。该方法需要传3个参数进去。

代码语言:javascript
复制
// 创建坐标轴
const axes = new AxesHelper(2)
// 设置坐标轴颜色
axes.setColors('pink', 0xf0ff00, 'rgb(60, 200, 130)')
04.png
04.png

如果你只传1个参数,那3条坐标轴的颜色都会相同。

如果只传2个参数,那么第3个参数的值会直接取到第2个参数的值,所以y和z轴的颜色相同。

这两种情况建议你自己手动测试,我在这里就不贴代码了~

代码仓库

Three.js 坐标轴

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文简介
  • 编码
    • 创建坐标轴
      • 设置坐标轴长度
        • 设置坐标轴颜色
        • 代码仓库
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档