Суббота, 23 Ноября 2024, 01:13

Приветствую Вас Гость

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

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг