vue3+three.js加载glb模型
<template><div><!-- 亮度调节滑块 --><div class="controls"><label for="brightness">背景光亮度:</label><inputtype="range"id="brightness"v-model="brightness"min="0"max="2"step="0.1"/><span>{{ brightness }}</span></div><div ref="container" className="three-container"></div></div>
</template><script setup>
import {ref, onMounted, onBeforeUnmount, watch} from 'vue';
import * as THREE from 'three';
import {GLTFLoader} from 'three/examples/jsm/loaders/GLTFLoader.js';
import {OrbitControls} from 'three/examples/jsm/controls/OrbitControls.js';// 定义容器引用
const container = ref(null);// 定义 Three.js 相关变量
let scene, camera, renderer, controls, model;// 定义环境光
let ambientLight;// 定义亮度变量
const brightness = ref(1); // 初始亮度为 1// 初始化 Three.js 场景
const initThree = () => {// 创建场景scene = new THREE.Scene();scene.background = new THREE.Color(0xffc0cb); // 淡粉色// 创建相机camera = new THREE.PerspectiveCamera(75,container.value.clientWidth / container.value.clientHeight,0.1,1000);camera.position.set(5, 5, 5);// 创建渲染器renderer = new THREE.WebGLRenderer({antialias: true});renderer.setSize(container.value.clientWidth, container.value.clientHeight);container.value.appendChild(renderer.domElement);// 添加轨道控制器controls = new OrbitControls(camera, renderer.domElement);controls.enableDamping = true;// 添加环境光const ambientLight = new THREE.AmbientLight(0xffffff, brightness.value);scene.add(ambientLight);renderer.toneMapping = THREE.ACESFilmicToneMapping; // 设置色调映射renderer.toneMappingExposure = 1.5; // 增加曝光值// 添加平行光const directionalLight = new THREE.DirectionalLight(0xffffff, 2);directionalLight.position.set(1, 1, 1).normalize();scene.add(directionalLight);
};// 加载 GLB 模型
const loadModel = () => {const loader = new GLTFLoader();loader.load('/api/demo.glb', // 替换为你的 GLB 文件路径(gltf) => {model = gltf.scene;scene.add(model);},undefined,(error) => {console.error('An error happened while loading the model:', error);});
};// 动画循环
const animate = () => {requestAnimationFrame(animate);controls.update();renderer.render(scene, camera);
};// 监听亮度变化
watch(brightness, (newBrightness) => {if (ambientLight) {ambientLight.intensity = newBrightness;}
});// 组件挂载时初始化
onMounted(() => {initThree();loadModel();animate();
});// 组件卸载时清理资源
onBeforeUnmount(() => {if (renderer) {renderer.dispose();}
});
</script><style scoped>
.three-container {width: 100%;height: 100vh;
}
</style>
相关文章:
vue3+three.js加载glb模型
<template><div><!-- 亮度调节滑块 --><div class"controls"><label for"brightness">背景光亮度:</label><inputtype"range"id"brightness"v-model"brightness"min&quo…...

Golang Gin系列-4:Gin Framework入门教程
在本章中,我们将深入研究Gin,一个强大的Go语言web框架。我们将揭示制作一个简单的Gin应用程序的过程,揭示处理路由和请求的复杂性。此外,我们将探索基本中间件的实现,揭示精确定义路由和路由参数的技术。此外ÿ…...

25西湖ctf
2025西湖冬季 图片不全去我blog找👇 25西湖 | DDLS BLOG 文章所有参考将在文末给出 web web1 ssti 太简单的不赘述,知道用就行 {{cycler.__init__.__globals__.__builtins__[__import__](os).popen($(printf "\150\145\141\144\40\57\146\1…...
AI Agent:AutoGPT的使用方法
AutoGPT的使用方法 准备工作: 安装Python:确保你的电脑上安装了Python 3.8或更高版本。获取OpenAI API密钥:访问https://platform.openai.com/account/api-keys获取API密钥,并保存备用。获取Google API及Google Search Engine ID(可选):若要使用谷歌搜索功能,需访问htt…...
2024年博客之星主题创作|Android 开发:前沿技术、跨领域融合与就业技能展望
目录 引言 一、推动 Android 应用创新的核心力量 1.1 人工智能与机器学习的崛起 1.2 增强现实(AR)与虚拟现实(VR)的应用扩展 1.3 5G技术的推动 1.4 跨平台开发技术的成熟 1.4.1 React Native 1.4.2 Flutter 1.4.3 Taro …...
蓝桥杯小白备考指南
一、了解蓝桥杯 蓝桥杯大赛是工业和信息化部人才交流中心举办的全国性专业信息技术赛事 ,旨在促进软件和信息领域专业技术人才培养,提升高校毕业生的就业竞争力。比赛涵盖多个编程语言组别,如 Java、C/C、Python 等。不同组别和参赛类别&…...

面向对象的程序设计:以对象的方式进行思考
1 理解接口与实现的区别 以上一篇文章的电视机需要插电使用的例子继续来讲解: 对电视而言,插电使用,只需要标准的插座即可,具体的电从哪里来,是火力发电厂,或是太阳能发电,亦或是畜电池逆变供电,电视机是不需要关心的。 发电厂或供电设备属于实现,220V交流电插座属于…...

酵母三杂交实验全解析:从技术到应用【泰克生物】
酵母三杂交实验(Yeast Three-Hybrid, Y3H)是酵母双杂交(Y2H)技术的扩展,专门用于研究更复杂的分子相互作用,尤其是小分子与蛋白质间的相互作用。通过引入小分子作为第三方调节因子,酵母三杂交技…...
Git 分支合并
Merge(合并) Merge 是 Git 中最常用的分支合并方式之一。当你想要将一个分支的更改合并到另一个分支时,你可以使用 Merge 操作。 合并步骤: 通常是从开发分支往主分支上合并代码的时候用 merge 1、git checkout master&#x…...
C# 以管理员方式启动程序全解析
引言 在 Windows 应用程序开发的领域中,C# 语言凭借其强大的功能和广泛的适用性,被众多开发者所青睐。然而,在实际的开发过程里,我们常常会遭遇这样的情况:程序需要访问特定的系统资源,像是系统文件夹、注…...

CSS:语法、样式表、选择器
目录 一、语法 二、创建 外部样式表 内部样式表 内联样式 三、选择器 ID选择器 类选择器 伪类选择器 :hover a:link a:active a:visited 属性选择器 伪元素选择器 ::first-letter ::first-line ::selection ::placeholder ::before 和::after 通配选择器 标…...

python轻量级框架-flask
简述 Flask 是 Python 生态圈中一个基于 Python 的Web 框架。其轻量、模块化和易于扩展的特点导致其被广泛使用,适合快速开发 Web 应用以及构建小型到中型项目。它提供了开发 Web 应用最基础的工具和组件。之所以称为微框架,是因为它与一些大型 Web 框架…...

SQL和MySQL以及DAX的日期表生成?数字型日期?将生成的日期表插入到临时表或者实体表中
几种生成日期表的方法 如何用SQL语句生成日期表呢? 如何用MySQL语句生成日期表呢? 如何用DAX语句生成日期表呢? 1. MySQL生成日期表 1.1 日期格式:yyyy-MM-dd 字符型 2024-01-02 -- 生成日期表 WITH RECURSIVE temp_dateTable …...
文件下载时利用redis的队列模式顺序下载文件,防止多文件任务下载导致OOM
1、controller层控制 Resourceprivate RedissonClient redissonClient;Slf4j Service public class CustomerSettlementExportServiceImpl implements ICustomerSettlementExportService { /*** 文件加入队列顺序导出** param pubFileExportList 参数* return 结果*/public Aja…...
第13章:Python TDD完善货币加法运算(二)
写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…...

两份PDF文档,如何比对差异,快速定位不同之处?
PDF文档比对是通过专门的工具或软件,自动检测两个PDF文件之间的差异,并以可视化的方式展示出来。这些差异可能包括文本内容的修改、图像的变化、表格数据的调整、格式的改变等。比对工具通常会标记出新增、删除或修改的部分,帮助用户快速定位…...

ESP-Skainet语音唤醒技术,设备高效语音识别方案,个性化交互应用
在当今数字化、智能化飞速发展的时代,物联网(IoT)与人工智能(AI)的深度融合正在重塑我们的生活和工作方式。 在智能家居的生态系统中,语音唤醒技术不仅能够为用户提供个性化的服务,还能通过定制…...

地图:nuxt3高德地图简单使用 / nuxt2 + amap
一、官方网站 JS API 安全密钥使用-基础-进阶教程-地图 JS API 2.0 | 高德地图API 二、使用 2.1、创建应用 2.2、添加key,得到key值 2.3、nuxt3项目 引入amap 2.4、pages/map.vue <template><div class"container"><div id"map-co…...
走进DevOps:让开发与运维齐头并进
引言:开发与运维的“世纪和解” 还记得那些年,开发人员总是埋头写代码,然后甩手交给运维去部署,仿佛是把热山芋扔给别人。而运维呢,总是默默承受着系统崩溃、服务停机的风险,直到某一天他们终于忍不住咆哮&…...

力扣动态规划-5【算法学习day.99】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...