Threejs实现数字孪生, 高速收费站, 汽车模型

threejs三大要素

场景 相机 渲染器

// 场景
const scene = new THREE.Scene();
scene.background = new THREE.Color("#cccccc")
scene.environment = "#cccccc"
// 相机
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(0, 8, 45);
// 渲染器
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;

开启灯光

// 灯光
// 前灯光
const light1 = new THREE.DirectionalLight(0xffffff, 1)
light1.position.set(0, 0, 10)
scene.add(light1)
// 后灯光
const light2 = new THREE.DirectionalLight(0xffffff, 1)
light2.position.set(0, 0, -10)
scene.add(light2)
// 左灯光
const light3 = new THREE.DirectionalLight(0xffffff, 1)
light3.position.set(-10, 0, 0)
scene.add(light3)
// 右灯光
const light4 = new THREE.DirectionalLight(0xffffff, 1)
light4.position.set(10, 0, 0)
scene.add(light4)
// 上灯光
const light5 = new THREE.DirectionalLight(0xffffff, 1)
light5.position.set(0, 10, 0)
scene.add(light5)

加载模型

const loader = new GLTFLoader()
const dracoLoader = new DRACOLoader();
dracoLoader.setDecoderPath("/draco/gltf/");
loader.setDRACOLoader(dracoLoader);
//后续可以加载各种模型
// 警车
let policeCars;
loader.load('/public/shoufeizhan/警车.glb', gltf => {policeCars = gltf.scene.children[0]scene.add(policeCars)
})
// 客车
let coachCar;
loader.load('/public/shoufeizhan/客车.glb', gltf => {coachCar = gltf.scenescene.add(coachCar)
})loader.load('/public/shoufeizhan/收费站.glb', gltf => {console.log(gltf);const model = gltf.scenemodel.traverse(child => {if (child.name.includes('通行杆')) {child.castShadow = truechild.receiveShadow = truechild.children.forEach(c => {c.isRotated = false})passagePoleList = child.children}

动画 Tweenjs

// 栏杆抬起放下的动画
function railingRotation(target) {return new Promise((res, rej) => {const targetRotation = { z: target.isRotated ? 0 : Math.PI / 2 };const rotationTween = new Tween(target.rotation).to(targetRotation, 1000).easing(TWEEN.Easing.Quadratic.InOut).start()tweens.push(rotationTween)rotationTween.onComplete(() => {target.isRotated = !target.isRotated})})
}

最终实现

高速收费站实现

在这里插入图片描述

由于demo涉及较多glb模型 gltf模型 占用内存较大 代码量也大 可以添加一下微信 备注threejs 发完整的项目zip包

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乡村振兴的乡村人才振兴计划:培养乡村人才,吸引人才回流,激发乡村发展活力,为美丽乡村建设提供人才保障

目录 一、引言 二、乡村人才振兴计划的必要性 (一)乡村发展面临的人才困境 (二)人才振兴对乡村振兴的推动作用 三、乡村人才振兴计划的实施路径 (一)加强乡村教育体系建设 (二&#xff0…

【软考网络工程师】每日练题学知识

1.在EIGRP协议中,某个路由器收到了两条路径到达目标网络,路径1的带宽为100Mbps,延迟2ms,路径2的带宽为50Mbps,迟为4ms,如果EIGRP使用带宽和延迟的综合度量标准,那么该路由器选择的最佳路径是&am…

构建滴滴业务中台:系统架构设计探索

在当今数字化时代,滴滴作为中国领先的出行平台,承载着数亿用户的出行需求,业务规模庞大且复杂多样。为了更好地支撑业务发展和提升服务质量,滴滴不断探索和构建业务中台,以实现业务的快速响应、灵活运营和持续创新。在…

Elastic 将于 2024 年 5 月 25 日在上海举行线下 Meetup

2024 Elastic Meetup 上海站活动,由 Elastic、悦高软件、新智锦绣联合举办,现诚邀广大技术爱好者及开发者参加。 活动时间 2024 年 5 月 25 日 13:30-18:00 活动地点 中国上海 上海市黄浦区北京东路668号科技京城G座7楼 活动流程 13:30-14:00 入场 14…

ranger 队列划分和权限管控方法

创建用户 创建用户ngk【KDE首页->租户管理->集群用户->添加用户】: 创建用户组ngk_group并绑定 ngk用户【KDE首页->租户管理->集群用户->添加用户组】: 创建角色,并绑定用户组 ngk_group 【KDE首页->租户管理->集群用户->添加角色】: 创建队列…

【C++】可变参数模板简单介绍

前言 可变参数模板是C11中的新特性,它能够让我们创建可以接收可变参数的函数模板和类模板,相比C98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数是一个巨大的改进,通过系统系统推演数据的类型&#xf…

miniconda环境管理器安装及jupyter下载

1.miniconda简介 Miniconda是一款小巧的python环境管理工具,安装包大约只有50M多点,其安装程序中包含conda软件包管理器和Python。一旦安装了Miniconda,就可以使用conda命令安装任何其他软件工具包并创建环境等。 2.下载miniconda 查看需要的…

基于微信小程序+JAVA Springboot 实现的【停车场小程序】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称: 停车场微信小程序的设计与实现 在当前信息技术飞速发展的背景下,停车场微信小程序的开发成为了一个创新的解决方案,旨在提高停车场管理的效率和用户的停车体验。本项目通过深入分析现有停车场管理系统的不足&#xff0c…

【机器学习】机器学习与人工智能融合新篇章:自适应智能代理在多元化复杂环境中的创新应用与演进趋势

🔒文章目录: 💥1.引言 🚋1.1 机器学习与人工智能的发展背景 🚌1.2 自适应智能代理的概念与重要性 🚐1.3 研究目的与意义 ☔2.自适应智能代理的关键技术 🛣️2.1 环境感知与信息处理技术 …

【前端性能优化】深入解析重绘和回流,构建高性能Web界面

🔥 个人主页:空白诗 文章目录 🎯 引言:探索Web性能的基石🏗️ 基础概念:什么是重绘和回流?📌 回流(Reflow)📌 重绘(Repaint&#xff0…

想跨境出海?云手机提供了一种可能性

全球化时代,越来越多的中国电商开始将目光投向了海外市场。这并不是偶然,而是他们在长期的市场运营中,看到了出海的必要性和潜在的机会。 中国的电商市场无疑是全球最大也最发达的之一。然而,随着市场的不断发展和竞争的日益加剧…

【性能测试】基础知识篇-并发用户、RPS、TPS的解读

本文介绍并发用户、RPS、TPS的基本概念以及三者之间的关系。 术语定义 并发用户:在性能测试工具中,一般称为虚拟用户(Virtual User,简称VU),指的是现实系统中操作业务的用户。 说明 并发用户与注册用户、在…