Нужна помощь
09 ноября 2016 11:17
Ответ на сообщение пользователя Иван Любовников
А как конкретно делаете смену? В консоли ошибок нет?
В консоли ошибок нет. Смену делаю через приложенный код, который меняет часть пути к текстурам. Текстуры дня и ночи лежат в разных папках, но имеют одинаковые имена.
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
Картинки меняю только у текстур с объектов без 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
Вывод консоли при проходке по всем объектам, чтобы проверить не забыл ли я где-нибудь еще текстуры следующий:
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
Вот на первый взгляд "найди отличие" получается, что не меняется картинка там, где идет одна запеченная картинка на несколько материалов с разными текстурами. Там где есть одна diffuse и одна Tex_co - это один объект, с одним материалом, по которому основная Diffuse и запеканка Tex_co.
Надо ли там как-то обновлять UV-Map может быть или перегружать канвас? Текстура то остается, меняется по ней картинка. Обязательно ли для работы change_image определять текстуры как канвас если меняется только картинка, а текстура остается?
Надо ли там как-то обновлять UV-Map может быть или перегружать канвас? Текстура то остается, меняется по ней картинка. Обязательно ли для работы change_image определять текстуры как канвас если меняется только картинка, а текстура остается?
Алексей
09 ноября 2016 11:51
09 ноября 2016 14:16
Есть какая-то приоритетность вывода текстур "одна закрывает другую"?Приоритета нет, попробуйте протестировать замену на одном объекте, конкретно на том, где сейчас не работает.
Ещё вопрос: какая версия движка? Не так давно мы исправляли поведение этой функции, поэтому стоит обновиться, если версия совсем старая.
09 ноября 2016 14:53
09 ноября 2016 20:38
Ещё вопрос: какая версия движка? Не так давно мы исправляли поведение этой функции, поэтому стоит обновиться, если версия совсем старая.
Версия 16.08 SDK. Сейчас загружаю последнюю. Делать лампочками нереально, потому что там около пятидесяти разного типа светильников. Для запекания через cycles делали и свет через emission shader и путем расстановки десятков дополнительных points, spots and areas, под дневное и ночное освещение.
Алексей
10 ноября 2016 00:20
10 ноября 2016 08:49