C#如何计算移动一组对象的X Y Z坐标?

时间:2018-12-22 08:06:58

标签: c# 3d coordinates

我正在为流行的3D游戏引擎开发地图生成器,以查看是否可以。我创建了一组简单的瓷砖进行测试,例如角件和垂直/水平走廊。所有瓷砖的尺寸均相同(192 l x 192 w x 136 h),并由代表墙壁,地板和天花板的平面组成。我已经对生成平铺顺序的逻辑进行了编码,现在可以设置坐标了。

例如,我正在尝试将瓷砖(Y轴)准确地向上移动192个单位。

在制作这些图块之前,我正在测试单个对象,并简单地将192个单位添加到对象的Y轴。很好。但是,在测试了其中一个磁贴的向上移动之后,我注意到它比需要计算的Y轴还重要。

这是将位置向上移动192个单位之前的平铺地图文件的外观:

https://pastebin.com/6iqQwN50

solid
{
    "id" "2"
    side
    {
        "id" "1"
        "plane" "(0 192 8) (192 192 8) (192 0 8)"
        "material" "CONCRETE/BAGGAGE_CONCRETEFLOORA"
        "uaxis" "[1 0 0 0] 0.25"
        "vaxis" "[0 -1 0 0] 0.25"
        "rotation" "0"
        "lightmapscale" "16"
        "smoothing_groups" "0"
    }

移动后的样子如下:

https://pastebin.com/7cCnTndZ

solid
{
    "id" "2"
    side
    {
        "id" "1"
        "plane" "(0 192 8) (0 384 8) (192 384 8)"
        "material" "CONCRETE/BAGGAGE_CONCRETEFLOORA"
        "uaxis" "[1 0 0 0] 0.25"
        "vaxis" "[0 -1 0 256] 0.25"
        "rotation" "0"
        "lightmapscale" "16"
        "smoothing_groups" "0"
    }

我可能会头疼,但是有C#类或函数可以帮助我定位这些对象的X Y Z坐标吗?

如果有帮助,我指的是此站点,是有关飞机代码结构的文档:

https://developer.valvesoftware.com/wiki/Valve_Map_Format#Planes

我有一个方法,例如比较上面的代码之前和之后以及计算每个平面的更改轴,但是必须有一种更好的方法来实现这一目标。

1 个答案:

答案 0 :(得分:1)

C#中没有标准的类/方法可以为您完成这项工作。

重要的是要理解,将定义同一平面的点的可能组合数目是无限的。根据您引用的文档,这些只是平面上的三个点(不在一条线上)。

这意味着向所有Y坐标添加固定量将使平面在Y方向上移动。