Use lightweight natural tree rendering
This commit is contained in:
@@ -19,6 +19,9 @@ import numpy as np
|
||||
|
||||
EXPORT_TINTS = {
|
||||
"Grass": ((0.12, 0.48, 0.08), 0.72),
|
||||
"Tree Crown Dark": ((0.06, 0.22, 0.05), 0.18),
|
||||
"Tree Crown Light": ((0.16, 0.42, 0.09), 0.16),
|
||||
"Scrub Ground Cover": ((0.08, 0.28, 0.07), 0.28),
|
||||
"Office White Plaster Facade": ((0.92, 0.94, 0.92), 0.38),
|
||||
"Office White Metal Facade": ((0.92, 0.94, 0.92), 0.68),
|
||||
"Office Light Flat Roof": ((0.82, 0.86, 0.88), 0.35),
|
||||
@@ -33,12 +36,18 @@ EXPORT_METALLIC_OVERRIDES = {
|
||||
}
|
||||
|
||||
EXPORT_BASE_COLOR_OVERRIDES = {
|
||||
"Tree Crown": (0.11, 0.34, 0.075),
|
||||
"Tree Crown Dark": (0.065, 0.24, 0.055),
|
||||
"Tree Crown Light": (0.14, 0.40, 0.085),
|
||||
"Office White Plaster Facade": (0.93, 0.94, 0.91),
|
||||
"Office White Metal Facade": (0.93, 0.94, 0.91),
|
||||
"Office Light Flat Roof": (0.88, 0.90, 0.88),
|
||||
}
|
||||
|
||||
EXPORT_EMISSION_OVERRIDES = {
|
||||
"Tree Crown": ((0.04, 0.11, 0.035), 0.02),
|
||||
"Tree Crown Dark": ((0.025, 0.07, 0.02), 0.015),
|
||||
"Tree Crown Light": ((0.045, 0.12, 0.03), 0.015),
|
||||
"Office White Plaster Facade": ((0.93, 0.94, 0.91), 0.18),
|
||||
"Office White Metal Facade": ((0.93, 0.94, 0.91), 0.18),
|
||||
"Office Light Flat Roof": ((0.88, 0.90, 0.88), 0.14),
|
||||
@@ -85,10 +94,17 @@ def source_color(material):
|
||||
return color
|
||||
|
||||
|
||||
def source_principled_value(material, input_name, fallback):
|
||||
def principled_bsdf(material):
|
||||
if not material.use_nodes:
|
||||
return fallback
|
||||
node = material.node_tree.nodes.get("Principled BSDF")
|
||||
return None
|
||||
for node in material.node_tree.nodes:
|
||||
if node.type == "BSDF_PRINCIPLED":
|
||||
return node
|
||||
return None
|
||||
|
||||
|
||||
def source_principled_value(material, input_name, fallback):
|
||||
node = principled_bsdf(material)
|
||||
if not node or input_name not in node.inputs:
|
||||
return fallback
|
||||
return node.inputs[input_name].default_value
|
||||
@@ -144,8 +160,8 @@ def tree_crown_image():
|
||||
np.sin((x * 89.0 + y * 67.0) * np.pi) * 0.07
|
||||
)
|
||||
noise = np.clip(0.5 + noise, 0.0, 1.0)[..., None]
|
||||
dark = np.asarray((0.035, 0.16, 0.045), dtype=np.float32)
|
||||
light = np.asarray((0.12, 0.42, 0.13), dtype=np.float32)
|
||||
dark = np.asarray((0.04, 0.17, 0.04), dtype=np.float32)
|
||||
light = np.asarray((0.17, 0.46, 0.115), dtype=np.float32)
|
||||
rgb = dark + (light - dark) * noise
|
||||
rgba = np.concatenate(
|
||||
(rgb, np.ones((size, size, 1), dtype=np.float32)), axis=2)
|
||||
@@ -353,4 +369,4 @@ def export(args):
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
export(cli_args())
|
||||
export(cli_args())
|
||||
|
||||
Reference in New Issue
Block a user