Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端基础

  • 应用框架

  • 工程能力

  • 应用基础

  • 专业领域

    • 服务端

    • 跨端技术

    • Web IDE

    • 中后台

    • 动效渲染

      • Canvas

      • WebGL

        • WebGL 光照
        • WebGL 初探
        • WebGL 矩阵处理
        • WebGL 纹理
        • WebGL 性能优化
        • 喝酒没骰子?手摸手教你实现基于 WebGL 的掷骰子游戏
          • 前言
          • 项目组织与初始化
          • 绘制 3d 骰子
          • 利用矩阵实现投影、视图、变换
        • WebGL 笔记
        • 利用 WebGL 给图片增加光影效果
      • WebGPU

      • Web动画

      • 动效方案

    • 可视化

    • 埋点监控

    • 多媒体

    • 桌面技术

    • 游戏互动

    • 编辑器

    • 虚拟化与容器化

    • 设计系统

  • 业务场景

  • 大前端
  • 专业领域
  • 动效渲染
  • WebGL
gahing
2020/03/11
目录

喝酒没骰子?手摸手教你实现基于 WebGL 的掷骰子游戏草稿

# 前言

逢年过节,和老家的小伙伴们出去喝酒,老是被问做什么行业的。

修电脑的?做网站的?不如扔出这个掷骰子前端小游戏吧~

注意:本文不是一个 WebGL 科普向教程,需要你对着色器工作原理有大概的了解。

不了解的话可以先看下这篇文章 WebGL 理论基础 (opens new window) or WebGL 初探 (opens new window)

本文将按以下的顺序讲解

  • 项目组织与初始化
  • 绘制 3d 骰子
  • 利用矩阵实现投影、视图、变换
  • 平滑骰子边缘
  • 增加光影效果
  • 绘制多个骰子
  • 增加自由落体和碰撞动画效果
  • 增加房间和pk功能
  • 使用陀螺仪获取摇骰子效果

希望通过这个项目,让 WebGL 初学者加深对三维、纹理、光照、动画、场景的理解

最终效果如下

源码地址:

在线体验地址:

# 项目组织与初始化

首先是 html 内容

点击 button 将开始投掷骰子,具体在后面动画效果一节会讲到

在其中引入了一些工具类,用于提取公共处理代码

- mat #ss
- util #ss
1
2

最后引入一个执行脚本,通过切换该文件路径,对应不同执行阶段得到不同效果

这里不采用版本控制的原因主要有两点:1. 整个项目仅是 webgl-examples 项目的某个模块;2. 减少阅读者分支切换查看代码带来的时间损耗

# 绘制 3d 骰子

其实就是一个绘制一个立方体,并利用纹理绘制每一面的点数

这里我们需要创建一个骰子类,记录每一面对应的点数

代码如下

效果

我们只能看到背面,下面我们将利用矩阵变换得到更好的视觉效果

# 利用矩阵实现投影、视图、变换

编辑 (opens new window)
#WebGL
上次更新: 2024/09/01, 23:56:56
WebGL 性能优化
WebGL 笔记

← WebGL 性能优化 WebGL 笔记→

最近更新
01
浅谈代码质量与量化指标
08-27
02
快速理解 JS 装饰器
08-26
03
Vue 项目中的 data-v-xxx 是怎么生成的
09-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式