Замучился совсем.
При кое каком условии нужно запомнить положение объекта по оси z.
Для этого надо создать переменную. Например D.
Создаю в position script.
Далее
D=object.pos.z
В итоге Ошибка
Unable to convert 88,345 to point3
Ага ясно. Тип переменной point3.
Тогда так
D=[0,0,object.pos.z]
Объект берёт и сваливает в эту точку, хотя D ни к чему не привязана.
Пробовал делать так.
D=distance a b
Опять эта же ошибка. Unable to convert 88,345 to point3
Имеется группа маркеров. Mocap снимался не на полу а на неровной земле. Иногда маркер пятки и носка проваливаются ниже уровня пола. Задача задать контроллерами положение ступни выше уровня земли, чтобы когда эти маркеры уходили ниже пола, ступня уверенно стояла. Для этого я создал таргеты для этих маркеров. И залинковал кости ступни на них.
Таргеты повторяют движения маркеров, но не уходят под землю.
Скрипт таргетов работает хорошо
if Foot.pos.z>Ground.pos.z
then
[Foot.pos.x,Foot.pos.y,Foot.pos.z]
else
[Foot.pos.x,Foot.pos.y,Ground.pos.z]
Однако, на костях ноги висят контроллеры look at на маркеры колена и ноги. То есть при поднятии пола выравнивается ступня, а нога не поднимается. Так как ямки небольшие, это можно компенсировать поднятием левой и правой стороны таза.
Поэтому таргеты таза должны повторять движения маркеров таза, если пятка и носок ноги не уходит под пол.
В итоге я написал такой скрипт в script position controller таргета таза.
f (FootB.pos.z>Ground.pos.z) and (FootF.pos.z>Ground.pos.z)
then
([Pelvis.pos.x,Pelvis.pos.y,Pelvis.pos.z]
Dist=Pelvis.pos.z)
else
[Pelvis.pos.x,Pelvis.pos.y,Dist]
То есть пока работает условие маркеры ступни выше земли, захватывается z.pos маркера таза в переменную Dist (дистанция до земли)
Как только маркеры опускаются под пол. Dist уже не расчитывается, а таргет таза замирает в позиции z и двигается только по xy.
Проблема только в том что макс на меня орёт в строчке.
Dist=Pelvis.pos.z (переменная не типа point3)
Пробовал создавать объект проекцию маркера pelvis на земле и расчитывать дистанцию.
Dist=Pelvis projrction.
Всё равно орёт.
Что я делаю не так?
Зы я так думаю можно сделать по другому после else прописать что-то в духе.
[Pelvis.pos.x,Pelvis.pos.y,CURRENT.pos.z]
Только как? Гуглы нивкакую не хотят помогатть
Александр Андреев 125275Пробовал создавать объект проекцию маркера pelvis на земле и расчитывать дистанцию.
Можно создать дополнительные объекты dummy с уникальными названиями. Пример:
if (FootB.pos.z>Ground.pos.z) and (FootF.pos.z>Ground.pos.z) then
(
dist=getnodebyname "igorznag_dist_dummy";
if dist==undefined then (dist=dummy(); dist.name="igorznag_dist_dummy")
dist.pos.z=Pelvis.pos.z
[Pelvis.pos.x,Pelvis.pos.y,Pelvis.pos.z]
)
else
(
dist=getnodebyname "igorznag_dist_dummy";
if dist!=undefined then [Pelvis.pos.x,Pelvis.pos.y,dist.pos.z]
else [Pelvis.pos.x,Pelvis.pos.y,Pelvis.pos.z]
)
То есть пока работает условие маркеры ступни выше земли, захватывается z.pos маркера таза в переменную Dist (дистанция до земли)
Можно создать глобальные переменные persistent с уникальными названиями. Пример:
if (FootB.pos.z>Ground.pos.z) and (FootF.pos.z>Ground.pos.z) then
(
persistent global Dist=Pelvis.pos.z
[Pelvis.pos.x,Pelvis.pos.y,Pelvis.pos.z]
)
else if Dist!=undefined then [Pelvis.pos.x,Pelvis.pos.y,Dist]
else [Pelvis.pos.x,Pelvis.pos.y,Pelvis.pos.z]
igorznagif (FootB.pos.z>Ground.pos.z) and (FootF.pos.z>Ground.pos.z) then ( persistent global Dist=Pelvis.pos.z [Pelvis.pos.x,Pelvis.pos.y,Pelvis.pos.z] ) else if Dist!=undefined then [Pelvis.pos.x,Pelvis.pos.y,Dist] else [Pelvis.pos.x,Pelvis.pos.y,Pelvis.pos.z]
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Александр Андреев
При кое каком условии нужно запомнить положение объекта по оси z.
Для этого надо создать переменную. Например D.
Создаю в position script.
Далее
D=object.pos.z
В итоге Ошибка
Unable to convert 88,345 to point3
Ага ясно. Тип переменной point3.
Тогда так
D=[0,0,object.pos.z]
Объект берёт и сваливает в эту точку, хотя D ни к чему не привязана.
Пробовал делать так.
D=distance a b
Опять эта же ошибка. Unable to convert 88,345 to point3
Как тогда делался этот урок. http://www.render.ru/books/show_book.php?book_id=2167
Там переменная x даже не назначена в скрипте?
igorznag
Объясните подробнее. К какому объекту относится контроллер Postion Script?
А куда он должен сваливать?
Что такое a и b? Вам уже ясно: "Тип переменной point3".
Там же всё написано.
Переменная x назначена в скрипте.
Александр Андреев
Таргеты повторяют движения маркеров, но не уходят под землю.
Скрипт таргетов работает хорошо
if Foot.pos.z>Ground.pos.z
then
[Foot.pos.x,Foot.pos.y,Foot.pos.z]
else
[Foot.pos.x,Foot.pos.y,Ground.pos.z]
Однако, на костях ноги висят контроллеры look at на маркеры колена и ноги. То есть при поднятии пола выравнивается ступня, а нога не поднимается. Так как ямки небольшие, это можно компенсировать поднятием левой и правой стороны таза.
Поэтому таргеты таза должны повторять движения маркеров таза, если пятка и носок ноги не уходит под пол.
В итоге я написал такой скрипт в script position controller таргета таза.
f (FootB.pos.z>Ground.pos.z) and (FootF.pos.z>Ground.pos.z)
then
([Pelvis.pos.x,Pelvis.pos.y,Pelvis.pos.z]
Dist=Pelvis.pos.z)
else
[Pelvis.pos.x,Pelvis.pos.y,Dist]
То есть пока работает условие маркеры ступни выше земли, захватывается z.pos маркера таза в переменную Dist (дистанция до земли)
Как только маркеры опускаются под пол. Dist уже не расчитывается, а таргет таза замирает в позиции z и двигается только по xy.
Проблема только в том что макс на меня орёт в строчке.
Dist=Pelvis.pos.z (переменная не типа point3)
Пробовал создавать объект проекцию маркера pelvis на земле и расчитывать дистанцию.
Dist=Pelvis projrction.
Всё равно орёт.
Что я делаю не так?
Зы я так думаю можно сделать по другому после else прописать что-то в духе.
[Pelvis.pos.x,Pelvis.pos.y,CURRENT.pos.z]
Только как? Гуглы нивкакую не хотят помогатть
igorznag
Можно создать глобальные переменные persistent с уникальными названиями. Пример:
Александр Андреев
Александр Андреев
igorznag
Макс выдает какую-нибудь ошибку?
Александр Андреев
Сделал
persistent global Dist=Pelvis.pos.z-Ground.pos.z
print Dist
В max script listener нули
Когда маркеры уходят под пол таргет таза сваливает на 0 по z
Александр Андреев