作者:姜尔
一、技术思路
SuperMap iDesktopX产品12.0.1版本新增模型文件检查功能,支持检查*.obj、*.3ds、*.dae、*.fbx、*.gltf模型数据**纹理利用率**是否合规。(关联接口:ModelChecker、ModelCheckParameters)检查结束后,如果数据中存在不合规的模型对象,会在指定路径生成检查报告(JSON格式的*.report文件),报告会记录不合规的模型对象的具体信息。例如:

本文介绍如何在SuperMap iObject Java组件中实现模型文件纹理利用率质检功能。
主要参数说明
| 参数名 | 参数释义 | 参数类型 |
| 模型文件 setInputDirectoryPath | 指定待运算的模型文件(*.3ds/*.obj/*.gltf/*.dae/*.fbx) 。 iDesktopX可以通过打开指定单个模型文件,或者通过添加文件夹批量指定模型文件。 模型文件夹与模型文件参数互斥,若同时设置,以模型文件参数为准。 | String |
| 纹理利用率 setThreshold | 设置模型纹理利用率的阈值,默认值为0.8。纹理利用率低于指定阈值的模型对象不合规。 | Float |
| 检查报告 setResultFilePath | 指定检查报告的存储路径和文件名。 | String |
输出结果
| 参数名 | 参数释义 | 参数类型 |
| 是否合规 | 模型文件是否合规,如果合规返回true,且不生成检查报告;反之,返回false,且在指定路径下生成检查报告。 | Boolean |
二、主要代码
modelChecker.check();//执行检查
三、完整示例代码
package gettingstarted;
import com.supermap.realspace.threeddesigner.CheckTextureUtilizationRateParameters;
import com.supermap.realspace.threeddesigner.ModelCheckParameters;
import com.supermap.realspace.threeddesigner.ModelChecker;
import java.util.ArrayList;
public class ModelCheck {
public static void main(String[] args) {
ModelChecker modelChecker=new ModelChecker();//模型检查类
modelChecker.setInputDirectoryPath("..\\testData\\检查模型\\cf-1.fbx");//设置输入文件夹路径 可以设置文件路径,也可以设置为文件夹路径 目前支持obj、3ds、dae、fbx、gltf
modelChecker.setResultFilePath("..\\testData\\检查模型\\test.report");//设置结果文件路径 必须是一个有效的文件名
// 创建纹理利用率检查参数并设置阈值
CheckTextureUtilizationRateParameters checkTextureUtilizationRateParameters = new CheckTextureUtilizationRateParameters();
checkTextureUtilizationRateParameters.setThreshold(0.8f); // 设置纹理利用率阈值为80%
ArrayList<ModelCheckParameters> modelCheckParameters = new ArrayList<>(); // 将参数添加到列表中
modelCheckParameters.add(checkTextureUtilizationRateParameters);
modelChecker.setParameters(modelCheckParameters); // 设置参数
modelChecker.check();//执行检查
boolean flag= modelChecker.isCompliance();//获取检查结果,注意顺序,需在执行检查后获取,否则结果均为false
System.out.println("检查的模型文件是否全部合规:" +flag);
}
}
四、运行结果展示
模型合规则返回true,不会生成检查报告文件;如果数据中存在不合规的模型对象,会在指定路径生成检查报告(JSON格式的*.report文件),报告会记录不合规的模型对象的具体信息。



被折叠的 条评论
为什么被折叠?



