Blender插件:GLTF 2.0 导入/导出工具

举报
yd_217961358 发表于 2023/09/03 11:32:28 2023/09/03
【摘要】 glTF(GL传输格式)是一种3D文件格式,以JSON格式存储3D模型信息。JSON 的使用既可以最大限度地减少 3D 资产的大小,也可以最大限度地减少解压缩和使用这些资产所需的运行时处理。它被应用程序用于3D场景和模型的高效传输和加载。
推荐:使用NSDT场景编辑器快速搭建3D应用场景

用法

glTF™(GL传输格式)用于3D模型的传输和加载 在 Web 和本机应用程序中。glTF 减小了 3D 模型的大小和 解包和呈现这些模型所需的运行时处理。 这种格式在网络上常用,并且在各种3D引擎中都有支持。 比如Unity3D、虚幻引擎4和Godot。

此导入器/导出器支持以下 glTF 2.0 功能:

  • 网 格
  • 材料(原理BSDF)和无阴影(无照明)
  • 纹理
  • 相机
  • 准时灯光(点、点和方向)
  • 动画(关键帧、形状关键帧和外观)

网 格

glTF的内部结构模仿了图形芯片常用的内存缓冲区 实时渲染时,以便可以将资产交付到桌面、Web 或移动客户端 并以最少的处理及时显示。结果,四边形和 n 边形 导出为 glTF 时自动转换为三角形。 不连续的 UV 和平坦的阴影边缘可能会导致 glTF 中的顶点计数略高 与搅拌机相比,因为这样的顶点是分开的。 同样,曲线和其他非网格数据也不会保留, 并且必须在导出之前转换为网格。

材料

glTF中的核心材料系统支持金属/原石PBR工作流程 具有以下信息渠道:

  • 基色
  • 金属
  • 粗糙度
  • 烘烤环境光遮蔽
  • 法线贴图
  • 发射的

../_images/addons_io-gltf2_material-频道.jpg

glTF 2.0 核心格式中可用的各种图像映射的示例。这是 水瓶示例模型与其各种图像映射的切片一起显示。

进口材料

glTF材料系统与Blender自己的材料不同。导入 glTF 文件时, 该插件将构建一组Blender节点,以尽可能接近地复制每个glTF材料。

导入器支持金属/原石 PBR (核心 glTF)、规格/光泽 PBR () 和无阴影 () 材料。KHR_materials_pbrSpecularGlossinessKHR_materials_unlit

提示

检查材料导入过程的结果是查看示例的好方法 可导出到 glTF 的材质节点和设置的类型。

出口材料

导出器支持金属/粗糙PBR(核心glTF)和无阴影()材料。 它将根据它在Blender材质中识别的节点构建glTF材质。 材料导出过程处理下述设置。KHR_materials_unlit

注意

当材质使用图像纹理时,glTF 要求图像采用 PNG 或 JPEG 格式。 该插件将自动转换其他格式的图像,从而增加导出时间。

提示

要创建无阴影(无光照)材质,请使用背景材质类型。

基色

glTF 基色是通过在原则 BSDF 节点上查找基色输入来确定的。 如果输入未连接,则输入的默认颜色(未连接的套接字旁边的色域) 用作 glTF 材质的基色。

../_images/addons_io-gltf2_material-基色-实绿色.png

可以直接在节点上指定纯基色。

如果发现图像纹理节点连接到基色输入, 该图像将用作 glTF 基色。

../_images/addons_io-gltf2_material-baseColor-imageHookup.png

图像用作 glTF 基色。

金属和粗糙度

这些值是从原则 BSDF 节点读取的。如果这两个输入都未连接, 节点将显示滑块以控制它们在 0.0 和 1.0 之间的相应值, 这些值将被复制到 glTF 中。

使用图像时,glTF 期望金属值在蓝色 () 通道中编码, 以及在同一图像的绿色()通道中编码的粗糙度。 如果图像以不遵循此约定的方式连接到 Blender 节点, 加载项可能会尝试在导出过程中将图像调整为正确的形式(增加导出时间)。BG

在Blender节点树中,建议使用单独的RGB节点 将通道与图像纹理节点分开,以及 将绿色 () 通道连接到粗糙度,将蓝色 () 连接到金属。 glTF 导出商将识别此安排与 glTF 标准匹配,并且 这将允许它在导出过程中简单地将图像纹理复制到 glTF 文件中。GB

此时的“图像纹理”节点应将其“颜色空间”设置为“非颜色”。

../_images/addons_io-gltf2_material-金属原石.png

以符合glTF标准的方式连接的金属/粗糙度图像, 允许在导出的 glTF 文件中逐字使用它。

烘烤环境光遮蔽

glTF能够存储烘焙的环境光遮蔽贴图。 目前没有导致Blender的节点排列 以与 glTF 中完全相同的方式使用此类映射。 但是,如果导出程序找到名为 和 的自定义节点组 查找在该节点组上命名的输入, 它将查找附加在那里的图像纹理,以用作glTF中的遮挡贴图。 效果不需要在Blender中显示,因为Blender还有其他显示环境光遮蔽的方式, 但此方法将允许导出器将遮挡图像写入 glTF。 这对于实时 glTF 查看器非常有用,尤其是在存在 可能不是在渲染时计算这些东西的备用电源。glTF SettingsOcclusion

../_images/addons_io-gltf2_material-遮挡.png

预烘焙的环境光遮蔽贴图,连接到不渲染但将导出到 glTF 的节点。

提示

创建自定义节点组的最简单方法是导入现有的 glTF 模型 包含遮挡贴图,例如 水瓶或其他现有模型。也可以使用手动创建的自定义节点组。

glTF 将遮挡存储在红色 () 通道中,允许其选择性共享 具有粗糙度和金属通道的图像相同。R

../_images/addons_io-gltf2_material-orm-hookup.png

这种节点组合模仿了glTF包装遮挡、粗糙度和 金属值到单个图像中。

提示

循环渲染引擎有一个烘焙面板,可用于烘焙 环境光遮蔽贴图。生成的图像可以保存和连接 直接到节点。glTF Settings

法线贴图

要在 glTF 中使用法线贴图,请连接图像纹理节点的颜色输出 连接到法线贴图节点的颜色输入,然后将法线贴图法线输出连接到 原则 BSDF 节点的正常输入。“图像纹理”节点 为此,应将其“颜色空间”属性设置为“非颜色”。

法线贴图节点必须保留在其默认属性“切线空间”上,作为 这是 glTF 目前支持的唯一法线贴图类型。 法线贴图的强度可以在此节点上进行调整。 导出器不会直接导出这些节点,而是会使用它们来定位 正确的图像,并将强度设置复制到 glTF 中。

../_images/addons_io-gltf2_material正常.png

连接了一个法线地图图像,以便导出器能够找到并复制它 到 glTF 文件。

提示

循环渲染引擎有一个烘焙面板,可用于烘焙 来自几乎任何其他法线向量节点排列的切空间法线贴图。 将烘焙类型切换为正常。保留默认空间设置 (空格:切线,R: +X,G:+Y,B:+Z)当将此烘焙面板用于glTF时。 生成的烘焙图像可以保存并插入到新材料中 如上所述的法线贴图节点,允许其正确导出。

请参见:循环渲染烘焙

发射的

图像纹理节点可以连接到发光着色器节点,并且 可以选择通过添加着色器节点与原则 BSDF 节点的属性组合。

如果 glTF 导出器找到连接到发光着色器节点的图像, 它会将该图像导出为 glTF 材质的自发光纹理。

../_images/addons_io-gltf2_material-自发光.png

可以将排放节点添加到现有节点。

注意

此导出器尚不支持原则 BSDF 节点的发射输入。 这可能会在将来的版本中更改。

双面/背面剔除

对于仅可以看到正面的材质,请打开背面剔除 Eevee 材质的“设置”面板。使用其他发动机(循环、工作台)时 您可以暂时切换到 Eevee 来配置此设置,然后切换回来。

对于双面材料,请取消选中此框。

../_images/addons_io-gltf2_material-背面剔除.png

此设置的反转控制 glTF 的标志。

混合模式

基色输入可以选择提供 alpha 值。 glTF 如何处理这些值取决于所选的混合模式。

选择 Eevee 渲染引擎后,每个材质都有一个混合模式 材质设置面板。使用此设置定义 alpha 值如何从 基色通道在 glTF 中处理。glTF 支持三种设置:不透明字母值将被忽略(默认值)。阿尔法混合较低的 Alpha 值会导致与背景对象混合。阿尔法剪辑低于“剪辑阈值”设置的 Alpha 值将导致部分 根本不要渲染的材料。其他所有内容都呈现为不透明。

../_images/addons_io-gltf2_material-αBlend.png

选择Eevee引擎后,材质的混合模式是可配置的。

注意

请注意,透明度(或 Alpha 混合模式)对于实时引擎来说很复杂 进行渲染,并且在导出后可能会以意外的方式运行。在可能的情况下, 改用 Alpha 裁剪模式,或仅将不透明多边形放在后面 阿尔法混合多边形的单个图层。

紫外线贴图

通过连接 UV 贴图节点可以控制 UV 贴图的选择和变换 以及将节点映射到任何图像纹理节点。

“映射”节点中的设置使用名为 的 glTF 扩展名导出。 顶部有一个映射类型选择器。是建议导出的类型。还支持纹理矢量。支持的偏移量包括:KHR_texture_transform

  • 位置 - X 和 Y
  • 旋转 - 仅 Z 轴
  • 比例 - X 和 Y

对于纹理类型,缩放 X 和 Y 必须相等(均匀缩放)。

../_images/addons_io-gltf2_material-mapping.png

深思熟虑的UV贴图选择。

提示

这些节点是可选的。并非所有 glTF 读取器都支持多个 UV 贴图或纹理变换。

因素

任何图像纹理节点都可以选择与常量颜色或标量相乘。 这些将作为因子写入 glTF 文件中,它们是相乘的数字 使用指定的图像纹理。这些并不常见。

如果需要,单一材料可以同时使用上述所有材料。此图显示 同时应用上述多个选项时的典型节点结构:

../_images/addons_io-gltf2_material原则.png

具有自发光纹理的原则 BSDF 材质。

扩展

核心 glTF 2.0 格式可以使用 glTF 扩展扩展使用额外信息进行扩展。 这允许文件格式保存首次发布时不被视为通用的详细信息。 并非所有 glTF 阅读器都支持所有扩展,但有些扩展相当常见。

某些Blender功能只能通过这些扩展导出到glTF。 此附加组件直接支持以下 glTF 2.0 扩展:

进口

  • KHR_materials_pbrSpecularGlossiness
  • KHR_lights_punctual
  • KHR_materials_unlit
  • KHR_texture_transform

出口

  • KHR_draco_mesh_compression
  • KHR_lights_punctual
  • KHR_materials_unlit
  • KHR_texture_transform

动画

glTF 允许每个文件有多个动画,动画目标为 导出时的特定对象。为了确保包含动画, (a) 使其成为对象上的活动操作,(b) 创建单条带 NLA 轨道, 或 (c) 隐藏操作。

支持

仅支持某些类型的动画:

  • 关键帧(平移、旋转、缩放)
  • 形状键
  • 电枢/蒙皮

其他属性(如光源或材质)的动画将被忽略。

自定义属性

大多数对象的自定义属性都保留在 glTF 导出/导入中,并且 可用于用户特定目的。

原文链接:Blender插件:GLTF 2.0 导入/导出工具 (mvrlink.com)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。