效果展示:

鼠标控制

一、鼠标控制 - 轨道控制器(OrbitControls)

        1. 从nodeModules中导入OrbitControls,OrbitControls 是一个附加组件,必须显式导入

import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";

注意:从官网上粘贴的引入路径有时候是不对的,手动从自己的node_modules中找一下OrbitControls.js文件的路径,核实准确才有效。

        2. 通过new OrbitControls实例化一个controls,OrbitControls有两个参数,分别是camera(相机),domElement(用于事件监听的HTML元素,即当下绘制在界面的canvas元素)

const controls  = new OrbitControls(camera, renderer.domElement)

        3. 在动画循环requestAnimationFrame中实时更新,不断加载位置的变化 【方案一】

一般多用【方案一】

function animate() {

        requestAnimationFrame( animate );

        controls.update();

        renderer.render( scene, camera );

}

requestAnimationFrame( animate );

注意:如果此处没有用动画requestAnimationFrame,仅仅只是new OrbitControls(camera, renderer.domElement),则鼠标控制的效果是看不到的,即使鼠标在移动的过程中相机camera的位置是在不断变化的,但这个位置并没实时渲染到canvas上。

        4. 如果不使用requestAnimationFrame进行渲染相机位置的变化,还可以通过监听Orbitcontrol的change事件进行渲染,【方案二】

controls.addEventListener('change',() => {

        renderer.render( scene, camera );

})

        5. 惯性enableDamping(默认为false),鼠标控制相机旋转时,false情况下鼠标抬起的一瞬间,旋转效果就立即停止;设置为true时,必须配合动画requestAnimationFrame,在动画中通过update方法更新控制器,即当鼠标抬起,物体的旋转会有个缓冲过程,慢慢停下(更符合物体运动规律)

const controls  = new OrbitControls(camera, renderer.domElement)
controls.enableDamping = true
controls.addEventListener('change',() => {controls.update();renderer.render( scene, camera );
})

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

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

相关文章

Shortest Routes II(Floyd最短路)

题目描述There are n cities and m roads between them. Your task is to process q queries where you have to determine the length of the shortest route between two given cities.输入The first input line has three integers n, m and q: the number of cities, roads…

分享一个基于Hadoop的二手房销售签约数据分析与可视化系统,基于Python可视化的二手房销售数据分析平台

💕💕作者:计算机源码社 💕💕个人简介:本人八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Spark、hadoop、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题…

STM32的PWM

PWM作为硬件中几乎不可或缺的存在,学会 PWM,等于打通了 STM32 的“定时器体系”。学一次,STM32 全系列(甚至 AVR、PIC、ESP32)都能通用。硬件只要一个 I/O 就能驱动功率模块,非常省成本。不会 PWM&#xff…

OpenCompass傻瓜式入门教程

文章目录1 我也许不是傻瓜,却只想做个傻瓜2 环境要求3 安装3.1 下载源码3.2 创建虚拟环境3.3 安装4 下载数据5 查看支持的模型和数据集6 评测6.1 指定模型路径6.2 指定配置文件6.2.1 评测本地qwen2.5模型6.2.1.1 查看opencompass支持的qwen2.5模型6.2.1.2 创建配置文…

【软件测试】电商购物项目-各个测试点整理(三)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、优惠券的测试点…

流处理、实时分析与RAG驱动的Python ETL框架:构建智能数据管道(上)

> **2025年某电商大促,每秒20万订单涌入系统**——他们的风控团队仅用**47毫秒**就识别出欺诈交易。背后的秘密武器,正是融合流处理、实时分析与RAG的下一代Python ETL框架。 ### 一、范式革命:从批处理到AI增强的ETL 4.0 #### 1.1 数据处理演进史 ```mermaid graph LR …

开源 Arkts 鸿蒙应用 开发(十五)自定义绘图控件--仪表盘

文章的目的为了记录使用Arkts 进行Harmony app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。 相关链接: 开源 Arkts …

​​​​​​​中国工业企业专利及引用被引用数据说明

1319 中国工业企业专利及引用被引用数据说明数据简介专利近年发文趋势及主题分布今天数据皮皮侠团队为大家分享一份2023年12月25日最新更新的中国工业企业专利及引用被引用数据,供大家研究使用。数据来源原始数据来源于国家统计局,由皮皮侠团队整理计算。…

MySQL知识点(上)

MySQL知识点 一:MySQL概述 MySQL是一款开源的数据库软件,是一种关系型数据库管理系统(ROBMS),也叫做表数据库管理系统 如果需要快速安全地处理大量的数据,则必须使用数据库管理系统;任何基于数据…

shell脚本实现sha256sum校验并拷贝校验通过的文件

#!/bin/bash# 目标目录 TARGET_DIR"/appdata/jn1m/versions/old/bin"# 校验文件 CHECKSUM_FILE"checksum.txt"# 检查目标目录是否存在 if [ ! -d "$TARGET_DIR" ]; thenecho "错误:目标目录 $TARGET_DIR 不存在"exit 1 fi#…

中小型泵站物联网智能控制系统解决方案:构建无人值守的自动化泵站体系

一、系统核心架构与功能设计1.物联网感知层设备互联:网关对接压力传感器、超声波液位计、智能电表、振动传感器等,实时采集水泵运行状态(流量、压力、温度、振动)、液位、水质(pH值、浊度)、能耗等关键参数…

网络通信---Axios

1、什么是 Axios? Axios​ 是一个基于 ​Promise​ 的 ​HTTP 客户端,用于浏览器和 Node.js 环境,用来发送 ​HTTP 请求(如 GET、POST、PUT、DELETE 等)​。 它常用于: 向后台 API 发送请求获取数据提交表…

Ubuntu 软件源版本不匹配导致的依赖冲突问题及解决方法

在使用 Ubuntu 系统的过程中,软件包管理是日常操作的重要部分。但有时我们会遇到各种依赖冲突问题,其中软件源与系统版本不匹配是常见且棘手的一种。本文就来详细分享一次因软件源版本不匹配引发的依赖冲突问题,以及具体的解决思路和流程。一…

思考:高速场景的行星轮混动效率如何理解

行星轮混动 E-CVT(电子无级变速器)是一种专为混合动力汽车设计的动力分配系统,其核心原理是通过行星齿轮组和电机的协同工作,实现动力分流与无级变速。 一、核心结构与组成 E-CVT的核心部件包括 行星齿轮组 和 双电机(…

跨域及解决方案

跨域(Cross-Origin)是指浏览器在执行 JavaScript 的时候,因为同源策略(Same-Origin Policy)的限制,阻止了一个网页去请求不同源(域名、端口、协议有任意一个不同)的资源。 1. 什么是…

PCA降维全解析:从原理到实战

一文读懂PCA降维:原理、实现与可视化全解析​本文6000字,涵盖PCA核心原理、数学推导、代码实战及高频面试题,建议收藏阅读​一、为什么需要降维?数据爆炸时代的生存法则当数据集的特征维度激增(如基因数据、推荐系统用…

Kafka工作机制深度解析:Broker、Partition 与消费者组协作原理

🐯 Kafka工作机制深度解析:Broker、Partition 与消费者组协作原理 🏁 前言 Kafka 已成为互联网公司流式数据处理的事实标准,广泛应用于日志收集、实时计算、事件驱动架构等场景。 很多开发者会用 Kafka,但不了解它底…

深入解析live555:开源流媒体框架的技术原理与应用实践

引言:流媒体领域的"老兵"与技术基石 在实时音视频传输技术的发展历程中,live555作为一款诞生于1990年代末的开源项目,至今仍在流媒体服务器、嵌入式设备和安防监控等领域发挥着不可替代的作用。它由Live Networks公司开发并维护&a…

EN55014家用电器、电动工具和类似设备的电磁兼容

一、EN 55014标准定义与属性?EN 55014 是针对家用电器、电动工具及类似设备的电磁兼容(EMC)标准,主要规定了这类产品在电磁骚扰发射(避免干扰其他设备)和抗扰度(抵抗其他设备干扰)方…

python自学笔记9 Seaborn可视化

Seaborn:统计可视化利器 作为基于 Matplotlib 的高级绘图库,有一下功能:一元特征数据 直方图 import matplotlib.pyplot as plt import pandas as pd import seaborn as sns # import os # # 如果文件夹不存在,创建文件夹 # if…