three.js中画布自适应屏幕大小和控制场景全屏

设置画布自适应屏幕大小

问题描述: 

        在页面尺寸发生改变的时候,画布并不能自适应的改变尺寸,而出现空白或者滚动条突出的情况。所以监听屏幕大小的改变,来重新设置相机的宽高比例和渲染器的尺寸大小

 

 为浏览器添加监听事件 resize

// 监听画面变化,更新渲染画面
window.addEventListener("resize", () => {
  //   console.log("屏幕大小变化,下面进行自适应操作");

  // 更新摄像头
  //aspect属性是设置摄像机视锥体的长宽比,通常是使用画布的宽/画布的高。
  camera.aspect = window.innerWidth / window.innerHeight;

  //   更新摄像机的投影矩阵
  //camera.updateProjectionMatrix()用于更新摄像机投影矩阵,相机任何参数被改变以后必须被调用
  camera.updateProjectionMatrix();

  //   更新渲染器
  renderer.setSize(window.innerWidth, window.innerHeight);

  //   设置渲染器的像素比
  renderer.setPixelRatio(window.devicePixelRatio);
});

 控制场景全屏

        为窗口绑定事件,如双击。双击场景进入全屏。代码如下:

window.addEventListener("dblclick",()=>{
  //获取全屏元素 fullscreenElement只读属性返回当前在此文档中以全屏模式显示的元素。
  const fullScreenElement = document.fullscreenElement;
  // 使用element.requestFullscreen()方法以全屏模式查看元素,exitFullscreen方法退出全屏
  if(!fullScreenElement){
     // 让场景对象全屏
    renderer.domElement.requestFullscreen()
  }else{
    document.exitFullscreen()
  }
})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Three.js是一个用于创建和展示3D图形的JavaScript。它提供了丰富的功能和工具,使开发者能够在Web浏览器创建交互式的3D场景和动画效果。 要在Three.js创建一个黑色的画布,你可以按照以下步骤进行操作: 1. 创建一个HTML文件,并引入Three.js库: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Three.js Black Canvas</title> <style> body { margin: 0; } canvas { display: block; } </style> </head> <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script> <script> // 在这里编写Three.js代码 </script> </body> </html> ``` 2. 在`<script>`标签编写Three.js代码,创建一个场景、相机和渲染器,并设置背景色为黑色: ```javascript // 创建场景 var scene = new THREE.Scene(); // 创建相机 var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); camera.position.z = 5; // 创建渲染器 var renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); // 设置背景色为黑色 renderer.setClearColor(0x000000, 1); ``` 3. 添加其他需要的Three.js元素,比如几何体、光源等。 4. 渲染场景: ```javascript function animate() { requestAnimationFrame(animate); // 在这里更新场景的元素,比如旋转几何体等 renderer.render(scene, camera); } animate(); ``` 这样,你就可以在浏览器看到一个黑色的Three.js画布了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值