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

本文介绍CityMaker的二次开发,讲解如何在三维环境中创建体对象,包括立方体、球、圆锥和圆柱。技术原理是通过点、线、面生成体,并提供了.NET和JS的创建方法。在创建过程中应注意使用position对象,设置合适的距离,以及对象由三角面构成,目前不支持贴图纹理设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

三维中创建体对象

**

一:技术原理

CityMaker创建体,原理是由点生成线,由线生成面,由面生成体,在三维中都是根据一个点坐标和一些条件(长宽或半径、颜色样式等)来生成体对象,根据视觉可以把体分为:立方体、球、圆锥、圆柱。
接口:
立方体:CreateBox
球:CreateSphere
圆柱:CreateCylinder
圆锥:CreateCone
方法:一种是通过传入指定的坐标,第二种是实时绘制,例如长方体,可以点击第一个点 创建出来长方体,然后实时移动鼠标的时候更改 右下角x、y点坐标,单击第二个点,确定底面,然后移动位置 更改高度,单击第三个点创建改变高度参数即可

二:创建体

1. .NET

基础方法:

public void CreateBox() {
   //初始化一个位置对象position
    IPosition position = new Position();
    //设置 位置的x、y坐标、高度、方向角、上下旋转角、自身旋转角,gviAltitudeType为高程类型包括(绝对地形、相对地形、贴地、相对轴)
    position.Init(10, 10, 0, 0, 0, 0, gviAltitudeType.gviAltitudeTerrainRelative);
    position.Distance = 500;

    //创建立方体 参数为(位置position对象,宽度、深度、高度、线框颜色、填充颜色、组节点guid)
    var rBox = rendercontrol.ObjectManager.CreateBox(position, 100, 50, 50, 0xffcccccc, 0xffcccccc, __rootId);
    //设置相机飞到线对象
    rendercontrol.Camera.FlyToObject(rBox.Guid,gviActionCode.gviActionFlyTo);

    //创建圆柱 参数为(位置position对象,半径、高度、线框颜色、填充颜色、边数、组节点guid)
    var rCylinder = rendercontrol.ObjectManager.CreateCylinder(position, 20, 123, 0xff1295EE, 0xFF808080, 100, __rootId);
    rendercontrol.Camera.FlyToObject(rCylinder.Guid, gviActionCode.gviActionFlyTo);

    //创建圆锥 参数为(位置position对象,半径、高度、线框颜色、填充颜色、边数、组节点guid)
    var rCone = rendercontrol.ObjectManager.CreateCone(position, 20, -123, 0xff1295EE, 0xFF808080, 100, __rootId);
    rendercontrol.Camera.FlyToObject(rCone.Guid, gviActionCode.gviActionFlyTo);

    //创建球 参数为(位置position对象,半径、显示球类型(0、1、2、3、4分别表示显示全显示、上半部分、下半部分、上半部分包括底面、下半部分包括顶面)、//线框颜色、填充颜色、网格的密度(用来表示球的密度)、组节点guid)
    var rSphere = rendercontrol.ObjectManager.CreateSphere(position, 20, 3, 0xffcccccc, 0xFF808080, 10, __rootId);
    rendercontrol.Camera.FlyToObject(rSphere.Guid, gviActionCode.gviActionFlyTo);
}

实时绘制立方体:

public
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值