forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Трансфорации (http://forum.boolean.name/showthread.php?t=20338)

RegIon 29.06.2016 09:12

Трансфорации
 
Не знал куда написать, сделал тему.

У меня такая задача:
Есть openCV, которая распознает объект и выдает нам RotateRect, который имеет center, Size, angle, все относительно изображения (mat) openCV. Мне нужно трансформировать это все в глобальную область.

Делаю так:
PHP код:

public static MotionVector TransformRotateRectToMV(RotatedRect rectTransform screenSize resolution){
        
MotionVector ret;

        
Vector3 localPos PointToVector (rect.center);
        
localPos./= resolution.width;
        
localPos./= resolution.height;

        
ret.Pos screen.TransformPoint (localPos);

        
//TODO rescale size!!
        
ret.Size.Set (rect.size.widthrect.size.height);
        
//ret.Dir =;
    


Не знаю как трансформировать направление с учетом того, что screen, объект с которого идет трансформация, может быть сам повернут.

Или нужен другой метод перевести ориентацию с учетом поворота.( С кватернионами плохо дружу, так что решил на векторах, но лучше наверное они)
Поворот должен быть относительно screen.up вектора с учетом angle по оси Y.
Как это?
Картинка:

Жека 29.06.2016 10:37

Ответ: Трансфорации
 
Эти функции смотрел?
http://docs.unity3d.com/ScriptRefere...formPoint.html
http://docs.unity3d.com/ScriptRefere...oRotation.html
На счёт повёрнутости самого screen - можно rotatedrect приаттачить к пустышке, и далее
1. сбрасываем поворот пустышки в нули
2. поворачиваем прямоугольник в глобал (функция выше)
3. поворачиваем пустышку на угол как у screen.

(Если я правильно понял суть задачи)

RegIon 29.06.2016 11:22

Ответ: Трансфорации
 
Цитата:

Сообщение от Жека (Сообщение 306699)
Эти функции смотрел?
http://docs.unity3d.com/ScriptRefere...formPoint.html
http://docs.unity3d.com/ScriptRefere...oRotation.html
На счёт повёрнутости самого screen - можно rotatedrect приаттачить к пустышке, и далее
1. сбрасываем поворот пустышки в нули
2. поворачиваем прямоугольник в глобал (функция выше)
3. поворачиваем пустышку на угол как у screen.

(Если я правильно понял суть задачи)

Я не могу его приатачить никак :P Это просто структура OpenCV оносительно изображения, которое в виде текстуры на плейне.

Чуток другое. Как перевести текстурные координаты в Мировые, если текстура лежит на плейне (со скейлом и поворотом).

UPD. Положение я определять научился. Осталось направление.



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

Taugeshtu 29.06.2016 12:42

Ответ: Трансфорации
 
У OpenCV система координат отличается от юнити тем, что Y направлен вниз.

Для позиций трансформация очевидна - инвертируем Y и будет щастье.
Для кватернионов, если правильно помню, трансформация требует инверсии .y и .w

А вообще посмотри на EmguCV. C#-обёртка с нормальным интерфейсом под юнити, с уже готовыми конверсиями из Mat в массивы, текстуры; с конверсией систем координат. Правда, пребилт у них довольно старый, там OpenCV 3.x не было (а мне надо было), а чтобы руками это собрать я где-то с неделю посношался. Но оно того стоит :)

RegIon 29.06.2016 12:48

Ответ: Трансфорации
 
Цитата:

Сообщение от Taugeshtu (Сообщение 306708)
У OpenCV система координат отличается от юнити тем, что Y направлен вниз.

Для позиций трансформация очевидна - инвертируем Y и будет щастье.
Для кватернионов, если правильно помню, трансформация требует инверсии .y и .w

А вообще посмотри на EmguCV. C#-обёртка с нормальным интерфейсом под юнити, с уже готовыми конверсиями из Mat в массивы, текстуры; с конверсией систем координат. Правда, пребилт у них довольно старый, там OpenCV 3.x не было (а мне надо было), а чтобы руками это собрать я где-то с неделю посношался. Но оно того стоит :)

Угу, и стоит эта байдень 400$, и привязана ка винде. Мне нужно кросплатформ (миниум мак). Спер OpenCVforUnity (порт с Java):-), ее юзаю. Тут тоже пару плюшек есть подобных (перегон текстур и все)

Taugeshtu 29.06.2016 17:20

Ответ: Трансфорации
 
Цитата:

Сообщение от RegIon (Сообщение 306710)
и привязана ка винде. Мне нужно кросплатформ (миниум мак).

У меня тот же кейс, вин+мак нормально работают. Нужно только разные либы пометить флагами для использования в разных осях/билдах :) Но про $400 это да, может быть проблемой.


Часовой пояс GMT +4, время: 17:08.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot