ST_ImportGLTF

将glTF文件导入到数据库中。

语法

  • 语法一:

    boolean ST_ImportGLTF(text table_name, text url,  text id, text options default '{}');
  • 语法二:

    boolean ST_ImportGLTF(text table_name, bytea content,  text id, text options default '{}');

参数

参数名称

描述

table_name

glTF表名及其拆分表的前缀。

url

如果glTF文件存储在OSS等对象存储服务中,使用此参数。更多信息,请参见对象存储服务路径

id

glTF的唯一标识。

content

如果通过二进制方式提供glTF文件,使用此参数,与参数url任选其一即可。

options

导入选项:

  • schema

  • flip_y_z

  • split_meshgeom

  • split_texture

  • sfmesh_column

  • gltf_id_column

导入选项options说明:

参数名

类型

说明

默认值

样例

schema

字符串

目标表schema。

public

postgres

flip_y_z

布尔

是否交换Y轴和Z轴坐标值。

说明

glTF数据默认Y轴向上,而Ganos默认Z轴向上。若指定交换Y轴和Z轴坐标值:

  • 开启后将视Y值为Z值,Z值为Y值。

  • 该操作适用于原生Y轴向上的glTF数据。

true

false

split_meshgeom

布尔

是否拆分几何部分。

说明

若指定拆分几何:

  • 若存在几何数据,会生成几何表[主表名]_meshgeom,主表中的纹理几何部分将会通过引用指向引用表中的对应数据,方便拆分具有大量复杂几何的数据,避免单条记录过大。

  • 若需要将多个模型导入同一张表内,需要保证传入的ID不同,否则会发生几何重复。

  • 拆分几何表和拆分纹理表可同时存在,互不干扰。

false

true

split_texture

布尔

是否拆分纹理部分。

说明

若指定拆分纹理:

  • 若存在内嵌的图片纹理,会生成纹理表[主表名]_texture,主表中的纹理部分将会通过引用指向引用表中的对应数据,方便拆分如倾斜摄影等具有大量纹理的数据,避免单条记录过大。

  • 若指定了拆分纹理,但纹理为URL形式,则不会变为引用模式。

  • 若指定了拆分纹理,但数据不含任何内嵌图片纹理,则不会生成纹理表。

  • 若需要将多个模型导入同一张表内,需要保证传入的ID不同,否则会发生纹理重复。

  • 拆分几何表和拆分纹理表可同时存在,互不干扰。

false

true

sfmesh_column

字符串

主表数据字段。

gltf_data

my_data

gltf_id_column

字符串

主表数据ID字段。

gltf_id

my_id

描述

将glTF文件以SFMesh格式导入到数据库中。

说明
  • 支持将存储在OSS等对象存储服务中的glTF文件导入数据库。

  • 支持将glTF文件的二进制数据读取到内存,然后导入数据库。

数据限制说明:

  • 仅支持SFMesh支持的数据,将忽视相机/骨架/动画等数据。

  • 仅支持三角网数据。

  • 不支持DRACO压缩后的数据。

  • 仅支持完全内嵌模式,不支持外挂二进制或外挂纹理,上述情况将视为数据错误而导致失败。

导入成功后,将在数据库中生成三张表:

glTF主表

通过指定主表数据字段和主表主键字段,您可以将数据导入自己的业务表中,该表需要支持仅插入这两个字段的操作(即必须字段需要有自动填充值)。

主表结构如下:

字段

类型

说明

备注

id

serial

唯一ID

主键

[gltf_id_column]

text

数据ID

字段名可指定。

默认为gltf_id,值为用户传入。

[sfmesh_column]

sfmesh

数据

字段名可指定。

默认为gltf_data。

glTF纹理表

纹理表结构如下:

字段

类型

说明

备注

id

serial

唯一ID

主键。

gltf_id

text

数据ID

字段名固定为gltf_id,值为用户传入。

texture_id

text

纹理ID

值为该纹理在原始glTF文件中的index。

texture

texture

数据

-

glTF几何表

几何表结构如下:

字段

类型

说明

备注

id

serial

唯一ID

主键。

gltf_id

text

数据ID

字段名固定为gltf_id,值为用户传入。

meshgeom_id

text

几何ID

值为该Mesh在原始glTF文件中的index。

meshgeom

meshgeom

数据

-

示例

SELECT ST_ImportGLTF('test_gltf', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/path_to_gltf.gltf', 'my_gltf');

---------
t