Improve blend material import
This commit is contained in:
@@ -196,6 +196,7 @@ class ImportBlend {
|
||||
UINodes.inst.updateCanvasMap();
|
||||
var nodes = UINodes.inst.nodes;
|
||||
var canvas = UINodes.inst.canvas;
|
||||
canvas.name = mat.get("id").get("name").substr(2); // MAWood
|
||||
var nout:TNode = null;
|
||||
for (n in canvas.nodes) if (n.type == "OUTPUT_MATERIAL_PBR") { nout = n; break; }
|
||||
for (n in canvas.nodes) if (n.name == "RGB") { nodes.removeNode(n, canvas); break; }
|
||||
@@ -262,7 +263,7 @@ class ImportBlend {
|
||||
pos++;
|
||||
}
|
||||
|
||||
// Fill output socket values
|
||||
// Fill button values
|
||||
if (search == "teximage") {
|
||||
var img = node.get("id", 0, "Image");
|
||||
var file:String = img.get("name").substr(2); // '//desktop\logo.png'
|
||||
@@ -272,6 +273,41 @@ class ImportBlend {
|
||||
n.buttons[0].default_value = App.getAssetIndex(file);
|
||||
n.buttons[0].data = App.mapEnum(App.getEnumTexts()[n.buttons[0].default_value]);
|
||||
}
|
||||
else if (search == "valtorgb") {
|
||||
var ramp:Dynamic = node.get("storage", 0, "ColorBand");
|
||||
n.buttons[0].data = ramp.get("ipotype") == 0 ? 0 : 1; // Linear / Constant
|
||||
var elems:Array<Array<Float>> = n.buttons[0].default_value;
|
||||
for (i in 0...ramp.get("tot")) {
|
||||
if (i >= elems.length) elems.push([1.0, 1.0, 1.0, 1.0, 0.0]);
|
||||
var cbdata:Dynamic = ramp.get("data", i, "CBData");
|
||||
elems[i][0] = Std.int(cbdata.get("r") * 100) / 100;
|
||||
elems[i][1] = Std.int(cbdata.get("g") * 100) / 100;
|
||||
elems[i][2] = Std.int(cbdata.get("b") * 100) / 100;
|
||||
elems[i][3] = Std.int(cbdata.get("a") * 100) / 100;
|
||||
elems[i][4] = Std.int(cbdata.get("pos") * 100) / 100;
|
||||
}
|
||||
}
|
||||
else if (search == "mixrgb" || search == "math") {
|
||||
n.buttons[0].default_value = node.get("custom1");
|
||||
n.buttons[1].default_value = node.get("custom2") & 2;
|
||||
}
|
||||
else if (search == "mapping") {
|
||||
var storage = node.get("storage", 0, "TexMapping");
|
||||
n.buttons[0].default_value = storage.get("loc");
|
||||
n.buttons[1].default_value = storage.get("rot");
|
||||
n.buttons[2].default_value = storage.get("size");
|
||||
// var mat = storage.get("mat"); float[4][4]
|
||||
// storage.flag & 1 // use_min
|
||||
// storage.flag & 2 // use_max
|
||||
// storage.min[0]
|
||||
// storage.min[1]
|
||||
// storage.min[2]
|
||||
// storage.max[0]
|
||||
// storage.max[1]
|
||||
// storage.max[2]
|
||||
}
|
||||
|
||||
// Fill output socket values
|
||||
var outputs = node.get("outputs");
|
||||
var sock:Dynamic = outputs.get("first", 0, "bNodeSocket");
|
||||
var pos = 0;
|
||||
@@ -367,13 +403,24 @@ class ImportBlend {
|
||||
static function readBlendSocket(sock:Dynamic):Dynamic {
|
||||
var idname = sock.get("idname");
|
||||
if (idname.startsWith("NodeSocketVector")) {
|
||||
return sock.get("default_value", 0, "bNodeSocketValueVector").get("value");
|
||||
var v:Dynamic = sock.get("default_value", 0, "bNodeSocketValueVector").get("value");
|
||||
v[0] = Std.int(v[0] * 100) / 100;
|
||||
v[1] = Std.int(v[1] * 100) / 100;
|
||||
v[2] = Std.int(v[2] * 100) / 100;
|
||||
return v;
|
||||
}
|
||||
else if (idname.startsWith("NodeSocketColor")) {
|
||||
return sock.get("default_value", 0, "bNodeSocketValueRGBA").get("value");
|
||||
var v:Dynamic = sock.get("default_value", 0, "bNodeSocketValueRGBA").get("value");
|
||||
v[0] = Std.int(v[0] * 100) / 100;
|
||||
v[1] = Std.int(v[1] * 100) / 100;
|
||||
v[2] = Std.int(v[2] * 100) / 100;
|
||||
v[3] = Std.int(v[3] * 100) / 100;
|
||||
return v;
|
||||
}
|
||||
else if (idname.startsWith("NodeSocketFloat")) {
|
||||
return sock.get("default_value", 0, "bNodeSocketValueFloat").get("value");
|
||||
var v:Dynamic = sock.get("default_value", 0, "bNodeSocketValueFloat").get("value");
|
||||
v = Std.int(v * 100) / 100;
|
||||
return v;
|
||||
}
|
||||
else if (idname.startsWith("NodeSocketInt")) {
|
||||
return sock.get("default_value", 0, "bNodeSocketValueInt").get("value");
|
||||
|
||||
Reference in New Issue
Block a user