Форум

Сообщения, созданные пользователем Йеджи Заборовски
14 мая 2015 17:22
Ставить прозрачную картинку?- не спасло. Диффузные цвета слетели
Коплю деньги на коммерческий B4W.
14 мая 2015 17:11
ДА
На нём стоит флажок "Force Dynamic Object"?
И на всех стоит.


Для корректной работы Inherit material требует, чтобы у материалов была схожая структура. Например, если на одном материале есть normalmap, желательно, чтобы она была и на другом. В противном случае, сохранится старая текстура.
Это сделано, чтобы данную функцию можно было использовать в реальном времени, без тормозов. Поддержка полноценного переноса требовала бы очень большого количества вычислений и перекомпиляции шейдера.

Засада: есть просто материал простой диффузный и два материала с текстурами-картинками. Мне нужно на диффузный натягивать эти картинки. Если я заведу пустую текстуру, то отрендерится она у меня со специфическим розовым цветом. Как быть? Ставить прозрачную картинку?
Коплю деньги на коммерческий B4W.
14 мая 2015 15:05

Для материалов есть модуль material
В нём есть функция inherit_material позволяющая перетянуть материал с другого объекта (например, заранее подготовленная плоскость)

Столкнулся опять с трудностью:
function change_tape(hex, z) {
			var m_scenes = b4w.require("scenes");
    		var m_mat  = b4w.require("material");

			
			if(z == "default"){
				console.log(hex, z);
				
				var obj_01 = m_scenes.get_object_by_name("TapeShevron");
				var obj_02 = m_scenes.get_object_by_name("TapeRus");
				var obj_03 = m_scenes.get_object_by_name("TapeBlack");
				var obj_04 = m_scenes.get_object_by_name("TapeBlue");
				var obj_05 = m_scenes.get_object_by_name("TapeDarkGreen");
				var obj_06 = m_scenes.get_object_by_name("TapeGreen");
				var obj_07 = m_scenes.get_object_by_name("TapeGrey");
				var obj_08 = m_scenes.get_object_by_name("TapeOrange");
				var obj_09 = m_scenes.get_object_by_name("TapeRed");
				var obj_10 = m_scenes.get_object_by_name("TapeYellow");
				m_scenes.hide_object(obj_01);
				m_scenes.hide_object(obj_02);
				m_scenes.hide_object(obj_03);
				m_scenes.hide_object(obj_04);
				m_scenes.hide_object(obj_05);
				m_scenes.hide_object(obj_06);
				m_scenes.hide_object(obj_07);
				m_scenes.hide_object(obj_08);
				m_scenes.hide_object(obj_09);
				m_scenes.hide_object(obj_10);
				
				switch(hex){
					case "Red":
							var obj = m_scenes.get_object_by_name("TapeDef");
							var mat = "MatTapeDef";
							var rgb = new Float32Array([1.000, 0.000, 0.002]);
						break;
					case "Green":
							var obj = m_scenes.get_object_by_name("TapeDef");
							var mat = "MatTapeDef";
							var rgb = new Float32Array([0.000, 0.800, 0.021]);
						break;
					}
				
				if (obj) {
					console.log(obj);
					m_mat.set_diffuse_color(obj, mat, rgb);
					console.log(mat);
				}
						
					
			}else{
					switch(hex){
						case "Rus":
							var objto = m_scenes.get_object_by_name("TapeDef");
							var matto = "MatTapeDef";
							var objfrom = m_scenes.get_object_by_name("TapeRus");
							var matfrom = "Mat_Tape_Rus";

							console.log(objfrom);
							console.log(objto);
							console.log(matfrom);
							console.log(matto);
						break;
						case "Shevron":
							var objto = m_scenes.get_object_by_name("TapeDef");
							var matto = "MatTapeDef";
							var objfrom = m_scenes.get_object_by_name("TapeShevron");
							var matfrom = "Mat_Tape_Shevron";

							console.log(objfrom);
							console.log(objto);
							console.log(matfrom);
							console.log(matto);
						break;
						
						
							
					}
					
					m_mat.inherit_material(objto, matto, objfrom, matfrom);
				}
					
					
}


Всё куда нужно попадает (имею ввиду данные), но:
1. после object_hide() пытаюсь условным оператором открыть объект- пишет, что это возможно только для динамических объектов. Однако, у меня все объекты динамические.
2. Объекты скрыты. Инхерит по факту материал не перетягивает.
Коплю деньги на коммерческий B4W.
14 мая 2015 11:06
Еще вопрос по арматуре.
Есть несколько объектов (меши), каждый привязан к арматуре.
Задача: добавить еще несколько костей к арматуре и привязать новые меши.
Вопрос: будет ли корректно работать в дальнейшем НЛА-анимация ?

Как я помню, все изменения должны производиться до создания НЛА-трека.
А какие измения? Редактирование арматуры? Смена location после привязки меша к костям?
Коплю деньги на коммерческий B4W.
12 мая 2015 12:01

Если вы видите разницу, используйте рассчитанное по упрощённой формуле значение, но на мой взгляд разницы никакой.
Разница небольшая пользователю незаметна. Спасибо!
Коплю деньги на коммерческий B4W.
11 мая 2015 10:27
Ну, вообще получается не нижняя строчка.
Вот что нужно мне RAL_1000 - CCC58F - [0.604, 0.558, 0.275]
А вот что получается при цветовой коррекции: RAL_1000 - CCC58F - 0.612, 0.567, 0.280
Коплю деньги на коммерческий B4W.
10 мая 2015 20:24

0.8^2.2 = 0.612,
Это 0.8 в степени 2.2?
Коплю деньги на коммерческий B4W.
09 мая 2015 18:45
Нестыковочка по переводу.
Делить нужно не на 255, а непонятно на что впринципе.
Я обнаружил несоответствие цветов при переводе по схеме RGB/255.
Пример:
1. Взяли цвет RGB 204,197,143
2. При делении каждого числа на 255 получается: 0.941, 0.772, 0.560 (это оттенок серого)
3. переводим цвет RGB 204,197,143 в HEX - CCC58F и запихиваем в Блендер.
4. Получаем нужный оттенок оливкового с цифрами: 0.604, 0.558, 0.275

0.941, 0.772, 0.560
0.604, 0.558, 0.275

Вот такая арифметика.
Коплю деньги на коммерческий B4W.
08 мая 2015 23:51
Спасибо! Работает!
Коплю деньги на коммерческий B4W.
08 мая 2015 22:36

240 / 255
180 / 255
50 / 255
А ларчик просто открывался…
соответственно, округление до 3 знаков после запятой, в десятичном виде:
240/255 = 0.941

То-есть:
var rgb = new Float32Array([0.941, 0.941, 0.941]);

Вместо:
var rgb = new Float32Array([240, 240, 240]);
Коплю деньги на коммерческий B4W.