* Как? Вращение источника света типа SPOT вокруг объекта в сцене с данными от гироскопа (как гиро-камера)?
24 июля 2016 22:49
Как сделать подскажите?
Необходимо вращение источника света типа SPOT вокруг объекта ( навправление света всегда в одну точку( например 0.0.0 или пивот объекта в сцене) с данными для вращения от гироскопа, как реализовано гиро-камере в соответсвующем модуле . я так понимаю данные от гироскопа с тем модулем работают только с камерой?
https://www.blend4web.com/api_doc/module-gyroscope.html
PS
данные для перемещения центра источника света для перемещения по уруговой орбите не проблема..
вопрос именно как связать их в рамках b4w с источником, кроме того я не нашел такого свойства как TARGET у SPOT в b4W ((( ….
как задавать направление на точку или объект как например это есть в THREE.JS )) ?
Спасибо заранее за развернутые ответы.
Необходимо вращение источника света типа SPOT вокруг объекта ( навправление света всегда в одну точку( например 0.0.0 или пивот объекта в сцене) с данными для вращения от гироскопа, как реализовано гиро-камере в соответсвующем модуле . я так понимаю данные от гироскопа с тем модулем работают только с камерой?
https://www.blend4web.com/api_doc/module-gyroscope.html
PS
данные для перемещения центра источника света для перемещения по уруговой орбите не проблема..
вопрос именно как связать их в рамках b4w с источником, кроме того я не нашел такого свойства как TARGET у SPOT в b4W ((( ….
как задавать направление на точку или объект как например это есть в THREE.JS )) ?
Спасибо заранее за развернутые ответы.
Денис
25 июля 2016 15:19
25 июля 2016 16:23
вопрос именно как связать их в рамках b4w с источником
для этого можно воспользоваться методом set_translation, либо set_translation_v, например:
var lamp = m_scenes.get_object_by_name("Lamp");
m_trans.set_translation(lamp, 1, 2, 3);
я не нашел такого свойства как TARGET у SPOT в b4Wа его и нет , в вашем случае фиксированной точки подойдет метод append_track - первым параметром подаете лампочку, а вторым - объект, на который она всегда будет смотреть (точнее на центр объекта, для простоты можно добавить empty-объект в нужной точке и использовать его при вызове функции):
var lamp = m_scenes.get_object_by_name("Lamp");
var empty = m_scenes.get_object_by_name("Empty");
m_cons.append_track(lamp, empty);
я так понимаю данные от гироскопа с тем модулем работают только с камеройда, это аддон, поэтому там специфический функционал только для камеры, но можно сделать по аналогии:
// создаем сенсор, отслеживающий углы гироскопа
var g_a_sensor = m_ctl.create_gyro_angles_sensor();
// задаем логику его обработки
m_ctl.create_sensor_manifold(lamp, "ROTATE_GYRO", m_ctl.CT_CONTINUOUS, [g_a_sensor], null, rotate_cb);
// функция-обработчик
var rotate_cb = function(obj, id, pulse) {
// берем углы гироскопа
_curr_angles = m_ctl.get_sensor_payload(obj, id, 0);
// рассчитываем положение лампы
// var x = ?, y = ?, z = ?;
// m_trans.set_translation(lamp, x, y, z);
}
Там могут быть проблемы с текущей ориентацией устройства, но, возможно, в вашем случае это непринципиально.
25 июля 2016 16:34
25 июля 2016 16:35
Думаю, что вы можете воспользоваться модулем input и transform для своих целей.
Возможно, вам будет полезен следующее сообщение: https://www.blend4web.com/ru/forums/topic/2013/?page=1#post-10020
// получаем объект, соответствующий гироскопу
var gyro_device = m_input.get_device_by_type(m_input.DEVICE_GYRO)
m_input.attach_param_cb(gyro_device, m_input.GYRO_ORIENTATION_QUAT, function(quat) {
// где quat -- актуальный кватернион поворота, который пришёл с гироскопа
// пишем здесь логику перемещения лампочки, см. ниже
})
как задавать направление на точку или объектМожно отталкиватся от какого-нибудь вектора, например m_util.AXIS_Y (в зависимости от того, какое поведение требуется), и вращать его в соответствии с кватернионом quat (m_vec3.transformQuat), полученный вектор (дополнительно преобразовывать в зависимости от того, какое поведение требуется) использовать в качестве позиции лампочки (m_trans.set_translation_v), а кватернион использовать в качестве ориентации лампочки (m_trans.set_rotation_v).
Возможно, вам будет полезен следующее сообщение: https://www.blend4web.com/ru/forums/topic/2013/?page=1#post-10020
Команда Blend4Web
kirill@blend4web.com
kirill@blend4web.com
25 июля 2016 17:25
про ТАРГЕТ у спота не понятно по какой причине его нет.. по идее он и в блендре и в других редакторах всегда присутсвуетв блендере у лампочки есть поворот, как и у любого другого объекта - он уже определяет направление конуса света, поэтому таргет в качестве свойства лампы был бы избыточен
если вы о констрейнтах, например, Track To, то он у нас не поддерживается
var gyro_device = m_input.get_device_by_type(m_input.DEVICE_GYRO)- этот вариант даже, наверное, попроще будет, чем через сенсоры, можно ещё m_input.GYRO_ORIENTATION_QUAT заменить на m_input.GYRO_ORIENTATION_ANGLES, тогда в обработчик будут приходить эйлеровские углы, смотря, что удобнее
m_input.attach_param_cb(gyro_device, m_input.GYRO_ORIENTATION_QUAT, function(quat) {
// где quat – актуальный кватернион поворота, который пришёл с гироскопа
// пишем здесь логику перемещения лампочки, см. ниже
})
25 июля 2016 18:55
Ответ на сообщение пользователя Иван Любовников
….
в блендере у лампочки есть поворот, как и у любого другого объекта - он уже определяет направление конуса света, поэтому таргет в качестве свойства лампы был бы избыточен
….
нет, я не о этом,
пример моеговарианта Луна и Земля, луна это СПОТ смотрит на центр земли и вращается вокруг земли , его расположение опледелается координатами XYZ и куда бы не переместили луну она всегда смотрит на X0 Y0 Z0 точку..
движение по ордите вообщем + ориентация на точку.
в Трии это организовывается очень просто , сначала говрим свет.таргет = XYZ или объект , затем просто меняем место света и привет )) зачем его вращать ориентировать итд… вот я о чем
более правильные вариант с учетом смены положения источника света в 3х плоскостях:
так вот место расположение берем по гироскопу определять.. за нулевую точку берем положение гироскопа в плоскости и свет в зените в этот момент, далее уже надо сохранять положение света ка буд то он относительно мира не меняется, а вот меш аклоняется и поворачивается(только вместо этого перемещать источник света по сферической орбите)
как то запутанно получилось написать , но вроде понятно?
пока для теста привязал ( как к родителю) свет к одной из стрелок которая вращается.. все ок и с направлением и с положением.. это про то как к пустому объекту првязать выше написано было
Денис
25 июля 2016 19:34
ример моеговарианта Луна и Земля, луна это СПОТ смотрит на центр земли и вращается вокруг земли , его расположение опледелается координатами XYZ и куда бы не переместили луну она всегда смотрит на X0 Y0 Z0 точку..Не много не в тему, но всё же…
А почему для луны нельзя использовать точечный источник света? Зачем именно spot?
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
http://naviris.ru/
25 июля 2016 19:58
Ответ на сообщение пользователя Кирилл
Не много не в тему, но всё же…
А почему для луны нельзя использовать точечный источник света? Зачем именно spot?
потому как с тенями большие проблемы на этом устройстве и на споте удалось все получить почти как надо .. не хочу больше эксперементировать ((
Денис
26 июля 2016 18:12