com.supermap.data.processing
类 OSGBCacheBuilder

java.lang.Object
  继承者 com.supermap.data.processing.OSGBCacheBuilder

public class OSGBCacheBuilder
extends java.lang.Object

三维切片缓存(OSGB/S3M)生成类,通过该类可将模型数据集或CAD数据集生成OSGB/S3M格式的三维切片缓存文件。


构造方法摘要
OSGBCacheBuilder()
          构造一个新的OSGBCacheBuilder对象。
OSGBCacheBuilder(DatasetVector dataset, java.lang.String outputFolder, java.lang.String name)
          根据指定的DatasetVector对象、输出目录及缓存名称,构造一个新的OSGBCacheBuilder对象。
 
方法摘要
 void addSteppedListener(SteppedListener l)
          添加一个用于接收进度条事件(SteppedEvent)的监听器。
 boolean append(UpdateType updateType, boolean bCreateConfigFile)
          模型缓存局部更新。
static boolean b3dmFile2MongoDB(java.lang.String scpFileName, TileStorageConnection mongoConn)
          3DTiles缓存文件导入MongoDB数据库 。
 boolean build()
          生成三维切片缓存(OSGB/S3M)。
 boolean buildTile(java.util.HashMap<java.lang.String,int[]> geoModelIDs, boolean bCombineModels)
          模型数据集对应ID模型生成切片。
 boolean buildTiles()
          多进程环境下生成缓存(不生成配置文件).
 boolean buildWithoutConfigFile()
          生成三维切片缓存(OSGB/S3M)。
 boolean buildWithTileClip()
          已过时。 生成缓存(切片切割),可用于白模生成缓存。该缓存叠加体缓存时,不支持纹理重映射。
static boolean combineOSGBFile(java.lang.String outputFileName, java.util.ArrayList<java.lang.String> fileNames, double dPercent, double dDistance, float fErrorValue)
          合并OSGB文件,在指定OSGB模型的基础上,合并一层粗糙层。
static boolean combineRootNodes(java.lang.String[] inScpFilePaths, java.lang.String saveSCPFullPath, int combineLevel, java.util.HashMap<java.lang.Integer,java.lang.Double> simplifyPercent, int threadCount)
          多个模型缓存合并根节点(合并图层)
static boolean combineRootNodes(java.lang.String inScpFilePath, java.lang.String saveSCPName, int combineLevel, java.util.HashMap<java.lang.Integer,java.lang.Double> simplifyPercent, int threadCount)
          已过时。 
static boolean combineRootNodes(java.lang.String inScpFilePath, java.lang.String saveSCPName, int combineLevel, java.util.HashMap<java.lang.Integer,java.lang.Double> simplifyPercent, int threadCount, float objectFiltrateThreshold)
          模型缓存合并根节点(不合并图层)
static boolean compressTextureAndGeometry(java.lang.String scpPath, java.lang.String outputFolder, CompressedTextureType compressedTextureType, VertexOptimizationType vertexOptimizationType, int threadCount)
          精模缓存纹理和几何再压缩
 void dispose()
          释放OSGBCacheBuilder对象所占的资源。
static boolean generateConfigFile(java.lang.String configFileName, Point3D position, PrjCoordSys value, java.util.ArrayList<java.lang.String> fileNames)
          生成scp索引文件。
static boolean generateConfigFile(java.lang.String configFileName, Point3D position, PrjCoordSys value, boolean bNEU, java.util.ArrayList<java.lang.String> fileNames)
          生成scp索引文件,此方式支持NEU(测站地方空间直角)坐标系。
static boolean generateConfigFile(java.lang.String configFileName, Point3D position, PrjCoordSys value, CoordSysTransParameter coordSysTransParam, CoordSysTransMethod coordSysTransMethod, java.util.ArrayList<java.lang.String> fileNames)
          生成scp索引文件。
static boolean generateConfigFile(java.lang.String configFileName, Point3D position, PrjCoordSys value, CoordSysTransParameter coordSysTransParam, CoordSysTransMethod coordSysTransMethod, java.lang.Boolean bNEU, java.util.ArrayList<java.lang.String> fileNames)
          生成scp索引文件。
static boolean generateConfigFile(java.lang.String configFileName, Point3D position, PrjCoordSys value, PrjCoordSys valueDes, CoordSysTransParameter coordSysTransParam, CoordSysTransMethod coordSysTransMethod, java.util.ArrayList<java.lang.String> fileNames)
          生成scp索引文件。
static boolean generateConfigFile(java.lang.String configFileName, Point3D position, PrjCoordSys value, java.lang.String[] fileNames, TileStorageConnection mongoConn)
          生成scp索引文件。
 java.lang.String getAssociateMaterialFile()
          获取生成S3M缓存关联材质文件路径。
 AttributeExtentType getAttributeExtentType()
          获取属性存储类型,包括s3md和attribute两种类型。
 Rectangle2D getBounds()
          获取缓存地理范围。
 java.lang.String getCacheName()
          获取缓存名称,不包含路径及后缀。
 CompressedTextureType getCompressedTextureType()
          获取纹理压缩格式
 DatasetVector getDataset()
          获取生成三维切片缓存的数据集对象。
 java.util.ArrayList<DatasetSetting> getDatasetSettingArray()
          获取批量生成三维切片缓存,将多个模型数据集生成到一个缓存文件中。
 PrjCoordSysType getDynamicPrjCoordSysType()
          获取动态投影信息。
static java.util.ArrayList<TextureData> getExtrudeRegionTexFromVoxelGrid(Geometry geometry, double height, DatasetVolume datasetVolume, ColorDictionary table)
          支持根据矢量面及拉伸高度从对应体元栅格中提取纹理,并支持设置颜色表。
 java.lang.String[] getFieldsNames()
          生成缓存时,获取保留指定属性字段。
 CacheFileType getFileType()
          获取生成缓存时的数据格式
 boolean getIsCalNormal()
          缓存是否重新计算法线。
 boolean getIsInstance()
          是否实例化。
 CacheLimitTextureSize getLimitTextureSize()
          获取纹理大小限制
 int getLODSize()
          获取LOD层级数量。
 MaterialType getMaterialType()
          获取材质类型。
 int getMipmapCount()
          获取纹理Mipmap数量。
 MultiTextureMode getMultiTextureMode()
          获取模型生成缓存时,纹理设置生成单重纹理或者多重纹理。
 double getObjectFiltrateThreshold()
          获取粗糙层对象过滤阀值。
 java.lang.String getOutputFolder()
          获取输出路径。
 double getOutputScale()
          获取缓存的比例尺大小。
 Point3D getPosition()
          获取插入点的位置。
 int getProcessThreadsCount()
          获取生成缓存的线程数。
 ProcessFileType getProcessType()
          获取生成缓存时的文件处理类型。
 Recordset getRecordset()
          获取缓存的记录集。
 SecondTextureType getSecondTextureType()
          获取第二重纹理类型
 double getSideTilingU()
          获取侧面U值
 double getSideTilingV()
          获取侧面V值 游戏引擎美化使用,CalTilingTextureCoords和SideTilingU、SideTilingV一起使用
 java.util.Map<java.lang.Integer,java.lang.Double> getSimplifyPercent()
          获取LOD层网格简化率。
 StorageType getStorageType()
          获取瓦片的存储类型。
 boolean getTextureSharing()
          获取纹理是否公用。
 java.util.ArrayList<Rectangle2D> getTileBounds()
          获取每个生成缓存切片的Bounds。
 double getTileHeight()
          获取三维切片缓存的瓦片的高度.
 java.util.ArrayList<TileInfos> getTileInfosArray()
          获取每个生成缓存切片的信息。
 PyramidSplitType getTilePyramidSplitType()
          获取单个切片的金字塔剖分类型。
 double getTileWidth()
          获取OSGB缓存切片大小。
 java.util.ArrayList<UpdateObjectsInfo> getUpdateObjectsInfoArray()
          获取模型局部更新的ID值集合。
 boolean isCalTangentAndBinormal()
          获取获是否重新计算切线、副切线
 boolean isCalTilingTextureCoords()
          是否按box映射再生成一重纹理
 boolean isCombineRepeatTextures()
          得到重复贴图打组
 boolean isHasOutLine()
          是否有边框线
 boolean isLogEnable()
          获取是否输出错误日志.
 boolean isRemoveNormal()
          获取是否移除原始数据法线。
static boolean osgbFile2MongoDB(java.lang.String scpFileName, TileStorageConnection mongoConn, java.lang.String scpMongoFile)
          OSGB缓存文件导入MongoDB数据库 。
static boolean rebuildS3MTiles(java.lang.String scpFilePath, java.lang.String associateMaterialFile, java.lang.String outputPath, java.lang.String cacheName)
          S3M缓存重切片。
 void removeSteppedListener(SteppedListener l)
          移除一个用于接收进度条事件(SteppedEvent)的监听器。
 void setAssociateMaterialFile(java.lang.String assocaiateFile)
          设置生成S3M缓存关联材质文件路径。
 void setAttributeExtentType(AttributeExtentType type)
          设置属性存储类型,包括s3md和attribute两种类型。
 void setBounds(Rectangle2D value)
          设置缓存地理范围。
 void setCacheName(java.lang.String name)
          设置缓存名称,不包含路径及后缀。
 void setCacheVersion(S3MVersion version)
          设置S3M版本。
 void setCalTangentAndBinormal(boolean isCalTangentAndBinormal)
          设置是否重新计算切线、副切线
 void setCalTilingTextureCoords(boolean isCalTilingTextureCoords)
          设置是否按box映射再生成一重纹理 游戏引擎美化使用,CalTilingTextureCoords和SideTilingU、SideTilingV一起使用
 void setCombineRepeatTextures(boolean value)
          设置重复贴图打组
 void setCompressedTextureType(CompressedTextureType value)
          设置纹理压缩格式
 void setConnectionInfo(TileStorageConnection connInfo)
          设置生成时连接mongo数据库的信息。
 void setDataset(DatasetVector value)
          设置生成三维切片缓存的数据集对象。
 void setDatasetArray(DatasetVector[] arrDataset)
          设置多个数据集生成一个缓存文件。
 void setDatasetSettingArray(java.util.ArrayList<DatasetSetting> datasetSettings)
          设置批量生成三维切片缓存,将多个模型数据集生成到一个缓存文件中。
 void setDynamicPrjCoordSysType(PrjCoordSysType prjType)
          设置动态投影信息。
 void setFieldsNames(java.lang.String[] fieldsNames)
          生成缓存时,设置保留指定属性字段。
 void setFileType(CacheFileType fileType)
          设置生成缓存时的数据格式
 void setHasOutLine(boolean value)
          设置是否有边框线
 void setIsCalNormal(boolean value)
          设置缓存是否重新计算法线。
 void setIsInstance(boolean bInstance)
          设置是否实例化。
 void setLimitTextureSize(CacheLimitTextureSize value)
          设置纹理大小限制
 void setLODSize(int value)
          设置LOD层级数量。
 void setLogEnable(boolean isErrorLogOut)
          设置是否输出错误日志.
 void setMaterialType(MaterialType materialType)
          设置材质类型。
 void setMipmapCount(int value)
          设置纹理Mipmap数量。
 void setMultiTextureMode(MultiTextureMode mode)
          设置模型生成缓存时,纹理设置生成单重纹理或者多重纹理。
 void setObjectFiltrateThreshold(double dbValue)
          设置粗糙层对象过滤阀值。
 void setOutputFolder(java.lang.String name)
          设置输出路径。
 void setOutputScale(double value)
          设置缓存的比例尺大小。
 void setPosition(Point3D value)
          设置插入点的位置。
 void setProcessThreadsCount(int value)
          设置生成缓存的线程数。
 void setProcessType(ProcessFileType value)
          设置生成缓存时的文件处理类型。
 void setRecordset(Recordset value)
          设置缓存的记录集。
 void setRemoveNormal(boolean value)
          设置是否移除原始数据法线。
 void setSecondTextureType(SecondTextureType secondTextureType)
          设置第二重纹理类型
 void setSideTilingU(double sideTilingU)
          设置侧面U值 游戏引擎美化使用,CalTilingTextureCoords和SideTilingU、SideTilingV一起使用
 void setSideTilingV(double sideTilingV)
          设置侧面V值
 void setSimplifyPercent(java.util.Map<java.lang.Integer,java.lang.Double> mapPercent)
          设置LOD层网格简化率。
 void setStorageType(StorageType storageType)
          设置瓦片的存储类型。
 void setTextureSharing(boolean bShare)
          设置纹理是否公用。
 void setTileHeight(double setTileHeight)
          设置三维切片缓存的瓦片高度,与金字塔剖分类型-八叉树一起使用.
 void setTileInfos(java.util.ArrayList<TileInfos> infos)
          设置每个三维瓦片的信息。
 void setTileInfos(TileInfos value)
          生成指定瓦片信息对应的切片
 void setTilePyramidSplitType(PyramidSplitType value)
          设置单个切片的金字塔剖分类型。
 void setTileWidth(java.lang.Double value)
          设置OSGB缓存切片大小。
 void setUpdateObjectsInfoArray(java.util.ArrayList<UpdateObjectsInfo> updateObjectsInfos)
          设置模型局部更新的ID值集合。
 boolean toConfigAndIndexFile(java.lang.String filename)
          将三维切片缓存的所有切片信息直接写入到配置文件中,并将属性字段索引写入索引文件。
static boolean upgradeS3MB(S3MVersion s3mVersion, java.lang.String srcScpPath, java.lang.String outputFolder)
          s3m2.0转s3m3.0
static boolean upgradeS3MB(S3MVersion s3mVersion, java.lang.String srcScpPath, java.lang.String outputFolder, UpgradeS3MParameters params)
          S3M版本升级(支持纹理压缩类型以及几何压缩类型) 支持将S3M1.0升级到S3M2.0或者S3M3.0,支持将S3M2.0升级到S3M3.0。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

OSGBCacheBuilder

public OSGBCacheBuilder()
构造一个新的OSGBCacheBuilder对象。


OSGBCacheBuilder

public OSGBCacheBuilder(DatasetVector dataset,
                        java.lang.String outputFolder,
                        java.lang.String name)
根据指定的DatasetVector对象、输出目录及缓存名称,构造一个新的OSGBCacheBuilder对象。

参数:
dataset - 指定的recordest对象。
outputFolder - 指定的输出路径。
name - 指定的缓存名称。
方法详细信息

getDataset

public DatasetVector getDataset()
获取生成三维切片缓存的数据集对象。

返回:
生成三维切片缓存的数据集对象。

setDataset

public void setDataset(DatasetVector value)
设置生成三维切片缓存的数据集对象。

参数:
value - 生成三维切片缓存的数据集对象。

getBounds

public Rectangle2D getBounds()
获取缓存地理范围。

返回:
缓存地理范围。

setBounds

public void setBounds(Rectangle2D value)
设置缓存地理范围。

参数:
value - 缓存地理范围。

getCacheName

public java.lang.String getCacheName()
获取缓存名称,不包含路径及后缀。

返回:
缓存名称。

setCacheName

public void setCacheName(java.lang.String name)
设置缓存名称,不包含路径及后缀。

参数:
name - 缓存名称。

getDynamicPrjCoordSysType

public PrjCoordSysType getDynamicPrjCoordSysType()
获取动态投影信息。

返回:
动态投影信息。

setDynamicPrjCoordSysType

public void setDynamicPrjCoordSysType(PrjCoordSysType prjType)
设置动态投影信息。

参数:
prjType - 动态投影信息。

setFileType

public void setFileType(CacheFileType fileType)
设置生成缓存时的数据格式

参数:
fileType - 生成缓存时的数据格式 S3MB or S3MBlock。

getFileType

public CacheFileType getFileType()
获取生成缓存时的数据格式

返回:
生成缓存时的数据格式 S3MB or S3MBlock。

setIsCalNormal

public void setIsCalNormal(boolean value)
设置缓存是否重新计算法线。


getIsCalNormal

public boolean getIsCalNormal()
缓存是否重新计算法线。

返回:
osgb缓存是否重新计算法线。

getOutputFolder

public java.lang.String getOutputFolder()
获取输出路径。


setOutputFolder

public void setOutputFolder(java.lang.String name)
设置输出路径。

参数:
name -

getOutputScale

public double getOutputScale()
获取缓存的比例尺大小。

返回:
缓存的比例尺大小。

setOutputScale

public void setOutputScale(double value)
设置缓存的比例尺大小。

参数:
value -

getProcessType

public ProcessFileType getProcessType()
获取生成缓存时的文件处理类型。

返回:
生成缓存时的文件处理类型。

setProcessType

public void setProcessType(ProcessFileType value)
设置生成缓存时的文件处理类型。

参数:
value -

setRecordset

public void setRecordset(Recordset value)
设置缓存的记录集。

参数:
value - 缓存的记录集。

getRecordset

public Recordset getRecordset()
获取缓存的记录集。

返回:
缓存的记录集。

setTileWidth

public void setTileWidth(java.lang.Double value)
设置OSGB缓存切片大小。

参数:
value - OSGB缓存切片大小。

getTileWidth

public double getTileWidth()
获取OSGB缓存切片大小。


setLODSize

public void setLODSize(int value)
设置LOD层级数量。

参数:
value - LOD层级数量。

getLODSize

public int getLODSize()
获取LOD层级数量。


setMipmapCount

public void setMipmapCount(int value)
设置纹理Mipmap数量。


getMipmapCount

public int getMipmapCount()
获取纹理Mipmap数量。

返回:
纹理Mipmap数量。

setObjectFiltrateThreshold

public void setObjectFiltrateThreshold(double dbValue)
设置粗糙层对象过滤阀值。


getObjectFiltrateThreshold

public double getObjectFiltrateThreshold()
获取粗糙层对象过滤阀值。

返回:
粗糙层对象过滤阀值。

setSimplifyPercent

public void setSimplifyPercent(java.util.Map<java.lang.Integer,java.lang.Double> mapPercent)
设置LOD层网格简化率。

10i(2021)版本修改了简化率的实现。如设置3层LOD,第一层、第二层、第三层分别对应的75%、50%、25%。这里的75%表示简化至75%,即第一层LOD的模型是精细层模型简化了25%后的结果。


getSimplifyPercent

public java.util.Map<java.lang.Integer,java.lang.Double> getSimplifyPercent()
获取LOD层网格简化率。

10i(2021)版本修改了简化率的实现。如设置3层LOD,第一层、第二层、第三层分别对应的75%、50%、25%。这里的75%表示简化至75%,即第一层LOD的模型是精细层模型简化了25%后的结果。


setTilePyramidSplitType

public void setTilePyramidSplitType(PyramidSplitType value)
设置单个切片的金字塔剖分类型。

参数:
value -

getTilePyramidSplitType

public PyramidSplitType getTilePyramidSplitType()
获取单个切片的金字塔剖分类型。

返回:
单个切片的金字塔剖分类型。

getIsInstance

public boolean getIsInstance()
是否实例化。

返回:
是否实例化。

setIsInstance

public void setIsInstance(boolean bInstance)
设置是否实例化。


setConnectionInfo

public void setConnectionInfo(TileStorageConnection connInfo)
设置生成时连接mongo数据库的信息。

参数:
connInfo - 生成时连接mongo数据库的信息。

setStorageType

public void setStorageType(StorageType storageType)
设置瓦片的存储类型。

参数:
storageType - 瓦片的存储类型。

getStorageType

public StorageType getStorageType()
获取瓦片的存储类型。

返回:
瓦片的存储类型。

setTextureSharing

public void setTextureSharing(boolean bShare)
设置纹理是否公用。


getTextureSharing

public boolean getTextureSharing()
获取纹理是否公用。


getTileBounds

public java.util.ArrayList<Rectangle2D> getTileBounds()
获取每个生成缓存切片的Bounds。


setDatasetArray

public void setDatasetArray(DatasetVector[] arrDataset)
设置多个数据集生成一个缓存文件。

参数:
arrDataset - 数据集集合。

getProcessThreadsCount

public int getProcessThreadsCount()
获取生成缓存的线程数。


setProcessThreadsCount

public void setProcessThreadsCount(int value)
设置生成缓存的线程数。

参数:
value - 待设置线程数。

getTileInfosArray

public java.util.ArrayList<TileInfos> getTileInfosArray()
获取每个生成缓存切片的信息。


build

public boolean build()
生成三维切片缓存(OSGB/S3M)。

返回:
true表示生成缓存成功。

buildWithoutConfigFile

public boolean buildWithoutConfigFile()
生成三维切片缓存(OSGB/S3M)。使用该方法创建缓存不会生成配置文件。

使用场景:该方法用于服务器端接收客户端请求时使用。

返回:
true表示创建缓存成功,false表示创建缓存失败。

toConfigAndIndexFile

public boolean toConfigAndIndexFile(java.lang.String filename)
将三维切片缓存的所有切片信息直接写入到配置文件中,并将属性字段索引写入索引文件。使用该方法不生成缓存切片。

使用场景:该方法用于客户端向服务器请求切片文件,服务器端实时切缓存时使用。

参数:
filename - 指定的保存配置文件的路径。
返回:
一个布尔值,表示是否成功保存缓存配置文件,即.scp 文件,若保存缓存配置文件成功返回 true,否则返回 false。

generateConfigFile

public static boolean generateConfigFile(java.lang.String configFileName,
                                         Point3D position,
                                         PrjCoordSys value,
                                         java.util.ArrayList<java.lang.String> fileNames)
生成scp索引文件。

参数:
configFileName - 指定的scp文件名。
position - 指定的插入点坐标。
value - 指定投影信息。
fileNames - 指定根节点路径。
返回:
false表示失败,true表示成功。

generateConfigFile

public static boolean generateConfigFile(java.lang.String configFileName,
                                         Point3D position,
                                         PrjCoordSys value,
                                         boolean bNEU,
                                         java.util.ArrayList<java.lang.String> fileNames)
生成scp索引文件,此方式支持NEU(测站地方空间直角)坐标系。

参数:
configFileName - 指定的scp文件名。
position - 指定的插入点坐标。
value - 指定投影信息。
bNEU - 指定是否为地方空间直角坐标系。
fileNames - 指定根节点路径。
返回:
false表示失败,true表示成功。

dispose

public void dispose()
释放OSGBCacheBuilder对象所占的资源。


addSteppedListener

public void addSteppedListener(SteppedListener l)
添加一个用于接收进度条事件(SteppedEvent)的监听器。

参数:
l - 一个用于接收进度条事件的监听器。

removeSteppedListener

public void removeSteppedListener(SteppedListener l)
移除一个用于接收进度条事件(SteppedEvent)的监听器。

参数:
l - 一个用于接收进度条事件的监听器。

generateConfigFile

public static boolean generateConfigFile(java.lang.String configFileName,
                                         Point3D position,
                                         PrjCoordSys value,
                                         CoordSysTransParameter coordSysTransParam,
                                         CoordSysTransMethod coordSysTransMethod,
                                         java.util.ArrayList<java.lang.String> fileNames)
生成scp索引文件。

参数:
configFileName - 指定的scp文件名。
position - 指定的插入点坐标。
value - 指定投影信息。
coordSysTransParam - 指定的投影转换参数。
coordSysTransMethod - 指定的投影转换方法。
fileNames - 指定根节点路径。
返回:
表示是否成功生成索引文件。false表示失败,true表示成功。

generateConfigFile

public static boolean generateConfigFile(java.lang.String configFileName,
                                         Point3D position,
                                         PrjCoordSys value,
                                         CoordSysTransParameter coordSysTransParam,
                                         CoordSysTransMethod coordSysTransMethod,
                                         java.lang.Boolean bNEU,
                                         java.util.ArrayList<java.lang.String> fileNames)
生成scp索引文件。

参数:
configFileName - 指定的scp文件名。
position - 指定的插入点坐标。
value - 指定投影信息。
coordSysTransParam - 指定的投影转换参数。
coordSysTransMethod - 指定的投影转换方法。
bNEU - 指定是否为地方空间直角坐标系。
fileNames - 指定根节点路径。
返回:
表示是否成功生成索引文件。 false表示失败,true表示成功。

generateConfigFile

public static boolean generateConfigFile(java.lang.String configFileName,
                                         Point3D position,
                                         PrjCoordSys value,
                                         PrjCoordSys valueDes,
                                         CoordSysTransParameter coordSysTransParam,
                                         CoordSysTransMethod coordSysTransMethod,
                                         java.util.ArrayList<java.lang.String> fileNames)
生成scp索引文件。

参数:
configFileName - 指定的scp文件名。
position - 指定的插入点坐标。
value - 指定的源投影信息。
valueDes - 指定的目标投影信息。
coordSysTransParam - 指定的投影转换参数。
coordSysTransMethod - 指定的投影转换方法。
fileNames - 指定根节点路径。
返回:
表示是否成功生成索引文件。false表示失败,true表示成功。

generateConfigFile

public static boolean generateConfigFile(java.lang.String configFileName,
                                         Point3D position,
                                         PrjCoordSys value,
                                         java.lang.String[] fileNames,
                                         TileStorageConnection mongoConn)
生成scp索引文件。

参数:
configFileName - 指定的scp文件名。
position - 指定的插入点坐标。
value - 指定投影信息。
fileNames - 指定根节点路径。
mongoConn - 读数据库中实体信息所需的数据库连接信息
返回:
false表示失败,true表示成功。

combineOSGBFile

public static boolean combineOSGBFile(java.lang.String outputFileName,
                                      java.util.ArrayList<java.lang.String> fileNames,
                                      double dPercent,
                                      double dDistance,
                                      float fErrorValue)
合并OSGB文件,在指定OSGB模型的基础上,合并一层粗糙层。

参数:
outputFileName - 合并后的OSGB文件名。
fileNames - 需要合并的OSGB文件名称列表。
dPercent - 指定的简化率,取值范围[0,1],0表示所有的网格都不简化,1表示当模型网格的距离在指定的阈值内全部简化,0-1之间表示当模型网格的距离在指定的阈值内按照指定的百分比进行简化, 比如0.5表示,假如模型的网格距离在指定的阈值内的数量有100个,那么只简化50个。
dDistance - 指定的切换距离,合并后粗糙层和原始OSGB文件的相机切换距离。
fErrorValue - 指定的网格简化阈值。当模型网格距离小于指定的阈值,就会被简化。
返回:
一个布尔值,true表示合并成功,false表示合并失败。

osgbFile2MongoDB

public static boolean osgbFile2MongoDB(java.lang.String scpFileName,
                                       TileStorageConnection mongoConn,
                                       java.lang.String scpMongoFile)
OSGB缓存文件导入MongoDB数据库 。

参数:
scpFileName - scp文件全路径名,该文件包含osgb缓存文件信息。
mongoConn - mongodb的数据库连接信息,一个scp文件对应一个mongoConn的Database。
scpMongoFile - 新生成的scp文件全路径名,生成成功后通过该文件直接打开mongodb中的缓存。
返回:
一个布尔值,true表示导入成功,false表示导入失败。

b3dmFile2MongoDB

public static boolean b3dmFile2MongoDB(java.lang.String scpFileName,
                                       TileStorageConnection mongoConn)
3DTiles缓存文件导入MongoDB数据库 。

参数:
scpFileName - scp文件全路径名,该文件包含3DTiles缓存文件信息。
mongoConn - mongodb的数据库连接信息,一个scp文件对应一个mongoConn的Database。
返回:
一个布尔值,true表示导入成功,false表示导入失败。

buildTile

public boolean buildTile(java.util.HashMap<java.lang.String,int[]> geoModelIDs,
                         boolean bCombineModels)
模型数据集对应ID模型生成切片。

参数:
geoModelIDs - 待生成切片的模型ID集合。
bCombineModels - 模型是否打组。
返回:
一个布尔值,true表示生成成功,false表示生成失败。

getPosition

public Point3D getPosition()
获取插入点的位置。

返回:
插入点的位置。

setPosition

public void setPosition(Point3D value)
设置插入点的位置。

参数:
value - 指定插入点的位置。

getExtrudeRegionTexFromVoxelGrid

public static java.util.ArrayList<TextureData> getExtrudeRegionTexFromVoxelGrid(Geometry geometry,
                                                                                double height,
                                                                                DatasetVolume datasetVolume,
                                                                                ColorDictionary table)
支持根据矢量面及拉伸高度从对应体元栅格中提取纹理,并支持设置颜色表。 提取的纹理默认有三个,在列表的第0个纹理数据对应顶部纹理,第1个纹理数据对应侧面纹理,第2个纹理数据对应底部纹理。 如果拉伸的高度超出了体元栅格的高度,那么顶部纹理取值为null,这时需要进行判断,再作处理;而侧面超出的部分颜色都取白色。

参数:
geometry - 做为从体元栅格中提取纹理的参照面,二、三维面数据都可以。
height - 对矢量面设置拉伸的高度值。
datasetVolume - 对应的体元栅格数据。
table - 设置的颜色表,该表内颜色值范围对应体元栅格的极值范围。

isRemoveNormal

public boolean isRemoveNormal()
获取是否移除原始数据法线。


setRemoveNormal

public void setRemoveNormal(boolean value)
设置是否移除原始数据法线。

参数:
value - 指定是否移除。

setTileInfos

public void setTileInfos(TileInfos value)
生成指定瓦片信息对应的切片

参数:
value - 三维瓦片信息。

buildWithTileClip

@Deprecated
public boolean buildWithTileClip()
已过时。 生成缓存(切片切割),可用于白模生成缓存。该缓存叠加体缓存时,不支持纹理重映射。

返回:
一个布尔值,true表示导入成功,false表示生成失败。

isHasOutLine

public boolean isHasOutLine()
是否有边框线


setHasOutLine

public void setHasOutLine(boolean value)
设置是否有边框线


isCombineRepeatTextures

public boolean isCombineRepeatTextures()
得到重复贴图打组


setCombineRepeatTextures

public void setCombineRepeatTextures(boolean value)
设置重复贴图打组


setLimitTextureSize

public void setLimitTextureSize(CacheLimitTextureSize value)
设置纹理大小限制


getLimitTextureSize

public CacheLimitTextureSize getLimitTextureSize()
获取纹理大小限制


setCompressedTextureType

public void setCompressedTextureType(CompressedTextureType value)
设置纹理压缩格式


getCompressedTextureType

public CompressedTextureType getCompressedTextureType()
获取纹理压缩格式


getTileHeight

public double getTileHeight()
获取三维切片缓存的瓦片的高度.

返回:
获取高度值。

setTileHeight

public void setTileHeight(double setTileHeight)
设置三维切片缓存的瓦片高度,与金字塔剖分类型-八叉树一起使用.

参数:
setTileHeight - 设置三维切片缓存的瓦片高度。

setTileInfos

public void setTileInfos(java.util.ArrayList<TileInfos> infos)
设置每个三维瓦片的信息。


combineRootNodes

@Deprecated
public static boolean combineRootNodes(java.lang.String inScpFilePath,
                                                  java.lang.String saveSCPName,
                                                  int combineLevel,
                                                  java.util.HashMap<java.lang.Integer,java.lang.Double> simplifyPercent,
                                                  int threadCount)
已过时。 

模型缓存合并根节点(不合并图层)

参数:
inScpFilePath - 精细模型缓存scp全路径。
saveSCPName - 目标文件名。合并结果会默认在源缓存路径下,新建一个Root文件夹,用来存放合并后的缓存数据;而目标文件名是用来作为合并后的缓存索引(.scp)文件名。
combineLevel - 合并根节点层级数,默认1层,层级数值域[1,4]。
simplifyPercent - 设置简化率,一个字典对象。键值为合并根节点的层级数,值为简化率的百分比数值。
threadCount - 线程数
返回:
成功会在指定路径下生成合并后的缓存数据。

combineRootNodes

public static boolean combineRootNodes(java.lang.String inScpFilePath,
                                       java.lang.String saveSCPName,
                                       int combineLevel,
                                       java.util.HashMap<java.lang.Integer,java.lang.Double> simplifyPercent,
                                       int threadCount,
                                       float objectFiltrateThreshold)
模型缓存合并根节点(不合并图层)

参数:
inScpFilePath - 精细模型缓存scp全路径。
saveSCPName - 目标文件名。合并结果会默认在源缓存路径下,新建一个Root文件夹,用来存放合并后的缓存数据;而目标文件名是用来作为合并后的缓存索引(.scp)文件名。
combineLevel - 合并根节点层级数,默认1层,层级数值域[1,4]。
simplifyPercent - 设置简化率,一个字典对象。键值为合并根节点的层级数,值为简化率的百分比数值。
threadCount - 线程数
objectFiltrateThreshold - 像素过滤阈值。
返回:

combineRootNodes

public static boolean combineRootNodes(java.lang.String[] inScpFilePaths,
                                       java.lang.String saveSCPFullPath,
                                       int combineLevel,
                                       java.util.HashMap<java.lang.Integer,java.lang.Double> simplifyPercent,
                                       int threadCount)
多个模型缓存合并根节点(合并图层)

参数:
inScpFilePaths - 进行合并图层的精细模型缓存SCP全路径集合。
saveSCPFullPath - 输出路径。多个精细模型缓存合并成一个缓存,输出路径下会存放原始缓存数据和scp索引文件,如果设置了合并根节点层级数,会新建一个Root文件夹,用来存放合并后的缓存数据。
combineLevel - 合并根节点层级数,默认1层,层级数值域[1,4]。
simplifyPercent - 设置简化率,一个字典对象。键值为合并根节点的层级数,值为简化率的百分比数值。
threadCount - 线程数
返回:
成功会在指定路径下生成合并后的缓存数据。

getFieldsNames

public java.lang.String[] getFieldsNames()
生成缓存时,获取保留指定属性字段。


setFieldsNames

public void setFieldsNames(java.lang.String[] fieldsNames)
生成缓存时,设置保留指定属性字段。


isLogEnable

public boolean isLogEnable()
获取是否输出错误日志.


setLogEnable

public void setLogEnable(boolean isErrorLogOut)
设置是否输出错误日志.


buildTiles

public boolean buildTiles()
多进程环境下生成缓存(不生成配置文件).

返回:
是否生成成功

getMultiTextureMode

public MultiTextureMode getMultiTextureMode()
获取模型生成缓存时,纹理设置生成单重纹理或者多重纹理。

返回:
单重纹理或者多重纹理

setMultiTextureMode

public void setMultiTextureMode(MultiTextureMode mode)
设置模型生成缓存时,纹理设置生成单重纹理或者多重纹理。

参数:
mode - 单重纹理或者多重纹理

append

public boolean append(UpdateType updateType,
                      boolean bCreateConfigFile)
模型缓存局部更新。

1)目前支持根据Bounds更新和根据模型ID更新。 2)需要注意的是不管根据Bounds更新还是模型ID更新,缓存路径、缓存名称、插入点坐标、瓦片边长、缓存类型、纹理压缩方式等参数都需要都要和原始缓存的参数保持一致。 3)根据更新的数据情况,如果有属于新增和删减Tile数量的情况,append的bCreateConfigFile参数需要设置为true。

根据Bounds更新的实现思路: 1.获取更新的数据集Bounds, 2.调用OSGBCacheBuilder.append进行更新。

根据模型ID更新的实现思路: 1.通过OSGBCacheBuilder.UpdateObjectsInfoArray接口,设置更新后的结果数据集和待修改的ID, 2.再调用OSGBCacheBuilder.append进行更新。

参数:
updateType - S3M瓦片局部更新类型。包括更新几何数据、属性数据、全部更新三种更新类型。
bCreateConfigFile - 是否创建配置文件。
返回:
一个bool值,表示模型缓存局部更新是否成功。

getAttributeExtentType

public AttributeExtentType getAttributeExtentType()
获取属性存储类型,包括s3md和attribute两种类型。

返回:
属性存储类型

setAttributeExtentType

public void setAttributeExtentType(AttributeExtentType type)
设置属性存储类型,包括s3md和attribute两种类型。

参数:
type - 属性存储类型

setCacheVersion

public void setCacheVersion(S3MVersion version)
设置S3M版本。

参数:
version - S3M版本

getAssociateMaterialFile

public java.lang.String getAssociateMaterialFile()
获取生成S3M缓存关联材质文件路径。生成的缓存,在游戏引擎中会使用所关联的材质进行渲染。

目前仅支持ue和unity导出的*.json的材质文件。

从ue中导出的json文件只有关联关系,生成的缓存在ue上加载才有对应的材质效果。

从unity导出的json文件带有PBR材质的效果,可以直接在webgl端使用。

返回:
生成S3M缓存关联材质文件路径

setAssociateMaterialFile

public void setAssociateMaterialFile(java.lang.String assocaiateFile)
设置生成S3M缓存关联材质文件路径。生成的缓存,在游戏引擎中会使用所关联的材质进行渲染。

目前仅支持ue和unity导出的*.json的材质文件。

从ue中导出的json文件只有关联关系,生成的缓存在ue上加载才有对应的材质效果。

从unity导出的json文件带有PBR材质的效果,可以直接在webgl端使用。

参数:
assocaiateFile - 生成S3M缓存关联材质文件路径

getSecondTextureType

public SecondTextureType getSecondTextureType()
获取第二重纹理类型


setSecondTextureType

public void setSecondTextureType(SecondTextureType secondTextureType)
设置第二重纹理类型


getMaterialType

public MaterialType getMaterialType()
获取材质类型。

返回:
材质类型

setMaterialType

public void setMaterialType(MaterialType materialType)
设置材质类型。

参数:
materialType - 材质类型

isCalTilingTextureCoords

public boolean isCalTilingTextureCoords()
是否按box映射再生成一重纹理


setCalTilingTextureCoords

public void setCalTilingTextureCoords(boolean isCalTilingTextureCoords)
设置是否按box映射再生成一重纹理 游戏引擎美化使用,CalTilingTextureCoords和SideTilingU、SideTilingV一起使用


getSideTilingU

public double getSideTilingU()
获取侧面U值


setSideTilingU

public void setSideTilingU(double sideTilingU)
设置侧面U值 游戏引擎美化使用,CalTilingTextureCoords和SideTilingU、SideTilingV一起使用


getSideTilingV

public double getSideTilingV()
获取侧面V值 游戏引擎美化使用,CalTilingTextureCoords和SideTilingU、SideTilingV一起使用


setSideTilingV

public void setSideTilingV(double sideTilingV)
设置侧面V值


compressTextureAndGeometry

public static boolean compressTextureAndGeometry(java.lang.String scpPath,
                                                 java.lang.String outputFolder,
                                                 CompressedTextureType compressedTextureType,
                                                 VertexOptimizationType vertexOptimizationType,
                                                 int threadCount)
精模缓存纹理和几何再压缩


isCalTangentAndBinormal

public boolean isCalTangentAndBinormal()
获取获是否重新计算切线、副切线


setCalTangentAndBinormal

public void setCalTangentAndBinormal(boolean isCalTangentAndBinormal)
设置是否重新计算切线、副切线


upgradeS3MB

public static boolean upgradeS3MB(S3MVersion s3mVersion,
                                  java.lang.String srcScpPath,
                                  java.lang.String outputFolder)
s3m2.0转s3m3.0


upgradeS3MB

public static boolean upgradeS3MB(S3MVersion s3mVersion,
                                  java.lang.String srcScpPath,
                                  java.lang.String outputFolder,
                                  UpgradeS3MParameters params)
S3M版本升级(支持纹理压缩类型以及几何压缩类型)

支持将S3M1.0升级到S3M2.0或者S3M3.0,支持将S3M2.0升级到S3M3.0。 S3m3.0为椭球场景缓存数据。

三维切片缓存不支持Draco压缩,所以升级时,如果数据是三维切片缓存,几何压缩不可选择Draco压缩。

参数:
s3mVersion - S3M版本号
srcScpPath - 待升级的缓存数据scp全路径
outputFolder - 升级后的缓存数据输出路径
params - S3M版本升级的参数设置,包括纹理压缩和几何压缩设置。
返回:
一个bool值,true表示S3M版本升级成功,在输出目录下生成升级后的缓存数据;false表示升级失败。

getUpdateObjectsInfoArray

public java.util.ArrayList<UpdateObjectsInfo> getUpdateObjectsInfoArray()
获取模型局部更新的ID值集合。

返回:
模型局部更新的ID值集合

setUpdateObjectsInfoArray

public void setUpdateObjectsInfoArray(java.util.ArrayList<UpdateObjectsInfo> updateObjectsInfos)
设置模型局部更新的ID值集合。

参数:
updateObjectsInfos - 模型局部更新的ID值集合

rebuildS3MTiles

public static boolean rebuildS3MTiles(java.lang.String scpFilePath,
                                      java.lang.String associateMaterialFile,
                                      java.lang.String outputPath,
                                      java.lang.String cacheName)
S3M缓存重切片。

将配置文件中存有材质信息的S3M缓存重新切片,便于将UE美化后导出的材质写到S3M切片中。

参数:
scpFilePath - 原始S3M缓存scp
associateMaterialFile - 外挂的材质关联json文件路径。

从UE中导出的是MaterialPackages文件夹,文件夹里包含了LayerInfo.json索引文件和其他带有基色参数的json文件及纹理图片。

outputPath - 重新切片后的输出路径
cacheName - 重新切片后的缓存名称
返回:
一个bool值,true表示S3M缓存重新切片成功,false表示S3M缓存重切片失败。

setDatasetSettingArray

public void setDatasetSettingArray(java.util.ArrayList<DatasetSetting> datasetSettings)
设置批量生成三维切片缓存,将多个模型数据集生成到一个缓存文件中。

参数:
datasetSettings - 批量生成模型缓存数据集参数设置

getDatasetSettingArray

public java.util.ArrayList<DatasetSetting> getDatasetSettingArray()
获取批量生成三维切片缓存,将多个模型数据集生成到一个缓存文件中。

返回:
批量生成模型缓存数据集参数设置