//region3D是一个包含多个3D面的GeoRegion3D实例
//设置region3D的GeoStyle3D 颜色为半透明
GeoStyle3D geostyle3d = new GeoStyle3D();
geostyle3d.FillForeColor = Color.FromArgb(40, 255, 0, 255);
geostyle3d.FillMode = FillMode3D.LineAndFill;
//转为GeoModel3D
GeoModel3D geomodel = region3d.ConvertToGeoModel3D(true, 99);
geomodel.Style3D = geostyle3d;
//新建数据集dataset
DatasetVector dataset = datasource.Datasets.Create(new DatasetVectorInfo(name, DatasetType.Model));
dataset.PrjCoordSys = PrjCoordSys.FromEPSG(4326);
Recordset recordset = dataset.GetRecordset(false, CursorType.Dynamic);
//将模型geomodel加入数据集dataset
recordset.AddNew(geomodel);
recordset.Update();
//设置图层layer的GeoStyle3D 颜色为半透明
geostyle3d = new GeoStyle3D();
geostyle3d.FillForeColor = Color.FromArgb(40, 255, 0, 255);
geostyle3d.FillMode = FillMode3D.LineAndFill;
Layer3DSettingVector setting = new Layer3DSettingVector();
setting.Style = geostyle3d;
// 将数据集dataset添加到图层
Layer3DDataset layer = layers.Add(dataset, setting, true);
layer.IsVisible = true;
// 图层渲染模式 CCW顺时针 CW逆时针 NONE双面 DEFAULT默认
layer.CullMode = CullModeType.CCW;
layer.UpdateData();
iObject 9D 桌面二次开发
用GeoRegion3D拟合不规则三维几何体的表面
问题描述:
1. 当layer.CullMode = CullModeType.CCW;或layer.CullMode = CullModeType.CW;时,出现部分表面不显示的情况,如图。
2. 当layer.CullMode = CullModeType.NONE;或layer.CullMode = CullModeType.DEFAULT;时,出现不明阴影,如图是一个球形。
不能用GeoSphere和GeoHemiSphere,因为要生成球形的任意一部分。