Форум

Сообщения, созданные пользователем ДЕНИС
10 марта 2018 23:26
А может кто обнаруживал какие то проблемы при совместном использовании jQUERY и B4W ?
Денис
08 марта 2018 02:47
Ответ на сообщение пользователя Александр Романов
В качестве параметра необходимо передавать специальный объект
вида:
{
        left:m_vec4.create(),
        right:m_vec4.create(),
        top:m_vec4.create(),
        bottom:m_vec4.create(),
        near:m_vec4.create(),
        far:m_vec4.create(),
    


Да я конечно подумал, что инициализировать надо массив массивов, но посмотрев в документацию в которой написано, что MAT4 создается просто через create(); так и сделал..
думается, что стоит документацию в этом разделе расширить.. а то не ясно совсем, как пользоваться этим, а копаться все время в исходниках не вариант. да и вроде всегда сразу проверяется объект, который приемником является и если не подходит то сразу пишет.. а тут нет..
Денис
07 марта 2018 00:27
Ответ на сообщение пользователя Александр Романов
так. out параметр обязателен в конкретно этой функции. Он используется в качестве буфера, в который будет записано возвращаемое значение. Все модули используют подобный подход, который позволяет переиспользовать память, а не выделять ее каждый раз.
НУ не то чтобы все …. : https://www.blend4web.com/api_doc/module-camera.html#.get_camera_angles
а так понятно в целом.

Ответ на сообщение пользователя Александр Романов
Боюсь, что скопировать параметры проекции будет очень затруднительно, поскольку неактивные камеры загружаются как обычные объекты и данные о перспективных преобразованиях теряются. Таков текущий дизайн. Получится скопировать только tsr.
…..
Как я уже сказал, она загружается как обычный объект. Найти ее можно при помощи get_object_by_name итп.

Вторая камера не загружается ни как … хотя в JSONe есть … я проверил не один раз выводя все объекты и вызывая в лог имена, кроме того раз на ее не переключиться и параметры не скопировать то оно и не подойдет, возвращаемся к плану "А" а именно:

вопрос есть ли где то пример такого :

- Имеем перспективную таргет камеру с управлением Camera,

- сохраняем текущие параметры таргет-камеры перед сменой вида,
m_cam. get_target ……

- делаем ее статической ,
m_cam.static_setup(camera);

- переносим в нужную точку, разворачиваем на нужную точку,
m_cam_a.move_camera_to_point(camera, camera_top_position, cam_lin_speed, cam_angle_speed, camera_top_cb);

- БЫЛ ПЛАН получить данные с примера камеры, (( но оказывается там не будет данных
тогда как создать правильную проекцию с камеры которая есть в бленедре верно настроенная?
cam_ortho_planesObj = m_cam.get_frustum_planes(camera_top, cam_ortho_planesObj );
- далее нужно отключить перспективу, а точнее сделать другую проекцию ВОТ ТУТ И ВОПРОСЫ

cam_ortho_FuturismMatrix = m_mat4.ortho(cam_ortho_planesObj.left, cam_ortho_planesObj.right, cam_ortho_planesObj.bottom, cam_ortho_planesObj.top, cam_ortho_planesObj.near, cam_ortho_planesObj.far)
m_cam.set_projection(camera, cam_ortho_FuturismMatrix);

- назначить нужный Скейл
m_cam.set_ortho_scale(camera, ORTO_SCALE);

-при обратном преобразовании все откатить назад к таргет камере обычной
m_cam.target_setup(camera …..

ДОПОЛНЮ:

при выполнении метода :
var cam_ortho_planesObj=m_cam.get_frustum_planes(camera, _mat4_tmp);

вываливается на копировании данных матрицы
/**
* Copy the values from one vec4 to another
*
* @param {Vec4} a the source vector
* @returns {Vec4} out
* @param {Vec4} out the receiving vector
* @method module:vec4.copy
*/
function copy(a, out) {
out[0] = a[0];
out[1] = a[1];
out[2] = a[2];
out[3] = a[3];
return out;
};


С СООБЩЕНИЕМ :
Uncaught TypeError: Cannot set property '0' of undefined
at Object.copy (b4w.js:5908)
Денис
06 марта 2018 17:58
Ответ на сообщение пользователя Александр Романов
Нельзя. Но можно копировать положение камер, правда вручную.
Вопрос обсуждался здесь. По нему пока ничего не изменилось.

да как раз, по той теме, похоже это то что надо! Только как скопировать параметры?, которые нужны для
https://www.blend4web.com/api_doc/module-camera.html#.set_projection изменения проекции
а именно матрицу: эти самые параметры ortho(left, right, bottom, top, near, far, out) → {Mat4}
https://www.blend4web.com/api_doc/module-mat4.html#.ortho
например с уже существующей(второй камеры которая установлена как надо)

ну и конечно нужно сохранить проекцию прошлой камеры чтоб вернуть на место все?

ДОКУМЕНТАЦИЯ: тот самый параметр OUT в описании модуля MAT4 не обозначен, как опциональный, так же как в описании других модулей, но по факту, как я понимаю, это именно так. Данные возвращаются функцией и плюсом в параметр OUT ! кроме этого описано что возвращается МАТ4 матрица, она же массив Float32Array , но когда смотрим описание https://www.blend4web.com/api_doc/module-camera.html#.set_projection не видим MAT4 в описании .. а только массив .

Дополню: пытаюсь подгрузить в основной сцене и вторую камеру ортогональную из которой скопировать нужные параметры, как говорилось выше, но не тут то было .. похоже, что при загрузке загружает только одну камеру, что выбрана как активная в сцене, верно? т.к. второй камеры в списке загруженных объектов просто нет …
Денис
06 марта 2018 01:39
Например,

есть perspective камера - как узнать fovy, aspect, near, far?
есть ortho камера - как узнать left, right, bottom, top, near, far?

а удалось то собрать параметры матрицы все вместе включаяя OUT ?
чем тема то кончилась?
Денис
06 марта 2018 00:05
Нельзя. Но можно копировать положение камер, правда вручную.
про "копировать" это как? можно подробнее?
Денис
05 марта 2018 15:25
Ответ на сообщение пользователя Theodore Mastikhin
Нет, пока что других примеров в документации нет. Но мы планируем добавить примеры использования этого и других методов; возможно, они появятся уже в следующем релизе.
Будем ждать, можно много придумать как использовать эти свойства в динамическом коде.

1. Тут возник еще один вопрос, на сколько я вижу(искал в API) нет возможности изменить активную камеру в сцене с несколькими камерами?

2. Не могу найти способ создать ортогональную камеру или изменить текущую на ортогональную. может не нашел метод, подскажите.

Спаисбо.
Денис
02 марта 2018 03:26
Вопрос по "get_meta_tags(obj)"

а кроме как тут(ссылка) есть еще где то примеры и описание ?
https://www.blend4web.com/api_doc/module-objects.html#.get_meta_tags
и https://www.blend4web.com/api_doc/module-objects.html#~ObjectMetaTags


PS все работает.. но если есть доп инфа будет полезно.
Денис
26 февраля 2018 16:38
Эта функция помечена как устаревшая, поскольку она загружает картинку каждый раз без кэширования. Взамен пользователю предлагается использовать Image в качестве некоего кеша, над которым пользователь имеет полный контроль.

….
Промисы сейчас не используются, пока что используются более низкоуровневые функции JS.
Насчет коллбэка решим.

И про кеш и про замену картинки без ожидания было бы очень хорошо.. т.к. представьте загрузку 100 мб картинок пред мешем ))) а потом опять и так сколкьо угодно раз.. картинки то могут повторяться а могут и нет.. и кеш тут не помешает сейчас рабоатет не всегда быстро как хотелось бы.
______________________________

Вчера обнаружен еше один "99% баг" : при загрузке данных в сцену несколькими этапами (объектов) и у этих объектов есть свойсво "render_above_all" включено то объекты не из первой загрузки просто не отображаются в сцене ни при каких условиях ! демонстрацию пока сделать тяжело т.к. надо выкусить из кода именно это место ..

возможно вы знаете о этой проблеме ?
Денис
26 февраля 2018 15:21
Действительно колбэк при replace image не работает. Это баг.

ну значит, что я все верно подметил , жаль, что времени много потерялось.

про ваш пример: это пример удобен, когда заранее все текстуры, которые нужны, известны и они уже есть. А например в моем случае - текстура нужная определяется в момент работы с приложением и нужно ее поднимать и менять в процессе работы сцены, состоящей ни разных частей догружаемых позже.
В данный момент старый метод "change_image" с ожиданием через калбэк работает ( он вроде как в устаревших уже числится… может его стоит оставить ? ) кроме того, тот ваш новый метод лишь навеска над старым и как я понимаю, Возможно его стоит переделать от начала и до конца заново. Я детально не смотрел, что там делается в коде, но не увидел тех самых "промисов" о которых говорили выше и вполне вероятно калбек тот все же нужен для внешнего контроля подгрузки или сделать это контроль внутри метода.
Денис