Canvas Texture

18 декабря 2015 12:59 #5949
Не подскажите, почему не получается? Может где галочку какую не поставил… уже которую неделю мучаюсь
не хочет отображаться ни картинка ни текст.
Дорогу осилит идущий
18 декабря 2015 17:53 #5957
Добавьте на объект UV-развертку, без нее текстуры даже в блендере отображаться не будут.
Команда Blend4Web
18 декабря 2015 17:59 #5958
Спасибо!
кажется я начинаю понимать как тут работает текстурирование….
Дорогу осилит идущий
20 декабря 2015 22:24 #5990
Что-то у меня опять лыжи не едут
на радостях скачал релиз-кандидат и давай пробовать рисовать на канвас-текстурах.
но почему-то пишет мне в консоли "B4W EXPORT ERROR: Empty canvas texture ID for texture "CT". Material: "Tex"."
а потом: "B4W ERROR: Couldn't find canvas texture with this name: CT"
а на прошлой версии у меня все получалось…
сценку приложил. развертку сделал, все вроде по докам…
Дорогу осилит идущий
21 декабря 2015 09:54 #5997
Добрый день.

Спасибо за обратную связь. Появление экспортной ошибки оперативно устранено. Изменение войдет в стабильный релиз.
Разработчик Blend4Web
21 декабря 2015 10:01 #5999
ух ты, я нашел баг я супер бета-тестер
Дорогу осилит идущий
25 декабря 2015 16:04 #6086
Вернемся к нашим баранам
загрузка сцены происходит при нажатии кнопки LoadMenu, функция LoadMainMenuF
при загрузке я собираю массив… да в общем то вот кусок кода с комментариями)
//Событие на нажатие кнопки LoadMenu
function LoadMainMenuF() {
	
m_data.unload();	
m_data.load("MainMenu.json", loaded_cb, null, null, true );
 }
 //Событие при загрузке сцены
 function loaded_cb(data_id, success) { 
 var LoadedObject = m_scenes.get_object_by_name("MainMenu1");//получили нужный объект из сцены
 var MenuData = GetMenuArray() //собрали массив из таблицы
 CanvasTexPrint(LoadedObject,"CT",MenuData[0][0]); //пишем на нем первый элемент массива
 
  m_scenes.show_object(LoadedObject); //показываем его
   LoadPosition = 0.4;
   //скачем по массиву
  for (var a = 1;  a < MenuData.length; a++){	  
	 var CopiedObjName = m_scenes.get_object_name(LoadedObject)+a;//имя нового элемента
var CopiedObj = m_obj.copy(LoadedObject,CopiedObjName);//получаем копию загруженного элемента
//m_scenes.get_object_by_dupli_name("MainMenu1",CopiedObjName);
 m_scenes.append_object(CopiedObj); //добавляем его в сцену
console.log(m_scenes.get_object_name(CopiedObj) + " loaded");

m_trans.set_translation(CopiedObj, 0, 0, LoadPosition); //перемещаем его куда надо
console.log(m_scenes.get_object_name(CopiedObj) + " moved to " +LoadPosition);
 CanvasTexPrint(CopiedObj,"CT",MenuData[a][0]); //пишем на нем элемент массива
 //console.log("Hidden: " + m_scenes.is_hidden(CopiedObj));
  LoadPosition = LoadPosition + 0.4;
 }
 console.log("Count of Selectable objects: " + m_obj.get_selectable_objects().length);
   
 }
 //Функция создания надписи на канвас-текстуре
 function CanvasTexPrint (objCanvas,TexName,PrintData){
	  var ctx_image = m_tex.get_canvas_ctx(objCanvas, TexName);
  if (ctx_image) {
        var img = new Image();
        img.src = "Background.png";
        img.onload = function() {
            ctx_image.drawImage(img, 0, 0, ctx_image.canvas.width, 
                    ctx_image.canvas.height);					 
            ctx_image.fillStyle = "rgba(255,255,255,255)";
            ctx_image.font = "80px Arial";
		    ctx_image.shadowColor = "#000";
            ctx_image.shadowOffsetX = 5;
            ctx_image.shadowOffsetY = 5;			
            ctx_image.fillText(PrintData,5, 300);
            m_tex.update_canvas_ctx(objCanvas, TexName);
        }
    }
	 
 }

так вот проблема в том, что на всех элементах одна и та же надпись…
при чем иногда она равна первому элементу массива, иногда второму… иногда третьему… потому я стал выгружать все элементы перед тем как загрузить(в случае если неоднократно нажимать кнопку), и стало всегда равно последнему элементу массива…
Дорогу осилит идущий
25 декабря 2015 16:23 #6087
Стоило отдельно отметить в релизной статье, что нужно делать глубокое копирование
var CopiedObj = m_obj.copy(LoadedObject,CopiedObjName, true);

Не забудьте про галочку "Force dynamic geometry" в свойствах объекта
Разработчик Blend4Web
25 декабря 2015 16:45 #6088
Ураааа! Спасибо! все получилось!
(вчера до 2 ночи мучился и сегодня полдня)

Вы имели ввиду "Dynamic geometry"?

"Force dynamic geometry" была включена ,а вот сейчас включил "Dynamic geometry" и все заработало, а то не хотел глубоко копировать
Дорогу осилит идущий
25 декабря 2015 18:54 #6092
Да, именно это имел ввиду. Подзабыл что свойство называется "Dynamic Geometry". Приношу извинение.
Мы решили, что копирование канвас-текстур должно происходить только при "глубоком" копировании.
Из консоли следует, что объект не скопировался, потому что не имеет динамической геометрии, функция копирования вернула нуль, далее по коду нуль попытался добавиться на сцену.

Написали бы сразу как не получилось.
Разработчик Blend4Web
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.