经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » WebGL » 查看文章
我用WebGL打造了一款动态壁纸
来源:cnblogs  作者:米大饭  时间:2023/7/31 9:12:01  对本文有异议

我用WebGL打造了一款动态壁纸

简述

最近在给自己电脑换壁纸的时候发现了一张很有特点的图(就是下面这张),于是我突发奇想,要是能把这张图变成一张动态的壁纸。那该多好。于是我打算用threejs开发一个3D的动态壁纸网页。

相关技术

Vite+Vue、Threejs、TwinSpace(我自己基于Threejs封装的一个工具库)

制作步骤,流程

先参照壁纸绘制一张图,记住一定要分图层

然后将图层依次导出(记住是PNG)

接着我们创建Vue项目
npm create vite@latest SmartClock -- --template vue

创建一个绘制的图层,在网页上创建几个方块,

然后将刚刚导出的图,依次贴在方块上,然后绘制完成

这样呢,我们的一个基本样式就绘制完成了。接着呢
我们得能让他动起来,这边我们在代码中添加相关的获取时间更新的方法

  1. //计算时间更新
  2. const clockUpdate = () => {
  3. // 创建一个 Date 对象实例,它将自动设置为当前时间
  4. const now = new Date();
  5. // 获取当前的小时(0 到 23)
  6. const hours = now.getHours();
  7. hour.rotation.z = -Math.PI * 2 * (hours / 12);
  8. // 获取当前的分钟(0 到 59)
  9. const minutes = now.getMinutes();
  10. min.rotation.z = -Math.PI * 2 * (minutes / 60);
  11. // 获取当前的秒钟(0 到 59)
  12. const seconds = now.getSeconds();
  13. sec.rotation.z = -Math.PI * 2 * (seconds / 60);
  14. };

然后定时更新。
这样呢,时钟就可以自动更新了。
接着呢,我们还需要创建相应的动画。

  1. let num = 0;
  2. let way = 1;
  3. // let scale = 0;
  4. //更新转圈圈动画
  5. const updateAnimate = (delta) => {
  6. num += 1 * way;
  7. if (Math.abs(num) == 100) {
  8. way = -way;
  9. }
  10. circle1.rotation.z -= Math.sin(num / 1000) * 0.5;
  11. circle2.rotation.z += Math.sin(num / 1000) * Math.cos(num / 100) * 2;
  12. circle3.rotation.z += Math.sin(num / 2000) * 2;
  13. circle4.rotation.z -= Math.sin(num / 1000);
  14. circle5.rotation.z += Math.sin(num / 500) * 0.1;
  15. };

然后添加一下屏幕的鼠标位置监听就可以了,
这样一款网页动态可视化时钟就做完了。

网页效果地址

紧接着我们把web项目部署到网页上就可以了。
在线效果地址:https://sobigrice.gitee.io/smartClock

如何把网页设置成壁纸呢

众所周知MacOS/Window是没办法直接将网页设置成壁纸的。这里我们就需要用到第三方软件来设置
Mac: Plash
window: lively wallpaper / wallPaperEngine

成品

后续计划

目前这个项目我已经开源了,开源地址:https://gitee.com/soBigRice/smart-clock
后续我打算利用electron和ReactNative打造成一款多平台的壁纸时钟。。。
大家有什么想法和意见欢迎留言一起相互交流。
敬请期待

原文链接:https://www.cnblogs.com/soBigRice/p/17590183.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号