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

看Threejs好玩示例,学习创新与技术(三)

本文接上篇内容,继续挖掘应用ThreeJS的一些创新算法。

1、获得鼠标移动对应的地理位置

这个算法如果放在几年前,那肯定会难倒一帮人的。因为是三维投影涉及矩阵变换及求逆,而且还是投影模式下的。在Project Texture这个示例中,作者也应该开始也不懂,翻遍了很多材料才做了出来。他在文中也标记了引用的网站,这是一个非常好的习惯。

图片

不过现在写这个算法就很简单了。可以直接问ChatGPT。具体操作我就不展开了。

图片

2、摇摆模式(汪峰说,一起摇摆嗯)

先看看摇摆模式是什么效果,见下视频。可以看到每个方块都在抖动,而且很有韵律。我们一般会想到这是采用正弦函数做的。但细想会觉得比较不对,因为正弦函数没有随机。

20240914_222140

为了给大家看清楚韵动的效果,我录制了一下侧面。从侧面可以看到如同海面一样波涛汹涌。

20240914_222830

既要有随机,又要有连续的韵动,非噪声函数不可。这也是我在这个示例里面学到最深刻的知识点。作者对噪声的使用算是炉火纯青。关于什么是噪声,可搜索SimplexNoise相关话题。我把一些简单的概念或特征列一下。

  • SimplexNoise 是一种用于生成伪随机噪声的算法,常用于图形学、程序生成和纹理生成等领域。

  • SimplexNoise 可以是一维、二维、三维甚至更多,如noise2D(x: number, y: number) 函数的参数 x 和 y 通常用于表示在二维空间中的坐标。这些坐标可以用来生成在该点的噪声值。

  • 在使用噪声函数(如 SimplexNoise 或 Perlin Noise)时,重复在同一个点采样通常会得到相同的值。

  • 噪声函数(如 SimplexNoise 和其他类型的噪声生成算法)通常具有周期性特征。这种周期性是由噪声函数的数学性质决定的。

基于上面特征,那么曲线的每个点都可以采用噪声函数进行模拟韵动,我把简化的函数列在下面。

const z = noise(x - time , y )

可以看到,韵动模式跟位置和时间相关。如果x设为固定值,那么最终是上下的扭动,类似如果y设为固定值,则是左右方向的扭动。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • `character_set_server` 和 `collation_server`
  • Nuxt Kit 组件管理:注册与自动导入
  • 一. Unity实现虚拟摇杆及屏幕自适应功能
  • GPS/LBS/Wi-Fi定位,全安排!—合宙Air201资产定位模组LuatOS快速入门04
  • Rust Web开发框架对比:Warp与Actix-web
  • 升级Ubuntu内核的几种方法
  • Table列表复现框实现【勾选-搜索-再勾选】
  • Python | Leetcode Python题解之第406题根据身高重建队列
  • C语言补习课番外篇——采样sin(x)
  • CustomerbasicController
  • 如何 吧一个 一维数组 切分成相同等分,一维数组作为lstm的输入(三维数据)的数据预处理 collate_fn的应用
  • c语言快递小项目
  • 深度学习速通系列:F1和F2分数
  • 边缘计算网关:连接中心计算与边缘设备的重要桥梁-天拓四方
  • C到C++入门基础知识
  • 4. 路由到控制器 - Laravel从零开始教程
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Date型的使用
  • Fastjson的基本使用方法大全
  • GitUp, 你不可错过的秀外慧中的git工具
  • Git同步原始仓库到Fork仓库中
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Js基础知识(一) - 变量
  • MD5加密原理解析及OC版原理实现
  • PHP那些事儿
  • Python利用正则抓取网页内容保存到本地
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SwizzleMethod 黑魔法
  • Vue全家桶实现一个Web App
  • webpack4 一点通
  • 从重复到重用
  • 代理模式
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 分布式熔断降级平台aegis
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 前端存储 - localStorage
  • 三分钟教你同步 Visual Studio Code 设置
  • 微服务核心架构梳理
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 新书推荐|Windows黑客编程技术详解
  • Linux权限管理(week1_day5)--技术流ken
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (Java入门)学生管理系统
  • (solr系列:一)使用tomcat部署solr服务
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (七)理解angular中的module和injector,即依赖注入
  • (五)c52学习之旅-静态数码管
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET IoC 容器(三)Autofac