Визуализация движений человека unity3d, kinect
|
|
Nextion | Дата: Пятница, 11 Мая 2018, 16:28 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| В общем задача казалось бы простая, есть кинект, а точнее данные с него в виде csv файла где по очереди идут координаты и кватернионы для каждого сустава, всего 140 столбцов, по 7 координат для 20 точек в виде (x, y, z, QuaternionX, QuaternionY QuaternionZ, QuaternionW), и есть unity3d + рандомная моделька со своим скелетом. Ну и что я думал, возьму трансформы точек скилета из юнити и через Update() буду привязывать к ним соответствующие координаты из файла. Вот только моего персонажа начало выкручивать, перекручивать, ломать ему позвоночник и тд, картина конечно веселая, но грустная ибо я в тупике. Есть идеи?
|
|
| |
Wite | Дата: Пятница, 11 Мая 2018, 18:40 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Так может координаты локальные по иерархии? Как в bvh.
|
|
| |
Nextion | Дата: Пятница, 11 Мая 2018, 19:08 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Цитата Wite ( ) Так может координаты локальные по иерархии? Как в bvh. Нет, когда просто суставам передаю координаты, они как-раз перемещаются куда нужно, но моделька при этом ломается т.е. руки, ноги и тд остаются без поворотов, или поворачиваются слишком криво, ладно было бы зеркально в другую сторону, но тут даже не понятно что с ними не так, в общем координаты точек без иеархии точно, а вот на счет кватернионов не понятно, если так, то как их тогда пересчитывать?
|
|
| |
Wite | Дата: Пятница, 11 Мая 2018, 21:33 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| Имея на вашем месте под рукой кинект. Я бы нормальную анимацию в bvh записал. И через блендер пере сохранил в юнити. ПО сейчас всякого предостаточно. Лично я пользуюсь двумя кинектами и IPI Studio. Если чтото посложнее беру 4 ps eye.
|
|
| |
Nextion | Дата: Пятница, 11 Мая 2018, 22:50 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| В том и проблема что кинекта под рукой нет, мне научный руководитель передал только данные с него и поставил такую задачу.
|
|
| |
Wite | Дата: Пятница, 11 Мая 2018, 23:27 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| Ну вот с этого и надо было начинать. Кинь файл посмотрю
|
|
| |
Nextion | Дата: Суббота, 12 Мая 2018, 14:37 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Цитата Wite ( ) Ну вот с этого и надо было начинать. Кинь файл посмотрю http://rgho.st/7z7NXMscj вот, модельку можно в принципе брать любую, но у большинства скилет не совпадает с кинектовским, но думаю это не сильно должно повлиять на конечный результат, тут еще узнал что в кинекте - правосторонняя система координат, а в Unity - левосторонняя. Соответственно нужно делать преобразование. Но пока думаю че да как.
|
|
| |
Wite | Дата: Суббота, 12 Мая 2018, 16:44 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| Кинь скриптик. Не охота писать с нуля.
|
|
| |
Nextion | Дата: Воскресенье, 13 Мая 2018, 13:28 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| http://rgho.st/7JyTkmyQR как-то так
|
|
| |
Wite | Дата: Воскресенье, 13 Мая 2018, 14:22 | Сообщение # 10 |
постоянный участник
Сейчас нет на сайте
| В общем в положении нужен офсет костей из твоей модели. Если просто применять положение его сдавливает. И на вращение тоже. Я просто убрал применение положения и вот что получил.
Исходная модель
|
|
| |
Nextion | Дата: Воскресенье, 13 Мая 2018, 14:53 | Сообщение # 11 |
был не раз
Сейчас нет на сайте
| Не совсем понял если честно, можно по подробнее?
|
|
| |
Wite | Дата: Воскресенье, 13 Мая 2018, 15:11 | Сообщение # 12 |
постоянный участник
Сейчас нет на сайте
| У тебя есть модель перса у него в дочках есть кости. У костей свои стартовые координаты и из них получается определенный масштаб, не путай со Scale. В анимации есть свои положения костей и эта анимация не знает какая у тебя модель больше исходной или меньше. Также у костей есть свое вращение в стартовой позе.
Для наглядности в красном кружке исходная модель на которую записывали анимацию. И представь что будет с костями большой модели если к ней применить без офсета положение маленькой модели. Офсет это погрешность.
По сути тебе нужен ретаргет анимации на свою модель.
|
|
| |
Nextion | Дата: Воскресенье, 13 Мая 2018, 16:00 | Сообщение # 13 |
был не раз
Сейчас нет на сайте
| Тоесть для каждой точки нужно найти свой офсет?
|
|
| |
Wite | Дата: Воскресенье, 13 Мая 2018, 16:11 | Сообщение # 14 |
постоянный участник
Сейчас нет на сайте
| Да конечно. И с вращением также. Кватернион можно домножать на офсет. Позицию прибавлять.
|
|
| |
Nextion | Дата: Воскресенье, 13 Мая 2018, 16:23 | Сообщение # 15 |
был не раз
Сейчас нет на сайте
| Ну с точками примерно понятно, смотрю где какая должна быть на самом деле и прибавляет, а с кватернионами как поступать? Не понятно.
|
|
| |
Wite | Дата: Воскресенье, 13 Мая 2018, 18:17 | Сообщение # 16 |
постоянный участник
Сейчас нет на сайте
| Ну надо сохранять начальный кватернион, и потом домножать. Но вообще без описания стартовой позы, в которой стоит скелет на который писалась анимация, анимация будет некорректной. Но по идее это должна быть т поза. Но опять же скелеты бывают разные.
|
|
| |