Перейти к публикации
  • Поворот группы предметов по вертикали как одного


    Electr0
    • Сделано

    Очень долгое время ломаю голову над тем как это можно сделать в принципе, хотя бы в теории для начала.

     

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

     

    Даже если мы корректно реализуем поворот позиций относительно координатной плоскости мира, нужно поворачивать каждый предмет по YAW:

     

    Flight_dynamics_with_text.png

     

    может кто с мозгами дружит лучше подскажет чего?)


    Отзывы пользователей

    Рекомендованные комментарии



    найдена проблема с дверьми, у них коллапсирует логика поворота после таких телодвижений

    пишет [FS] Нельзя трогать дверь, пока она не будет полностью закрыта.

    Ссылка на комментарий
    Поделиться на других сайтах

    Ну, @3LoU_BaNaN теперь будет доволен, наверно - можно вытащить своё убежище откуда угодно и расположить как угодно). Да и возможности стройки расширились - можно создавать структуры с круглыми формами, причём довольно ровно и нетрудозатратно, можно быстро создавать симметрию в убежище. В общем, эта пять :  D

    Ссылка на комментарий
    Поделиться на других сайтах

    ну эксперимент с поворотом по осям X и Z провалился (да предметы располагаются корректно, но вот их углы ведут себя сумазбродно), а вот по просто поворачивать как на скриншотах можно легко

    Ссылка на комментарий
    Поделиться на других сайтах

    9 минут назад, Electr0 сказал:

    ну эксперимент с поворотом по осям X и Z провалился (да предметы располагаются корректно, но вот их углы ведут себя сумазбродно), а вот по просто поворачивать как на скриншотах можно легко

    А они тоже используют rotate YAW, когда поворачиваются после перемещения? Если да, то мб надо использовать повороты как сейчас на стройке - то есть, объект перемещается, используя YAW, а потом поворачивается по старой системе, по какой-нибудь оси. Если нет, то мб и там надо использовать

    Ссылка на комментарий
    Поделиться на других сайтах

    Тест на проблемной карте мост, где окружение повернуто относительно координатной плоскости на 45 градусов что вызывает визуально и ориентировочные проблемы с рождением предметов, убежка на 566 предметов:

    20160627213138_1.jpg

    20160627213154_1.jpg

     

    и другая:

    20160627214424_1.jpg

    20160627214428_1.jpg

    Ссылка на комментарий
    Поделиться на других сайтах

    34 минуты назад, KOllapsE сказал:

    А они тоже используют rotate YAW, когда поворачиваются после перемещения? Если да, то мб надо использовать повороты как сейчас на стройке - то есть, объект перемещается, используя YAW, а потом поворачивается по старой системе, по какой-нибудь оси. Если нет, то мб и там надо использовать

    не, rotate yaw и все перечисленное до этого не работает в текущей реализации, я провожу вектор от точки А до Б потом поворачиваю его по функции базирующейся на теории http://en.wikipedia.org/wiki/Rotation_matrix#In_three_dimensions далее прибавляю к координате позиции стартового предмета получившийся повернутый вектор и тем самым получаю конечную позицию повернутого предмета, что касается поворотов просто прибавляю по оси Y на величину поворота вектора указываемую в аргументе к функции поворота

    Ссылка на комментарий
    Поделиться на других сайтах

    1 минуту назад, Electr0 сказал:

    не, rotate yaw и все перечисленное до этого не работает в текущей реализации

    Ну-у-у, тогда стоит уделить внимание тому, почему по Y магия работает, а по X и Z - нет

    Ссылка на комментарий
    Поделиться на других сайтах

    1 минуту назад, KOllapsE сказал:

    Ну-у-у, тогда стоит уделить внимание тому, почему по Y магия работает, а по X и Z - нет

    попробуй по поворачивать повернутый предмет по осям X Z увидишь что результаты очень разные, в отличие от по Y, даже не знаю можно ли это обойти)

    Ссылка на комментарий
    Поделиться на других сайтах

    система отката повтора групповых действий отказывается корректно откатывать/повторять данный тип действия, придется регистрировать новый тип действия, т.к. тип действия передвинуть не запоминает углы. гемор ><, ненавижу сдвиги стеков

    Ссылка на комментарий
    Поделиться на других сайтах

    администраторы Mega survival приглашаются на тестирование прототипа, для выявления не найденных недочетов и других возможных поломок после поворотов группы предметов как одного

    Ссылка на комментарий
    Поделиться на других сайтах

    Только что, KOllapsE сказал:

    а что, прототип уже на Меге? 0_0

    нет нужно закрытое тестирование, пока что жду желающих, там довольно критичные возможные исключения, но пока что то что нашел закрыл уже

    Ссылка на комментарий
    Поделиться на других сайтах

    47 минут назад, Electr0 сказал:

    попробуй по поворачивать повернутый предмет по осям X Z увидишь что результаты очень разные, в отличие от по Y, даже не знаю можно ли это обойти)

    Не пойму никак - просто брать и поворачивать? Каждому объекту вроде и добавляется угол, как должно.

    Наверно, надо обратить внимание на пункт меню стройки "по часовой". Если остальные повороты просто добавляют заданные значения к углам, то повороты по часовой делают с углами непонятно что на первый взгляд, но объект всегда поворачивается вокруг синей оси и именно на заданный угол. Т.е. они правильно используют http://en.wikipedia.org/wiki/Rotation_matrix#In_three_dimensions относительно XYZ объекта 

    1.jpg

    2.jpg

    3.jpg

     

    Если с проблемой поворотов Х и Z ничего не выгорит, то есть такой вариант: проверить, можно ли будет использовать его не только для поворотов самого объекта, но и другие объекты относительно него поворачивать, а так же сделать поворот типа "по часовой" для красной Х и зелёной У оси. Если да, то можно будет делать так: запомнить и обнулить углы всех, кроме одного, предметов, повернуть относительно какой-либо его оси все предметы, а потом к углам каждого предмета добавить запомненные ранее. Есть минусы - игрокам поворачивать будет менее удобно, потому что оси первого объекта могут быть расположены не параллельно соответствующим осям карты и надо будет сначала поворачивать его; всё ранее сделанное по поворотам будет впустую. Но повороты будут). В общем, на крайний случай вариант.

    Ссылка на комментарий
    Поделиться на других сайтах

    проблема в том что если хорошенько по заворачивать по осям Y X Z, то потом при поворотах по осям X Z ты не можешь предсказать как повернется предмет, если по оси Y ты точно можешь знать что просто повернется вокруг себя по горизонтали, то в этих случаях нифига), и да куб плохой пример он симетричный, возьми забор, на нем хорошо видно проблему сваливания двух векторов в одну ось ее вроде именуют gimbal lock, на видео показан этот эффект, в моем случае и так сяк бывает, нельзя предсказать результат, пока не могу придумать решение:

     

    Ссылка на комментарий
    Поделиться на других сайтах

    и да, 

    13 минуты назад, KOllapsE сказал:

    Т.е. они правильно используют http://en.wikipedia.org/wiki/Rotation_matrix#In_three_dimensions относительно XYZ объекта 

     мы не относительно, а реально поворачиваем объект по осям X Y Z, ту гео информацию что ты видишь показывает по реальным осям объекта, тоесть ты видишь как они изменяются относительно мира

    Ссылка на комментарий
    Поделиться на других сайтах

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

    Ссылка на комментарий
    Поделиться на других сайтах

    4 минуты назад, Electr0 сказал:

     мы не относительно, а реально поворачиваем объект по осям X Y Z

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

     

    23 минуты назад, Electr0 сказал:

    проблема в том что если хорошенько по заворачивать по осям Y X Z, то потом при поворотах по осям X Z ты не можешь предсказать как повернется предмет, если по оси Y ты точно можешь знать что просто повернется вокруг себя по горизонтали, то в этих случаях нифига).

    Я так понимаю, сейчас при поворотах используется xyz или zyx иерархия. Решение для правильных поворотов по Z и X - менять иерархию в зависимости от того, по какой оси мы хотим поворачивать объекты. Хотим по Х - используем zxy, что будет с остальными осями нам всё равно, мы их не используем в тот момент. Если после этого поворачиваем по Z - используем yzx. Только вот осуществимо ли это сейчас и не распухнет ли плагин ещё в пару-тройку раз? : D

    777.JPG

    Ссылка на комментарий
    Поделиться на других сайтах

    1 минуту назад, KOllapsE сказал:

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

     

    Я так понимаю, сейчас при поворотах используется xyz или zyx иерархия. Решение для правильных поворотов по Z и X - менять иерархию в зависимости от того, по какой оси мы хотим поворачивать объекты. Хотим по Х - используем zxy, что будет с остальными осями нам всё равно, мы их не используем в тот момент. Если после этого поворачиваем по Z - используем yzx. Только вот осуществимо ли это сейчас и не распухнет ли плагин ещё в пару-тройку раз? : D

    777.JPG

    не думаю что разбухнет, но я не знаю как это сделать D

    Ссылка на комментарий
    Поделиться на других сайтах

    Только что, Electr0 сказал:

    не очень понимаю что это даст..

    Ну, сейчас же повороты по У всегда осуществляются правильно, как ни крути?) Хотим повернуть по У - и получаем нужный результат. Теперь меняем иерархию на zxy - и поворачиваем по Х всегда правильно. Т.е. опять получаем нужный результат. Используя нужную в зависимости от случая иерархию можно будет всегда получать правильные повороты.

    Ссылка на комментарий
    Поделиться на других сайтах




    Присоединяйтесь к обсуждению

    Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

    Гость
    Добавить комментарий...

    ×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

      Разрешено не более 75 эмодзи.

    ×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

    ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

    ×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.


  • Обозначения статусов

    В обработке = Мы работаем над вашим отзывом.

    Будет сделано = Ваша идея добавлена к плану будущих изменений.

    Тестируется = Изменения внесены, но требуют тестирования.

    Сделано = Ваша идея реализована!

    Отклонено = Отзыв некорректный, бред, либо уже реализовано. Если у вас есть дополнительная информация напишите комментарий и мы снова откроем этот вопрос.

×
×
  • Создать...