目录
画布自适应大小
全屏实现
画布自适应大小
在Three.js中,要使画布能够自适应窗口大小的变化,需要在窗口大小变化时更新相关的渲染器、摄像机等参数。
① 监听窗口大小变化事件:
window.resize
② 摄像机宽高比更新:
camera.aspect = window.innerWidth / window.innerHeight;
更新摄像机的宽高比,以确保画面不会变形。③ 摄像机投影矩阵更新:
camera.updateProjectionMatrix();
通过更新摄像机的投影矩阵,确保透视投影的正确显示。④ 渲染器大小更新:
renderer.setSize(window.innerWidth, window.innerHeight);
更新渲染器的大小,使其与新的窗口大小相匹配。⑤ 渲染器像素比设置:
renderer.setPixelRatio(window.devicePixelRatio);
设置渲染器的像素比,以适应高分辨率屏幕,提高渲染效果。(不一定要用window对象的宽高,可以根据实际情况使用任意dom容器的宽高值)
代码实现:
// 监听画面变化,更新渲染画面 window.addEventListener("resize", () => { // 更新摄像头 camera.aspect = window.innerWidth / window.innerHeight; // 更新摄像机的投影矩阵 camera.updateProjectionMatrix(); // 更新渲染器 renderer.setSize(window.innerWidth, window.innerHeight); // 设置渲染器的像素比 renderer.setPixelRatio(window.devicePixelRatio); }); //根据实际情况设置 // window.addEventListener("resize", () => { // // 更新摄像头 // camera.aspect = dom.offsetWidth / dom.offsetHeight // // 更新摄像机的投影矩阵 // camera.updateProjectionMatrix() // // 更新渲染器 // renderer.setSize(dom.offsetWidth, dom.offsetHeight) // // 设置渲染器的像素比 // renderer.setPixelRatio(dom.devicePixelRatio) // })
复制
全屏实现
进入全屏和退出全屏可以使用全屏API实现。
🌱方法:
document.exitFullscreen() 退出全屏;
element.requestFullscreen() 将特定元素设置为全屏模式;
🌱属性:
document.fullscreenElement 判断是否是全屏模式,如果这个值为 null
,文档不处于全屏模式;
document.fullscreenEnabled 提供了启用全屏模式的可能性。当它的值是 false
的时候,表示全屏模式不可用(可能的原因有 "fullscreen"
特性不被允许,或全屏模式不被支持等)
🌱事件:
document.onfullscreenchange / element.onfullscreenchange 进入全屏或退出全屏时触发
document.onfullscreenerror / element.onfullscreenerror 当进入全屏或退出全屏出错时触发
const threeContainer = document.getElementById('three') threeContainer.addEventListener("dblclick", () => { const fullScreenElement = document.fullscreenElement if (!fullScreenElement) { // 进入全屏,让画布对象全屏 renderer.domElement.requestFullscreen() } else { // 退出全屏 document.exitFullscreen() } })
复制