**
三维中创建模型
**
一:技术原理
CityMaker模型点modelpoint是由模型符号(model)和纹理(image)组成,image可以是本地图片也可以是FDB纹理库中的图片,model可以是自己创建或者是用osg文件获取,一般情况model中由顶点数组、纹理数组、材质组成,通过顶点数组和纹理数组来描述模型和纹理规则
接口:createGeometry、createRenderModelPoint
方法:一种通过本地文件生成模型,二种是把模型和纹理添加到FDB或者内存中,三种是自己绘制顶点数组纹理数组通过文件贴图创建模型
二:创建模型
1. .NET
public void createModelpoint(){
//1.根据本地文件,获取model和image,创建模型
IGeometryFactory gFactory = new GeometryFactory();
IResourceFactory resFactory = new ResourceFactory();
var modelPath = "D:\\citymakerbookdata\\Car\\TCJ006.osg";//设置模型
var modelPoint = (IModelPoint)gFactory.CreateGeometry(gviGeometryType.gviGeometryModelPoint,gviVertexAttribute.gviVertexAttributeZ);
modelPoint.ModelName = modelPath;
modelPoint.SetCoords(100,100,100,0,0);
var rModlePoint = rendercontrol.ObjectManager.CreateRenderModelPoint(modelPoint,null,__rootId);
rendercontrol.Camera.FlyToObject(rModlePoint.Guid,0);
//2.根据数据集中模型库和纹理库创建模型
//2-1先把模型和纹理添加到模型库和纹理库或者添加到内存中,通过程序或者builder
var modelPath = "D:\\citymakerbookdata\\Car\\TCJ006.osg";
IModel model=null;
IMatrix matrix = null;
IPropertySet proSet=null;
resFactory.CreateModelAndImageFromFile(modelPath, out proSet, out model, out matrix);
if (model == null || model.GroupCount == 0)
return;
var modelName = "TCJ006";
//模型添加内存
rendercontrol.ObjectManager.AddModel(modelName,model);
var count = proSet.Count;
if (count > 0) {
var imageNames = proSet.GetAllKeys();
for (var i = 0; i < count; i++)
{
var imageName = imageNames[i];
var img = proSet.GetProperty(imageName);
//贴图添加到内存
rendercontrol.ObjectManager.AddImage(imageName, img);
}
}
//2-2创建模型
var mode