赞
踩
创建配置文件夹
安装three.js依赖
安装 Vite 作为开发依赖
作为页面入口文件
在src文件夹里新建main.js
现在我们将新建的main.js引入到index.html中
这里我们可以写全局的样式 现在我们主要用来测试环境的搭建
将样式文件引入到index.html中
在package.json中编写启动脚本
在项目终端输入npm run dev将项目启动
three.js中我们要渲染出一个图形需要
1.创建一个三维场景
2.创建一个相机
3.创建一个渲染器渲染

//6.创建立方体 几何➕材质
const cubeGeometry = new THREE.BoxGeometry(2,2,2)
const cubeMaterial = new THREE.MeshNormalMaterial()
const cube = new THREE.Mesh(cubeGeometry, cubeMaterial)
//初始化集成GUI
const gui = new dat.GUI()
// 第一个参数 对象
// 第二个参数 对象属性
// 第三个参数 步长范围
const guiPosition = gui.addFolder('位置信息')
guiPosition.add(cube.position, 'x', -10, 10, 1)
guiPosition.add(cube.position, 'y', -10, 10, 1)
guiPosition.add(cube.position, 'z', -10, 10, 1)
const guiScale = gui.addFolder('缩放')
guiScale.add(cube.scale, 'x', 1, 10, 1)
guiScale.add(cube.scale, 'y', 1, 10, 1)
guiScale.add(cube.scale, 'z', 1, 10, 1)
const guiRotate = gui.addFolder('旋转')
const data = {
x: 0,
y: 0,
z: 0,
}
guiRotate.add(data, 'x', -180, 180, 1).onChange((value)=> {
// console.log(value)
//在onChange的回调中
//1.通过形参获取修改的值
//2.使用THREE提供的数学工具将度转换为弧度单位
cube.rotation.x = THREE.MathUtils.degToRad(value)
})
guiRotate.add(data, 'y', -180, 180, 1).onChange((value)=> {
cube.rotation.y = THREE.MathUtils.degToRad(value)
})
guiRotate.add(data, 'z', -180, 180, 1).onChange((value)=> {
cube.rotation.z = THREE.MathUtils.degToRad(value)
})
scence.add(cube)
//3.创建相机
const camera = new THREE.PerspectiveCamera(
45,
window.innerWidth/window.innerHeight,
1,
1000
)
camera.position.set(20,20,20)
camera.lookAt(0,0,0)
//7. 创建坐标系辅助对象
const axesHelper = new THREE.AxesHelper(10)
scence.add(axesHelper)
//10,创建网格辅助对象
const gridHelper = new THREE.GridHelper(20,20,0xffffff, 0xffffff)
gridHelper.material.transparent = true //透明度
gridHelper.material.opacity = 0.5
scence.add(gridHelper)
//4.创建渲染器
const renderer = new THREE.WebGL1Renderer({ antialias: true})
renderer.setSize( window.innerWidth, window.innerHeight)
renderer.setPixelRatio(window.devicePixelRatio)
renderer.setAnimationLoop(animation)
document.body.appendChild(renderer.domElement)
//5.渲染
function animation() {
renderer.render(scence, camera)
}
//8.创建轨道控制器
const controls = new OrbitControls(camera, renderer.domElement)
//9.监听window的resize事件
window.addEventListener('resize', ()=> {
//重新设置相机宽高比
camera.aspect = window.innerWidth / window.innerHeight
camera.updateProjectionMatrix()
//设置渲染器出图 照片大小
renderer.setSize(window.innerWidth, window.innerHeight)
})
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。