Three.js教程:Canvas画布布局和全屏

news/2024/11/17 15:57:59/
推荐:将 NSDT场景编辑器 加入你的3D工具链
其他系列工具: NSDT简石数字孪生

Canvas画布布局和全屏

threejs渲染输出的结果就是一个Cavnas画布,canvas画布也是HTML的元素之一,这意味着three.js渲染结果的布局和普通web前端习惯是一样的。

通过renderer.domElement属性可以访问threejs的渲染结果,也就是HTML的元素canvas画布。

非全屏局部布局

你可以把threejs的渲染结果renderer.domElement,插入到web页面上任何一个元素中,只要符合你项目的布局规则即可。

<div id="webgl" style="margin-top: 100px;margin-left: 200px;"></div>
<script type="module">
// width和height用来设置Three.js输出的Canvas画布尺寸(像素px)
const width = 800; //宽度
const height = 500; //高度const camera = new THREE.PerspectiveCamera(30, width / height, 1, 3000);/*** 创建渲染器对象*/
const renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height); //设置three.js渲染区域的尺寸(像素px)
renderer.render(scene, camera); //执行渲染操作
//three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中
// document.body.appendChild(renderer.domElement);
document.getElementById('wegbl').appendChild(renderer.domElement);

全屏渲染

// width和height用来设置Three.js输出的Canvas画布尺寸(像素px)
const width = window.innerWidth; //窗口文档显示区的宽度作为画布宽度
const height = window.innerHeight; //窗口文档显示区的高度作为画布高度
const renderer = new THREE.WebGLRenderer();
document.body.appendChild(renderer.domElement);

全屏布局注意CSS的设置。

<style>body{overflow: hidden;margin: 0px;}
</style>

canvas画布宽高度动态变化

canvas画布宽高度动态变化,需要更新相机和渲染的参数,否则无法正常渲染。

// onresize 事件会在窗口被调整大小时发生
window.onresize = function () {// 重置渲染器输出画布canvas尺寸renderer.setSize(window.innerWidth, window.innerHeight);// 全屏情况下:设置观察范围长宽比aspect为窗口宽高比camera.aspect = window.innerWidth / window.innerHeight;// 渲染器执行render方法的时候会读取相机对象的投影矩阵属性projectionMatrix// 但是不会每渲染一帧,就通过相机的属性计算投影矩阵(节约计算资源)// 如果相机的一些属性发生了变化,需要执行updateProjectionMatrix ()方法更新相机的投影矩阵camera.updateProjectionMatrix();
};

3D建模学习工作室

上一篇:Three.js教程:动画渲染循环 (mvrlink.com)

下一篇:Three.js教程:stats性能监视器 (mvrlink.com)

 


http://www.ppmy.cn/news/484996.html

相关文章

Android studio自动登录和记住密码的实现

Android studio自动登录和记住密码的实现 文章目录 Android studio自动登录和记住密码的实现前言一、效果二、设计思路三、知识点介绍1. SharedPreferenced2. checkButton就不介绍了 四、自动登录及记住密码实现总结与补充 前言 大家好&#xff0c;我是oy&#xff0c;今天介绍…

dell屏幕亮度调节不了_戴尔笔记本无法调节亮度怎么办?如何找回调节亮度?

笔记本调节亮度的拉条不见了&#xff0c;无法调节亮度怎么办&#xff0c;也找不到了。键盘上的快捷键调节亮度也不行了。小编的电脑是戴尔的&#xff0c;所以以戴尔为例。为大家介绍戴尔笔记本无法调节亮度怎么办以及如何找回调节亮度方法介绍&#xff0c;希望能对大家有所帮助…

多功能电压输出家用应急电源设计

摘要 本设计基于STC89C52单片机设计的多功能电压输出应急电源&#xff0c;以应急电源为研究对象&#xff0c;单片机设计为控制集成IC&#xff0c;ADC为模数转换控制模块&#xff0c;无源蜂鸣器作为报警电路。系统分为单片机设计最小系统&#xff0c;AD转换控制模块&#xff0c;…

浏览器向网站或服务器端发出请求时,GET与POST有何区别?

在浏览器向网站或服务器端发出请求时&#xff0c;主要有两种常用的HTTP方法&#xff1a;GET和POST。它们有以下区别&#xff1a; GET方法&#xff1a; GET方法用于从服务器获取资源或数据。当使用GET方法时&#xff0c;浏览器将请求参数附加在URL的查询字符串中&#xff0c;以便…

jQuery 基础语法使用指南

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 1. 引入 jQuery 2. jQuery 语法 3. 选择器 …

单点触摸屏与多点触摸屏的异同

应该通过什么方法来获得多点触摸屏的数据呢&#xff1f; 控制IC与cpu一般来说是通过I2C或者SPI接口来连接。cpu如何得知控制IC有了数据呢&#xff1f;这个地方是通过中断来实现的。当发生中断以后&#xff0c;驱动程序就可以通过I2C或SPI总线来读取控制IC&#xff0c;获取电容屏…

Windows Surface for 多点触摸 简介

最近研究了一下Windows Surface &#xff0c; 很 cool 很炫 &#xff0c;我想这是微软对抗苹果的好东西&#xff0c;这个东西是一个桌面程序&#xff0c;使用Windows7 操作系统就可以&#xff08;我才知道Win7 系统本身是支持多点触摸操作~~~汗&#xff09; Surface 是基于WP…

android---多点触控

1.多点触控的基本概念 /** * ①即便是多个手指触控&#xff0c;仍然只有一个move事件。 * 当第一个手指点击的时候index就为0&#xff0c;当第二个手指点击的时候index就为1 * 当第一个手指抬起的时候&#xff0c;第二个手指的点的index就变成了0 * 这个是和pointerId是不同的&…