Forum

User posts stilist
12 November 2016 00:23
Коллеги, обнаружил удивительное поведение функции b4w.camera_anim.track_to_target(s_movs.camobj, m_scs.get_object_by_name('Camera_char') , 0.2, 5, 5, 3). Я точно абсолютно знаю, где находится Camera_char, но зум исполняется вдоль -Z вместо -X.
11 November 2016 22:54
В общем, весьма неплохо сработала последовательность:
1) Массив из перечня объектов для коллизиона
2) Копия и объединение, с переносом на другой слой
3) Применение модификатора Decimate сначала collapse на 0.15, потом planar на 20' - это в моем случае снизило по выбранным объектам количество вершин с 380К до 25К и по внешнему виду не удалило ни одного плейна из тех, которые явно образуют собой поверхности.
4) Далее убираем все слоты материалов, ставим один материал и назначаем его свойства.
11 November 2016 15:46
Ответ на сообщение пользователя Евгений Родыгин
Ошибка, вылетающая при включении физики на всех материалах связана с тем, что физическому движку недостаточно памяти для такого объема геометрии. В вашей сцене более 600000 вершин. Обычно для физики создают гораздо более простой меш и отключают на нём рендеринг. Так например сделано в этом уроке.
Вам же не нужно, чтобы персонаж натыкался на каждую палочку в заборе?

Полностью согласен, не нужно. Но я хотел бы максимально упростить процесс. В мыслях рисуется копия всего, потом объединение, потом применение модификатора, чтобы упростить до коробки и нескольких кубиков. Может какие-либо еще варианты есть, чтобы не ручками это делать, а отдать десятью строчками кода на просчет железякам?
11 November 2016 14:09
Друзья, Вы ответите насчет ошибки в консоли, которая отключает uranium и все коллизион вместе с ним? А то я планирую в выходные мощно поработать.
11 November 2016 12:54
Так вот CT_TRIGGER вызовет колбек один раз, когда камера начала движение (с праметром pulse = 1) и один раз когда она остановилась (pulse = -1), поэтому и называется trigger, т.е. как бы одиночный импульс, когда состояние изменилось. A CT_CONTINUOUS отличается тем, что будет вызывать колбек постоянно каждый кадр во время движения (pulse = 1) и один раз при остановке (pulse = -1) - т.е. это тип продолжительного действия.


А в применении к перемещению персонажа и повороту камеры континиус работает во всех случаях и обеспечивает плавное перемещение при помощи клавиш, а триггер плавно работает только по перемещению персонажа, а для поворота камеры необходмо отжать и нажать клавишу заново. Я для себя хочу понять: во всех случаях в функцию передаётся дельта значения относительно текущих значений, но камера останавливается, а персонаж перемещается при триггере…
10 November 2016 20:32
Почему-то отключились коллизион. По одному объекту, по которому ранее была эта опция включена коллизион остались, а с другими, несмотря на то, что галка на всех материалах стоит, чарактер не соприкасается.

В консоли ошибка

URANIUM: Array[1]0: "Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value 67108864, (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 "length: 1__proto__: Array[0]

В общем, если я включаю только по половине объектов материалы на коллизион, то ошибки ен возникает и все нормально работает. Это как можно исправить?
10 November 2016 19:28
Решил убрать захват мышки канвасом и сделать обзор курсором. Все получилось и работает, но возникает вопрос относительно способа сихронизации поворота камеры и чарактера. Способ, когда с объекта камеры берутся данные и прилепливаются к чарактеру прост и ясен, но если мне нужно развернуть чарактера кнопками, то как мне параметры углов с чарактера снять?

Нашел модуль transform.get_rotation, но он работает с квартенионами, а я даже прочитать это название не могу, не то, чтобы понять как там все эти составлящие w использовать, чтобы привести все в обычные углы, ведь поворот чарактера осуществляется относительно глобальной системы коррдинат, поэтому подавать туда дельта значения не получается - он разворачивается в ноль.

Если работать просто с объектами, то rotate_z_local почему - то вообще не работает относительно чарактера.

Как здесь по грамотней и оптимальнее сделать?
10 November 2016 19:10
Уточните, а в чем принципиальная разница между CT_TRIGGER и CT_CONTINUOUS?
10 November 2016 17:37
Уточните, а о каких кнопках и событиях идет речь с этом коде:

function main_canvas_up(e) {

if (e.button != 0)
return;

if (e.preventDefault)
e.preventDefault();


:) остальное все вроде понятно, а вот эти подстраховочные фишки из jquery прям затягивают в чтение stackoverflow, но по итогу не ясно как и зачем это в приложении к сцене.
10 November 2016 17:30
Разобрался, спасибо.

Уточните, а о каких кнопках и событиях идет речь с этом коде:

function main_canvas_up(e) {

if (e.button != 0)
return;

if (e.preventDefault)
e.preventDefault();