Skip to content

Instantly share code, notes, and snippets.

@unwave
Created November 10, 2021 04:12
Show Gist options
  • Save unwave/89e333e7c27d55a0d91f4c044f28abc0 to your computer and use it in GitHub Desktop.
Save unwave/89e333e7c27d55a0d91f4c044f28abc0 to your computer and use it in GitHub Desktop.
import bpy
import re
re_name = re.compile('plane(\.\d{3})?', flags = re.IGNORECASE)
planes = []
for object in bpy.data.objects:
if object.data and object.data.__class__.__name__ == 'Mesh':
if re_name.match(object.name) or len(object.data.vertices) == 4:
planes.append(object)
# assert len(planes) == 1 # ?
plane = planes[0]
x, y, z = plane.dimensions
z = None
# assert len(plane.material_slots) == 1 # ?
material = plane.material_slots[0].material
import sys
sys.path.append(r"D:\games\SteamLibrary\steamapps\common\scripts\addons\atool")
import bl_utils # type: ignore
node_tree = bl_utils.Node_Tree_Wrapper(material.node_tree)
output = node_tree.output
mappings = []
for node in output.all_children:
if node.type == 'DISPLACEMENT':
z = round(node.inputs['Scale'].default_value, 6)
elif node.type == 'MAPPING':
mappings.append(node)
if mappings:
mapping = mappings[0]
mapping_x, mapping_y, mapping_z = mapping.inputs['Scale'].default_value
else:
mapping_x = mapping_y = 1
dimensions = {
"x": x/mapping_x,
"y": y/mapping_y,
"z": z if z else 0.05
}
print(dimensions)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment