
Threejs渲染第一个场景和物体
const scene = new THREE.Scene();
THREE.Scene()
用于创建一个新的场景。场景是物体和光源的容器。
THREE.PerspectiveCamera(fov, aspect, near, far)
const camera = new THREE.PerspectiveCamera(
45,
window.innerWidth / window.innerHeight,
0.1,
1000
);
THREE.PerspectiveCamera(fov, aspect, near, far)
用于创建一个新的透视相机。这个函数需要四个参数:视野角度(fov)、宽高比(aspect)、近裁剪面(near)和远裁剪面(far)。
camera.position.set(x, y, z)
camera.position.set(0, 0, 5);
camera.position.set(x, y, z)
用于设置相机的位置。
THREE.BoxGeometry(width, height, depth)
const cubeGeometry = new THREE.BoxGeometry(1, 1, 1);
THREE.BoxGeometry(width, height, depth)
用于创建一个新的立方体几何体。这个函数需要三个参数:宽度(width)、高度(height)和深度(depth)。
THREE.MeshBasicMaterial(options)
const cubeMaterial = new THREE.MeshBasicMaterial({ color: 0xffff00 });
THREE.MeshBasicMaterial(options)
用于创建一个新的基本材质。这个函数需要一个参数:一个包含材质选项的对象。
THREE.Mesh(geometry, material)
const cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
THREE.Mesh(geometry, material)
用于创建一个新的网格(Mesh)。这个函数需要两个参数:一个几何体和一个材质。
THREE.WebGLRenderer()
const renderer = new THREE.WebGLRenderer();
THREE.WebGLRenderer()
用于创建一个新的WebGL渲染器。
renderer.setSize(width, height)
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setSize(width, height)
用于设置渲染器的大小。
requestAnimationFrame(callback)
requestAnimationFrame(animate);
requestAnimationFrame(callback)
用于在下一个重新绘制之前调用一个函数。这个函数需要一个参数:一个回调函数。
renderer.render(scene, camera)
renderer.render(scene, camera);
renderer.render(scene, camera)
用于使用指定的相机渲染场景。
完整代码
<script setup>
import * as THREE from "three";
// 目标:了解three.js最基本的内容
// 1、创建场景
const scene = new THREE.Scene();
// 2、创建相机
const camera = new THREE.PerspectiveCamera(
45,
window.innerWidth / window.innerHeight,
0.1,
1000
);
// 设置相机位置
camera.position.set(0, 0, 5);
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);
// 将webgl渲染的canvas内容添加到body
document.body.appendChild(renderer.domElement);
// 渲染函数
function animate() {
// 通过requestAnimationFrame方法来调用animate函数
requestAnimationFrame(animate);
// 物体旋转
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
// 使用渲染器,通过相机将场景渲染进来
renderer.render(scene, camera);
}
// 调用渲染函数
animate();
</script>
<template>
<div></div>
</template>
<style scoped>
* {
margin: 0;
padding: 0;
}
canvas {
width: 100vw;
height: 100vh;
display: block;
left: 0;
top: 0;
position: fixed;
}
</style>
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果