Нужна помощь

20 сентября 2016 19:03
Коллеги, по какой причине проект после deploy может лишиться текстур, хотя экспорт одиночного файла html и прожект менеджер все выводят корректно? Все текстуры были внешними файлами png, файл bin имеется, файл json в прожект менеджере открывается. Может ли причина быть в стандартном файле js, который экспортируется по умолчанию? В каком направлении копать?
Алексей
20 сентября 2016 19:15
Причем самое прикольное, что можно открыть build html файл в папке blend4web и все работает. Видимо, на этапе deploy слетают пути каким-то образом или, наоборот, не выставляются.
Алексей
20 сентября 2016 22:04
В продолжение темы: выяснилось, что json грузит текстуры по внешним ссылкам (специально изначально так сделал, чтобы удобнее было работать с текстурами) из каталога прям как он был экспортирован - согласно инструкции blender/имя проекта/textures. И в этой конфигурации прожект менеджер работает. Однако когда я делаю deploy, у меня выставляется новая структура каталогов, при этом json текстуры все еще ищет где-то там. И ладно бы он удалил хотя бы подкаталог /blender, чтобы можно было textures разместить в корне сайта, но blender там остается и текстуры надо копировать ручками, плюс делать find+replace в json'e.

Уточните, может есть какой-нибудь автоматизированный способ автоматом экспортировать json в процессе deploy (в документации не полностью описаны строки путей deploy файла .b4w_project)? Или может есть скрытая функция замены путей если он находит текстуры в assets и потом в json меняет пути для всего, что найдено в assets?
Алексей
21 сентября 2016 14:36
У меня получается задавать вопросы явно быстрее, чем получать на них ответы)

Добрый день,

Сделал бродилку по имеющимся примерам. Отдельные объекты для определения границ collision делать на стал.

Прошу подсказать по двум моментам:
1) Для ограды вокруг участка границы collision почему-то определяются как прямоугольник, в связи с чем персонаж забирается наверх даже с учетом наличия проема в ограде. То же самое касается дверного проема. Как сделать, чтобы для collision определялась только то, что внутри мешей?
2) Объект персонажа и камера, видимо, имеют разные системы координат, в связи с чем, пока не захвачен курсор мышки, управление wasd двигает персонаж наоборот. Как можно сразу привязать систему координат объекта персонажа и камеры?
Алексей
21 сентября 2016 14:37
Ограда
Алексей
21 сентября 2016 15:35
1) Для ограды вокруг участка границы collision почему-то определяются как прямоугольник, в связи с чем персонаж забирается наверх даже с учетом наличия проема в ограде. То же самое касается дверного проема. Как сделать, чтобы для collision определялась только то, что внутри мешей?
Как настраиваете колижн? В физике или выставляете галочку на материале Collision?
Blend4Web и всё такое. Тридешу тридэ, моделю модели.
21 сентября 2016 15:38
В физике, все согласно примера first person.
Алексей
21 сентября 2016 16:05
Я выставляю Object Physics, далее там же Static, а collision bounds не ставлю.
Алексей
21 сентября 2016 16:05
В физике, все согласно примера first person.
В физике лучше настраивать только динамические объекты, тоесть те которые можно будет пинать или брать или перемещать, так как для динамики геометрия колижна берется простая. И соответственно физика просто вписывает весь Ваш объект в прямоугольник. Для сложных и статических объектов лучше всего поставить Collision на материале, это в примере тоже есть он настроен на доме.
Blend4Web и всё такое. Тридешу тридэ, моделю модели.
21 сентября 2016 16:29
Отлично! С этими настройками работает как нельзя лучше.

Сейчас параллельно ковыряю скрипт для того, чтобы крутить камерой не мышкой, а стрелочными кнопками. С javascript не знаком, но нашел в peregon tale поворот персонажа вправо-лево со следующей логикой:

var left_logic = function(s){return (s[0] || s[1])};
var right_logic = function(s){return (s[2] || s[3])};

function rotate_cb(obj, id, pulse) {

var elapsed = m_ctl.get_sensor_value(obj, "LEFT", 4);

if (pulse == 1) {
switch(id) {
case "LEFT":
m_phy.character_rotation_inc(obj, elapsed * ROT_SPEED, 0);
break;
case "RIGHT":
m_phy.character_rotation_inc(obj, -elapsed * ROT_SPEED, 0);
break;
}
}
}

m_ctl.create_sensor_manifold(_character, "LEFT", m_ctl.CT_CONTINUOUS,
rotate_array, left_logic, rotate_cb);
m_ctl.create_sensor_manifold(_character, "RIGHT", m_ctl.CT_CONTINUOUS,
rotate_array, right_logic, rotate_cb);

Пока не совсем понимаю что за переменные s[0]..1,2,3. и как обеспечить поворот персонажа вокруг горизонтальной оси.
Алексей
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.