(2)创建场景
(3)创建相机对象(透视相机)
(4)设置相机的位置
(5)在场景里面添加相机
(6)创建几何体和材质
(7)根据几何体和材质创建物体
(8)将几何体添加到场景中
(9)初始化渲染器
(10)设置渲染的尺寸大小
(11)将 webgl 渲染的 canvas 内容添加到 body
(12)使用渲染器,通过相机将场景渲染进来
// 导入 three 文件
import \* as THREE from 'three'
// 创建场景
const scene = new THREE.Scene()
// 创建相机对象(角度,宽高比,近端,远端)
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000)
// 设置相机的位置(x,y,z)
camera.position.set(0, 0, 10)
// 场景里面添加相机
scene.add(camera)
// 添加物体
// 创建几何体
const cubeGeometry = new THREE.BoxGeometry(1, 1, 1)
// 创建材质
const cubeMaterial = new THREE.MeshBasicMaterial({color: 0xffff00})
// 根据几何体和材质创建物体
const cube = new THREE.Mesh(cubeGeometry, cubeMaterial)
// 将几何体添加到场景当中
scene.add(cube)
// 初始化渲染器
const renderer = new THREE.WebGLRenderer()
// 设置渲染的尺寸大小
renderer.setSize(window.innerWidth, window.innerHeight)
// console.log(renderer)
// 将 webgl 渲染的 canvas 内容添加到 body
document.body.appendChild(renderer.domElement)
// 使用渲染器,通过相机将场景渲染进来
renderer.render(scene, camera)
三、轨道控制器
Orbit controls(轨道控制器)可以使得相机围绕目标进行轨道运动。
在上文的基础上进行如下改动,添加轨道控制器,使得物体可旋转
import \* as THREE from 'three'
// 导入轨道控制器
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
// 使用控制器查看3d物体
......
// 使用渲染器,通过相机将场景渲染进来
// renderer.render(scene, camera)
// 创建轨道控制器 (domElement->用于事件监听的 HTML元素)
const controls = new OrbitControls(camera, renderer.domElement)
// 渲染函数
function render() {
renderer.render(scene, camera)
// 请求动画帧-下一帧的时候重新渲染
requestAnimationFrame(render)
}
render()
【使用轨道控制器效果图】
四、坐标轴辅助器
红色代表 X 轴,绿色代表 Y 轴,蓝色代表 Z 轴。
在上文的基础上添加如下代码,添加坐标轴辅助器
// 添加坐标轴辅助器
const axesHelper = new THREE.AxesHelper(4)
// 添加到场景中
scene.add(axesHelper)
五、设置物体移动
修改 cube 的 position 即可(x、y、z)
在上文的基础上把渲染函数的代码进行如下改动,就可以让物体移动起来
// 渲染函数
function render() {
cube.position.x += 0.01
if (cube.position.x > 4) {
cube.position.x = 0
}
renderer.render(scene, camera)
// 请求动画帧-下一帧的时候重新渲染
requestAnimationFrame(render)
}
【设置物体的移动】
六、设置物体的缩放和旋转
修改 cube 的 scale 即可进行对物体的缩放(x、y、z)
// x 三倍,y 两倍,z 一倍
cube.scale.set(3, 2, 1)
修改 cube 的 rotation 即可进行对物体的旋转(x、y、z)
Math.PI为180°,下面代码即沿 x 轴旋转 45°
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
673860)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新