three.js实现扩散波效果

news2024/11/18 7:44:04

three.js实现扩散波效果

图例

在这里插入图片描述

步骤

  1. 创建一个圆柱,不要顶与底面
  2. 材质允许透明,双面显示
  3. 动态修改缩放与透明度

代码

<template>
  <div class="app">
    <div ref="canvesRef" class="canvas-wrap"></div>
  </div>
</template>

<script setup>
import { ref, onMounted } from "vue";
import * as THREE from "three";
import { OrbitControls } from "three/addons/controls/OrbitControls.js";

const canvesRef = ref(null);
const canvasWidth = window.innerWidth;
const canvasHeight = window.innerHeight;
let scene;
let camera;
let renderer;
let axesHelper;
let cameraControls;
let mesh;
let s = 0; // 缩放
let p = 160; // 透明度
init();
render();
function init() {
  // 场景
  scene = new THREE.Scene();

  // 相机
  camera = new THREE.PerspectiveCamera(
    45,
    canvasWidth / canvasHeight,
    1,
    10000
  );
  camera.position.set(600, 600, 600);
  camera.lookAt(0, 0, 0);
  // 模型
  addModel();
  // 坐标辅助对象
  axesHelper = new THREE.AxesHelper(200);
  scene.add(axesHelper);

  // 渲染器
  //antialias - 是否执行抗锯齿。默认为false.
  renderer = new THREE.WebGLRenderer();
  renderer.setSize(canvasWidth, canvasHeight);
  // 相机轨道控制器
  cameraControls = new OrbitControls(camera, renderer.domElement);
}

function addModel() {
  const g = new THREE.CylinderGeometry(50, 50, 20, 32, 1, true);
  const m = new THREE.MeshBasicMaterial({
    color: 0x00ffff,
    side: THREE.DoubleSide,
    transparent: true,
  });
  mesh = new THREE.Mesh(g, m);
  mesh.position.set(0, 10, 0);
  scene.add(mesh);
  console.log(mesh);
}

function render() {
  if (s > 160) {
    s = 0;
    p = 160;
  }
  mesh.scale.set(1 + s / 60, 1, 1 + s / 60);
  mesh.material.opacity = p / 160;
  s++;
  p--;
  renderer.render(scene, camera);
  requestAnimationFrame(render);
}
onMounted(() => {
  canvesRef.value.appendChild(renderer.domElement);
});
</script>

<style lang="scss" scoped>
.app {
  position: relative;
}
</style>

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

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

相关文章

软件测试|SQL中的UNION和UNION ALL详解

简介 在SQL&#xff08;结构化查询语言&#xff09;中&#xff0c;UNION和UNION ALL是用于合并查询结果集的两个关键字。它们在数据库查询中非常常用&#xff0c;但它们之间有一些重要的区别。在本文中&#xff0c;我们将深入探讨UNION和UNION ALL的含义、用法以及它们之间的区…

应对 DevOps 中的技术债务:创新与稳定性的微妙平衡

技术性债务在DevOps到底意味着什么&#xff1f;从本质上讲&#xff0c;这是小的开发缺陷的积累&#xff0c;需要不断地返工。它可能由多种原因引起&#xff0c;例如快速交付新功能的压力&#xff0c;这可能会导致团队不得不牺牲代码的整洁和完善。但这些不完整的小代码&#xf…

湖南大学-数据库系统-2017期末考试解析

【写在前面】 这是2017年的卷子&#xff0c;复习备考的时候做了并与同学校对了答案。答案仅供参考。这张难度不大&#xff0c;比起前一年的并没有增加什么知识点。 一、 单选题&#xff08;每小题 2 分&#xff0c;共 20 分&#xff09; 1 、数据库的概念模型独立于&#xff…

这个门禁监控技术,好用好用极了!!

随着科技的迅猛发展&#xff0c;门禁监控技术在各行各业得到了广泛的应用。门禁监控系统不仅提高了安全性&#xff0c;还为管理人员提供了更为便捷和高效的管理手段。 客户案例 企业大厦安全管理 深圳某高层企业大厦面临着人员流动频繁、安全隐患较多的挑战。通过部署泛地缘科…

数字后端设计实现之自动化useful skew技术(Concurrent Clock Data)

在数字IC后端设计实现过程中&#xff0c;我们一直强调做时钟树综合要把clock skew做到最小。原因是clock skew的存在对整体设计的timing是不利的。 但是具体到某些timing path&#xff0c;可能它的local clock skew对timing是有帮助的&#xff0c;比如如下图所示。 第一级FF到第…

HarmonyOS应用开发学习笔记 UIAbility组件间交互 UIAbility启动,页面跳转结果回调

1、 HarmoryOS Ability页面的生命周期 2、 Component自定义组件 3、HarmonyOS 应用开发学习笔记 ets组件生命周期 4、HarmonyOS 应用开发学习笔记 ets组件样式定义 Styles装饰器&#xff1a;定义组件重用样式 Extend装饰器&#xff1a;定义扩展组件样式 5、HarmonyOS 应用开发…

require.context的作用

1、什么是 require.context 一个 webpack 的 api &#xff0c;通过该函数可以获取一个上下文&#xff0c;从而实现工程自动化&#xff08;遍历文件夹的文件&#xff0c;从中获取指定文件&#xff0c;自动导入模块&#xff09;。 在前端工程中&#xff0c;如果一个文件夹中的模块…

以太网交换机——稳定安全,构筑数据之桥

交换机&#xff0c;起源于集线器和网桥等网络通信设备&#xff0c;它在性能和功能上有了很大的发展&#xff0c;因此逐渐成为搭建网络环境的常用的设备。 随着ChatGPT爆发&#xff0c;因为用户量激增而宕机事件频频发生&#xff0c;云计算应用催生超大规模算力需求&#xff0c;…

基于springboot+html的汽车销售管理系统设计与实现

基于springboothtml的汽车销售管理系统 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 前言 随着汽车市场的快速发展&#xff0c;汽车销售企业面临着越来越大的管理…

速卖通跨境智星:解决IP及环境问题,实现批量注册轻松搞定

如果想要注册大批量的速卖通买家号&#xff0c;关键问题之一就是IP及浏览环境的管理。为了确保每个账号都能独立运行&#xff0c;使用独立的IP是必不可少的。近期&#xff0c;速卖通跨境智星备受关注&#xff0c;支持绑定代理IP&#xff0c;并内置反指纹技术&#xff0c;为用户…

【新华三】IPsec VPN 实验配置(地址固定)

【新华三】IPsec VPN 实验配置&#xff08;地址固定&#xff09; 注意实验需求配置思路配置命令拓扑R1基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA ISP_R2基础配置 R3基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA PCPC1PC2 检查建立成功查看命令清除IKE / IPsec S…

kubernetes Namespace Labels 详解

写在前面&#xff1a;如有问题&#xff0c;以你为准&#xff0c; 目前24年应届生&#xff0c;各位大佬轻喷&#xff0c;部分资料与图片来自网络 内容较长&#xff0c;页面右上角目录方便跳转 namespace 实现资源分组&#xff0c;label实现业务分组 Namespace 基础理论 最重…

Java BIO、NIO(通信/群聊系统、零拷贝)、AIO

Java BIO、NIO(通信/群聊系统、零拷贝)、AIO BIO、NIO、AIO特点和场景 BIO&#xff08;Blocking I/O&#xff09;、NIO&#xff08;Non-blocking I/O&#xff09;、AIO&#xff08;Asynchronous I/O&#xff09;是Java中用于处理I/O操作的三种不同的I/O模型&#xff0c;它们具…

【Spring 篇】深入浅出:用Spring注解开发的奇妙之旅

在编程的世界里&#xff0c;Spring框架如同一位慈祥的导师&#xff0c;为我们打开了无尽可能性的大门。而在Spring的广袤领域中&#xff0c;注解是我们最亲密的伙伴之一。本篇博客将深入浅出地介绍使用Spring注解进行开发的奇妙之旅&#xff0c;为你解开注解的神秘面纱。 前奏…

游泳时用什么耳机听歌好? 口碑最好的游泳耳机分享

在游泳的律动中&#xff0c;欣赏动感音乐或沉浸在激励的声音中&#xff0c;无疑是一种愉悦的体验。因此&#xff0c;在选择一款适合游泳的耳机时&#xff0c;不仅需要考虑音质和舒适度&#xff0c;还要兼顾防水性能&#xff0c;确保在水中也能畅快聆听。本文将为您介绍一些备受…

jupyter内核错误

1、在dos窗口输入以下命令激活环境&#xff1a;anaconda activate 【py环境名&#xff0c;比如py37】&#xff08;目的是新家你一个虚拟环境&#xff09; 2、在虚拟环境py37下安装jupyter notebook&#xff0c;命令&#xff1a;pip install jupyter notebook 3、安装ipykerne…

强化学习的数学原理学习笔记 - 值函数近似(Value Function Approximation)

文章目录 概览&#xff1a;RL方法分类值函数近似&#xff08;Value function approximation&#xff09;Basic idea目标函数&#xff08;objective function&#xff09;优化算法&#xff08;optimization algorithm&#xff09; Sarsa / Q-learning with function approximati…

Windows中处理PySpark报错:SparkException: Python worker failed to connect back

Windows中处理PySpark报错&#xff1a;SparkException: Python worker failed to connect back 这个问题可能是发送在windows10以上的版本&#xff0c;使用datafram的方法是没问题&#xff0c;但是使用rdd算子出现这个问题&#xff0c;报错SparkException: Python worker fail…

企业常用的几种实用的加速FTP传输方式

FTP作为互联网上最早应用的文件传输协议之一&#xff0c;同时也是企业内外常用的文件和数据交换方式。然而&#xff0c;随着数据量的增加和对传输速度、稳定性、安全性等要求的提高&#xff0c;FTP传输面临一系列挑战&#xff0c;给企业的业务效率和数据安全带来了困扰。本文将…

大数据深度学习长短时记忆网络(LSTM):从理论到PyTorch实战演示

文章目录 大数据深度学习长短时记忆网络&#xff08;LSTM&#xff09;&#xff1a;从理论到PyTorch实战演示1. LSTM的背景人工神经网络的进化循环神经网络&#xff08;RNN&#xff09;的局限性LSTM的提出背景 2. LSTM的基础理论2.1 LSTM的数学原理遗忘门&#xff08;Forget Gat…