three.jsgsap滚动交互网页实现 1-模糊背景线条

news/2024/5/19 11:46:00/文章来源:https://blog.csdn.net/printf_hello/article/details/131604253

在这里插入图片描述

实现
模型只有其中的一根线条 加载完模型后 将其圆形排列一周
要实现圆形排列一周可以自己计算sin和cos实现,更简单的可以使用vector3的setFromCylindricalCoords方法实现
该方法计算返回圆柱上的点,圆柱上的点由参数决定
使用方法:

    for (let i = 0; i < 36; i++) {const box = new THREE.Mesh(new THREE.BoxGeometry(1, 1, 0.1),new THREE.MeshStandardMaterial());helper.add(box);box.position.setFromCylindricalCoords(10,(360 / 36) * i * (Math.PI / 180),0);}

即可实现如下排列一周效果
在这里插入图片描述

如果要每个位置朝向内 可以将角度设置给rotation

	box.rotation.y = (360 / 36) * i * (Math.PI / 180);

在这里插入图片描述
应用到模型上
创建一个group作为所有线条的容器方便整体位置调整
并在循环中使用clone方法创建实例 然后设置点的位置
因为模型是横着的 所有将其旋转90度

 helper.loadGltf("/models/line_bg.glb").then((gltf) => {const mesh = gltf.scene.getObjectByName("line_bg") as Mesh;const group = new THREE.Group();helper.add(group);for (let i = 0; i < 36; i++) {const item = mesh.clone();group.add(item);item.position.setFromCylindricalCoords(10,(360 / 36) * i * (Math.PI / 180),0);item.rotateX(Math.PI / 2);}});

如下效果
在这里插入图片描述

让其横过来并让其靠近一点

group.rotateX(Math.PI / 2);
group.position.z = 100;

在这里插入图片描述
调整缩放和一点点位置的偏移让其产生错乱的感觉

item.scale.x = Math.random() * 2;
item.scale.y = Math.random() * 2;
item.position.addScalar((0.5 - Math.random()) * 2);
item.position.z += (0.5 - Math.random()) * 10;

在这里插入图片描述
最后让其之显示中间部分 使用聚光灯SpotLight

const spotLight = new THREE.SpotLight(new THREE.Color("#ffffff"), 2);

将其添加到相机 然后将相机添加到scene中,这样相机更灵活随着视角移动

helper.camera.add(spotLight);
helper.add(helper.camera);

至此并没有什么明显变化
在这里插入图片描述
设置聚光灯的角度,将其照射范围缩小

spotLight.angle = 0.3;

在这里插入图片描述
如此只有中间部分有灯光 才可以显示 但是边缘很硬没有模糊的感觉
设置光影衰减属性默认为0不衰减 取值范围0-1 将其设置为1

spotLight.penumbra = 1;

在这里插入图片描述
ok静态效果实现 下面加入 入场动画 由远及近

gsap.to(group.position, { z: 100, duration: 1 });

请添加图片描述

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

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

相关文章

Pinia基础使用 (vite vue3)

Pinia 概念 是 Vue 的存储库&#xff0c;它允许您跨组件/页面共享状态。 Vue官方推荐状态库 Pinia 的优点 pinia 符合直觉&#xff0c;易于学习。 pinia 是轻量级状态管理工具&#xff0c;大小只有1KB. pinia 模块化设计&#xff0c;方便拆分。 pinia 没有 mutations&#x…

仅个人记录 CMX复现

文章解析(214条消息) CMX: Cross-Modal Fusion for RGB-X SemanticSegmentation with Transformers_cmx: cross-modal fusion for rgb-x semantic segment_翰墨大人的博客-CSDN博客 代码 GitHub - huaaaliu/RGBX_Semantic_Segmentation 一、 环境配置 conda create -n rgbx…

爬虫入门07——requests中携带cookie信息

爬虫入门07——requests中携带cookie信息 对于需要登陆的网站如果不携带cookie是无法获取我们所需内容的就以查看我在CSDN中的订单为例&#xff0c;在登陆后可以查看到订单信息 而当我们使用Python代码发出请求时&#xff0c;是不携带cookie&#xff0c;因此无法拿到订单相关信…

使用 VMware 安装 docker

1、首先创建一个新的虚拟机 &#xff08;1&#xff09;配置自定义就可以 &#xff08;2&#xff09;选择稍后安装 &#xff08;3&#xff09;选择Linux &#xff08;4&#xff09;安装位置自己选择 &#xff08;5&#xff09;处理器数量根据自己电脑来&#xff08;一般2个就够…

【Java EE】-JVM

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【JavaEE】 分享: 雨下整夜 我的爱溢出就像雨水 ——《七里香》 主要内容&#xff1a;JDK&#xff0c;JRE&#xff0c;JVM三者之间的联系。JVM内存区域划分&#xff1a;本地方法栈…

【数据分析 - 基础入门之NumPy③】日常难题解决

知识目录 前言一、启动Jupyter Notebook报错没有这样的目录结语# 往期文章&相关导读 前言 本篇文章用于整理在学习 NumPy 过程中遇到的错误&#xff0c;以此做个记录&#xff0c;希望能帮助到大家&#xff0c;让大家少走弯路。 一、启动Jupyter Notebook报错没有这样的目…

Delphi XE编写OCX控件

1、new->other 2、Active libary 3、再次New->Other,才出现ActiveX组件内容 设置类名及参数

开源预训练框架 MMPRETRAIN官方文档(概览、环境安装与验证、基础用户指南)

MMPretrain是全新升级的开源预训练框架。它已着手提供多个强大的预训练骨干网并支持不同的预训练策略。MMPretrain 源自著名的开源项目 MMClassification 和MMSelfSup&#xff0c;并开发了许多令人兴奋的新功能。目前&#xff0c;预训练阶段对于视觉识别至关重要。凭借丰富而强…

Docker 常用指令集合,更换镜像(Ubantu)

1.更换镜像 先进入root用户 cat /etc/docker/daemon.json 查看有没有镜像创建目录,创建并编辑damon,json文件 mkdir -p /etc/docker vim /etc/docker/daemon.json# 填写内容 {"registry-mirrors": ["https://h5rurp1p.mirror.aliyuncs.com"] } 重新启…

如何从零开始学习自动化测试?终于找到靠谱的教程了

目录 前言 测试基础 Python基础 selenium appium requests unittest 项目实战&#xff1a; 总结&#xff1a; 前言 最近有几个小伙伴在后台给安静私信说&#xff0c;如何学习自动化&#xff0c;不知道如何入手&#xff1f;在网上看的资料都是乱七八糟的&#xff0c;每…

VSCode编译github上面的C++项目

1、下载cmake 在这里下载对应的版本 https://cmake.org/download/ 测试下载的是这个 下载完成后安装&#xff0c;安装都比较简单 2、安装CMake工具扩展 3、安装C扩展 4、下载github项目 例如&#xff1a;下载这个项目 https://gitcode.net/mirrors/zrax/pycdc?utm_source…

使用凌鲨进行数据标注

在AI研发团队中&#xff0c;数据的数量和质量通常比算法本身更重要。为了获得大量高质量的数据&#xff0c;标注软件是必不可少的。目前许多开源标注软件在权限、任务管理和审核方面都存在较大问题。 在凌鲨(linksaas)0.3.8版本中增加了数据标注功能&#xff0c;支持 音频分类…

123.【SpringBoot 源码刨析B】

SpringBoot-核心功能 (三)、SpringBoot核心功能1.配置文件1.1、properties1.2、yaml(1).yaml 简介(2).yaml 基本语法(3).数据类型(4).示列 1.3、配置提示 2.WEB 开发1.SpringMVC自动配置概览2.简单功能分析(1).静态资源访问&#xff08;1.1&#xff09;.静态资源目录&#xff0…

用真人模型制作3D虚拟人物,岂不是更真实?

3D虚拟人物是指利用计算机技术和图形学技术创建的一种能够模拟真实人体形态、行为和语言的虚拟实体。与传统的平面图像或视频不同&#xff0c;3D虚拟人物具有立体感和真实感&#xff0c;能够在虚拟环境中实现人机交互和情感交流&#xff0c;给用户带来全新的沉浸式体验。 随着…

国内环境安装Atlas OS步骤与网络问题解决

国内环境安装Atlas OS步骤与网络问题解决 Atlas 是一个开源、透明的项目&#xff0c;它修改了 Windows&#xff0c;并消除了影响游戏性能的所有负面缺点。我们是减少系统延迟、网络延迟、输入延迟和保持系统私密性的绝佳选择&#xff0c;同时仍然关注性能。我不久前在安装时遇…

【在线文件管理】响应式文件管理AngularJS

目录 1.功能展示截图 2.实现代码 2.1HTML页面代码 2.2后台代码 2.2.1项目结构 2.2.2项目代码 其他问题 1.功能展示截图 项目中需要用到文件管理来自由控制文件的上传、下载、删除等&#xff0c;就想到做一个简单的在线文件管理功能。 支持在线编辑&#xff1a; 2.实现代…

14 MFC多进程

文章目录 创建进程win32子进程内容创建进程传递参数关闭进程通过配置文件读取全部代码 打开进程便利进程 创建进程 分别创建MFC应用程序和Win32应用程序 MFC应用程序界面设置 win32子进程内容 #include <Windows.h> int WINAPI wWinMain(HINSTANCE hInstance, HINSTAN…

Java中的字符串类

提示&#xff1a;字符串类是编程中最常用的一种数据类型&#xff0c;比较重要❗ 文章目录 前言一、字符串类创建对象方式静态创建动态创建 二、String字符串内容不可改变三、字符串常用方法length方法charAt方法substring方法indexOf与lastIndexOfindexOf方法lastIndexOf方法 替…

Rust 动态数组Vec基本概念及其用法

目录 一、基本概念 Vec是什么&#xff1f; Vec的特点 (1)动态大小&#xff1a; (2)可变性&#xff1a; (3)泛型&#xff1a; 二、基础用法 1. 创建 (1) Vec::new()方法 (2) Vec::from()方法 (3) vec! 宏 2. 基础用法 三、Vec的简单实现及其宏模拟 四、leetcode 实…

如何在Linux下搭建接口自动化测试平台

我们今天来学习一下在Linux下如何搭建基于HttpRunner开发的接口自动化测试平台吧&#xff01; 需要在Linux上提前准备的环境&#xff08;下面是本人搭建时的环境&#xff09;&#xff1a; 1&#xff0c;Python 3.6.8 2&#xff0c;MySQL 5.7 一&#xff1a;下载HttpRunner…