Forum

User posts Evgeny Rodygin
02 February 2016 10:45
Ответ на сообщение пользователя kaaboeld
Евгений Родыгин, спасибо за ваш ответ. Хотелось бы узнать как инфраструктура вашего проекта относиться к сборщикам таким как gulp, grunt и тд в режиме watch.
В Blend4Web собственная система сборки, запускаемая через Менеджер проектов. Обычно вся разработка ведется с незакомпилированной версией проекта, и только когда вы готовы разместить продукт на рабочем сервере, он компилириуется.

Есть ли возможность без перезагрузи или хотя бы без перекомпиляции просматривать проект(сцена не менялась, меняется только js)?
Не совсем понял, про какую перезагрузку вы говорите. Html-страницу придется перезагрузить при изменении скриптов . Больше ничего не нужно перезагружать. Скрипты никак не зависят от экспортированной сцены, поэтому вы можете менять их независимо.
01 February 2016 19:07
Здравствуйте и добро пожаловать на форум,

Структура зависит от размера и типа приложения. В общем-то её вам предлагает Project Manager при создании проекта. Мы обычно храним js-скрипты в директории apps_dev. Там же html, интерфейсные элементы и css.

В папке deploy/assets лежат ресурсы, необходимые для загрузки сцены, начиная от json-файлов и заканчивая музыкой и видео.

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

Что касается серверной составляющей, то тут сложно говорить о какой-то специфике при работе с Blend4Web. Если нужно активно и с низкой задержкой слать какую-то информацию я бы выбрал WebSocket-ы.

31 January 2016 20:08
Ответ на сообщение пользователя Кирилл
А теоретически можно заставить blend4web рисовать такой шейдер, я немножко офигел, когда увидел такое в реалтайме
Это красивый, самодостаточный арт, но эта техника неприменима в реальных приложениях. Если коротко - вся отрисовка при таком методе производится на фрагментном шейдере видеокарты и поэтому, вы не сможете её адекватно совместить с другими объектами на сцене.
Тем не менее, у нас над шейдером воды велась довольно длительная работа и при должной настройке сейчас можно получать очень интересные результаты, которые в том числе влияют и на плавучие физические объекты. Сейчас настройки содержат много очень низкоуровневых параметров, но мы планируем в будущем доработать наш метод и сделать его более простым в настройке.
Я прикрепил сценку, в которой накрутил некоторые параметры воды и физику (в html-экспорте она не заработает). Тут не задействовано ещё много фич, но что примерно можно получить, понятно.
29 January 2016 18:51
Ответ на сообщение пользователя amiarun
What are the 'types' that I could use to limit the search?
These are Blender's types: "MESH", "CAMERA", "EMPTY", "SPEAKER", "LAMP".
And a new "LINE" type which was added in the 16.01.

We will add this info to API doc.
29 January 2016 10:51
Ответ на сообщение пользователя Winter_Fox
Ого планы масштабные.
Будете ли вы вводить Отложенное затенение ( Deferred Shading ) в4w ?

Вроде это как уже неявный стандарт в real-time графике, хотя конечно большое кол-во источников света для презентации это много и ненужно наверное.
Поскольку deferred shading-а нет в Blender, мы его так же не внедряем. Сейчас идет довольно активное обсуждение планов по будущему Viewport-y (в котором мы тоже участвуем). Тема отложенного рендеринга так же поднимается. Но он не будет стандартом де-факто. Потому что помимо очевидных плюсов в виде возможности использовать большое количество "быстрых" источников света у deferred shading-а есть и серьезные минусы, которые не позволят к примеру с нынешней гибкостью настраивать материалы.

P.S. Winter_Fox, проверьте, пожалуйста свою почту.
28 January 2016 18:49
Hi,

I think we will make some additions to the mouse.js addon. To its request_pointerlock method to be precise.

For now, you can use the following construction without modifying engine modules:
    var canvas_elem = m_cont.get_canvas();
    var x_prev = null;
    var y_prev = null;

    function touch_start_cb(e) {
        var touches = e.targetTouches;

        if (touches.length === 0)
            return;

        var touch = touches[0];
        var x = touch.clientX;
        var y = touch.clientY;

        x_prev = x;
        y_prev = y;
    }

    function touch_move_cb (e) {
        var touches = e.targetTouches;

        if (touches.length === 0)
            return;

        var touch = touches[0];
        var x = touch.clientX;
        var y = touch.clientY;

        var d_x = x - x_prev;
        var d_y = y - y_prev;

        var character = m_scs.get_first_character();
        var camera    = m_scs.get_active_camera();
        m_cam.eye_rotate(camera, d_x / 100, d_y / 100);
        if (character) {
            var angles = m_cam.get_camera_angles_char(camera, _vec2_tmp);
            m_phy.set_character_rotation(character, angles[0], angles[1]);
        }
        x_prev = x;
        y_prev = y;
    }
    canvas_elem.addEventListener("touchmove", touch_move_cb, false);
    canvas_elem.addEventListener("touchstart", touch_start_cb, false);
28 January 2016 12:01
Добрый день и добро пожаловать на форум!

Ответ на сообщение пользователя free_user
Имею вот коробку, на которую снаружи светит Sun + Environment lighting White. У коробки углы простые, без bevel'a, модификаторов так же нет.
Как избавиться от таких артефактов с засветкой углов?
…и как из избегать в будущем?
Эти артефакты возникают из-за того, что объект, который отбрасывает тень не имеет толщины. Избежать этого можно, "утолщив" стенку, например проэкструдировав её.
28 January 2016 11:52
In addition to what Roman has already said, here is how this problem can be prevented http://247pearsoned.custhelp.com/app/answers/detail/a_id/8650/~/safari%3A-zip-files-automatically-unzip%2Fextract
28 January 2016 07:58
Hello,
Currently, blurred realtime reflections are not possible. Actually, much depends on what kind of decisions will be taken for the Blender's future Viewport realization, so that we don't have to invent something incompatible with Blender's rendering model. Anyway, in not so distant future it will be possible.
28 January 2016 07:47
Ответ на сообщение пользователя Onis
Здравствуйте, есть ли возможность сделать дубликаты подгруженных сцен. Подгружаю элементы через data.load , если написать в коде пару раз подряд, то инициализация сцены происходит очень долго
data.load('model.json',loaded_cb,preloader_cb)
data.load('model.json',loaded_cb,preloader_cb)
data.load('model.json',loaded_cb,preloader_cb)
data.load('model.json',loaded_cb,preloader_cb)
data.load('model.json',loaded_cb,preloader_cb)
Добрый день,
Да, такая возможность есть. Для этого имеется функция objects.copy(obj, name, deep_copy), которая создает копию существующего объекта. Если вы в дальнейшем хотите независимо изменять геометрию/материалы скопированных объектов, то последний флаг deep_copy следует выставить в true.

Пример её применения есть в Code Snippets.