Форум

Сообщения, созданные пользователем stilist
16 ноября 2016 00:25
Помогайте, друзья,

Я измучил уже персонажа пытаясь без ручного поворота камеры дать ему сразу нужный поворот.
Согласно консоли кватернионы корректно собираются.

[5.253169536590576, 0.20752131938934326, 0.005760488100349903]
Эйлеровские с камеры
flywalk.js:74 [0.3103335201740265, 0.5483389496803284, 0.6758158802986145, 0.38247933983802795]
get_rotation с камеры
flywalk.js:75 [0.29815277457237244, 0.5550100207328796, 0.6658003926277161, 0.3997231721878052]
С анимации по целочисленному номеру кадра
flywalk.js:76 [0.3103335201740265, 0.5483389496803284, 0.6758158802986145, 0.38247933983802795]
Пересчет эйлер_ту_кват с камеры
flywalk.js:77 [0.4901502728462219, -0.08872837573289871, -0.05350780859589577, -0.8654576539993286]
А это то, что приобретает персонаж когда ему передаешь кватернионы из вышеперечисленного


Более того, он и ходит точно по осям как будто у него значение {1,0,0,0].
Я понимаю, что можно привязать камеру, быстро нажать право-лево и выровнять его, но тут вопрос принципа - почему такое поведение персонажа и что надо сделать, чтобы корректно передавать ему координаты вектора?
Алексей
15 ноября 2016 18:41
В общем, "портит все" set_transform(obj, trans, quat) и в ней кватернион. Если не переносить этот объект, не привязывать к камере, а наблюдать со стороны как он ведет себя - он сразу обновляет свое направление с учетом углов камеры, если только отключить set_transform. Уточните, какой кватернион задавать персонажу при переносе или может есть какой-нибудь "нулевой" кватернион, чтобы сначала развернуть персонажа, а потом просто перенести, без изменения направления?
Алексей
15 ноября 2016 17:27
создается впечатление, что камера проходит через контрольную точку анимации и у нее меняется привязка к системе координат, от которой уже идет анимация в виде изменений на текущем отрезке анимации, а, соответственно, персонажу передаются данные от исходного кадра.
Алексей
15 ноября 2016 17:04
Я понял, спасибо.

Голову сломал уже над тем, как корректно сразу развернуть персонаж под камеру, с которой отключается анимация.
Есть такая функция:
            case -1:
console.log(s_vars.vp_state);
m_anim.stop(s_vars.camobj);
upd_pos(s_vars.camobj);
m_phy.set_transform(s_vars.character, _pos_tmp.sp_trn.slice(0,3), _pos_tmp.sp_rot);
m_cons.append_stiff_trans(s_vars.camobj, s_vars.character, [0, 0, 0.5]);
break;
}


В ней m_phy.set_transform корректно переносит персонажа, но потом, если я немного не поверну камерой и персонаж не синхронизируется с камерой через:
m_phy.set_character_rotation(s_vars.character, m_cam.get_camera_angles_char(s_vars.camobj, _vec2_tmp)[0], 0);

то он то бочком идет, то задом. Я применял разные способы: взять кватернион с кадра анимации, перевести из эйлеровских координат get_camera_angles и angles_char - у персонажа меняется угол куда он пятится, но идеально чтобы точно по курсу он не идет. Не могу понять, почему m_phy.set_character_rotation не поворачивает персонажа, а кватернион с анимации не выставляет его ровно по курсу поворота камеры. Дайте наводку, почему это так?
Алексей
15 ноября 2016 12:46
Скинул на саппорт.
Алексей
15 ноября 2016 11:45
Доброе утро, Евгений,

Чего-то у меня никак не получается получить список анимации в модели. Функция get_anim_names работает с одним объектом3D и даже если анимация назначена по этому объекту, то выдает Array нулевой длины вместо имен, не говоря уже о том, чтобы по всей модели собрать всю анимацию, которая имеется и выдать её список. Скрин консоли прилагаю.
Алексей
15 ноября 2016 05:09
Алексей
15 ноября 2016 00:19
Добрый вечер, благодарю за предыдущие ответы.

По поводу анимации: щупаю сейчас методы для работы с ней.
Подскажите, во всех функциях модуля animation первой идет ссылка на объект, но есть также функции удаления слотов, назначения анимации на слот. Насколько я понимаю, анимация не представлена как отдельный объект и находится через объект, к которому привязана. Зачем тогда операции со слотами? Можно ли её скопировать и применить к другому объекту? Её назначение на объект идет по имени, а если имя не помнишь и не хочешь искать в исходниках, как найти какая вообще анимация имеется в модели?
Алексей
14 ноября 2016 15:27
Добрый день, уточните, почему если я меняю параметры volume в переменных объекта speaker громкость не меняется? Что нужно, чтобы можно было без функции менять параметры объектов, если я до них добрался и хочу с ними поработать?
Алексей
14 ноября 2016 09:17
Хорошо, тогда посоветуйте способ управления камерой, если у меня есть перечень объектов в виде массива, а дальше будет скрипт, перемещающий камеру от одного к другому. Нужен перечень корректно работающих функций. Пример с яблоками из кодасниппетс мне подойдет или есть еще удобные функции?

Скажите, вытащить координаты центра меша (боундари бокса) можно из объектов? А то у меня модель импортирована и центр координат для всех объектов в нуле.
Алексей