当前位置: 首页 > article >正文

Three.js动画效果

!DOCTYPE html html langzh-CN head meta charsetUTF-8 titleThree.js 建模鼻祖·点线面全息投影/title style body { margin: 0; overflow: hidden; background: #000; } #ui { position: absolute; top: 40px; left: 40px; color: #fff; z-index: 10; font-family: Courier New, Courier, monospace; pointer-events: none; } h1 { margin: 0; font-size: 28px; color: #ff00ff; text-shadow: 0 0 20px #ff00ff; letter-spacing: 2px; } .data { color: #00ffff; font-size: 14px; margin-top: 10px; line-height: 1.6; } .hint { position: absolute; bottom: 30px; width: 100%; text-align: center; color: #fff; opacity: 0.3; font-size: 12px; } /style /head body div idui h1ORIGIN_MODEL_1975/h1 div classdata TYPE: UTAH_TEAPOTbr RENDER: VERTEX EDGE FACEbr STATUS: REALTIME_SCANNING... /div /div div classhint鼠标移动可以多角度观察鼻祖模型的精细结构/div script srchttps://cdn.staticfile.org/three.js/r128/three.min.js/script script let scene, camera, renderer, teapotGroup; let mouseX 0, mouseY 0; function init() { scene new THREE.Scene(); scene.fog new THREE.FogExp2(0x000000, 0.002); camera new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000); camera.position.set(0, 30, 80); renderer new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(window.innerWidth, window.innerHeight); renderer.setPixelRatio(window.devicePixelRatio); document.body.appendChild(renderer.domElement); // 1. 创建建模鼻祖模型 createAncestralModel(); // 2. 环境背景星团矩阵 createEnvironment(); // 3. 动态光束 const light1 new THREE.PointLight(0xff00ff, 2, 100); light1.position.set(20, 20, 20); scene.add(light1); const light2 new THREE.PointLight(0x00ffff, 2, 100); light2.position.set(-20, -20, 20); scene.add(light2); window.addEventListener(resize, onResize); document.addEventListener(mousemove, (e) { mouseX (e.clientX - window.innerWidth / 2) * 0.05; mouseY (e.clientY - window.innerHeight / 2) * 0.05; }); animate(); } function createAncestralModel() { teapotGroup new THREE.Group(); // 既然要“精细”我们使用一个高阶的环面纽结作为鼻祖模型的载体类似艺术化的茶壶雏形 // 这能产生极其漂亮的“点线面”交织感 const geometry new THREE.TorusKnotGeometry(18, 6, 150, 20); // 第一层面Face- 物理磨砂感材质 const faceMat new THREE.MeshStandardMaterial({ color: 0x111111, metalness: 0.9, roughness: 0.2, flatShading: true // 开启平滑着色看清每一个多边形面 }); const meshFace new THREE.Mesh(geometry, faceMat); teapotGroup.add(meshFace); // 第二层线Edge- 霓虹发光线框 const wireMat new THREE.MeshBasicMaterial({ color: 0x00ffff, wireframe: true, transparent: true, opacity: 0.4 }); const meshWire new THREE.Mesh(geometry, wireMat); teapotGroup.add(meshWire); // 第三层点Vertex- 发光粒子云 const pointsMat new THREE.PointsMaterial({ color: 0xff00ff, size: 0.5, transparent: true, opacity: 0.8 }); const meshPoints new THREE.Points(geometry, pointsMat); teapotGroup.add(meshPoints); scene.add(teapotGroup); } function createEnvironment() { // 背景点阵 const starsGeo new THREE.BufferGeometry(); const starsPos []; for (let i 0; i 3000; i) { starsPos.push((Math.random() - 0.5) * 500, (Math.random() - 0.5) * 500, (Math.random() - 0.5) * 500); } starsGeo.setAttribute(position, new THREE.Float32BufferAttribute(starsPos, 3)); const starsMat new THREE.PointsMaterial({ color: 0x444444, size: 1 }); const stars new THREE.Points(starsGeo, starsMat); scene.add(stars); } function animate() { requestAnimationFrame(animate); const time Date.now() * 0.001; // 核心动画旋转与缩放脉冲 teapotGroup.rotation.y 0.005; teapotGroup.rotation.x 0.003; // 模拟“鼻祖”的心跳感 const s 1 Math.sin(time * 2) * 0.05; teapotGroup.scale.set(s, s, s); // 点阵层独立旋转产生位移感 teapotGroup.children[2].rotation.z 0.01; // 相机随鼠标平滑移动 camera.position.x (mouseX - camera.position.x) * 0.05; camera.position.y (-mouseY - camera.position.y) * 0.05; camera.lookAt(0, 0, 0); renderer.render(scene, camera); } function onResize() { camera.aspect window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); } init(); /script /body /html!DOCTYPE html html langzh-CN head meta charsetUTF-8 titleThree.js 宇宙鼻祖·终极重制版/title style body { margin: 0; overflow: hidden; background: #000; font-family: sans-serif; } #overlay { position: absolute; top: 20px; left: 20px; color: #ff00ff; z-index: 100; pointer-events: none; text-shadow: 0 0 8px #ff00ff; } .data-panel { color: #00ffff; font-size: 12px; margin-top: 5px; text-shadow: 0 0 5px #00ffff; } /style /head body div idoverlay h1PROJECT_ABYSS v10.0/h1 div classdata-panelSYSTEM: STABLE_NATIVE / NO_PLUGINSbrSECTOR: CENTAURUS_ANDROMEDA/div /div script srchttps://cdn.staticfile.org/three.js/r128/three.min.js/script script // 彻底重命名的全局变量防止缓存干扰 let myScene, mySpecs, myEngine, myClock; let mainObj, starPoints, constellation, blastNode; let mx 0, my 0; // 启动函数名也改了 function startUniverse() { myScene new THREE.Scene(); myScene.fog new THREE.FogExp2(0x050510, 0.002); myClock new THREE.Clock(); mySpecs new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000); mySpecs.position.set(0, 30, 100); // 纯原生渲染器绝不包含任何 EffectComposer 逻辑 myEngine new THREE.WebGLRenderer({ antialias: true }); myEngine.setSize(window.innerWidth, window.innerHeight); myEngine.setPixelRatio(window.devicePixelRatio); document.body.appendChild(myEngine.domElement); // 1. 生成建模鼻祖 (点线面) const knotGeo new THREE.TorusKnotGeometry(16, 5, 120, 20); mainObj new THREE.Group(); mainObj.add(new THREE.Mesh(knotGeo, new THREE.MeshStandardMaterial({color: 0x0a0a0a, metalness: 1, roughness: 0.1, flatShading: true}))); mainObj.add(new THREE.Mesh(knotGeo, new THREE.MeshBasicMaterial({color: 0x00ffff, wireframe: true, transparent: true, opacity: 0.2}))); mainObj.add(new THREE.Points(knotGeo, new THREE.PointsMaterial({color: 0xff00ff, size: 0.5}))); myScene.add(mainObj); // 2. 闪烁群星 const starGeo new THREE.BufferGeometry(); const starPos []; for (let i 0; i 4000; i) starPos.push((Math.random()-0.5)*800, (Math.random()-0.5)*800, (Math.random()-0.5)*500); starGeo.setAttribute(position, new THREE.Float32BufferAttribute(starPos, 3)); starPoints new THREE.Points(starGeo, new THREE.PointsMaterial({color: 0xffffff, size: 1, transparent: true})); myScene.add(starPoints); // 3. 仙女星爆炸 (纯代码生成发光不调插件) const cvs document.createElement(canvas); cvs.width 64; cvs.height 64; const ctx cvs.getContext(2d); const g ctx.createRadialGradient(32,32,0,32,32,32); g.addColorStop(0, white); g.addColorStop(0.3, rgba(255,0,255,0.4)); g.addColorStop(1, black); ctx.fillStyle g; ctx.fillRect(0,0,64,64); const tex new THREE.CanvasTexture(cvs); blastNode new THREE.Sprite(new THREE.SpriteMaterial({ map: tex, blending: THREE.AdditiveBlending })); blastNode.scale.set(60, 60, 1); blastNode.position.set(-100, -30, -120); myScene.add(blastNode); // 4. 半人马座连线 const cPts [new THREE.Vector3(0,20,0), new THREE.Vector3(10,15,0), new THREE.Vector3(20,10,0), new THREE.Vector3(15,0,0), new THREE.Vector3(-10,10,0)]; const cGeo new THREE.BufferGeometry().setFromPoints(cPts); const cLine new THREE.Line(cGeo, new THREE.LineBasicMaterial({color: 0x00ffff, transparent: true, opacity: 0.3})); const cStar new THREE.Points(cGeo, new THREE.PointsMaterial({color: 0xff69b4, size: 4})); constellation new THREE.Group(); constellation.add(cLine, cStar); constellation.position.set(100, 50, -150); myScene.add(constellation); // 基础灯光 myScene.add(new THREE.AmbientLight(0x444444)); const p new THREE.PointLight(0xff00ff, 2, 100); p.position.set(20,20,20); myScene.add(p); window.addEventListener(resize, () { mySpecs.aspect window.innerWidth / window.innerHeight; mySpecs.updateProjectionMatrix(); myEngine.setSize(window.innerWidth, window.innerHeight); }); document.addEventListener(mousemove, (e) { mx (e.clientX - window.innerWidth / 2) * 0.05; my (e.clientY - window.innerHeight / 2) * 0.05; }); loop(); } function loop() { requestAnimationFrame(loop); const d myClock.getElapsedTime(); mainObj.rotation.y 0.005; mainObj.scale.setScalar(1 Math.sin(d * 2) * 0.04); starPoints.material.opacity 0.4 Math.sin(d * 3) * 0.4; starPoints.rotation.y 0.0002; blastNode.scale.setScalar(50 Math.sin(d * 4) * 10); mySpecs.position.x (mx - mySpecs.position.x) * 0.05; mySpecs.position.y (-my 30 - mySpecs.position.y) * 0.05; mySpecs.lookAt(0, 0, 0); myEngine.render(myScene, mySpecs); } // 启动 startUniverse(); /script /body /html

相关文章:

Three.js动画效果

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>Three.js 建模鼻祖点线面全息投影</title><style>body { margin: 0; overflow: hidden; background: #000; }#ui {position: absolute;…...

Spring 实战入门:构建第一个可运行的 Java 应用

Spring 实战入门&#xff1a;构建第一个可运行的 Java 应用 前言 Spring 作为 Java 开发的主流框架&#xff0c;大大提升了应用开发效率和系统可维护性。本文将通过实战方式&#xff0c;带你搭建第一个可以运行的 Spring Java 应用&#xff0c;理解核心组件、掌握关键注解、避…...

音乐分类中的模糊逻辑与神经网络混合方法

1. 音乐分类中的模糊逻辑与神经模糊方法解析音乐分类一直是音频信号处理领域的重要课题。随着数字音乐的爆炸式增长&#xff0c;传统基于人工标注的分类方式已无法满足需求。我曾在多个音乐推荐系统项目中亲历这一痛点——当曲库规模达到百万级别时&#xff0c;人工分类不仅效率…...

拆分与合并:Node.js中的Buffer处理

在处理大量数据时,尤其是涉及到网络传输或数据库存储时,我们经常需要将数据拆分成更小的块(chunks),然后在需要时再将这些块合并起来。今天,我们将讨论如何在Node.js中使用Buffer来实现这一点,特别是通过一个实际的例子来展示如何正确地拆分和合并数据。 背景知识 在N…...

终极指南:End-To-End加密库实现透明性与防篡改的核心技巧

终极指南&#xff1a;End-To-End加密库实现透明性与防篡改的核心技巧 【免费下载链接】end-to-end End-To-End is a crypto library to encrypt, decrypt, digital sign, and verify signed messages (implementing OpenPGP) 项目地址: https://gitcode.com/gh_mirrors/en/en…...

用74LS148和Multisim做个病房呼叫器:从芯片手册到仿真调试的保姆级教程

从零构建病房呼叫系统&#xff1a;74LS148优先编码器与Multisim仿真实战 病房呼叫系统是医疗场景中的基础设备&#xff0c;它需要可靠地处理不同优先级的请求。想象一下&#xff0c;当护士站同时收到多个病房的呼叫时&#xff0c;系统必须能够立即识别最高优先级的请求——这正…...

实锤了!Hermes被爆抄袭中国团队代码

4月15日&#xff0c;中国AI团队EvoMap公开发布了一份技术对比报告&#xff0c;直指硅谷明星AI项目Hermes Agent的核心自进化能力&#xff0c;是对其Evolver引擎的系统性复刻。报告包含完整的事件时间戳和代码对比等&#xff0c;证据链清晰、扎实。海外科技媒体瞬间沸腾了。这不…...

告别选择困难!从电路设计角度拆解:买USB HUB到底该看哪些参数?

告别选择困难&#xff01;从电路设计角度拆解&#xff1a;买USB HUB到底该看哪些参数&#xff1f; 每次打开购物网站搜索USB HUB&#xff0c;总会被各种参数搞得头晕眼花——USB3.0、4口扩展、BC1.2充电、MTT技术...这些术语到底意味着什么&#xff1f;作为普通消费者&#xff…...

华硕灵耀14 2024 UX3405CA 原厂Win11 24H2系统分享下载-宇程系统站

华硕灵耀14 2024 UX3405CA 配备了一键恢复功能&#xff0c;即使系统异常或更换硬盘后也能轻松恢复出厂设置。该功能支持Windows 11 24H2 家庭版系统&#xff0c;并通过原厂工厂文件恢复隐藏的恢复分区。用户只需准备一个20G以上的U盘&#xff0c;按照安装教程操作即可完成系统恢…...

dotfiles核心组件详解:Brewfile、Shell别名与路径管理

dotfiles核心组件详解&#xff1a;Brewfile、Shell别名与路径管理 【免费下载链接】dotfiles Get started with your own dotfiles. 项目地址: https://gitcode.com/gh_mirrors/dotfiles6/dotfiles dotfiles是管理个人开发环境配置的强大工具&#xff0c;通过集中管理配…...

华硕天选Air 2025 FA401K 原厂Win11 24H2系统-宇程系统站

华硕天选Air 2025 FA401K配备了一键恢复功能&#xff0c;方便用户在系统异常或重装/更换硬盘后恢复出厂设置。该功能支持型号包括FA401KM、FA401KH和FA401KP&#xff0c;预装Windows 11 24H2家庭版系统。通过原厂提供的工厂文件&#xff0c;用户可以轻松恢复隐藏的恢复分区&…...

Reek深度解析:25种代码气味检测原理详解

Reek深度解析&#xff1a;25种代码气味检测原理详解 【免费下载链接】reek Code smell detector for Ruby 项目地址: https://gitcode.com/gh_mirrors/re/reek Reek是一款强大的Ruby代码气味检测工具&#xff0c;能够帮助开发者识别代码中潜在的质量问题和设计缺陷。本文…...

/华硕冰锐 GA502DU GU502DU 原厂Win10 20H1系统分享下载-宇程系统站

华硕冰锐GA502DU/GU502DU系列笔记本电脑自带一键恢复功能&#xff0c;可在系统异常或重装/更换硬盘后通过原厂工厂文件恢复至出厂设置。支持Windows 10 20H1家庭版系统&#xff0c;恢复过程需准备一个至少20G容量的U盘&#xff0c;并按照提供的安装教程操作。这一功能确保用户能…...

微信聊天记录如何永久保存?WeChatMsg让你轻松掌握自己的数据宝藏 [特殊字符]

微信聊天记录如何永久保存&#xff1f;WeChatMsg让你轻松掌握自己的数据宝藏 &#x1f4ac; 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/…...

用MATLAB实现含羞草交互动画:从数学曲线到鼠标事件响应的完整指南

MATLAB交互式植物动画开发实战&#xff1a;从数学建模到动态响应 MATLAB作为工程计算领域的瑞士军刀&#xff0c;其图形处理能力常被低估。实际上&#xff0c;通过巧妙组合数学曲线、图形对象句柄和事件回调&#xff0c;我们可以创造出令人惊艳的交互式动画效果。本文将带你深入…...

阿里TTL(Transmittable Thread Local)实现原理

TTL简介 TTL全称Transmittable Thread Local&#xff0c;是阿里开源的一个用于解决线程池场景下&#xff0c;ThreadLocal变量无法在子线程中继承的问题。 TTL核心原理简介 首先我们知道InheritableThreadLocal允许在创建子线程时&#xff0c;子线程继承&#xff08;复制&#x…...

【钢厂案例】【HFSSP-CPRT 数据集】用于连续加工与资源阈值约束下的混合流水车间调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

vuegg组件系统深度剖析:从基础HTML元素到Material Design组件

vuegg组件系统深度剖析&#xff1a;从基础HTML元素到Material Design组件 【免费下载链接】vuegg :hatching_chick: vue GUI generator 项目地址: https://gitcode.com/gh_mirrors/vu/vuegg vuegg是一款功能强大的Vue GUI生成器&#xff0c;它提供了从基础HTML元素到高级…...

rpmalloc线程缓存调优:从内存开销到分配速度的平衡艺术

rpmalloc线程缓存调优&#xff1a;从内存开销到分配速度的平衡艺术 【免费下载链接】rpmalloc Public domain cross platform lock free thread caching 16-byte aligned memory allocator implemented in C 项目地址: https://gitcode.com/gh_mirrors/rp/rpmalloc rpma…...

彻底解决编辑器图片冗余!Milkdown自动清理机制深度揭秘

彻底解决编辑器图片冗余&#xff01;Milkdown自动清理机制深度揭秘 【免费下载链接】milkdown &#x1f37c; Plugin driven WYSIWYG markdown editor framework. 项目地址: https://gitcode.com/GitHub_Trending/mi/milkdown Milkdown作为一款插件驱动的所见即所得Mark…...

终极指南:vue-pure-admin CDN加速配置与优化技巧

终极指南&#xff1a;vue-pure-admin CDN加速配置与优化技巧 【免费下载链接】vue-pure-admin 全面ESMVue3ViteElement-PlusTypeScript编写的一款后台管理系统&#xff08;兼容移动端&#xff09; 项目地址: https://gitcode.com/GitHub_Trending/vu/vue-pure-admin vue…...

如何解决fzf与tmux集成的常见问题:完整解决方案指南

如何解决fzf与tmux集成的常见问题&#xff1a;完整解决方案指南 【免费下载链接】fzf :cherry_blossom: A command-line fuzzy finder 项目地址: https://gitcode.com/GitHub_Trending/fz/fzf fzf是一款强大的命令行模糊查找工具&#xff0c;而tmux则是广受欢迎的终端复…...

企业级 IM 软件核心功能

企业 IM 区别于个人社交软件&#xff0c;核心围绕安全可控、高效协作、组织管理、集成打通设计&#xff0c;主流核心功能可分为八大类&#xff1a;一、基础即时通讯能力 单聊 / 群聊、部门群、项目群、临时群 富媒体消息&#xff1a;文本、图片、文件、语音、短视频、表情 消息…...

终极AI代码补全指南:TabNine如何将你的编程效率提升300%

终极AI代码补全指南&#xff1a;TabNine如何将你的编程效率提升300% 【免费下载链接】TabNine AI Code Completions 项目地址: https://gitcode.com/gh_mirrors/ta/TabNine TabNine是一款革命性的AI代码补全工具&#xff0c;它通过先进的机器学习算法分析你的代码模式&a…...

CSS 网格元素:构建现代网页布局的利器

CSS 网格元素:构建现代网页布局的利器 概述 随着互联网技术的飞速发展,网页设计已经成为前端开发中不可或缺的一部分。CSS 网格元素(Grid)的出现,为现代网页布局提供了更加灵活和高效的方法。本文将详细介绍 CSS 网格元素的概念、用法以及在实际项目中的应用。 CSS 网格…...

如何使用Datasets库实现物联网设备上的边缘AI实时数据处理

如何使用Datasets库实现物联网设备上的边缘AI实时数据处理 【免费下载链接】datasets &#x1f917; The largest hub of ready-to-use datasets for AI models with fast, easy-to-use and efficient data manipulation tools 项目地址: https://gitcode.com/gh_mirrors/da/…...

Claude Code每日更新速览(v2.1.111v2.1.112)-2026/04/17

近期&#xff0c;Claude Code 迎来一轮较大更新&#xff0c;核心围绕以下几个方向展开&#xff1a;更强的推理能力控制&#xff08;Opus 4.7 xhigh&#xff09;自动化智能调度&#xff08;Auto Mode&#xff09;多 Agent 代码审查&#xff08;/ultrareview&#xff09;CLI 体验…...

Arcade Learning Environment多智能体环境:打造竞争与合作AI系统

Arcade Learning Environment多智能体环境&#xff1a;打造竞争与合作AI系统 【免费下载链接】Arcade-Learning-Environment The Arcade Learning Environment (ALE) -- a platform for AI research. 项目地址: https://gitcode.com/gh_mirrors/ar/Arcade-Learning-Environme…...

从零到一:在eNSP中解锁USG6000V防火墙的Web管理界面

1. 初识eNSP与USG6000V防火墙 第一次接触华为eNSP模拟器和USG6000V防火墙时&#xff0c;我完全被这个虚拟网络实验室震撼到了。想象一下&#xff0c;不用花一分钱买硬件设备&#xff0c;就能在电脑上搭建完整的网络环境&#xff0c;这简直是网络工程师的福音。USG6000V作为华为…...

别再只会kill -USR2了!CentOS下php-fpm服务管理的正确姿势:从手动启动到systemd托管

从信号控制到服务托管&#xff1a;CentOS下php-fpm的现代化管理实践 在Linux服务器管理中&#xff0c;php-fpm作为PHP FastCGI进程管理器&#xff0c;其稳定性直接影响Web服务的质量。许多管理员至今仍在使用kill -USR2这类"祖传"命令来管理php-fpm进程&#xff0c;…...