gpt4 book ai didi

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

转载 作者:我是一只小鸟 更新时间:2023-07-29 22:31:35 35 4
gpt4 key购买 nike

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

简述

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

相关技术

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

制作步骤,流程

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

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

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

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

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

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

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

                        
                      

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

                        
                            let num = 0;
  let way = 1;
  // let scale = 0;
  //更新转圈圈动画
  const updateAnimate = (delta) => {
    num += 1 * way;
    if (Math.abs(num) == 100) {
      way = -way;
    }

    circle1.rotation.z -= Math.sin(num / 1000) * 0.5;
    circle2.rotation.z += Math.sin(num / 1000) * Math.cos(num / 100) * 2;
    circle3.rotation.z += Math.sin(num / 2000) * 2;
    circle4.rotation.z -= Math.sin(num / 1000);
    circle5.rotation.z += Math.sin(num / 500) * 0.1;
  };

                        
                      

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

网页效果地址

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

如何把网页设置成壁纸呢

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

成品

后续计划

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

最后此篇关于我用WebGL打造了一款动态壁纸的文章就讲到这里了,如果你想了解更多关于我用WebGL打造了一款动态壁纸的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com