Форум

Сообщения, созданные пользователем Кирилл
31 января 2016 08:42
Обнаружил что форум заменяет ссылки на html код ссылки внутри тега code, что иногда портит код.

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

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


По поводу рамки…
Если вы вставляете на страницу при помощи тега iframe, то у него по умолчанию отображается рамка. Можете в стилях указать следующие "border: none; border-radius: 10px;", и тогда элемент будет отображаться без рамок и с округлёнными краями.
Пример:
<iframe src="scena.html" style="border: none; border-radius: 10px;"></iframe>
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
30 января 2016 16:01
А теоретически можно заставить blend4web рисовать такой шейдер, я немножко офигел, когда увидел такое в реалтайме
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
30 января 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, добавил пару методов.
И уже по традиции видео работы
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
30 января 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);
    }
}

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

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

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

в момент load_cb. Ей нужна камера, чтобы навесить на нее сенсоры. А камера доступна, когда уже загружена сцена
Спасибо, попробую и так. Действительно поставил вызов этой функции перед инициализацией сцены. Рядом, с функцией m_app.enable_controls(), просто потому что из одного модуля, и названия почти схожи.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
27 января 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.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
27 января 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));
    }

Не стой, где попало… Попадет еще раз.
http://naviris.ru/