初识three.js

简单介绍:three.js是可以用来开发三维产品的库,基于Web-GL,可以应用于各种三维项目,包括 3D游戏、3维模型展示、3D可视化平台等等。

初始化一个简单的三维应用

npm i three
<template>
  <div class="init-three-container">
    <div id="initThree-container" class="initThree-container" />
  </div>
</template>

<script>
import * as THREE from 'three'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' //导入控制器
export default {
  data() {
    return {
      
    }
  },
  mounted() {
    this.initThree()
  },
  methods: {
    initThree() {
    const dom = document.getElementById('initThree-container')
     // 初始化webgl
    const renderer = new THREE.WebGLRenderer({ antialias: true }) // 抗锯齿
    renderer.setPixelRatio(dom.clientWidth / dom.clientHeight) // 设置设备像素比 window.devicePixelRatio
    renderer.setSize(dom.clientWidth, dom.clientHeight) // 输出canvas的大小
    document.getElementById(id).appendChild(renderer.domElement)
    // 初始化相机
    const camera = new THREE.PerspectiveCamera(45, dom.clientWidth / dom.clientHeight, 1, 1000)
    camera.position.set(0, 10, 5)
    // 初始化场景
    const scene = new THREE.Scene()
    // 渲染器 渲染场景和相机
	renderer.render(scene, camera)
	// 初始化控制器
    const control = new OrbitControls(camera, renderer.domElement)
    }
  }
}
</script>

<style lang="scss">
.init-three-container {
  width: 100%;
  height: calc(100vh - 50px);
  display: flex;
  .initThree-container {
      width: 100%;
      height: 100%;
  }
}
</style>

这样就初始化了一个简单的three
浏览器中查看 是一个 canvas 标签
默认是黑色的
在这里插入图片描述
给场景添加一个物体

...
 methods: {
    initThree() {
		...
		// 添加物体
    	// 几何体
    	const cubeGeometry = new THREE.BoxGeometry(1, 1, 1)
    	// 材质
    	const cubeMaterial = new THREE.MeshBasicMaterial({ color: '#fff' })
    	// 生成物体
    	const cubeMesh = new THREE.Mesh(cubeGeometry, cubeMaterial)
    	// 添加到场景中
    	scene.add(cube)
	}
}

效果如图
在这里插入图片描述
至此一个简单的three.js三维应用就完成了。

本节要点

  • 生产一个三维场景的重要因素有哪些?
    scene-场景、camera-相机、renderer-渲染器以及control控制器
  • 各个要素的作用
    scene:向上述例子中的物体可以添加到场景中,之后还会学到的灯光模型等,都需要添加到场景中才能展现
    camera:可以让我们看到场景及其中的内容,一般情况下我们使用透视相机(PerspectiveCamera) 这一投影模式被用来模拟人眼所看到的景象,它是3D场景的渲染中使用得最普遍的投影模式。
    renderer:就是用来将 scene、camera等渲染输出为一个canvas,展现给用户
    control:用来控制相机,像上述例子中使用的轨道控制器(OrbitControls) 可以使得相机围绕目标进行轨道运动
  • 添加物体的要素
    geometry-几何体 three官网提供了更多的几何体
    material-材质
    mesh-物体
    【注意】物体创建完,需要添加到 scene场景中,才会有效

本节参考

three.js官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值