C # Как рассчитать координаты XYZ для перемещения группы объектов? - PullRequest
0 голосов
/ 22 декабря 2018

Я работаю над генератором карт для популярного движка 3D-игр, чтобы посмотреть, смогу ли я.Я создал простой набор плиток для тестирования, например, угловые элементы и вертикальные / горизонтальные коридоры.Все плитки имеют одинаковый размер (192 x 192 x 136 ч) и состоят из плоскостей, представляющих стены, пол и потолок.Я кодировал логику генерации порядка тайлов и теперь готов установить координаты.

Например, ради, я пытаюсь переместить плитку вверх (ось 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 # или, возможно, функция, которая поможет мне позиционировать координаты XYZ этих объектов?

Если это поможет, я ссылаюсь на этот сайт как на документацию по структуре кода для самолетов:

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

У меня есть идея, как это сделать, например, сравнить приведенный выше код до и после и вычислить измененную ось для каждой плоскости, но должен быть лучший способ приблизитьсяэто.

1 Ответ

0 голосов
/ 22 декабря 2018

В C # нет стандартного класса / метода, который бы сделал это для вас.

Также важно понимать, что существует бесконечное число возможных комбинаций точек, которые будут определять одну и ту же плоскость.В соответствии с документацией, на которую вы ссылались, это просто три точки на плоскости (которые не находятся на одной линии).

Это означает, что добавление фиксированной суммы ко всем координатам Y сместит плоскость в направлении Y,

...