| 
				
				Визуализация движений человека 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 |  
| 
 постоянный участник 
Сейчас нет на сайте 
 
 | Ну надо сохранять начальный кватернион, и потом домножать. Но вообще без описания стартовой позы, в которой стоит скелет на который писалась анимация, анимация будет некорректной. Но по идее это должна быть т поза. Но опять же скелеты бывают разные.
 |  
| 
 | 
 |    |