com.supermap.realspace.threeddesigner

类 ModelBuilder3D



  • public abstract class ModelBuilder3D
    extends Object
    三维建模类
    • 构造器详细资料

      • ModelBuilder3D

        public ModelBuilder3D()
    • 方法详细资料

      • addSteppedListener

        public static void addSteppedListener(SteppedListener l)
      • removeSteppedListener

        public static void removeSteppedListener(SteppedListener l)
      • generateRoofedBuilding

        public static GeoModel3D generateRoofedBuilding(GeoRegion geoRegion,
                                                        boolean isLonLat,
                                                        boolean isRandom,
                                                        RoofGeneratorParameter parameter)
        矢量面构建屋顶。
        参数:
        geoRegion - 矢量面。
        isLonLat - 数据是否是经纬度。
        isRandom - 是否随机添加屋顶,isRandom为true时, 屋顶构造参数只需要设置一个建筑物高度,底层会随机给一个屋顶类型并设置相应的参数。
        parameter - 屋顶参数。
        返回:
        生成的屋顶模型。
      • buildGeoBody

        public static GeoModel3D buildGeoBody(Point3Ds ptList,
                                              double[] maxHighList,
                                              double[] minHighList)
        点集中每个点的最大高度和最小高度构建地质体。
        参数:
        ptList - 多层点集
        maxHighList - 点的最大高度集合
        minHighList - 点的最小高度集合
        返回:
        返回生成的地质体模型
      • buildTIN

        public static GeoModel3D buildTIN(Point3Ds ptList,
                                          boolean bLonLat,
                                          Geometry clipRegions)
        点集构建三角网模型。
        参数:
        ptList - 点集
        bLonLat - 是否是经纬度
        clipRegions - 裁剪范围
        返回:
        三角网模型
      • combineSkeletonByMaterial

        @Deprecated
        public static boolean combineSkeletonByMaterial(Model modelSrc,
                                                                     Model modelResult)
        已过时。 
      • convexHull

        public static GeoModel3D convexHull(ArrayList<GeoPoint3D> geoPnts,
                                            boolean bLonLat)
        计算凸包。
        参数:
        geoPnts - 点集
        bLonLat - geoPnts是否是经纬度
        返回:
        凸包结果GeoModel3D
      • convexHull

        public static GeoModel3D convexHull(Point3Ds pnts,
                                            boolean bLonLat)
        计算凸包。
        参数:
        pnts - 点集
        bLonLat - pnts是否是经纬度
        返回:
        凸包结果 GeoModel3D
      • convexHull

        public static Model convexHull(Model modelSrc)
        计算凸包
        参数:
        modelSrc - 源模型
        返回:
        凸包结果
      • convexHull

        public static Model convexHull(Model modelSrc,
                                       SkeletonID id)
        计算凸包
        参数:
        modelSrc - 源模型
        id - 子对象
        返回:
        凸包结果
      • convexHullPerSkeleton

        public static Model convexHullPerSkeleton(Model modelSrc)
        计算凸包:每个子对象对应一个凸包。
        参数:
        modelSrc - 源模型
        返回:
        凸包结果
      • extractBorder

        public static ArrayList<GeoRegion3D> extractBorder(GeoModel3D geoModel,
                                                           BorderType borderType)
        提取边界。
        参数:
        geoModel - 源模型
        borderType - 边界类型
        返回:
        返回提取的模型边界GeoRegion3D对象集合
      • linearExtrude

        @Deprecated
        public static GeoModel3D linearExtrude(Geometry geometry,
                                                            boolean bLonLat,
                                                            double height,
                                                            double twist,
                                                            double scaleX,
                                                            double scaleY)
        已过时。 
      • linearExtrude

        public static GeoModel3D linearExtrude(Geometry geometry,
                                               boolean bLonLat,
                                               LinearExtrudeParameter extParam,
                                               TextureMapParameter uvwParam)
        线性拉伸,可进行贴图设置。
        参数:
        geometry - 待进行线性拉伸的面
        bLonLat - 是否是经纬度
        extParam - 拉伸参数
        uvwParam - 纹理设置参数
        返回:
      • loft

        public static GeoModel3D loft(Geometry geometry,
                                      GeoLine3D line,
                                      boolean bLonLat,
                                      int Chamfer,
                                      ChamferStyle style)
        放样
        参数:
        geometry - 放样的横截面
        line - 待放样的线对象
        bLonLat - 是否是经纬度
        Chamfer - 平滑程度
        style - 倒角样式
        返回:
        返回GeoModel3D对象
      • loft

        public static GeoModel3D loft(Geometry geometry,
                                      GeoLine3D line,
                                      boolean bLonLat,
                                      int Chamfer,
                                      ChamferStyle style,
                                      TextureMapParameter texParam)
        放样
        参数:
        geometry - 放样的横截面
        line - 待放样的线对象
        bLonLat - 是否是经纬度
        Chamfer - 平滑程度
        style - 倒角样式
        texParam - 贴图设置
        返回:
        返回GeoModel3D对象
      • loft

        public static GeoModel3D loft(Geometry geometry,
                                      GeoLine3D line,
                                      boolean bLonLat,
                                      LoftParameter loftParams,
                                      TextureMapParameter uvwParam)
        放样
        参数:
        geometry - 放样的横截面
        line - 待放样的线对象
        bLonLat - 是否是经纬度
        loftParams - 放样的参数
        uvwParam - 纹理映射参数
        返回:
      • planeProjection

        public static GeoRegion planeProjection(GeoModel3D model)
        平面投影:仅支持投影坐标系模型
        参数:
        model - 源模型
        返回:
        投影三维面
      • planeProjection

        public static GeoRegion3D planeProjection(GeoModel3D model,
                                                  Plane plane)
        平面投影
        参数:
        model - 源模型
        plane - 平面
        返回:
        投影三维面
      • planeProjection2D

        public static GeoRegion planeProjection2D(GeoModel3D model,
                                                  Plane plane)
        平面投影,将获得的投影转到XY上
        参数:
        model - 源模型
        plane - 平面
        返回:
        投影二维面
      • reComputeNormal

        public static boolean reComputeNormal(Model modelSrc,
                                              Model modelResult,
                                              NormalComputeMode normalMode,
                                              double dAngle)
        重新计算法线
        参数:
        modelSrc - 源模型
        modelResult - 结果模型
        normalMode - 法线计算模式
        dAngle - 拆分的角度阈值
        返回:
        是否成功
      • removeDuplicateVertex2

        public static int removeDuplicateVertex2(Model modelSrc,
                                                 Model modelResult)
        移除重复顶点;结果为带属性的Index
        参数:
        modelSrc - 源模型
        modelResult - 结果模型
        返回:
        返回移除的点个数
      • removeDuplicateVertex2

        public static int removeDuplicateVertex2(Skeleton skeleton)
        移除重复顶点
        参数:
        skeleton - 源模型骨架
        返回:
        带属性的Index
      • removeUnreferencedVertex

        @Deprecated
        public static int removeUnreferencedVertex(Model modelSrc,
                                                                Model modelResult)
        已过时。 
        移除孤立顶点
        参数:
        modelSrc - 源模型
        modelResult - 结果模型
        返回:
        返回移除的点个数
      • rotateExtrude

        public static GeoModel3D rotateExtrude(Geometry geometry,
                                               double angle)
        旋转拉伸
        参数:
        geometry - 面对象(必须在平面坐标系下构建)
        angle - 旋转角度
        返回:
        结果模型
      • rotateExtrude

        public static GeoModel3D rotateExtrude(Geometry geometry,
                                               RotateExtrudeParameter rotParam)
        旋转拉伸
        参数:
        geometry - 面对象(必须在平面坐标系下构建)
        rotParam - 旋转拉伸参数
        返回:
      • sectionProjection2D

        public static GeoRegion sectionProjection2D(GeoModel3D model,
                                                    Plane plane)
        截面投影,获得的截面转到XY上
        参数:
        model - 待进行截面投影的三维几何模型对象
        plane - 投影平面
        返回:
        二维几何面GeoRegion
      • sectionProjection

        public static GeoRegion3D sectionProjection(GeoModel3D model,
                                                    Plane plane)
        截面投影,获得截面
        参数:
        model - 待进行截面投影的三维几何模型对象
        plane - 投影平面
        返回:
        三维几何面GeoRegion3D
      • sectionProjection

        public static ArrayList<GeoRegion3D> sectionProjection(ArrayList<GeoModel3D> modelList,
                                                               Plane plane)
        截面投影,获得截面
        参数:
        modelList - 待进行截面投影的三维几何模型对象集合
        plane - 投影平面
        返回:
        三维几何面GeoRegion3D
      • sectionProjection

        public static ArrayList<GeoRegion3D> sectionProjection(GeoModel3D model,
                                                               ArrayList<Plane> planeList)
        截面投影,获得截面
        参数:
        model - 待进行截面投影的三维几何模型对象
        planeList - 裁剪平面集合
        返回:
        三维几何面GeoRegion3D集合
      • simplify

        public static boolean simplify(Model modelSrc,
                                       Model modelResult,
                                       double dbRatio,
                                       boolean bConstrainBorder)
        精细层简化
        参数:
        modelSrc - 源模型
        modelResult - 简化结果(外部可以事先设置关联的EM)
        dbRatio - 简化率:即简化为原来的多少
        bConstrainBorder - 是否约束边界
        返回:
        简化是否成功
      • simplify

        public static boolean simplify(Model modelSrc,
                                       Model modelResult,
                                       double dbRatio,
                                       double dbThreshold)
        精细层简化
        参数:
        modelSrc - 源模型
        modelResult - 简化结果(外部可以事先设置关联的EM)
        dbRatio - 简化率:即简化为原来的多少
        dbThreshold - 最大简化边长:边长大于dbThreshold的,不参与简化
        返回:
        简化是否成功
      • simplify

        public static boolean simplify(Model modelSrc,
                                       Model modelResult,
                                       ArrayList<SkeletonID> listIDs,
                                       double[] listRatio,
                                       boolean bConstrainBorder)
        精细层指定子对象简化
        参数:
        modelSrc - 源模型
        modelResult - 简化结果(外部可以事先设置关联的EM)
        listIDs - 指定子对象ID集合
        listRatio - 指定子对象简化率集合:即简化为原来的多少
        bConstrainBorder - 是否约束边界
        返回:
        简化是否成功
      • simplify

        public static boolean simplify(Model modelSrc,
                                       Model modelResult,
                                       ArrayList<SkeletonID> listIDs,
                                       double[] listRatio,
                                       double[] listThreshold)
        精细层指定子对象简化
        参数:
        modelSrc - 源模型
        modelResult - 简化结果(外部可以事先设置关联的EM)
        listIDs - 指定子对象ID集合
        listRatio - 指定子对象简化率集合:即简化为原来的多少
        listThreshold - 指定子对象最大简化边长集合:边长大于dbThreshold的,不参与简化
        返回:
        简化是否成功
      • split

        @Deprecated
        public static int split(Model modelSrc,
                                             Model modelResult)
        已过时。 
        模型拆分
        参数:
        modelSrc - 源模型
        modelResult - 结果模型
        返回:
        拆分个数
      • splitSkeleton

        public static boolean splitSkeleton(Model modelSrc,
                                            Model modelResult,
                                            boolean bVertexPositionConsidered)
        模型的子对象拆分
        参数:
        modelSrc - 源模型
        modelResult - 结果模型
        bVertexPositionConsidered - 拆分时是否考虑顶点位置
        返回:
        是否成功
      • straightSkeleton

        public static GeoModel3D straightSkeleton(Geometry geometry,
                                                  boolean bLonLat,
                                                  double dAngle)
        直骨架生成(可以用于构建坡屋顶)。
        参数:
        geometry - 面对象
        bLonLat - 是否是经纬度
        dAngle - 角度,一个Double值,值域(0.1,90),单位为度
        返回:
      • uvwMap

        public static boolean uvwMap(GeoModel3D model,
                                     TextureMapParameter texParam)
        模型贴纹理:按模型整体进行纹理贴图映射
        参数:
        model - 源模型
        texParam - 纹理映射参数
        返回:
        是否成功
      • uvwMap

        public static boolean uvwMap(Skeleton skeleton,
                                     TextureMapParameter texParam)
        骨架贴纹理:按骨架进行纹理贴图映射
        参数:
        skeleton - 骨架
        texParam - 纹理映射参数
        返回:
        是否成功
      • split

        @Deprecated
        public static int split(Model modelSrc,
                                             Model modelResult,
                                             double dThreshold)
        已过时。 
      • skylineSectorBody

        public static GeoModel3D skylineSectorBody(GeoLine3D line3D,
                                                   Point3D pntViewer,
                                                   double dHeight,
                                                   boolean bLatLon)
        获取天际线与观察点构成的闭合体,目前仅用于WebGL端构建实体。
        参数:
        line3D - 天际线分析结果线,不含视点
        pntViewer - 相机视点
        dHeight - 闭合体向下拉伸高度
        bLatLon - 是否是经纬度
        返回:
        创建后的闭合体
      • viewShedBody

        public static GeoModel3D viewShedBody(ArrayList<Point3Ds> point3Dlist,
                                              Point3D pntViewer,
                                              double dRadius,
                                              ViewShedType type,
                                              boolean bLatLon)
        获取可视域闭合体,目前仅用于WebGL端构建实体.
        参数:
        point3Dlist - 可视域球面顶点数组
        pntViewer - 相机视点
        dRadius - 可视域半径
        type - 闭合体类型
        bLatLon - 是否是经纬度数据
        返回:
        创建后的闭合体
      • createBuffer

        public static Geometry createBuffer(Geometry geometry,
                                            boolean isLonLat,
                                            BufferParameter parameter)
        三维缓冲,支持三维线、三维面缓冲(拓展)成三维面;支持三维线、三维面、模型缓冲(拓展)成三维实体模型。也支持二维线、面数据缓冲设置。
        参数:
        geometry - 二、三维线、面及模型对象
        isLonLat - 是否支持经纬度
        parameter - 缓冲参数设置
        返回:
        获得二、三维面或三维实体模型
      • mergeSkeleton

        public static boolean mergeSkeleton(Model modelSrc,
                                            Model modelResult,
                                            boolean bHasLOD)
        根据材质合并骨架
        参数:
        modelSrc - 源模型
        modelResult - 结果模型
        bHasLOD - 是否存在lod
        返回:
        是否合并成功。true表示合并成功,false表示合并失败
      • removeDuplicateTriangle

        public static boolean removeDuplicateTriangle(Skeleton skeleton)
        骨架移除重复三角形。
        参数:
        skeleton - 模型骨架
        返回:
        成功则返回移除重复三角形的骨架
      • correctTopology

        public static boolean correctTopology(Skeleton skeleton)
        骨架三角网拓扑校正
        参数:
        skeleton - 指定进行三角网拓扑校正的骨架。
        返回:
        成功则返回进行三角网拓扑校正的骨架
      • mirror

        public static boolean mirror(GeoModel3D model,
                                     Plane plane)
        镜像。可实现根据一个平面对模型镜像复制
        参数:
        model - 进行镜像复制的三维模型对象
        plane - 平面
        返回:
        返回true,则模型镜像复制完成
      • buildTIM

        public static GeoTIM buildTIM(DatasetVector pDatasetVector,
                                      String strFieldName)
        构建不规则四面体网格。
        参数:
        pDatasetVector - 待构建不规则四面体网格的点数据集
        strFieldName - 特征字段名
        返回:
        得到不规则四面体,需要将GeoTIM转成GeoModel再存储
      • buildTIM

        public static GeoTIM buildTIM(HashMap<Point3D,Double> dicPoints,
                                      boolean bLatLon)
        构建不规则四面体网格。
        参数:
        dicPoints - 点对象集合。键值为三维点对象,值为特征值
        bLatLon - 是否是经纬度
        返回:
        得到不规则四面体,需要将GeoTIM转成GeoModel再存储
      • mosaic

        public static boolean mosaic(GeoModel3D model,
                                     ArrayList<Geometry> mosaicRegionList)
        获取三角网操作中模型镶嵌信息,支持模型与矢量面进行镶嵌。
        参数:
        model - 模型对象
        mosaicRegionList - 进行镶嵌的矢量面集合
        返回:
        返回true,则模型与矢量面进行镶嵌完成
      • correctNonManifold

        public static boolean correctNonManifold(Skeleton skeleton,
                                                 ArrayList<HashMap<Point3D,Point3D>> manifoldLines,
                                                 ArrayList<Point3D> points)
        校正非流形的骨架。 实例化对象后使用,会自动判断骨架。如果校正后满足闭合条件,则骨架是闭合的;如果不满足,判断骨架任然不闭合。
        参数:
        skeleton - 进行校正的骨架
        manifoldLines - 构成骨架有问题的棱角边线集合,即有问题边。键为有问题的某一边线的起始点,值为该边线的终止点
        points - 有问题的点集合
        返回:
        校正成功后,如果满足闭合条件,则骨架处理成闭合的。返回false,则校正失败
      • geometryMatch

        public static ArrayList<Geometry3D> geometryMatch(GeoModel3D geoModel,
                                                          ArrayList<Geometry> geometryList,
                                                          MatchParameter matchParam)
        二维数据通过model匹配成三维数据
        参数:
        geoModel - 用于查询匹配的模型
        geometryList - 待查询的二维数据的集合
        matchParam - 匹配参数
        返回:
      • loft

        public static ArrayList<GeoRegion3D> loft(GeoLine offsetSection,
                                                  GeoLine3D geoLine,
                                                  boolean bLonLat,
                                                  boolean bGroup)
        多级边坡放样,支持截面为线对象,依据道路边线放样为三维边坡面。
        参数:
        offsetSection - 用于多级边坡放样的矢量线,支持二、三维矢量线数据,可表达沿道边线。必须在平面坐标系下构建
        geoLine - 边坡的截面样式,用三维线表达
        bLonLat - 用于放样的矢量线数据的坐标系是否是经纬度
        bGroup - 放样的多级边坡是否进行打组。false表示不打组,即多级边坡是不同的对象,可以设置不同的纹理贴图;true表示打组,即多级边坡为一个对象
        返回:
      • makeSurfaceMesh

        public static GeoModel3D makeSurfaceMesh(SurfaceMeshParameter parameter)
        曲面建模
        参数:
        parameter - 曲面建模参数对象
      • textureRemapping

        public static boolean textureRemapping(Model srcModel,
                                               Model desModel)
        模型数据纹理重映射。
        参数:
        srcModel - 待纹理重映射的模型数据
        desModel - 纹理重映射后的模型对象
        返回:
      • textureBoundaryOptimization

        public static boolean textureBoundaryOptimization(Model srcModel,
                                                          Model desModel,
                                                          Color backgroundColor)
        优化模型纹理边界,使接边处的纹理不发黑。
        参数:
        srcModel - 原始模型数据。
        desModel - 结果模型数据。
        backgroundColor - 背景色。
        返回:
        优化模型纹理边界是否成功。返回true,优化模型纹理边界成功;返回false,优化模型纹理边界失败。
        从以下版本开始:
        11.2.0。
      • removeDuplicateVertex2WithNormal

        public static int removeDuplicateVertex2WithNormal(Skeleton skeleton)
        移除重复点保留法线
        参数:
        skeleton - 骨架
        返回:
      • combinePolygon

        public static ArrayList<GeoRegion3D> combinePolygon(ArrayList<GeoRegion3D> regions,
                                                            boolean bLonLat,
                                                            BorderType borderType,
                                                            double dulplicateVerticesThreshold)
        支持多个三维面合并。
        参数:
        regions - 合并的三维面对象集合
        bLonLat - 是否是经纬度坐标
        borderType - 指定约束边界类型
        dulplicateVerticesThreshold - 设置节点插值阈值,单位:米
        返回:
        合并成功,获得合并后的三维面对象集合
      • makeRegion3D

        public static GeoRegion3D makeRegion3D(Region3DParameter region3DParameter)
        支持公式参数化构建矢量面
        参数:
        region3DParameter - 三维面参数
        返回:
      • removeRedundantVertex

        public static int removeRedundantVertex(Model modelSrc,
                                                Model modelResult,
                                                double dThreshold)
        移除共面的冗余点
        参数:
        modelSrc - 源模型
        modelResult - 结果模型
        dThreshold - 容差,点距离平面的距离小于该值,就认为是共面的,需要移除该点
        返回:
      • removeRedundantVertex

        public static int removeRedundantVertex(Skeleton skeleton,
                                                double dThreshold)
        根据容差,移除 Skeleton 上共面的冗余顶点
        参数:
        skeleton - 待移除冗余顶点的骨架
        dThreshold - 容差,点距离平面的距离小于该值,就认为是共面的,需要移除该点
        返回:
        返回移除了多少个点
      • splitSkeleton

        public static boolean splitSkeleton(Model srcModel,
                                            Model desModel,
                                            SplitParameter splitParameter)
        骨架拆分
        参数:
        srcModel - 源模型
        desModel - 结果模型
        splitParameter - 拆分参数
        返回:
      • buildTIN

        public static GeoModel3D buildTIN(HashMap<Point3D,Double> dicPoints,
                                          Boolean bLonLat,
                                          Geometry clipRegions)
        点集构建三角网模型
        参数:
        dicPoints - 点集
        bLonLat - 是否是经纬度
        clipRegions - 裁剪范围
        返回:
      • convexHull

        public static Model convexHull(Skeleton skeleton,
                                       Matrix matrix)
        计算凸包
        参数:
        skeleton - 骨架
        matrix - 矩阵
        返回:
      • computeConcaveHull

        public static GeoRegion3D computeConcaveHull(Point3Ds pnts,
                                                     boolean bLonLat,
                                                     double dConcavity,
                                                     double dLengthThreshold)
        计算三维点集的凹多边形,返回的三维面带Z值
        参数:
        pnts - 三维点集
        bLonLat - 标识pnts是否是经纬度
        dConcavity - 凹度,越大越接近凸包
        dLengthThreshold - 长度阈值,越大越接近凸包
        返回:
      • envelop

        public static ArrayList<GeoModel3D> envelop(Geometry3D geometry3D,
                                                    EnvelopParameter parameter)
        三维面几何对象构建闭合体,支持非经纬度坐标三维面几何对象构建闭合体。
        参数:
        geometry3D - 三维面几何对象
        parameter - 闭合拉伸体参数,支持设置是否为经纬度,拉伸高程等参数
        返回:
        构建的闭合体对象集合
      • tessellate

        public static GeoModel3D tessellate(Geometry3D geometry3D,
                                            boolean isLonLat,
                                            TessellationParameter param)
        细分,将Geometry3D转化为GeoModel3D
        参数:
        geometry3D - 参数化对象
        isLonLat - 是否是经纬度
        param - 模型细分参数
        返回:
        模型对象
      • sectionLoft

        public static GeoModel3D sectionLoft(ArrayList<Geometry3D> arrSections,
                                             boolean isLonLat,
                                             SectionLoftParameter param)
        多截面放样
        参数:
        arrSections - 源对象集合
        isLonLat - 是否是经纬度
        param - 多截面放样参数
        返回:
      • optimizeSkeletons

        public static boolean optimizeSkeletons(Model srcModel,
                                                Model desModel)
        模型子对象优化。对于子对象个数不合理,纹理散碎或尺寸过大的数据,进行重组优化(常用于被修饰的单体化倾斜摄影模型),有利于提升三维切片的加载性能。
        参数:
        srcModel - 待优化子对象的模型数据。
        desModel - 优化子对象后的模型数据。
        返回:
        模型子对象优化是否成功。返回true,模型子对象优化成功;返回false,模型子对象优化失败。
        从以下版本开始:
        11.2.0。

Copyright © 2021–2024 SuperMap. All rights reserved.