threejs学习02-聚光灯和投影 (WebGLRenderer \ PerspectiveCamera \ Scene \ AxesHelper \ GeometryCylinder \ GeometryPlane \ OrbitControls \ AmbientLight \ Spotlight \ Shadow)
我们在之前vite项目中,新建一个js文件,命名为02-spot-light-shadow.js:
02-spot-light-shadow.js:
import * as THREE from 'three';
import {
Plane } from 'three';
//控制器需要引入这个js。实现控制器。
import {
OrbitControls} from 'three/examples/jsm/controls/OrbitControls';
let scene ,camera , renderer ;
let axesHelper, controls;
let ambientLight, spotLight;
let plane, cylinder;
initRenderer();
initCamera();
initScene();
initAxesHelper(); //目标物、坐标轴一定要在初始化Scene后面。
initControls(); //控制器
initAmbientLight();
initSpotLight();
initMashes();
initShadow();
render();
//自适应窗口大小:使得camera和renderer随着窗体的变化而变化。
window.addEventListener('resize',function(){
camera.aspect = window.innerWidth/window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth,window.innerHeight);
})
//初始化渲染器
function initR