首页 > 其他分享 >THREE.js学习笔记5——FullScreen and Resizing

THREE.js学习笔记5——FullScreen and Resizing

时间:2025-01-14 11:32:08浏览次数:1  
标签:FullScreen sizes THREE 像素 height width window renderer js

这一小节学习Fullscreen and Resizing
将THREE.js渲染的结果铺满整个屏幕,以及避免出现蓝色边框和超过画面限制的滚动

renderer.setSize(window.innerWidth, window.innerHeight)

* {
  padding: 0;
  margin: 0;
}
body {
    overflow: hidden;
}

.test {
    position: fixed;
    top: 0;
    left: 0;
    outline: none;
}

解决画面大小更新之后,THREE.js渲染的画面不会自动刷新的问题。

const sizes = {
    width: window.innerWidth,
    height: window.innerHeight
}
addEventListener('resize', (event) => {
    //更新宽高
    sizes.width = window.innerWidth;
    sizes.height = window.innerHeight;
    //更新相机
    camera.aspect = sizes.width / sizes.height;
    //重新渲染
    camera.updateProjectionMatrix();
    renderer.setSize(sizes.width, sizes.height)
})

解决像素比

有时候我发现我渲染出来的立方体具有锯齿状的边缘,如何解决?
如果在边缘看到模糊的渲染,是因为在像素比大于1的屏幕上进行测试。
像素比就是一个像素单位在屏幕上有多少物理像素。
要获取当前设备的像素比,我们可以使用window.devicePixelRatio,要相应更新渲染器,我们可以使用renderer.setPixelRatio(...)

//更改像素比
const PixeRatio = window.devicePixelRatio;
renderer.setPixelRatio(devicePixelRatio)

如果在一些像素比达到了5以上的显示器上运行这段代码,就会有些卡顿,可以以像素比2为限制

renderer.setPixelRatio(Math.min(PixeRatio, 2))

同时,也可以将这两行代码放入resize函数中,以便于适应有多个屏幕同时使用的情况

addEventListener('resize', (event) => {
    //更新宽高
    sizes.width = window.innerWidth;
    sizes.height = window.innerHeight;
    //更新相机
    camera.aspect = sizes.width / sizes.height;
    //重新渲染
    camera.updateProjectionMatrix();
    renderer.setSize(sizes.width, sizes.height)
    renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2))
})

双击进入全屏

添加双击事件监听器
要进入全屏模式,请在相关内容上使用requestFullscreen(),也就是<canvas>元素
退出全屏,则使用document.exitFullscreen()

addEventListener('dblclick', (event) => {
    const testDiv = document.querySelector('.test');
    if (!document.fullscreenElement && testDiv) {
        testDiv.requestFullscreen()
    } else {
        document.exitFullscreen()
    }
})

标签:FullScreen,sizes,THREE,像素,height,width,window,renderer,js
From: https://www.cnblogs.com/xxxiCJQ/p/18669223

相关文章

  • 【HarmonyOS NAPI 深度探索4】安装开发环境(Node.js、C++ 编译器、node-gyp)
    【HarmonyOSNAPI深度探索4】安装开发环境(Node.js、C++编译器、node-gyp)要使用N-API开发原生模块,第一步就是配置好开发环境。虽然HarmonyOSNext中提供了DevEco-Studio一站式IDE,可以直接帮助我们完成开发环境的搭建,但是为了更深入的了解NAPI,我们用最原始的编译工具一步......
  • 《Vue.js设计与实现》学习笔记_第二章 框架吗设计的核心要素
    目录1.提升用户的开发体验2.控制框架代码的体积3.框架要做到良好的Tree-Shaking4.框架应该输出怎样的构建产物5.特性开关6.错误处理7.良好的TypeScript类型支持1.提升用户的开发体验提供友好的警告信息有助于开发者快速定位问题。提供必要的警告信息:warn函数......
  • js对DOM 的操作
    js操作的DOM可以分为三个类型1.属性操作2.css类3.样式首先列举一下js获取DOM的方法访问单个元素的方法document.querySelector()document.getElementById()访问所有元素的方法document.querySelectorAll()document.getElementsByClassName()document.getElementsByTag......
  • Vue.js组件开发-实现图片裁剪
    在Vue.js中开发一个图片裁剪组件,可以使用cropperjs库,它是一个功能强大的JavaScript库,专门用于图片裁剪。在Vue项目中,可以通过vue-cropperjs这个Vue包装器来更方便地使用cropperjs。步骤:1.安装依赖首先,需要安装cropperjs和vue-cropperjs:npminstallcropperjsvue-cropperj......
  • JSP篮球论坛网站设计与实现8lb36(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义篮球运动在全球范围内拥有广泛的爱好者群体,他们渴望有一个交流心得、分享比赛视频的互动平台。然而,现有的篮球论坛大多功能单一......
  • JSP昆明城市学院勤工俭学网emasw--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着高等教育的普及,越来越多的学生选择通过勤工俭学来减轻家庭经济负担并积累实践经验。昆明城市学院作为一所位于昆明市的高校,学生勤......
  • JSP老年保健品销售系统97578--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、课题背景及意义随着人口老龄化的加剧,老年保健品市场需求不断增长。然而,传统的销售方式已经无法满足现代老年人的购物需求。因此,开发一个高效、......
  • JSP篮球学员信息管理系统i5o70(程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、项目背景与意义随着篮球运动的普......
  • JSP兰州市邮政公司新邮预订户管理信息系统pk277(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、课题名称兰州市邮政公司新邮预订户管理信息系统二、研究背景与意义随着电子商务的快速发展和人们对快递服务需求的增加,邮政公司成为现代社会......
  • JSP课堂考勤管理系统(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、项目背景随着教育信息化的快速发......