【二次开发】CityMaker几何体——模型

本文介绍了CityMaker中创建三维模型的技术原理,包括模型由模型符号和纹理组成,详细讲解了如何通过.NET和JS创建模型,以及注意事项,如顶点数组和纹理数组的对应规则,模型加载方式等。
摘要由CSDN通过智能技术生成

**

三维中创建模型

**

一:技术原理

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值