构造一个材质对象。
语法
material ST_MakeMaterial(cstring ambient default NULL,
                         cstring diffuse default NULL,
                         cstring specular default NULL,
                         integer shininess default NULL,
                         integer transparency default NULL,
                         integer texture_index default NULL);
material ST_MakeMaterial(text table_name,
                         text column_name,
                         text key_value,
                         text schema_name default NULL);
material ST_MakeMaterial(cstring attributes,
                         texture[] textures default NULL);参数
参数名称  | 描述  | 
ambient  | 环境颜色光,用16进制字符串表示RGBA颜色,例如:  | 
diffuse  | 散射光,用16进制字符串表示RGBA颜色,例如:  | 
specular  | 镜面光颜色,用16进制字符串表示RGBA颜色,例如:  | 
shininess  | 光泽度,取值:0~100。  | 
transparency  | 透明度,取值:0~100。  | 
texture_index  | 材质所对应纹理的索引信息,取值:0~32767。  | 
table_name  | 已存在material的表名。  | 
column_name  | 已存在material的列名。  | 
key_value  | 已存在material的查询唯一ID,用于where条件中。  | 
schema_name  | 已存在material的方案名,默认为用户search path中表所在的Schema。  | 
attributes  | 基于JSON类型的材质描述信息,形式为GLTF中的PBR材质描述。  | 
textures  | material所包含的textures数组。  | 
描述
构造一个材质对象。
语法一提供了基于OpenCL类型的材质描述信息,最终会转换为基于JSON的表述形式。
语法二提供了基于其他表中存储的材质信息,可以有效地降低Mesh的数据量,方便统一进行修改。
语法三提供了基于JSON类型的材质描述信息。
示例
语法一:
-- form 1 SELECT ST_AsText(ST_MakeMaterial('#FFDDEEAA', '#FFDDEEAA', '#FFDDEEAA', 30, 70, 2)); -------------------------------------------------------------------------------- {"type":"raw", "attributes": {"ambient":"#FFDDEEAA","diffuse":"#FFDDEEAA","specular":"#FFDDEEAA","shininess":30,"transparency":70,"texture":2}} -- form 1 SELECT ST_AsText(ST_MakeMaterial(diffuse => '#FFDDEEAA')); ------------------------- {"type":"raw", "attributes": {"diffuse":"#FFDDEEAA"}}语法二:
-- form 2,reference to other material object SELECT ST_AsText(ST_MakeMaterial('t_material'::text, 'the_material'::text, 'num=1'::text)); ----------------------------- {"type":"db", "attributes": {"schema":"public","table":"t_material","column":"the_material","key":"num=1"}}语法三:
-- form3, with PBR json string and textures SELECT ST_AsText(ST_MakeMaterial('{"pbrMetallicRoughness": {"baseColorFactor": [ 1.000, 0.766, 0.336, 1.0 ], "metallicFactor": 0.5,"roughnessFactor": 0.1}}', ARRAY(SELECT the_texture from t_texture))); ----------------------------- {"type":"raw", "textures":[{"compressionType" : "None", "format" : "JPEG", "wrap" : "Wrap", "type" : "Raw", "depth" : 3, "width" : 256, "height" : 256, "size" : 6, "data" : "313233343536"}], "attributes": {"pbrMetallicRoughness":{"baseColorFactor":[1.0,0.766,0.336,1.0],"metallicFactor":0.5,"roughnessFactor":0.1}}}
该文章对您有帮助吗?