Нужна помощь

09 ноября 2016 11:17 #13632
Ответ на сообщение пользователя Иван Любовников
А как конкретно делаете смену? В консоли ошибок нет?

В консоли ошибок нет. Смену делаю через приложенный код, который меняет часть пути к текстурам. Текстуры дня и ночи лежат в разных папках, но имеют одинаковые имена.


exports.change_textures = function () {
        
        switch (ch_tex) {
            case 'day':
                ch_tex = 'night';
                TEX_DIR = "tex_day/";
                break;
            case 'night':
                ch_tex = 'day';
                TEX_DIR = "tex_night/";
                break;
        };
      
        console.log(m_amave.APP);
        console.log(TEX_DIR);
        console.log(m_amave.objs);
        
        m_amave.objs.forEach(function(o){
            
            
            
            
            

        
        
        switch (o.name) {
            case 'Cube':
                b4w.textures.change_image(o, 'Texture', m_amave.APP + TEX_DIR + 'img_sur.png')
                break;
            default:
                b4w.textures.change_image(o, 'Tex_co :' + o.name, m_amave.APP + TEX_DIR + 'img_' + o.name + '.png')
                break;
        

            }


        });
Алексей
09 ноября 2016 11:32 #13634
Картинки меняю только у текстур с объектов без META, выбирая их через следующий код:

var objs = []
var excl_objs = ['Character']

b4w.scenes.get_all_objects().forEach(function(i){
    if (i.type == 'MESH' && i.bpy_origin && !excl_objs.includes(i.name)) {
        console.log(i.name);
        objs[objs.length] = i
    };    
});
    
exports.objs = objs  


Нодовое дерево для двух материалов по объекту дорога, например, абсолютно схожее, но только для асфальта картинка меняется, а для цементного бордюра нет.
Алексей
09 ноября 2016 11:38 #13635
Вывод консоли при проходке по всем объектам, чтобы проверить не забыл ли я где-нибудь еще текстуры следующий:

VM21973:1 ["Diffuse.036", "Tex_co :Stair Sect"]
VM21973:1 ["Diffuse.005", "Tex_co :Roof Plane"]
VM21973:1 ["Diffuse.006", "Tex_co :Road", "Diffuse.014"]
VM21973:1 ["Tex_co :Railing"]
VM21973:1 ["Tex_co :Profiled 1", "Diffuse.002", "Diffuse.008", "Diffuse.003", "Diffuse.004"]
VM21973:1 ["Tex_co :Polyline s"]
VM21973:1 ["Tex_co :Oxford"]
VM21973:1 ["Tex_co :Minivan"]
VM21973:1 ["Tex_co :Industrial", "Diffuse.011"]
VM21973:1 ["Diffuse.014", "Tex_co :Foundation"]
VM21973:1 ["Diffuse.001", "Tex_co :Floor", "Diffuse.022", "Diffuse.038", "Diffuse.036", "Diffuse.010", "Diffuse.012", "Diffuse.027", "Diffuse.014"]
VM21973:1 ["Tex_co :Dryer", "Diffuse.043", "Diffuse.007", "Diffuse.009"]
VM21973:1 ["Tex_co :Door or 10"]
VM21973:1 ["Tex_co :Door P092"]
VM21973:1 ["Tex_co :Door P091"]
VM21973:1 ["Tex_co :Door P09"]
VM21973:1 ["Tex_co :Door P089"]
VM21973:1 ["Tex_co :Door P088"]
VM21973:1 ["Tex_co :Door P087"]
VM21973:1 ["Tex_co :Door P086"]
VM21973:1 ["Tex_co :Door P085"]
VM21973:1 ["Tex_co :Door P084"]
VM21973:1 ["Tex_co :Door P083"]
VM21973:1 ["Tex_co :Door P082"]
VM21973:1 ["Tex_co :Door P0810"]
VM21973:1 ["Tex_co :Door P081"]
VM21973:1 ["Tex_co :Door P08"]
VM21973:1 ["Tex_co :Dining Tab", "Diffuse.034", "Diffuse.008", "Diffuse", "Diffuse.035", "Diffuse.030", "Diffuse.041", "Diffuse.040", "Diffuse.031", "Diffuse.032", "Diffuse.042", "Diffuse.033", "Diffuse.017"]
VM21973:1 ["Tex_co :Diamond"]
VM21973:1 ["Tex_co :Ceiling"]
VM21973:1 ["Tex_co :Butler's@T", "Diffuse.019", "Diffuse.018", "Diffuse.034"]
VM21973:1 ["Tex_co :Base cabin", "Diffuse.007", "Diffuse.039", "Diffuse.008", "Diffuse.024", "Diffuse.013", "Diffuse.029", "Diffuse.034"]
VM21973:1 ["Tex_co :Molding"]
VM21973:1 []
VM21973:1 []
VM21973:1 []
VM21973:1 []
VM21973:1 []
VM21973:1 []
Алексей
09 ноября 2016 11:44 #13639
Вот на первый взгляд "найди отличие" получается, что не меняется картинка там, где идет одна запеченная картинка на несколько материалов с разными текстурами. Там где есть одна diffuse и одна Tex_co - это один объект, с одним материалом, по которому основная Diffuse и запеканка Tex_co.

Надо ли там как-то обновлять UV-Map может быть или перегружать канвас? Текстура то остается, меняется по ней картинка. Обязательно ли для работы change_image определять текстуры как канвас если меняется только картинка, а текстура остается?
Алексей
09 ноября 2016 11:51 #13640
Вот
VM21973:1 ["Diffuse.006", "Tex_co :Road", "Diffuse.014"]


По Diffuse.006 при замене картинки Tex_Co :Road она окрашивается в цвета ночи, а Diffuse.014 остается без изменений и окрашена дневным светом.

Есть какая-то приоритетность вывода текстур "одна закрывает другую"?
Алексей
09 ноября 2016 14:16 #13647
Есть какая-то приоритетность вывода текстур "одна закрывает другую"?
Приоритета нет, попробуйте протестировать замену на одном объекте, конкретно на том, где сейчас не работает.
Ещё вопрос: какая версия движка? Не так давно мы исправляли поведение этой функции, поэтому стоит обновиться, если версия совсем старая.
Команда Blend4Web
09 ноября 2016 14:53 #13649
Проще было бы настроить освещение и включать/выключать лампочку, но тут как я понимаю дело в оптимизации.
Команда Blend4Web
09 ноября 2016 20:38 #13663
Ещё вопрос: какая версия движка? Не так давно мы исправляли поведение этой функции, поэтому стоит обновиться, если версия совсем старая.


Версия 16.08 SDK. Сейчас загружаю последнюю. Делать лампочками нереально, потому что там около пятидесяти разного типа светильников. Для запекания через cycles делали и свет через emission shader и путем расстановки десятков дополнительных points, spots and areas, под дневное и ночное освещение.
Алексей
10 ноября 2016 00:20 #13673
Да, в новой версии смена картинок корректно работает, но почему-то прожект менеджер пишет internal server error 500. сниппетс и остальные странички работают. что может быть, где проверить?
Алексей
10 ноября 2016 08:49 #13680
На mac os экспорт в json что через прожект менеджер, что из блендера 2.78а подвешивает комп. Переустанавливал все три раза, менял права на папку блендер на 755 и собственника папки. Что делать?
Алексей
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.