简化三维模型。

语法

scene  ST_Simplify(scene sc, cstring rules);

参数

参数名称描述
scscene对象。
rules简化规则。

描述

对三维模型进行几何简化,可传入JSON模型的规则,JSON格式如下:
{
  "mothed": "percent"/"error", default is "percent",
  "threshold": default is 0.5,
  "blacklist" : ["wall","glass"],
  "boundary": default is true, simplify the boundary,
  "meshes":[
    {"names": ["m0","m1"], "threshold": 0.5},
    {"names": ["m2","m3"], "threshold": 0.001}
  ]
}
JSON字段含义如下:
参数描述
mothed简化控制方式,可选择:
  • percent:按三角面的百分比,取值范围 (0, 1)
  • error:按结果的几何误差, 取值范围 (0, +inf)
说明 percent为简化后的三角面数量与原模型三角面数量的比值, percent越小简化越多。error的计算方式为新顶点到原顶点的距离,error越大简化越多。
threshold简化的阈值,取值范围见mothed参数描述。
blacklist对模型中的Mesh按name进行过滤,黑名单中的Mesh不简化。
boundary是否简化边界,默认为true。
说明 简化边界会导致模型坍塌、破洞。
meshes.names对模型中的Mesh按name分组简化,不同组可设置不同的简化阈值。
meshes.thresholdmeshes.names对应的简化阈值。
说明 可对一个复杂的模型,进行分组简化,如提高精模部分的简化比、减少粗模部分的简化比。
模型简化可以在保持显示效果的同时,大幅降低模型的空间占用,示例如下:
  • 简化比:100%
    • 占用空间:96 MB
    • 模型效果:100%简化
  • 简化比:5%几何简化 + 25%图片简化
    • 占用空间:2.9 MB
    • 模型效果:5%+25%

示例

SELECT ST_Simplify(data,
                    '{
                        "threshold": 0.1,
                        "mothed": "percent",
                        "blacklist":["Mesh.012", "Mesh.009", "Mesh.005"],
                        "meshes": [
                            {"names":["Mesh.007"], "threshold": 0.01},
                            {"names":["Mesh.004"], "threshold": 0.3}
                        ]}') from t;
---------------------------
0x.....