Нужна помощь

22 ноября 2016 17:57
релиз 16.10
Алексей
22 ноября 2016 17:59
Добрый день, подскажите, а как можно определить средний цвет текстуры за вычетом черных участов? Мне для lighten нужно корректный второй цвет получить без заморочек с ручным подбором.

Не могли бы вы более подробно рассказать об этом? Вам нужно заранее узнать средний цвет текстуры?
Если да, то я бы посоветовал вам использовать утилиту ImageMagic. Мы используем её при конвертации ресурсов. Вот тут есть описание на английском. Можно написать скрипт для автоматизированного процесса поиска, если требуется знать результат для большого кол-ва текстур. Если нужна информация по одной текстуре:

convert Y82IirS.jpg -resize 1x1 txt:

Не могли бы вы сказать, какой операционной системой вы пользуетесь? Для Windows мы распростроняем эту утилиту в ужатом виде в SDK.
22 ноября 2016 18:00
релиз 16.10

Извиняюсь, некорректно написал свою мысль. В будущем релизе, который будет доступен через неделю
22 ноября 2016 18:01
Сейчас вы можете использовать следующую схему:
var m_obj_util = require("__obj_util");
....
m_obj_util.is_dynamic(obj);
22 ноября 2016 18:03
Коллеги, а у Вас вообще какие-нибудь слеты и сходки проводятся? Хочется познакомится, пообщаться и посмотреть чем народ занимается.

Вообще было бы самому интересно. В мае мы устраивали конференцию, как раз чем-то подобным и занимались :)
Надеюсь, в скором времени повторим
22 ноября 2016 18:17
Еще вопрос: а можно ли сделать сенсор на объект либо на его боундинг бокс, но чтобы он срабатывал при приближении на определенное расстояние? Сейчас заморачиваюсь с определением массива координат каждого боундинг бокса, но думаю должен быть более изящный способ??
Алексей
22 ноября 2016 18:22
Не могли бы вы более подробно рассказать об этом? Вам нужно заранее узнать средний цвет текстуры?

Я хочу нодами закрасить темные участки запекания на динамических объектах. Если там простой цвет, есть общий оттенок - можно поставить ноду лайтнинг, дать значение 0.3 и корректно подобрать второй цвет и тени закрасятся во второй цвет. Все работает, только второй цвет по умолчанию 0.5,0.5,0.5 а я бы хотел вместо тыканья пипеткой по экрану так инвертировать-подобрать-размазать текстуру, чтобы она дала нужный второй цвет - пускай там размазанный оттенок будет, но он все равно будет диффузный, корректный относительно общей цветовой гаммы.
Алексей
22 ноября 2016 18:27
Вот, например, текстура двери. Она желто-серо-какая-то-зелено-коричневая. Вот этот оттенок взять из неё, без альфы ессна.
Алексей
22 ноября 2016 18:29
Я хочу нодами закрасить темные участки запекания на динамических объектах. Если там простой цвет, есть общий оттенок - можно поставить ноду лайтнинг, дать значение 0.3 и корректно подобрать второй цвет и тени закрасятся во второй цвет. Все работает, только второй цвет по умолчанию 0.5,0.5,0.5 а я бы хотел вместо тыканья пипеткой по экрану так инвертировать-подобрать-размазать текстуру, чтобы она дала нужный второй цвет - пускай там размазанный оттенок будет, но он все равно будет диффузный, корректный относительно общей цветовой гаммы.
Можно разблюрить текстуру сильно-сильно с блюром в 500 и взять с размазанного изображения уже конкретный получившийся цвет. У меня получилось что то вроде этого.

Blend4Web и всё такое. Тридешу тридэ, моделю модели.
22 ноября 2016 18:36
Еще вопрос: а можно ли сделать сенсор на объект либо на его боундинг бокс, но чтобы он срабатывал при приближении на определенное расстояние? Сейчас заморачиваюсь с определением массива координат каждого боундинг бокса, но думаю должен быть более изящный способ??

Такая штука называется trigger volume и она очень распространена. Смотрите, можно сделать простую схему:
var _vec3_tmp = new Float32Array(3);
function check_distance(object, dest_point) {
    var elapsed = m_ctl.create_elapsed_sensor();
    var logic_func = function(s) {return true}
    var manifold_cb = function(obj, id, pulse) {
         var obj_pos = m_trans.get_translation(obj, _vec3_tmp);
         var dist = m_vec3.distance(obj_pos, dest_point);
         if (dist < CRIT_DISTANCE)
              console.log("!!!!")
    }
    m_ctl.create_sensor_manifold(object, "DISTANCE_MANIFOLD", m_ctl.CT_CONTINUOUS,
            [elapsed], logic_func, manifold_cb);
}

Код писал в браузере сразу, не проверял. могут быть опечатки, надеюсь, я понятно передал смысл

Тут в качестве объема для проверки используется сфера с радиусом CRIT_DISTANCE. У этого метода есть достоинтсво: не надо использовать физику и баундинги для определения нахождения объекта в сфере, но для каждого объекта надо прописывать проверку расстояния

Есть еще вариант использовать физический движок для этого (через сенсор коллизии с физическим объектом типа ghost), но я всячески стараюсь обходить использование физики, поскольку это требует дополнительной памяти
Если вам не подойдет указанный способ, то могу подробнее рассказать про физический сенсор


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