vue3使用Threejs不生效找不到THREE,换个版本试试

一、版本

“three”: “^0.152.2”,

二、3D粒子波浪效果

<template><div class="LatheBufferGeometry"></div>
</template>
<script>
import * as THREE from "three"
export default {name: 'LatheBufferGeometry',setup() {var SEPARATION = 100, AMOUNTX = 50, AMOUNTY = 50;var container;var camera, scene, renderer;var particles, particle, count = 0;var mouseX = 0, mouseY = 0;var windowHalfX = window.innerWidth / 2;var windowHalfY = window.innerHeight / 2;// setTimeout(() => {//   console.log(THREE)//   init();//   animate();// }, 10000)// function init() {//   container = document.createElement('div');//   document.body.appendChild(container);//   camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);//   camera.position.z = 1000;//   scene = new THREE.Scene();//   particles = new Array();//   var PI2 = Math.PI * 2;//   var material = new THREE.ParticleCanvasMaterial({//     color: 0xffffff,//     program: function (context) {//       context.beginPath();//       context.arc(0, 0, 1, 0, PI2, true);//       context.fill();//     }//   });//   var i = 0;//   for (var ix = 0; ix < AMOUNTX; ix++) {//     for (var iy = 0; iy < AMOUNTY; iy++) {//       particle = particles[i++] = new THREE.Particle(material);//       particle.position.x = ix * SEPARATION - ((AMOUNTX * SEPARATION) / 2);//       particle.position.z = iy * SEPARATION - ((AMOUNTY * SEPARATION) / 2);//       scene.add(particle);//     }//   }//   renderer = new THREE.CanvasRenderer();//   renderer.setSize(window.innerWidth, window.innerHeight);//   container.appendChild(renderer.domElement);//   document.addEventListener('mousemove', onDocumentMouseMove, false);//   document.addEventListener('touchstart', onDocumentTouchStart, false);//   document.addEventListener('touchmove', onDocumentTouchMove, false);//   ////   window.addEventListener('resize', onWindowResize, false);// }// function onWindowResize() {//   windowHalfX = window.innerWidth / 2;//   windowHalfY = window.innerHeight / 2;//   camera.aspect = window.innerWidth / window.innerHeight;//   camera.updateProjectionMatrix();//   renderer.setSize(window.innerWidth, window.innerHeight);// }// //// function onDocumentMouseMove(event) {//   mouseX = event.clientX - windowHalfX;//   mouseY = event.clientY - windowHalfY;// }// function onDocumentTouchStart(event) {//   if (event.touches.length === 1) {//     event.preventDefault();//     mouseX = event.touches[0].pageX - windowHalfX;//     mouseY = event.touches[0].pageY - windowHalfY;//   }// }// function onDocumentTouchMove(event) {//   if (event.touches.length === 1) {//     event.preventDefault();//     mouseX = event.touches[0].pageX - windowHalfX;//     mouseY = event.touches[0].pageY - windowHalfY;//   }// }// //// function animate() {//   requestAnimationFrame(animate);//   render();// }// function render() {//   camera.position.x += (mouseX - camera.position.x) * .05;//   camera.position.y += (- mouseY - camera.position.y) * .05;//   camera.lookAt(scene.position);//   var i = 0;//   for (var ix = 0; ix < AMOUNTX; ix++) {//     for (var iy = 0; iy < AMOUNTY; iy++) {//       particle = particles[i++];//       particle.position.y = (Math.sin((ix + count) * 0.3) * 50) + (Math.sin((iy + count) * 0.5) * 50);//       particle.scale.x = particle.scale.y = (Math.sin((ix + count) * 0.3) + 1) * 2 + (Math.sin((iy + count) * 0.5) + 1) * 2;//     }//   }//   renderer.render(scene, camera);//   count += 0.1;// }const init = () => {container = document.createElement('div')document.body.appendChild(container)camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000)camera.position.z = 1000scene = new THREE.Scene()// 添加背景图// const texture = new THREE.TextureLoader().load(require('../assets/img/index/home-bg.png'))// scene.background = textureparticles = []const PI2 = Math.PI * 1const material = new THREE.SpriteMaterial({color: '#DFF9FE',program: (context) => {context.beginPath()context.arc(0, 0, 1, 0, PI2, true)context.fill()}})let i = 0for (let ix = 0; ix < AMOUNTX; ix++) {for (let iy = 0; iy < AMOUNTY; iy++) {particle = particles[i++] = new THREE.Sprite(material)particle.position.x = ix * SEPARATION - ((AMOUNTX * SEPARATION) / 2)particle.position.z = iy * SEPARATION - ((AMOUNTY * SEPARATION) / 2)scene.add(particle)}}renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true })// 设置透明度renderer.setClearAlpha(0.2)renderer.setSize(window.innerWidth, window.innerHeight)container.appendChild(renderer.domElement)document.addEventListener('mousemove', onDocumentMouseMove, false)document.addEventListener('touchstart', onDocumentTouchStart, false)document.addEventListener('touchmove', onDocumentTouchMove, false)window.addEventListener('resize', onWindowResize, false)}const onWindowResize = () => {windowHalfX = window.innerWidth / 2windowHalfY = window.innerHeight / 2camera.aspect = window.innerWidth / window.innerHeightcamera.updateProjectionMatrix()renderer.setSize(window.innerWidth, window.innerHeight)}const onDocumentMouseMove = (event) => {mouseX = event.clientX - windowHalfXmouseY = event.clientY - windowHalfY}const onDocumentTouchStart = (event) => {if (event.touches.length === 1) {event.preventDefault()mouseX = event.touches[0].pageX - windowHalfXmouseY = event.touches[0].pageY - windowHalfY}}const onDocumentTouchMove = (event) => {if (event.touches.length === 1) {event.preventDefault()mouseX = event.touches[0].pageX - windowHalfXmouseY = event.touches[0].pageY - windowHalfY}}const animate = () => {// stats.begin()// stats.end()requestAnimationFrame(animate)render()}const render = () => {camera.position.x += (mouseX - camera.position.x) * 0.05camera.position.y += (-mouseY - camera.position.y) * 0.05camera.lookAt(scene.position)let i = 0for (let ix = 0; ix < AMOUNTX; ix++) {for (let iy = 0; iy < AMOUNTY; iy++) {particle = particles[i++]particle.position.y = (Math.sin((ix + count) * 0.3) * 50) + (Math.sin((iy + count) * 0.5) * 50)particle.scale.x = particle.scale.y = (Math.sin((ix + count) * 0.3) + 1) * 2 + (Math.sin((iy + count) * 0.5) + 1) * 2}}renderer.render(scene, camera)count += 0.1}setTimeout(() => {console.log(THREE)// 初始化init()animate()}, 1000)}
}
</script>

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

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

相关文章

C++11包装器function

知识回顾&#xff1a; 在C中我们要调用一个函数是需要用到函数指针 在C中我们调用一个函数有两种方法。1.仿函数。2.lambda 多种方式在调用时&#xff0c;就会出现多种情况&#xff0c;为方便接收&#xff0c;C11引出包装器的概念 std::function类模板函数是一个通用的可调用…

解决 ModuleNotFoundError: No module named

解决 ModuleNotFoundError: No module named &#x1f4bb; 解决 ModuleNotFoundError: No module named摘要引言正文内容&#x1f914; 报错问题解决思路解决方法1. 确认模块是否已安装2. 确认模块是否在当前Python环境中可用3. 检查模块的导入名称4. 检查Python路径5. 检查操…

论文辅导 | 基于K-means聚类和ELM神经网络的养殖水质溶解氧预测

辅导文章 模型描述 1&#xff09;相似度统计量构造。数据归一化后&#xff0c;利用皮尔森相关系数确定环境因子权重&#xff0c;构造相似日的统计量&#xff0d;相似度。 2&#xff09;K-means 聚类。根据相似度应用 K-means 聚类法对历史日数据样本聚类&#xff0c;找出合适样…

SQLite 与 Python:集成与使用

SQLite 与 Python:集成与使用 SQLite 是一种轻量级的数据库管理系统,而 Python 是一种广泛使用的高级编程语言。这两种技术可以很好地结合在一起,为开发者提供强大的数据管理能力。本文将探讨如何在 Python 中集成和使用 SQLite,包括基本概念、安装过程、关键函数以及实际…

MC进样管PFA塑料管NEPTUNE Plus多接收等离子质谱仪配套管子

PFA进样管可适配Neptune plus多接收器等离子质谱仪&#xff08;MC-ICP-MS&#xff09;&#xff0c;广泛应用于地球化学、核保障、环境科学、金属组学领域&#xff0c;在生物、物理、化学、材料等多个学科的交叉方向也有良好的应用前景。 外观半透明&#xff0c;便于观察管内情况…

基于SpringBoot+Vue农产品管理与销售APP设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

Redis变慢了?之三

Redis变慢了&#xff1f;之三 Redis变慢了fork耗时优化方案 AOFAOF策略对性能影响 最后 Redis变慢了 Redis变慢上一篇文章地址&#xff1a;Redis变慢了&#xff1f;之二 这篇文章继续Redis变慢情况的分析。 fork耗时 在 Redis 中&#xff0c;fork 是一个非常重要的操作&…

【安全函数】常用的安全函数的使用

前言 本文章描述常用的不安全函数与对应的安全函数的使用。 不安全函数原型参考菜鸟教程。 不安全函数与相应的安全函数 输入输出 sprintf 功能 发送格式化输出到 str 所指向的字符串sprintf()函数 C 标准库 #include <stdio.h>函数原型 int sprintf(char *str,…

【C++】list 容器的增删改查---模拟实现(图例超详细解析!!!)

目录 一、前言 二、 list 容器的模拟实现思 ✨ 模块分析 ✨ 作用分析 三、list的节点类设计 四、list 的迭代器类设计 ⭐ 迭代器类--存在的意义 ⭐ 迭代器类--模拟实现 &#x1f4a6; 模板参数 和 成员变量 &#x1f4a6; 构造函数 &#x1f4a6; 运算符的重载 &…

Rancher注册已有k8s集群

Rancher安装后注册K8s集群操作 1.Rancher安装 编辑docker—compose文件 version: 3.8services:rancher:image: registry.cn-hangzhou.aliyuncs.com/rancher-images/rancher:v2.8.5container_name: rancherprivileged: truerestart: unless-stoppedports:- "18080:80&qu…

昨天发的 npm 包,却因为 registry 同步问题无法安装使用

用过 HBuilderX 云打包的都知道&#xff0c;云上面的 Android 环境很有限&#xff0c;其实并不能覆盖 uniapp 生态所有的版本&#xff0c;甚至说只能覆盖最新的一两个版本。 如果你需要用到 HBuilderX 安卓云打包&#xff0c;就必须及时跟进 HBuilderX 的版本更新&#xff0c;…

全面升级,票据识别新纪元:合合信息TextIn多票识别2.0

票据识别 - 自动化业务的守门员 发票、票据识别&#xff0c;是OCR技术和RPA、CMS系统结合的一个典型场景&#xff0c;从覆盖率、覆盖面的角度来说&#xff0c;应该也是结合得最成功的场景之一。 产品简介 国内通用票据识别V2.0&#xff08;简称“多票识别2.0”&#xff09;是…

Java 集合框架详谈及代码分析(Iterable->Collection->List、Set->各接口实现类、Map->各接口实现类)

目录 Java 集合框架详谈及代码分析&#xff08;Iterable->Collection->List、Set->各接口实现类、Map->各接口实现类&#xff09;1、集合概述1-1&#xff1a;Java 集合概述1-2&#xff1a;List、Set、Map 三者的区别&#xff1f;1-3&#xff1a;集合框架底层数据结…

腾讯云[HiFlow】| 自动化 -------HiFlow:还在复制粘贴?

文章目录 前言&#xff1a;一&#xff1a;HiFlow是什么二&#xff1a;功能介绍1.全连接2.自动化2.1定时处理特定任务2.2实时同步变更信息2.3及时获取通知提醒 3.零代码4.多场景5.可信赖 三&#xff1a;用户体验最后 前言&#xff1a; 随着网络时代的不断发展&#xff0c;自动化…

KEYSIGHT是德E5063A网络分析仪

主要功能特性 E5061B 选择50或75Q输入 使用低频-射频选件(选件3L5/3L4/3L3)满足各类应用需求 频率最低达到5Hz 网络分析和阻抗分析相结合(需要选件005) 支持BenchVue 软件 E5063A 2端口&#xff0c;50Q&#xff0c;S参数测试仪 选择最适合您的测试需求和预算的VNA频率选件&…

spark学习总结

系列文章目录 第1天总结&#xff1a;spark基础学习 1- Spark基本介绍&#xff08;了解&#xff09;2- Spark入门案例&#xff08;掌握&#xff09;3- 常见面试题&#xff08;掌握&#xff09; 文章目录 系列文章目录前言一、Spark基本介绍1、Spark是什么1.1 定义1.2 Spark与M…

Want 概述

一、Want概述 1.1、Want的用途 在Stage模型中&#xff0c;Want是对象间信息传递的载体&#xff0c;可以用在应用组件间的信息传递。相当于FA模型的Intent。作为startAbility的参数&#xff0c;包含指定的启动目标&#xff0c;以及启动时需要携带的相关数据&#xff08;bundle…

如何在2分钟内测出浓香型白酒的年份?

执笔 | 敏 敏 编辑 | 古利特 金庸先生所著的武侠小说《射雕英雄传》第十二回中&#xff0c;“北丐”洪七公在教授郭靖降龙十八掌时&#xff0c;用陈年美酒形容“亢龙有悔”——“&#xff08;亢龙有悔&#xff09;好比陈年美酒&#xff0c;上口不辣&#xff0c;后劲却醇厚无比…

【机器学习】使用Python实现图神经网络(GNN):图结构数据的分析与应用

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、图神经网络的基础知识1. 图的基本概念和术语2. 传统的图分析方法3. 图神经网络的基本原理4. GNN的基本模型 三、主要的图神经网络模型1. 图卷积网络&#xff08;Graph Convolutional Network, GCN&#xff09;2…

签约+1!鼎鼎安全选择 TDengine Cloud 优化智能空闸开关

近日&#xff0c;全托管的物联网、工业大数据云服务平台 TDengine Cloud 又增加了一项新签约&#xff0c;成功应用于青岛鼎鼎安全技术有限公司智能空闸开关项目中。 据了解&#xff0c;在此次合作中&#xff0c;鼎鼎安全将其知名产品——智能空闸开关与 TDengine 的实时存储技术…