论坛

由用户创建的信息 stilist
09 November 2016 11:44
Вот на первый взгляд "найди отличие" получается, что не меняется картинка там, где идет одна запеченная картинка на несколько материалов с разными текстурами. Там где есть одна diffuse и одна Tex_co - это один объект, с одним материалом, по которому основная Diffuse и запеканка Tex_co.

Надо ли там как-то обновлять UV-Map может быть или перегружать канвас? Текстура то остается, меняется по ней картинка. Обязательно ли для работы change_image определять текстуры как канвас если меняется только картинка, а текстура остается?
09 November 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 November 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 November 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;
        

            }


        });
08 November 2016 23:17
Вылез глюк по замене картинки из текстур. Половина картинок меняется, половина нет. Фотки прилагаю. Прошу помочь разобраться в этом.
08 November 2016 19:49
Вообще, функция после исполнения где переменные хранит? Как переменную можно раскопать в консоли и посмотреть к какой функции она относится?
08 November 2016 19:47
require("AmAve_2100");
    var ch_tex = 0

    exports.change_textures = function () {
        
        if (!ch_tex){
            ch_tex = 1
        }
        else {ch_tex = 0}
        
        
        var TEX_NIGHT_DIR = "tex_night/";
        
        var TEX_DAY_DIR = "tex_day/";      
        console.log(m_amave.APP);
        console.log(ch_tex)
        return ch_tex


Подскажите, если я во входные парламенты функции вставляю ch_tex, то у меня при вызове функции значения не меняются, а значит туда передается значение, назначенное при определении переменной. А как это может быть, если у меня эта функция вызывается из другого файла? Или при вызове через exports читается все, что написано до определения функции - все переменные, пути и т.д. и подхватывается значение  ch_tex = 0????
08 November 2016 19:29
это речь идет о module.exports? несколько такого рода переменных в одном модуле можно применять, например:
module.exports = 123
module.exports = 456
module.exports = 789
??

И если я делаю var odin_dva_tri = require(./file), то будет ли конфликт между ними?
08 November 2016 19:18
…двух несвязанных между собой… все, понял, спасибо.
08 November 2016 17:33
Ответ на сообщение пользователя Иван Любовников
вот так, например:

var APP_ASSETS_PATH = exports.APP_ASSETS_PATH = 0;


а если у меня получилось просто exports.a = '123' и потом под console.log(m_amave.a) она воспроизводится, то есть без var - я здесь что теряю в части корректности кода или exports сама определяет тип переменной? Приведенная Вами последовательность читается справа налево или слева на право - то есть, что происходит в этой строке? заранее спасибо