当前位置: 首页 > news >正文

GLTF(GL Transmission Format)详细介绍

GLTF(GL Transmission Format)是一种现代 3D 文件格式,由 Khronos Group 开发,专为高效传输和渲染 3D 资产而设计。它被广泛用于 Web 3D(如 Three.js、Babylon.js)、游戏开发(Unity、Unreal)以及 AR/VR 应用。


1. GLTF 主要特点

轻量 & 高效:相比 FBX/OBJ,GLTF 文件更小,加载更快
支持 PBR 材质:支持 金属度-粗糙度(Metal-Roughness)镜面光滑度(Specular-Glossiness) 两种 PBR 渲染方式
支持动画:骨骼动画(Skeletal Animation)、关键帧动画
开放标准:由 Khronos Group 维护,兼容 OpenGL、WebGL、Vulkan 等图形 API
可包含纹理 & 形变:支持嵌入 纹理、法线贴图、骨骼蒙皮、Morph Target(变形目标)


2. GLTF 文件格式

GLTF 有两种主要格式:

格式扩展名特点
GLTF.gltf文本格式,使用 JSON 存储模型数据,外部存储二进制数据和纹理
GLB.glb二进制格式,所有数据(几何、纹理、动画)都封装在一个文件中,适合网络传输

GLB vs. GLTF 的区别

  • GLB 适合网络加载,因为它是一个完整的二进制文件

  • GLTF 适合手动编辑,因为它是 JSON 格式,易读易改


3. GLTF 文件结构

GLTF 文件主要包含以下数据:

  • Asset(资产信息):版本、元数据

  • Scene(场景):包含模型的层次结构

  • Node(节点):定义物体的位置、旋转、缩放

  • Mesh(网格):存储几何数据,如顶点、法线、UV

  • Material(材质):定义 PBR 材质,支持金属度-粗糙度

  • Texture(纹理):颜色、法线贴图等

  • Animation(动画):骨骼动画、关键帧动画

  • Camera(摄像机):透视和正交相机


4. 如何加载 GLTF 文件?(Three.js 示例)

(1)安装 GLTFLoader

npm install three

(2)使用 GLTFLoader 加载模型

import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';

// 创建场景
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

// 加载 GLTF 模型
const loader = new GLTFLoader();
loader.load('model.gltf', function (gltf) {
    scene.add(gltf.scene); // 添加到场景
    gltf.scene.position.set(0, 0, 0); // 设置位置
}, undefined, function (error) {
    console.error('加载失败', error);
});

// 渲染循环
function animate() {
    requestAnimationFrame(animate);
    renderer.render(scene, camera);
}
animate();

5. 如何导出 GLTF?

Blender 导出 GLTF:

  1. 选择你的 3D 模型

  2. 点击 File > Export > glTF 2.0 (.glb, .gltf)

  3. 选择导出格式(GLB / GLTF)

  4. 选择 "Include" 选项,确保纹理和动画被导出

  5. 点击 Export glTF 2.0

使用 Three.js 导出 GLTF:

import { GLTFExporter } from 'three/examples/jsm/exporters/GLTFExporter.js';

const exporter = new GLTFExporter();
exporter.parse(scene, function (gltf) {
    const blob = new Blob([JSON.stringify(gltf)], { type: 'application/json' });
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'scene.gltf';
    a.click();
}, { binary: false });

6. GLTF 适用于哪些场景?

🔹 Web 3D(Three.js / Babylon.js)
🔹 游戏开发(Unity / Unreal Engine)
🔹 AR / VR 应用(WebXR / ARKit)
🔹 3D 电商 & 配置器(3D 预览)
🔹 影视动画(用于实时渲染引擎)


7. 总结

GLTF 是最适合 Web 3D 的格式(轻量、高效、支持 PBR)
GLB 更适合网络传输,GLTF 更适合编辑
支持动画、骨骼、PBR 材质、形变目标,比 OBJ / FBX 更现代化
Three.js / Babylon.js / Unity / Unreal 均支持 GLTF

你是想用 GLTF 在 Web 3D 中加载,还是用于 游戏开发或 AR/VR?😊

http://www.dtcms.com/a/109158.html

相关文章:

  • 多线程基础
  • 多线程交替打印ABC方法整理
  • 前端入门之CSS
  • rknn_convert的使用方法
  • WebRTC源码解析:Android如何渲染画面
  • Redis是什么?架构是怎么样的?
  • MySQL客户端工具-图形化工具-DataGrip 安装与使用
  • 《AI大模型应知应会100篇》加餐篇:LlamaIndex 与 LangChain 的无缝集成
  • 3.9/Q2,Charls最新文章解读
  • 合并两个有序数组(Java实现)
  • Vue2 过滤器 Filters
  • Blender运行python脚本?
  • 42.评论日记
  • 2874. 有序三元组中的最大值 II
  • 全星 研发项目管理APQP 软件:驱动汽车及制造业研发升级的数字化引擎
  • 【笔记】如何使得docker desktop下载至D盘而不是C盘?
  • django REST framework(DRF)教程
  • 一文读懂数据仓库:从概念到技术落地
  • 蓝桥杯Java B组省赛真题题型近6年统计分类
  • 7-5 表格输出
  • 高速电路 PCB 设计要点一
  • 2010-2020年 省级、城市数字经济创新创业-分项指数得分与排名 -社科数据
  • vue3 中引入tinymce富文本
  • 让AI再次伟大-MCP-Server开发指南
  • LeetCode Hot100 刷题笔记(7)—— 贪心
  • WPS JS宏编程教程(从基础到进阶)-- 第三部分:JS宏编程语言开发基础
  • Linux线程概念与控制:【线程概念(页表)】【Linux线程控制】【线程ID及进程地址空间布局】【线程封装】
  • 32f4,串口1,usart.c.h2025
  • EIP-712:类型化结构化数据的哈希与签名
  • 【行测】判断推理:图形推理