Three.js中文网 Three.js中文网
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
Web3D系统课程视频
  • 1.WebGPU快速入门

    • 1. WebGPU学习开发环境配置
    • 2. WebGPU API和Canvas画布
    • 3. 创建顶点缓冲区、渲染管线
    • 4. 着色器语言WGSL快速了解
    • 5. 顶点着色器
    • 6. 片元着色器、图元装配
    • 7. 渲染命令(至此完成第一个案例)
    • 8. WebGPU 3D坐标系(投影)
    • 9. 三角形拼接矩形
    • 2. 3D几何变换数学基础

    • WebGPU教程
    • 1.WebGPU快速入门
    郭隆邦
    2023-04-24
    目录

    9. 三角形拼接矩形

    # 三角形拼接矩形

    实际上在WebGPU中,表达一个复杂的3D几何形状,一般都是通过一个一个三角形拼接出来的。

    本节课就给大家讲解一个最简单的案例,用2个三角形拼接一个矩形。

    # 绘制两个三角形

    前面说过,primitive属性的值设置为triangle-list,当执行draw绘制命令的时候,会以三角形的方式绘制顶点数据,简单说就是每3个顶点绘制一个三角形,6个顶点就是绘制两个三角形。

    const pipeline = device.createRenderPipeline({
        primitive: {
            topology: "triangle-list",//绘制三角形
        }
    });
    

    前面讲解过的,绘制一个三角形,三个顶点,draw绘制命令第一个参数是3。

    const vertexArray = new Float32Array([
        // 三角形三个顶点坐标的x、y、z值
        0.0, 0.0, 0.0,//顶点1坐标
        1.0, 0.0, 0.0,//顶点2坐标
        0.0, 1.0, 0.0,//顶点3坐标
    ]);
    renderPass.draw(3);// 绘制顶点数据
    

    下面通过6个顶点绘制两个三角形。

    //创建顶点数据
    const vertexArray = new Float32Array([
        // 三角形1三个顶点坐标的x、y、z值
        0.0, 0.0, 0.0,//顶点1坐标
        1.0, 0.0, 0.0,//顶点2坐标
        0.0, 1.0, 0.0,//顶点3坐标
        // 三角形2三个顶点坐标的x、y、z值
        -0.5, -0.5, 0.0,//顶点4坐标
        -1.0, -0.5, 0.0,//顶点5坐标
        -0.5, -1.0, 0.0,//顶点6坐标
    ]);
    renderPass.draw(6);// 绘制顶点数据
    

    # 三角形拼接一个矩形

    一个矩形至少需要两个三角形拼接表示,和上面两个三角形绘制代码逻辑一样,区别不过是,这两个三角形有个两顶点重合罢了。

    注意一个面的多个三角形,正反面要保持一致,就是说沿着某个方向看过去,矩形的两个三角形,要么都是正面,要么都是反面,或者说要么都是顺时装,要么都是逆时针。

    const vertexArray = new Float32Array([
        // 三角形1三个顶点顺时针(沿着z轴负半轴方向观察,如果正半轴方向观察就是逆时针)
        -0.3, -0.5, 0.0,//顶点1坐标
        0.3, -0.5, 0.0,//顶点2坐标
        0.3, 0.5, 0.0,//顶点3坐标
        // 三角形2三个顶点顺时针(沿着z轴负半轴方向观察,如果正半轴方向观察就是逆时针)
        -0.3, -0.5, 0.0,//顶点4坐标 与顶点1重合
        0.3, 0.5, 0.0,//顶点5坐标 与顶点3重合
        -0.3, 0.5, 0.0,//顶点6坐标
    ]);
    
    8. WebGPU 3D坐标系(投影)
    1. 数学基础(平移、旋转、缩放矩阵)

    ← 8. WebGPU 3D坐标系(投影) 1. 数学基础(平移、旋转、缩放矩阵)→

    Theme by Vdoing | Copyright © 2016-2025 豫ICP备16004767号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式