论坛

由用户创建的信息 recoshet
31 January 2016 08:42
Обнаружил что форум заменяет ссылки на html код ссылки внутри тега code, что иногда портит код.

Например сейчас напишу
<a href="http://www.blend4web.com">Ссылка</a>

Как этот текст выглядит в теге code
<a href="http://www.blend4web.com">Ссылка</a>
31 January 2016 08:27
Ответ на сообщение пользователя halingji
Обоими способами пробовала, никак… видимо не судьба, буду ждать обнову х)
Может быть в качестве временного способа вам подойдёт способ с якорями?


По поводу рамки…
Если вы вставляете на страницу при помощи тега iframe, то у него по умолчанию отображается рамка. Можете в стилях указать следующие "border: none; border-radius: 10px;", и тогда элемент будет отображаться без рамок и с округлёнными краями.
Пример:
<iframe src="scena.html" style="border: none; border-radius: 10px;"></iframe>
30 January 2016 16:01
А теоретически можно заставить blend4web рисовать такой шейдер, я немножко офигел, когда увидел такое в реалтайме
30 January 2016 15:07
Ответ на сообщение пользователя Семенцов Роман
С мультитачем надо быть аккуратным, не все мобильные девайсы его поддерживают. Лучше добавить небольшую проверку на его наличие.
В примере я не учел использование мультитача, у меня перед глазами в этот момент стояло приложение-раннер от третьего лица. Вообще для использования мультитача надо обрабатывать массив с координатами нажатий (event.touches) и смотреть, какое из них должно поворачивать камеру.
Почитав о тачах, выяснил что в массиве event.touches находятся координаты всех касаний на экране. А в массиве event.targetTouches находятся касания к текущему DOM элементу.
Посмотрел в /src/addons/mouse.js функции get_coords_x, get_coords_y возвращаются координаты первого касания из общего массива event.touches. Заменив это на event.targetTouches я получил "псевдо мультитач", так как элементы управления не являются детьми канваса (в моём случае), то b4w теперь обрабатывает только касания по канвасу.
Чуть модифицировал аддон mouse.js, добавил пару методов.
И уже по традиции видео работы
30 January 2016 12:33
Подскажите, как правильно преобразовать значения с датчика ориентации для передачи их камере. Ещё хотелось бы, что бы камера наклонялась по отношению к горизонту.

Попробовал использовать такую конструкцию:
function load_cb(data_id) {
    m_app.enable_controls();
    //m_app.enable_camera_controls();

    // place your code here
    var camobj = m_scs.get_active_camera();

    if (window.DeviceOrientationEvent) {
        window.addEventListener("deviceorientation", function(event) 
        {
            var xValue = event.gamma;
            var yValue = event.beta;
            var Rotation = event.alpha;
            
            //console.log({xValue:xValue,yValue:yValue,Rotation:Rotation});
            //console.log(m_trans.get_rotation(camobj));
            m_cam.rotate_camera(camobj, xValue/(-180/Math.PI), (yValue+90)/(90/Math.PI), true, true);
        }, true);
    }
}

Работает, но естественно не правильно
28 January 2016 09:13
Хм, теперь появилась проблемка с мультитачем. Пока зажата кнопка направления движения (touchstart) b4w игнорирует жесты управления камерой. После отжатия кнопки (touchend) жесты продолжают работать.
видео
Сегодня буду изучать логику событий тачей
28 January 2016 09:10
Хм, теперь появилась проблемка с мультитачем. Пока зажата кнопка направления движения (touchstart) b4w игнорирует жесты управления камерой. После отжатия кнопки (touchend) жесты продолжают работать.
видео
Сегодня буду изучать логику событий тачей
28 January 2016 00:43
Ответ на сообщение пользователя Семенцов Роман
Посмотрите как просто выглядит пример для декстопа.

Для мобильника пришлось повозиться. Вот пример сырой версии, подойдет в качестве отправной точки для создания своего обработчика тача: test.zip
Большое спасибо! Изучил, попробовал связать поинтерлок и приведённый обработчик тача в один проект, пока что получилось не очень по горизонтали. По вертикали вроде хорошо работает. Осталось сделать грамотное ветвление обработки мыши/тача на свежую голову
Разобрался! Ещё раз спасибо за приведённые примеры, теперь всё работает как задумано

Ответ на сообщение пользователя Семенцов Роман
Кстати по поводу ошибок из консоли, вызывайте функцию
m_app.enable_camera_controls()

в момент load_cb. Ей нужна камера, чтобы навесить на нее сенсоры. А камера доступна, когда уже загружена сцена
Спасибо, попробую и так. Действительно поставил вызов этой функции перед инициализацией сцены. Рядом, с функцией m_app.enable_controls(), просто потому что из одного модуля, и названия почти схожи.
27 January 2016 13:50
m_app.enable_camera_controls
Не заработал. Выдал такие ошибки
b4w.min.js:324 B4W ERROR: No active scened @ b4w.min.js:324a.get_active_camera @ b4w.min.js:1987u @ b4w.min.js:2049init_cb @ example.js:31e @ b4w.min.js:2063
b4w.min.js:324 B4W ERROR: get_move_style(): Wrong camera objectd @ b4w.min.js:324a.get_move_style @ b4w.min.js:1890u @ b4w.min.js:2049init_cb @ example.js:31e @ b4w.min.js:2063
b4w.min.js:324 B4W ERROR: get_velocities(): Wrong camera object

Пробовал функцию на этом примере
Если подкините пример кода для реализации поворта камеры вместе с направлением персонажа тачем (что бы после поворота камеры он продолжал идти прямо при нажатии кнопки W) этого примера, буду очень признателен. А пока что пользуюсь сенсорами touch_move.
27 January 2016 08:53
Ответ на сообщение пользователя Семенцов Роман
Если вы про управление камерой на мобильном девайсе, то эти алгоритмы заложены в аддона app.js. Вас должны интересовать функции, в названии которых есть слово touch. Обработчики у нас там реализованы через сенсоры модуля controls.js

Надеюсь, я правильно понял ваш вопрос

Вы меня правильно поняли, смотрел в доки и в исходники по слову Touch. Пробовал разобраться, но пока не вышло. В итоге пока что набросал такую конструкцию:
    //События тача
    var camobj = m_scs.get_active_camera();
    var touchmove_sensor_x = m_ctl.create_touch_move_sensor('X');
    var touchmove_sensor_y = m_ctl.create_touch_move_sensor('Y');
    var touchmove_sensor_xy = m_ctl.create_touch_move_sensor();

    var coord_touch = {x:0,y:0};
    m_ctl.create_sensor_manifold(null, "TOUCH_MOVE", m_ctl.CT_LEVEL, [touchmove_sensor_xy, touchmove_sensor_x, touchmove_sensor_y],
            function(s){
                coord_touch.x = s[1];
                coord_touch.y = s[2];
                return s[0];
            }, sobitie_touch);   

    function sobitie_touch(obj, id, pulse, param) {
    console.log({coord_touch_x:coord_touch.x ,coord_touch_y:coord_touch.y});
        m_cam.rotate_eye_camera(camobj, coord_touch.x/(-500), coord_touch.y/(-500));
    }