three.js如何实现简易3D机房?(二)模型加载的过渡动画

接上一篇: 

three.js如何实现简易3D机房?(一)基础准备-下:http://t.csdnimg.cn/TTI1P

目录

六、自定义过渡动画

1.过渡动画组件 

2.模型加载时使用


根据模型大小,可以自定义模型加载的过渡动画效果,由于公司和本人设备配置有限,我这个模型才26M,打开都要至少加载一分钟。。。(大家配置高、网速快的当我没说)

六、自定义过渡动画

1.过渡动画组件 

在component/loading.vue文件中

<!--
 * @Description: 模型加载过渡动画
 * @FilePath: \hk-computerRoom-Security\src\views\home\component\loading.vue
 * @Date: 2024-02-02 15:29:56
 * @LastEditTime: 2024-02-02 15:55:12
-->
<template>
	<div id="loading-mark" v-if="props.loading">
		<div class="loading-box">
			<div class="loading">
				<img src="../../../assets/images/home/threeD/loading.svg" />
				<div class="progress-txt">
					当前模型已加载 <b>{{ props.percentage }}</b> %
				</div>
				<div class="loading-txt">模型文件首次加载时间较长请耐心等待.....</div>
			</div>
		</div>
	</div>
</template>
<script setup lang="ts">
const props = defineProps({
	percentage: {
		type: Number,
		default: 0,
	},
	loading: {
		type: Boolean,
		default: false,
	},
});
</script>
<style scoped lang="scss">
#loading-mark {
	position: absolute;
	width: 100%;
	height: 100%;
	z-index: 2000;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;

	.loading-box {
		width: 100%;
		height: 100%;
		display: flex;
		justify-content: center;
		align-items: center;
		transition: opacity 0.3s;
		background-color: rgb(0 0 0 / 64%);

		.loading {
			width: 320px;
			height: 120px;
			text-align: center;
		}
		.progress-txt {
			font-size: 18px;
			font-weight: bold;
			color: #327cec;
			b {
				color: #9dadba;
			}
		}
		.loading-txt {
			margin-top: 10px;
			text-align: center;
			font-size: 14px;
			color: #327cec;
			font-weight: bold;
		}
	}
}
</style>
2.模型加载时使用

在index.vue中(css代码就不展示了哈)

在模型加载函数中,计算出模型实时加载进度即可,关键代码如下:

完整代码: 

// 导入模型
const importModel = () => {
	loader.load(
		'model/room1.glb',
		(gltf: any) => {
			model = gltf.scene;
			model.rotation.set(0, -Math.PI / 12, 0);
			model.position.set(0, -5, 0);
			model.traverse(function (child: any) {
				if (child.isMesh) {
					// 1.去掉文字
					if (child.name == 'Text') child.visible = false;
					// 2.修复设备颜色偏暗的问题
					if (child.parent.name.includes('AU')) {
						child.frustumCulled = false;
						//模型阴影
						child.castShadow = true;
						//模型自发光
						child.material.emissive = child.material.color;
						child.material.emissive.setHSL(1, 0, 0.35);
						child.material.emissiveMap = child.material.map;
					}
				}
			});
			// create3DDialog();
			scene.add(model);
		},
		(xhr: any) => {
			// 计算加载进度百分比
			state.progress = Math.floor((xhr.loaded / xhr.total) * 100);
			if (state.progress == 100) state.loading = false;
		},
		// 模型加载错误
		(error: any) => {
			console.log(error, 'error');
		}
	);
};

接下一篇:

three.js如何实现简易3D机房?(三)显示信息弹框/标签:http://t.csdnimg.cn/sXtjv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/433320.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

修改表中某个字段等于另一个字段减去 2 小时的 SQL

需求&#xff1a;将表中到达时间按照客户要求改为比赛时间的提前 N 小时&#xff0c;具体如下&#xff1a; 表结构 update contestSchedule SET mainRefereeArrivalTimeDATE_FORMAT(CONCAT(2024-03-04 ,gameTime)- INTERVAL 2 HOUR, %H:%i), assistantRefereeArrivalTimeDAT…

算法沉淀——贪心算法一(leetcode真题剖析)

算法沉淀——贪心算法一 01.柠檬水找零02.将数组和减半的最少操作次数03.最大数04.摆动序列 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种基于贪心策略的优化算法&#xff0c;它通常用于求解最优化问题&#xff0c;每一步都选择当前状态下的最优解&#xff0c;以期…

动动嘴就能搞研发?百度Comate带你0门槛玩转代码

3月1日&#xff0c;百度旗下智能代码助手Baidu Comate 又添两大重磅能力&#xff1a;“Comate ” 开放平台、AutoWork “私人研发助理”&#xff0c;为行业首家免费开放试用。本次发布&#xff0c;Baidu Comate 将更加贴合软件研发现场&#xff0c;通过易用的研发平台、丰富的插…

Docker的安装跟基础使用一篇文章包会

目录 国内源安装新版本 1、清理环境 2、配置docker yum源 3、安装启动 4、启动Docker服务 5、修改docker数据存放位置 6、配置加速器 现在我们已经完成了docker的安装和初始配置。以下为基本测试使用 自带源安装的版本太低 docker官方源安装的话速度太慢了 所以本篇文…

2023年算法OOA-DBSCAN聚类

2023年算法OOA-DBSCAN聚类 鱼鹰优化算法&#xff08;Osprey optimization algorithm&#xff0c;OOA&#xff09;由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出&#xff0c;其模拟鱼鹰的捕食行为。鱼鹰是鹰形目、鹗科、鹗属的仅有的一种中型猛禽。 DBSCAN聚类算法&#x…

RLNNA-DBSCAN聚类

RLNNA-DBSCAN聚类 RLNNA算法&#xff08;基于强化学习的神经网络优化算法&#xff09;是一种性能较佳的优化算法。DBSCAN聚类算法&#xff08;密度聚类算法&#xff09;是一种基于密度的聚类算法&#xff0c;其主要思想是通过寻找样本点周围的密度可达关系来聚类数据。 使用RL…

小白跟做江科大51单片机之DS1302可调时钟

原理部分 1.DS1302可调时钟介绍 单片机定时器主要占用CPU时间&#xff0c;掉电不能继续运行 图1 2.原理 图2 内部有寄存器&#xff0c;寄存的时候以时分秒寄存&#xff0c;以通信协议实现数据交互&#xff0c;就可以实现对数据进行访问和读写 3.主要寄存器定义 CE芯片使能…

线性代数 --- 特征值与特征向量

特征值与特征向量 已知任意向量x&#xff0c;现有矩阵A对x进行操作后&#xff0c;得到新的向量Ax。这就好比是自变量x与函数f(x)的关系一样&#xff0c;向量x通过类似“函数”的处理得到了一个新的向量Ax。这个新的向量可能和原向量x方向相同&#xff0c;也可能不同(事实上大多…

五、布局布线约束、系统优化参数、时序优化收敛 关键技术点

在实际的工程当中&#xff0c;出现了时序违例的情况如何解决呢&#xff1f; 本章内容将介绍例外约束、布局布线的具体操作&#xff0c;实现系统参数的优化。 **前言:**通过约束时钟&#xff0c;比如基准时钟&#xff0c;和生成时钟&#xff0c;让我们的综合工具知道我们的时序…

2024年阿里Android高级面试题分享,送给正在迷茫的你

前言 很多公司在招人这件事情上都会面临一个问题&#xff1b; “我们的招聘要求又不高&#xff0c;能做项目就行&#xff0c;但为什么就是招不到人&#xff1f;” 很多公司还面临一个问题&#xff0c;招聘的时候这人各方面都不错&#xff0c;但上岗了就是不出活&#xff0c;绩…

2024春招面试,文末有彩蛋

前言 Flutter 作为Google出品的一个新兴的跨平台移动客户端UI开发框架&#xff0c;正在被越来越多的开发者和组织使用&#xff0c;包括阿里的咸鱼、腾讯的微信等。 今天&#xff0c;我主要讲解Flutter中文本组件方面的Widget&#xff0c;包括Text、RichText、TextField&#…

元宇宙线上展厅——如何利用3D展示平台创新吸引客户与展示产品

在数字化转型的浪潮中&#xff0c;元宇宙线上展厅作为一种全新的虚拟展示平台&#xff0c;正以其独特的创新功能和沉浸式体验&#xff0c;吸引着越来越多的企业和用户的目光。 一、元宇宙线上展厅的创新功能 1、沉浸式体验与交互设计 元宇宙线上展厅通过先进的3D建模技术和VR技…

selenium4的相对定位

selenium4相对定位 Selenium 4新增了相对定位器&#xff0c;能帮助用户查找元素附近的其他元素。可用的相对定位器有above、below、toLeftOf、toRightOf、near。在Selenium 4中&#xff0c;find_element方法能够接受一个新方法withTagName&#xff0c;它将返回一个RelativeLoca…

《2023年DDoS攻击现状及趋势报告》

执行概要 与第一季度相比&#xff0c;2023年第二季度的DDoS攻击活动增长了387%。 电信公司遭受的攻击最为频繁&#xff0c;占总攻击量的50%&#xff0c;在2023年上半年发生了超过37,000次攻击&#xff1b;然而&#xff0c;在所有行业中&#xff0c;电信公司的攻击活动在同一时…

mac电脑总卡蓝屏是怎么回事,苹果电脑老卡蓝屏怎么办

电脑老卡蓝屏是比较常见的电脑故障之一&#xff0c;导致这一问题的出现很可能是电脑本身的硬件&#xff0c;或电脑上的驱动安装错误&#xff0c;没法运行&#xff0c;当然也不排除其他的一些因素。虽说电脑蓝屏是电脑几乎都会出现的小毛病&#xff0c;不足以致命&#xff0c;但…

Day19:信息打点-红蓝队自动化项目资产侦察武器库部署企查产权网络空间

目录 各类红蓝队优秀工具项目集合 自动化-武器库部署-F8x 自动化-网络空间-AsamF 自动化-企查信息-ENScan 自动化-综合架构-ARL&Nemo 思维导图 章节知识点 Web&#xff1a;语言/CMS/中间件/数据库/系统/WAF等 系统&#xff1a;操作系统/端口服务/网络环境/防火墙等 应…

一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读

这里写目录标题 前言内容简介作者简介专家推荐读者对象目录直播预告 前言 OpenAI 在 2022 年 11 月推出了人工智能聊天应用—ChatGPT。它具有广泛的应用场景&#xff0c;在多项专业和学术基准测试中表现出的智力水平&#xff0c;不仅接近甚至有时超越了人类的平均水平。这使得 …

垃圾分类网站|基于Springboot框架+java+MYSQL数据库的垃圾分类网站开发设计与实现(可运行源码+数据库+文档)

目录 1.摘 要 2.系统结构设计 3.系统顺序图设计 4.数据库设计 5.系统详细设计 用户前台功能模块 管理员功能模块 垃圾分类管理员功能模块 论文参考 文末获取源码 1.摘 要 本论文主要论述了如何使用JAVA语言开发一个垃圾分类网站 &#xff0c;本系统将严格按照软件开发…

探索直播美颜SDK背后的算法:如何实现高效的美颜处理?

直播中&#xff0c;美颜功能更是成为了吸引用户的一大利器&#xff0c;为了实现这一目标&#xff0c;各大直播平台纷纷推出了美颜功能&#xff0c;而直播美颜SDK背后的算法成为了实现这一功能的关键。 一、美颜算法的重要性 美颜算法在直播美颜SDK中扮演着至关重要的角色。它不…

isNaN和Number.isNaN()的区别

一句话概括&#xff1a; isNaN()会先尝试转换为数字&#xff0c;如果无法转换为数字则返回true&#xff0c;否则返回false Number.isNaN()&#xff1a;直接检查一个值是否为NaN 示例如下&#xff1a; 对于isNaN() NaN直接就返回true "abc"是字符串且无法转换为数…