Canvas Texture

18 декабря 2015 12:59
Не подскажите, почему не получается? Может где галочку какую не поставил… уже которую неделю мучаюсь
не хочет отображаться ни картинка ни текст.
Дорогу осилит идущий
18 декабря 2015 17:53
Добавьте на объект UV-развертку, без нее текстуры даже в блендере отображаться не будут.
18 декабря 2015 17:59
Спасибо!
кажется я начинаю понимать как тут работает текстурирование….
Дорогу осилит идущий
20 декабря 2015 22:24
Что-то у меня опять лыжи не едут
на радостях скачал релиз-кандидат и давай пробовать рисовать на канвас-текстурах.
но почему-то пишет мне в консоли "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
Добрый день.

Спасибо за обратную связь. Появление экспортной ошибки оперативно устранено. Изменение войдет в стабильный релиз.
21 декабря 2015 10:01
ух ты, я нашел баг я супер бета-тестер
Дорогу осилит идущий
25 декабря 2015 16:04
Вернемся к нашим баранам
загрузка сцены происходит при нажатии кнопки 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
Стоило отдельно отметить в релизной статье, что нужно делать глубокое копирование
var CopiedObj = m_obj.copy(LoadedObject,CopiedObjName, true);

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

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

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

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