kopia lustrzana https://github.com/OpenDroneMap/ODM
46 wiersze
1.3 KiB
Python
46 wiersze
1.3 KiB
Python
import bpy
|
|
import materials_utils
|
|
|
|
def loadMesh(file):
|
|
|
|
bpy.utils.register_module('materials_utils')
|
|
|
|
bpy.ops.import_scene.obj(filepath=file,
|
|
axis_forward='Y',
|
|
axis_up='Z')
|
|
|
|
bpy.ops.xps_tools.convert_to_cycles_all()
|
|
|
|
model = bpy.data.objects[-1]
|
|
minX = float('inf')
|
|
maxX = float('-inf')
|
|
minY = float('inf')
|
|
maxY = float('-inf')
|
|
minZ = float('inf')
|
|
maxZ = float('-inf')
|
|
for coord in model.bound_box:
|
|
x = coord[0]
|
|
y = coord[1]
|
|
z = coord[2]
|
|
minX = min(x, minX)
|
|
maxX = max(x, maxX)
|
|
minY = min(y, minY)
|
|
maxY = max(y, maxY)
|
|
minZ = min(z, minZ)
|
|
maxZ = max(z, maxZ)
|
|
|
|
model.location[2] += (maxZ - minZ)/2
|
|
|
|
surfaceShaderType = 'ShaderNodeEmission'
|
|
surfaceShaderName = 'Emission'
|
|
|
|
for m in bpy.data.materials:
|
|
nt = m.node_tree
|
|
nt.nodes.remove(nt.nodes['Color Mult'])
|
|
nt.nodes.remove(nt.nodes['Diffuse BSDF'])
|
|
nt.nodes.new(surfaceShaderType)
|
|
nt.links.new(nt.nodes['Material Output'].inputs[0],
|
|
nt.nodes[surfaceShaderName].outputs[0])
|
|
nt.links.new(nt.nodes[surfaceShaderName].inputs[0],
|
|
nt.nodes['Diffuse Texture'].outputs[0])
|