Forum

User posts kurlak
01 February 2018 17:05
При активации HMD режима, или даже простого m_gyro.enable_camera_rotation(), у игрового персонажа углы поворота Эйлера становятся неизменяемыми, долго уже бьюсь над этой проблемой, не могу найти корень. Использовался FPS модуль, но даже при его отключении ситуация не меняется. Пробовал организовать loop_cb функцию чтобы принудительно менять углы чарактеру от положения камеры, но даже это не работает, углы не меняются и все, ни при каких условиях, стоит отключить m_gyro.disable_camera_rotation() и все становится нормально.

Пытался в блендере играться с родительскими настройками - привязывал камеру к игроку, наоборот, или вообще без привязки - не помогает.

Поясню суть проекта - это обычная FPS бродилка по квартире с интерактивными элементами. Необходимо подключить возможность мобильного ВР с управлением через блютус джойстик. При включении ВР угол поворота персонажа замораживается и управление становится по сути ориентировано по сторонам света. Грубо говоря вместо вперед он идет всегда на север, вместо стрейфа в бок всегда на восток и так далее, не зависимо от угла поворота камеры игрока.

Подскажите как это исправить, возможно решение простое, но я его не могу увидеть.
01 February 2018 10:07
При повороте камеры с помощью мыши, направление движения персонажа изменяется аналогично.

НО, при использовании gyroscope.enable_camera_rotation() такого не происходит.

Столкнулся с той же самой проблемой, использовав в FPS режиме HMD ориентацию камеры - персонаж при этом остается в неподвижном состоянии и при активации элементов управления (обычный блютус джойстик с эмуляцией клавиатурной WASD) поворот камеры никак не влияет на поворот персонажа. Не подскажете код которым это решили?
01 February 2018 09:46
Отличный нодовый редактор логики есть в Unreal Engine 4. Там можно реализовать практически все что угодно, вообще не прибегая к коду. Если разработчики Blend4web планируют развивать ноды, то очень настоятельно ознакомится с принципами Blueprint Visual Scripting в UE 4 https://docs.unrealengine.com/latest/INT/Engine/Blueprints/
25 January 2018 12:36
Ответ на сообщение пользователя Кирилл Осипов
К сожалению, этого пока нельзя сделать при использовании аддона fps "нормальным" способом. Я бы посоветовал пока выставлять display:none у элементов с id B4W_DEFAULT_BTN_1, B4W_DEFAULT_BTN_2 при переходе в режим HMD.

Спасибо, помогло, приведу код если кому надо будет так же.

        var mob_but1 = document.getElementById('B4W_DEFAULT_BTN_1');        //Отключает кнопки мобильного передвижения
        var mob_but2 = document.getElementById('B4W_DEFAULT_BTN_2');

        mob_but1.style = "display:none";
        mob_but2.style = "display:none";


Выставил настройки:

        m_scenes.set_hmd_params({
            enable_hmd_stereo: true,
            distortion_coefs : [.0, .0],
            chromatic_aberration_coefs : [.0, .0, .0, .0]
        });


Искажения все равно такие же дикие - других способов нет?
25 January 2018 09:21
Всем привет.

Загружаю приложение на андройде в ВР с включенным m_hmd.enable_hmd(m_hmd.HMD_ALL_AXES_MOUSE_NONE);

Получаю картинку поверх которой наложены две кнопки элементов управления, на скрине обведены красным.

Изучал код вашей демки "Космические неприятности" и так не нашел часть, которая отключает эти элементы. Подскажите, как от них избавиться?
Так же мне не нравится сильные искажения картинки, я понимаю, что это сделано для компенсации искривления линз, но как-то это все чрезмерно. Пытался изменять настройки в широком диапазоне, но так и не заметил разницы.
   {enable_hmd_stereo: true,
     distortion_coefs : [0.22, 0.28],
     chromatic_aberration_coefs : [-0.015, 0.02, 0.025, 0.02]})

Так же пробовал использовать консоль m_hmd_conf.show("hmd_container"); для редактирования параметров изображения, но она тоже не сильно помогла. Вообще на телефоне запускать ее очень неудобно



Можно ли получить доступ к ее функция по средствам кода? Способа не нашел для этого.

В итоге я хочу получить изображение как на последнем скрине. По сути это простой side-to-side с HMD управлением камеры без лишних элементов, подскажите как это можно реализовать?

18 January 2018 13:29
Да, спасибо. Уже понял, что это невозможно по соображениям безопасности.

Ничего зловредного - объясню более подробно. Есть помещение, в котором игрок ходит в ФПС режиме. При первом клике мыши, когда игра загружается ФПС модуль автоматически скрывает курсор и физически замораживает его положение. Я хотел перекинуть его в центр экрана, чтобы он совпадал с центром камеры игрока и при наведении на определенные интерактивные объекты мог их активировать.

На данный момент я сделал это так:

    m_app.enable_camera_controls();
    m_fps.enable_fps_controls();
    
    var canvas = document.getElementById('main_canvas_container');      //Находит центр канваса
    var centerX = canvas.clientWidth / 2;
    var centerY = canvas.clientHeight / 2;
    
    var camera = m_scenes.get_active_camera();

        m_fps.set_rotation_cb(function(char, rot_x, rot_y) {            //Проверка вращения камеры игрока
            
            m_cam.rotate_camera(camera, rot_x, rot_y);
            var obj_hovered = m_scenes.pick_object(centerX, centerY);   //Проверка объекта на которую наведен центр канваса
            
            if (obj_hovered == Torus){                                  //Логика при наведении на объект 1


Не самая удобная реализация, так как set_rotation_cb работает каждый кадр и активация объекта происходит так же каждый кадр, нужно либо через дополнительные булевые переменные ограничивать это либо найти другое решение. Если кто что подскажет, как это удобнее сделать, буду благодарен.
12 January 2018 13:57
Всем привет.

Я начинающий разработчик. Возник следующий вопрос.
Необходимо при клике мышкой переносить курсор мыши на определенные координаты, переменные для этого берутся в другой части кода. При этом используется FPS режим.

m_app.enable_camera_controls();
m_fps.enable_fps_controls();

var canvas2 = m_cont.get_canvas();
                   
            m_input.add_click_listener(canvas2, function event() {
                console.log("Зачем ты кликнул мышкой?");
                //Здесь нужна логика перенесения курсора мыши на необходимые координаты.
            });


Подскажите, как это можно реализовать?
Спасибо.