Forum

User posts Roman Sementsov
27 February 2017 14:28
Добрый день.

1. Хочу сделать коллизию для камеры что бы она сквозь текстуры не проваливалась, думаю строить луч от объекта до камеры, находить препятствия и если они есть приближать камеру. Я пойду в правильном направлении или уже есть готовый алгоритм? В ферме взаимодействия коллизии с камерой не обнаружил.

Я как-то решал такую задачку следующим образом: брал объект-кубик, парентил его к персонажу, чтобы он брал только его перемещение. Ставил на него сенсор, чтобы он брал вращение камеры. Затем на этот кубик ставил сенсор-кастер луча на 15 метров. Если этот луч во что-то попадал, то выставлял камере это расстояние до объекта (использовал сферическую систему координат для камеры, но это не обязательно).
Можно и из персонажа кастить луч, но у меня у объекта для луча и у персонажа были настроены разные группы коллизии (объект кастер игнорировал некоторые группы коллизии)

2. Можно ли как то менять центр тяжести у авто? А то больно часто переворачивается
По идее, центр тяжести становится в середине баундингбокса, можно с ним попробовать поиграться. А так - пока что нельзя изменять центр тяжести, такой задачи никогда не вставало)

3. Можно ли из api включать/выключать прозрачность материалам и менять тип прозрачности (Alpha blend, Alpha clip, и т.д.)? Хочу попробовать сделать плавное появление объектов на горизонте и делать полупрозрачными некоторые объекты, которые находятся ближе к камере. Например деревья.

Увы, изменять тип прозрачности нельзя, поскольку в зависимости от типа прозрачности генерируется разный шейдер. А нельзя использовать Blend тип прозрачности и анимировать альфу? Blend учитывает глубину и будет соответсововать Opaque при единичной альфе
27 February 2017 14:12
Думаю, что дело в том, что камера припаренчена к физическому объекту, с которым происходит взаимодействие. Физика работает в другом потоке, поэтому возможны некоторые проблемы с обменом информацией.

Возможно глюк в js машине браузера хрома… В фаерфоксе всё хорошо.

Там сейчас отключены воркеры, т.е. физика и графика работают в одном потоке. Можно попробовать сделать тоже самое для тестов, передать в app.init флаг physics_use_workers: false , но при этом просядет фпс

А когда именно воспроизводится баг? может быть такое, что он воспроизводится после применение возвращающего колёса на землю момента?

UPD: для Linux в Firefox отключаются воркеры
27 February 2017 12:24
Обнаружил баг, не знаю был ли он в предыдущих релизах…
В общем иногда отваливается камера, закреплённая методом m_const.append_semi_soft_cam к авто (останавливается или телепортируется куда то), если fps меньше 60 и авто преимущественно перевёрнуто (примерно после 3-6 мин игры)… В консоли при этом относительно пусто.

Добрый день.

Пробовал подхачить фпс, тестить на устройствах, которые выдают небольшой фпс, но так и не получилось стабильно воспроизвести баг (был один случай похожий на баг).

Не могли вы чуть-чуть помочь с описаным багом? напирмер, повыводить в консоль tsr камеры, можно взять методом get_tsr из модуля transform, было бы интересно узнать что в него попадает в случае бага
22 February 2017 16:01
Hello

We've researched the problem and decided to change the documentation of this method. The call of m_sfx.mute(null,true); disables sounds for the scene, it doesn't work with speakers. It disables music for the whole scene.

If you need to turn off/on all speakers, you can iterate them:
var speakers = m_sfx.get_speaker_objects();
for (var i = 0; i < speakers.length; i++)
    m_sfx.mute(speakers[i], true); 

or
var speakers = m_sfx.get_speaker_objects();
for (var i = 0; i < speakers.length; i++)
    m_sfx.mute(speakers[i], false); 


Sorry
22 February 2017 15:21
Hello Alberto,

You forgot to replace variable names after ctrl + c & ctrl +v

Here's a correct version of the function
function sliders() {
    var taza = m_scenes.get_object_by_name("taza");

    var x_slider = document.getElementById("x_coord");
    x_slider.oninput = function(e) {
        m_mat.set_nodemat_value(taza, ["taza", "x_coord"], x_slider.value);
    }

    var y_slider = document.getElementById("y_coord");
    y_slider.oninput = function(e) {
        m_mat.set_nodemat_value(taza, ["taza", "y_coord"], y_slider.value);
    }

    var rotacion = document.getElementById("rotacion");
    rotacion.oninput = function(e) {
        m_mat.set_nodemat_value(taza, ["taza", "rotacion"], rotacion.value);
    }

    var x_scale = document.getElementById("x_scale");
    x_scale.oninput = function(e) {
        m_mat.set_nodemat_value(taza, ["taza", "x_scale"], x_scale.value);
    }

    var y_scale = document.getElementById("y_scale");
    y_scale.oninput = function(e) {
        m_mat.set_nodemat_value(taza, ["taza", "y_scale"], y_scale.value);
    }

}
22 February 2017 13:43
Hello

Try the following code lines please

function load_cb(data_id) {
m_app.enable_camera_controls(false, false, false, null, true);
}
22 February 2017 10:18
Hello berdon,

You can create timeline and elapsed sensors and interpolate the shape key value every frame (from start value to finish one). Take a look please at this demo, it uses these sensors for procedural camera animation.
10 February 2017 16:05
Напишите сразу что вы хотите оттуда выпилить, думаю так будет лучше
10 February 2017 15:46
Давайте ещё раз, вам какое из приложений нужно?

10 February 2017 15:43
Упс, это не стандартный просмотрщик. Это Viewer, вам нужно проделать указанную процедуру для приложения Viewer, он используется при нажатии на Fast Preview в Blender'e, да? Вы же его имели ввиду?