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系统课程视频
  • 0.学前说明

  • 1.Three.js快速入门

  • 2.几何体BufferGeometry

  • 3.模型对象、材质

  • 4.层级模型

  • 5.顶点UV坐标、纹理贴图

  • 6.加载外部三维模型(gltf)

    • 1. 建模软件绘制3D场景(Blender)
    • 2. GLTF格式简介 (Web3D领域JPG)
      • 3. 加载.gltf文件(模型加载全流程)
      • 4. OrbitControls辅助设置相机参数
      • 5. gltf不同文件形式(.glb)
      • 6. 模型命名(程序与美术协作)
      • 7. 递归遍历层级模型修改材质
      • 8. 外部模型材质是否共享的问题
      • 9. 纹理encoding和渲染器
      • 10. gltf模型更换.map(纹理.flipY)
    • 7.PBR材质与纹理贴图

    • 8.渲染器和前端UI界面

    • 9.生成曲线、几何体

    • 10.相机基础

    • 11.光源和阴影

    • 12.精灵模型Sprite

    • 13.后处理EffectComposer

    • 14.射线拾取模型

    • 15.场景标注标签信息

    • 16.关键帧动画

    • 17.动画库tween.js

    • Three.js教程
    • 6.加载外部三维模型(gltf)
    郭隆邦
    2023-01-28
    目录

    2. GLTF格式简介 (Web3D领域JPG)

    # GLTF格式简介 (Web3D领域JPG)

    本节课算是科普介绍,不用掌握具体的知识细节,大概有个印象即可。

    # gltf格式的重要性

    GLTF格式是新2015发布的三维模型格式,随着物联网、WebGL、5G的进一步发展,会有越来越多的互联网项目Web端引入3D元素,你可以把GLTF格式的三维模型理解为.jpg、.png格式的图片一样,现在的网站,图片基本是标配,对于以后的网站来说如果需要展示一个场景,使用3D来替换图片表达也是很正常的事情。图片有很多格式,对于三维模型自然也是如此,Web开发的时候图片会有常用格式,对于Web3D开发也一样,肯定会根据需要选择一个常见的大家都熟悉的格式,随时时间的发展,GLTF必然称为一个极为重要的标准格式。

    不仅three.js,其它的WebGL三维引擎cesium、babylonjs都对gltf格式有良好的的支持。

    # GLTF 2.0

    Khronos Group组织2015发布了GLTF 1.0版本,在2017年又发布了GLTF2.0的版本。

    关于glTF的更多介绍和信息,可以查看github:https://github.com/KhronosGroup/glTF (opens new window)

    # gltf包含内容

    相比较obj、stl等格式而言,.gltf格式可以包含更多的模型信息。

    .gltf格式文件几乎可以包含所有的三维模型相关信息的数据,比如模型层级关系、PBR材质、纹理贴图、骨骼动画、变形动画...

    # GLTF格式信息

    如果你有一定的前端基础,那么你对JSON一定不陌生,GLTF文件就是通过JSON的键值对方式来表示模型信息,比如meshes表示网格模型信息,materials表示材质信息...

    {
      "asset": {
        "version": "2.0",
      },
    ...
    // 模型材质信息
      "materials": [
        {
          "pbrMetallicRoughness": {//PBR材质
            "baseColorFactor": [1,1,0,1],
            "metallicFactor": 0.5,//金属度
            "roughnessFactor": 1//粗糙度
          }
        }
      ],
      // 网格模型数据
      "meshes": ...
      // 纹理贴图
      "images": [
            {
                // uri指向外部图像文件
                "uri": "贴图名称.png"//图像数据也可以直接存储在.gltf文件中
            }
       ],
         "buffers": [
        // 一个buffer对应一个二进制数据块,可能是顶点位置 、顶点索引等数据
        {
          "byteLength": 840,
         //这里面的顶点数据,也快成单独以.bin文件的形式存在   
          "uri": "data:application/octet-stream;base64,AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAC/.......
        }
      ],
    }
    

    # .bin文件

    有些glTF文件会关联一个或多个.bin文件,.bin文件以二进制形式存储了模型的顶点数据等信息。 .bin文件中的信息其实就是对应gltf文件中的buffers属性,buffers.bin中的模型数据,可以存储在.gltf文件中,也可以单独一个二进制.bin文件。

    "buffers": [
        {
            "byteLength": 102040,
            "uri": "文件名.bin"
        }
    ]
    

    # 二进制.glb

    gltf格式文件不一定就是以扩展名.gltf结尾,.glb就是gltf格式的二进制文件。比如你可以把.gltf模型和贴图信息全部合成得到一个.glb文件中,.glb文件相对.gltf文件体积更小,网络传输自然更快。

    # 导出gltf

    blender:最新版本可以直接导出gltf。

    3damx gltf相关插件:https://github.com/BabylonJS/Exporters/releases

    # Blender导入导出gltf模型文件

    你可以用Blender软件导出绘制好的三维模型,也可以打开和预览gltf格式文件模型。

    1. 建模软件绘制3D场景(Blender)
    3. 加载.gltf文件(模型加载全流程)

    ← 1. 建模软件绘制3D场景(Blender) 3. 加载.gltf文件(模型加载全流程)→

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