User posts Ivan Lyubovnikov
25 January 2017 10:59
Использую расширение ScriptSafe с отключенным Canvas Fingerprint (не люблю чтобы меня трекали). В итоге абсолютно любой проект на blend4web перестает получать данные от курсора. В качестве примера привожу ниже ошибки в демке от NASA:Не удалось воспроизвести на наших демках. После включения "Allow", "Trust" или "Temporary" для домена все нормально грузится и работает. Настройка Canvas Fingerprint была Completely Block Readout. Например, на этой демке: Cartoon Interior - нет никаких проблем.
В демке от NASA есть ошибки, но совсем другие. Но у них движок полуторагодовалой давности + допиленный под свои нужды.
24 January 2017 19:33
Hi! Welcome to our forum!
The "enable_mouse_hover_outline" method triggers the animation for an object that is under the mouse cursor, so it's not suitable here.
This is the code that should work:
In short: we assign the "mousemove" listener to the canvas container element and check the object under the mouse cursor by the "pick_object" method. Depending of the object's name we can apply or clear the animation. Also the global variable "_has_anim" is used to prevent needless restarting or needless disabling the animation, for example - moving the mouse continuously above the green button shouldn't restart the animation every frame.
The "enable_mouse_hover_outline" method triggers the animation for an object that is under the mouse cursor, so it's not suitable here.
This is the code that should work:
var m_cont = require("container");
var _has_anim = false;
function load_cb(data_id, success) {
if (!success) {
console.log("b4w load failure");
return;
}
m_app.enable_camera_controls();
// place your code here
var container = m_cont.get_container();
container.addEventListener("mousemove", mouse_move);
}
function mouse_move(e) {
var obj = m_scenes.pick_object(e.clientX, e.clientY);
var redCube = m_scenes.get_object_by_name("redCube");
if (obj && m_scenes.get_object_name(obj) == "greenButton") {
if (!_has_anim) {
m_scenes.apply_outline_anim(redCube,0.5,0.5,0);
_has_anim = true;
}
} else {
if (_has_anim) {
m_scenes.clear_outline_anim(redCube);
_has_anim = false;
}
}
}
In short: we assign the "mousemove" listener to the canvas container element and check the object under the mouse cursor by the "pick_object" method. Depending of the object's name we can apply or clear the animation. Also the global variable "_has_anim" is used to prevent needless restarting or needless disabling the animation, for example - moving the mouse continuously above the green button shouldn't restart the animation every frame.
24 January 2017 10:42
Не пробовали воспроизвести проблему на другом маломощном устройстве, например, мобильнике? Все-таки, нужно выяснить: дело в специфике часов или нет.
и для преобразования изображения для Ч,Б режима с 8 цветами ( 2 уровня)- возможно тормозит какой-то из методов, поэтому все происходит слишком долго, не умещаясь в 1 кадр. Я бы проверил, отключая методы set_color_correction_params и set_light_params.
я изменяю настройки так:
m_cfg.set("max_fps", 10);
m_scs.set_color_correction_params( {saturation: 0} );
m_lights.set_light_params(m_scs.get_object_by_name("lamp"), {"light_energy" : 0} );
m_cfg.set("shadows", false);
m_lights.set_light_params(m_scs.get_object_by_name("Point"), {"light_energy" : 45} );
23 January 2017 17:36
Добрый вечер. Вам сюда: Меблируем комнату
P.S. конкретно: 2 часть туториала, пункт "Интерактивность: перемещение"
P.S. конкретно: 2 часть туториала, пункт "Интерактивность: перемещение"
23 January 2017 12:18
But i have troubles when i "rebuilt / compile" the project background color of anchors.These styles are defined here: src/anchors.js. The "add_title_wrap_style" function is for the title style and the "add_descr_style" is for the description style.
They still back to the initial black color..
23 January 2017 11:03
Hi! The only solution is to use canvas textures like in this example (requires coding): Canvas Texture.
A canvas texture should be set in Blender. More info here: https://www.blend4web.com/doc/en/textures.html#canvas
You can load a video in the <video> html element and use get_canvas_ctx / update_canvas_ctx methods to work with the canvas texture. The video can be manually drawn into it via the standard drawImage method.
A canvas texture should be set in Blender. More info here: https://www.blend4web.com/doc/en/textures.html#canvas
You can load a video in the <video> html element and use get_canvas_ctx / update_canvas_ctx methods to work with the canvas texture. The video can be manually drawn into it via the standard drawImage method.
18 January 2017 12:44
А никак, потому что во-первых, разные 3д-движки в принципе несовместимы между собой из-за формата и внутреннего представления объектов и ресурсов, которые заточены именно под себя, и интеграции b4w и three.js здесь нет, а во-вторых b4w практически не предоставляет доступа к низкоуровневым объектам.
Что здесь вообще можно сделать? Например, в b4w можно работать с геометрией объектов методами extract_vertex_array, extract_index_array и override_geometry. Первые 2 извлекают геометрию в каком-то своем формате, последний её записывает. Если создать параллельно работающее приложение на three.js, то данные геометрии из b4w теоретически, преобразовав в понятный three.js формат, можно в него запихнуть и наоборот.
Т.е. напрямую это сделать нельзя, только в виде обмена данными между приложениями на основе возможностей их API, что видится сильно ограниченным и неэффективным.
Что здесь вообще можно сделать? Например, в b4w можно работать с геометрией объектов методами extract_vertex_array, extract_index_array и override_geometry. Первые 2 извлекают геометрию в каком-то своем формате, последний её записывает. Если создать параллельно работающее приложение на three.js, то данные геометрии из b4w теоретически, преобразовав в понятный three.js формат, можно в него запихнуть и наоборот.
Т.е. напрямую это сделать нельзя, только в виде обмена данными между приложениями на основе возможностей их API, что видится сильно ограниченным и неэффективным.
18 January 2017 10:43
Это стандартная нода Input->Value. Её можно менять через API: set_nodemat_value - там же есть и пример использования. Похожим образом ещё можно управлять нодой Input->RGB.