除M3D库默认的读取器、渲染器、保存器外,M3D库还提供了大量的开放接口,供开发者根据需要进行自定义开发。深层次的开放接口支持开发者迅速构建属于自己的M3D库。
定义自己的读取器
扩展现有读取器
class MySvlxReader extends Reader.SvlxReader{
load(){
//读取新格式文件
}
}
定义新的读取器
M3D支持开发者在现有Reader的基础上扩展功能,也支持定义自己的读取器,需要继承core中的Reader基类。
自定义Reader中实现load()和getTopModel()接口:
load:用来加载模型文件
getTopModel:获取模型的顶级节点
示例代码如下:
class MyReader extends M3D.Reader{
load(){
//读取新格式文件
}
getTopModel(){
//获取模型的顶级节点的处理逻辑
}
}
读取新格式文件时将NewReader 注册到M3D中:
//xxx代表你的模型文件格式
M3D.Loader.addReaderOption("xxx", MyReader);
定义自己的渲染器
扩展现有渲染器
class MySvlxRender extends Render.Render{
save(){
//读取新格式文件
}
}
定义新的渲染器
M3D同样支持开发者定义自己的渲染器,需要继承core中的Render基类。自定义渲染器需要实现render(...para: any[])和drawPrimitive()接口。 //TODO 渲染需 要继承的类? 跟Drawer的关系? 示例代码如下:
class MyRender extends M3D.Render{
render(...para: any[]){}
drawPrimitive(){}
}
定义自己的保存器
扩展现有保存器
class MySvlxWriter extends Writer.StlWriter{
save(){
//读取新格式文件
}
}
定义新的保存器
M3D支持开发者在现有Writer的基础上扩展功能,也支持定义自己的保存器,需要继承core中的Writer基类。 需要实现save()方法,增加模型文件的相关保存逻辑。 示例代码如下:
class MyWriter extends M3D.Writer{
save(){
//读取新格式文件
}
}
在保存新格式文件时将NewWriter 注册到M3D中:
//xxx代表你的模型文件格式
M3D.Loader.addWriterOption("xxx", MyWriter);