Форум

Сообщения, созданные пользователем ДЕНИС
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" с ожиданием через калбэк работает ( он вроде как в устаревших уже числится… может его стоит оставить ? ) кроме того, тот ваш новый метод лишь навеска над старым и как я понимаю, Возможно его стоит переделать от начала и до конца заново. Я детально не смотрел, что там делается в коде, но не увидел тех самых "промисов" о которых говорили выше и вполне вероятно калбек тот все же нужен для внешнего контроля подгрузки или сделать это контроль внутри метода.
Денис
25 февраля 2018 13:49
Ответ на сообщение пользователя Александр Романов
Хорошо, что у вас получилось. Посмотрим, в чем проблема.

до релиза успеете?
Денис
23 февраля 2018 12:58
ОБНОВЛЕНИЕ:
задействовал старый метод, и колбек заработал "change_image(obj, text_name, image_path, callbackopt)"
, но картина все равно не заменяется .. хотя и загрузка картинки происходит и метод отрабатывает..
уже не знаю куда и копать измененный кусок кода:

Ура! текстуры наконец заменяются, и все же - метод с "вызовом калбека для ожидания картинки" оказался самым рабочим.
обнаружил, что в материале были такие настройки, которые не позволили увидеть изменения. - Это в ПЛЮСЕ
А вот что в минусе, и по прежнему нуждается в объяснении:

Пришлось использовать "устаревший" метод "change_image" вместо документированного "replace_image" (с руганью в консоли) … т.к. последний ни при каких обстоятельствах не посещает свой калбек и все эти ошибки были как раз по его поводу.
Денис
22 февраля 2018 05:39
обнаружил две перекликающихся темы на форуме :

https://www.blend4web.com/ru/forums/topic/23/?page=2#post-20783
и вторая про "много картинок в загрузке для замены" ..
и примеры кода , в котором используется старый метод замены картинки!!!
https://www.blend4web.com/apps/code_snippets/code_snippets.html?scene=change_image

создал измененный код , добавив простой колбек с флагом ожидания загрузки картинки .
и пробовал так же его использовать с "replace_image(obj, text_name, image, callback)"
- но как я и сказал выше новый метод полностью игнорирует вывод в колбек !

задействовал старый метод, и колбек заработал "change_image(obj, text_name, image_path, callbackopt)"
, но картина все равно не заменяется .. хотя и загрузка картинки происходит и метод отрабатывает..
уже не знаю куда и копать измененный кусок кода:
function change_img_cb() {
	console.log("_wait_for_image_loading = "+_wait_for_image_loading );
	_wait_for_image_loading = false;
	}
										
var _flag = false;

..........
 _wait_for_image_loading = true;
											
		if (_flag) {
			  //m_tex.replace_image(obj, text_name, image1, change_img_cb);
			 m_tex.change_image(obj, text_name, image1.src, change_img_cb);
		 } else {
			//m_tex.replace_image(obj, text_name, image2, change_img_cb);
			m_tex.change_image(obj, text_name, image2.src, change_img_cb);
			 }
			_flag = !_flag;
........


картинка все так же не заменяется …
самое неприятное, что ошибок напрмер в ФФ в консоли нет ! да и в Хроме ошибка(ки) исчезли,
кроме конечно этого "B4W ERROR: change_image() is deprecated, use replace_image() instead."
но и в примере так, но работает пока. кроме того внутри в движке то так старый метод и используется поверх нового!

Денис
22 февраля 2018 03:44
При принудительной смене:
Модуль textures
change_image() ругается матом:


+1 получил примено то же самое

https://www.blend4web.com/ru/forums/post/20782/

нет случаем "лекарства" уже?
Денис
21 февраля 2018 19:00
Оставил пока все как последовательный вызов "посткалбеков " и в последнем инициализирую все элементы по ИД сцен получеными на этапе загрузки.. вроде все ок.

Но тут новая странность, с заменой текстуры:
пробую в ФФоксе и в Хроме .
в ФФоксе текстура не меняется и ошибок нет в консоли ( дебаг режим включен)
в Хроме текстура не меняется, но ошибки в консоли есть:

(картинка есть по этой ссылке, элемент работает, меши все загружаются.. но замена текстуры не срабатывает и старый ваниант уже не работает "b4w.js:202 B4W ERROR: change_image() is deprecated, use replace_image() instead." )
https://www.blend4web.com/api_doc/module-textures.html#.replace_image


LOG image.src = http://myapp.com/app//assets/var/v1/L1.jpg
LOG image = [object HTMLImageElement]

b4w.js:27228 WebGL: INVALID_VALUE: texImage2D: no image

update_texture @ b4w.js:27228
Int_textures.exports.change_image @ b4w.js:28142
Textures.exports.replace_image @ b4w.js:115902
(anonymous) @ myapp.js:385
dispatch @ jquery.min.js:2
y.handle @ jquery.min.js:2

myapp.php?:1 [.Offscreen-For-WebGL-0000022FA5691490]GL ERROR :GL_INVALID_OPERATION : glGenerateMipmap: Can not generate mips

….. итд… там уже целый список

Код почти такой как в описани АПИ

var image = new Image();
var text_name = 'ao';
image.src = APP_ASSETS_PATH+"L1.jpg"; 
m_tex.replace_image(l1, text_name, image);


что может быть то?


ДОПОЛНЮ:

вываливается тут

else if (!cfg_def.webgl2 && (__WEBPACK_IMPORTED_MODULE_9__util_js__["L" /* check_npot */](texture.width) 
                    || __WEBPACK_IMPORTED_MODULE_9__util_js__["L" /* check_npot */](texture.height))) {
                draw_resized_image(texture, draw_data, width, height, false);
                texture.need_resize = true;

            } else
                _gl.texImage2D(w_target, 0, _gl.RGBA, _gl.RGBA, _gl.UNSIGNED_BYTE, draw_data);


как раз в ЭЛЬСЕ последнем :
b4w.js:27228 WebGL: INVALID_VALUE: texImage2D: no image
Денис
20 февраля 2018 13:43
не составляет труда еще на этапе постзагрузки контролировать ВСЕ объекты в каждой подгружаемой сцене.


спасибо, а в описани API она есть?

про присвоения на этапе загрузки это не всегда удобно и возможно, как раз хотелось сделать такой "универсальный" кусок кода.. т.к. сцены(части сцен) разные могут быть , а вот не получается … от этого и все эти вопросы.
Денис