我用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打造了一款动态壁纸的更多相关文章

  1. 用webgl打造自己的3D迷宫游戏

    用webgl打造自己的3D迷宫游戏 2016/09/19 · JavaScript · WebGL 原文出处: AlloyTeam    背景:前段时间自己居然迷路了,有感而发就想到写一个可以让人迷路 ...

  2. Mac电脑上一款非常时尚高清的动态壁纸Living Wallpaper HD

    很多朋友Mac电脑上都喜欢用动态壁纸,Living Wallpaper HD是本人尝试的一款非常不错的高清动态壁纸.有时钟.天气等各种组建,非常时尚美观. Living Wallpaper HD下载地 ...

  3. 如何实现一个 windows 桌面动态壁纸

    ​ 更新: 2018/08/31 WS_MOUSE_LL 钩子,实现底层壁纸交互效果. 一.介绍 国内玩家第一次看到动态壁纸,都是出于一款来自 Wallpaper Engine 的 Steam 程序. ...

  4. 关于MAC设置免费的动态壁纸

    首先大部分的动态壁纸都是收费的或者是已经固定的,其实这一款也是固定的 但是这个固定的是可以进行修改的 第一先在App Store下载 LiveDesktop Pro  这一款是免费的 然后下载后进行打 ...

  5. python学习笔记 | macOS Big Sur动态壁纸食用指南

    目录 前言 爬虫篇 壁纸使用篇 后记 前言 北京时间23日凌晨1点,苹果WWDC2020大会开幕.在发布会上,苹果正式发布了新版macOS,并将其命名为"Big Sur". 相比于 ...

  6. 如何将视频作为Windows桌面动态壁纸,两步就可以搞定!

    Windows本身自带的设置是不支持直接将视频用作壁纸,所以要想实现这个功能需要第三方工具的帮助 一.软件简介 这是一款可以将视频文件作为动态壁纸展示在电脑桌面的软件,它体积小巧,占用资源也不多,相比 ...

  7. 为你的Windows7设置动态壁纸

    From:http://www.cnblogs.com/killerlegend/p/3644014.html By KillerLegend DreamScene是Vista上的一个功能,可以让你设 ...

  8. DzzOffice添加动态壁纸例子-Bing每日壁纸

    Bing每日壁纸介绍:bing网站每天会更新一张不同的精选图片. 此压缩包内的程序,可以自动同步更新cn.bing.com网站每天更新的图片,作为dzzoffice的壁纸使用.实现自动每天更换不同的云 ...

  9. android浪漫樱花凋零动态壁纸应用源码

    android浪漫樱花凋零动态壁纸应用源码,是从那个安卓教程网拿过来的,本项目是一套基于安卓的樱花动态壁纸项目源码,安装以后桌面没有图标,但是可以在修改壁纸-动态壁纸中找到.我的分辨率是480×854 ...

  10. Ruby Rose动态壁纸制作记录

    为Wallpaper Engine做的动态壁纸,使用Unity制作,在这里记录一下制作过程和一些遇到的坑,以后有了github账号再搬到那边去. 最后大概要做出这样的效果,截图来自RWBY " ...

随机推荐

  1. Mac 下 brew安装慢的问题

    brew默认源使用的是github,可以设置环境变量达到切换源的效果,见官网: https://github.com/Homebrew/install export HOMEBREW_BREW_GIT ...

  2. Irwin-Hall 分布学习笔记

    定理:Irwin-Hall 分布 对于 \(n\) 个在 \([0,1]\) 内均匀分布的实数随机变量,它们的和不超过一个实数 \(z\) 的概率为: \[F(z)=\sum\limits_{k=0} ...

  3. ai问答:使用 Vue3 组合式API 和 TS 封装 echarts 折线图

    使用这个组件时,只需要传入合适的chartData数组,就可以渲染一个折线图,并且响应数据变化. <template> <div ref="chart" styl ...

  4. 2022-02-13:k8s安装gitlab,yaml如何写?

    2022-02-13:k8s安装gitlab,yaml如何写? 答案2022-02-13: yaml如下: apiVersion: apps/v1 kind: Deployment metadata: ...

  5. Midjourney|文心一格prompt教程[基础篇]:注册使用教程、风格设置、参数介绍、隐私模式等

    Midjourney|文心一格prompt教程[基础篇]:注册使用教程.风格设置.参数介绍.隐私模式等 开头讲一下为什么选择Midjourney和文心一格,首先Midjourney功能效果好不多阐述: ...

  6. 【GiraKoo】CMake提示could not find any instance of Visual Studio

    CMake提示could not find any instance of Visual Studio. 原因 此种情况是由于默认的CMake工具不是Visual Studio提供的版本导致的. 解决 ...

  7. AcWing 423. 采药

    辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师. 为此,他想拜附近最有威望的医师为师. 医师为了判断他的资质,给他出了一个难题. 医师把他带到一个到处都是草药的山洞里对他说:"孩子 ...

  8. Linux常用磁盘管理命令详解

    du du命令用于查看文件和目录磁盘的使用空间. 命令语法:du [参数] [文件或目录名称] 参数说明: 参数 说明 -a 列出所有的文件与目录容量. -h 以G.M.K为单位,返回容量. -s 列 ...

  9. Codeforces Round #879 (Div. 2) A-E

    比赛链接 A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; bool solve() { i ...

  10. Java并发(十二)----线程应用之多线程解决烧水泡茶问题

    1.背景 统筹方法,是一种安排工作进程的数学方法.它的实用范围极广泛,在企业管理和基本建设中,以及关系复杂的科研项目的组织与管理中,都可以应用. 怎样应用呢?主要是把工序安排好. 比如,想泡壶茶喝.当 ...