Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import bpy
- import mathutils
- obj = bpy.context.active_object
- me = obj.data
- me.calc_tangents()
- vertices = []
- for t in me.polygons:
- assert(t.loop_total == 3)
- for l in t.loop_indices:
- loop = me.loops[l]
- pos = me.vertices[loop.vertex_index].co
- nrm = loop.normal
- uv = me.uv_layers.active.data[l].uv
- vertices.append([[pos.x, pos.y, pos.z], [uv.x, uv.y], [nrm.x, nrm.y, nrm.z]])
- assert(len(vertices)%3 == 0)
- me2 = bpy.data.meshes.new("meshCopy")
- me2.vertices.add(len(vertices))
- me2.polygons.add(len(vertices)/3)
- me2.loops.add(len(vertices))
- me2.uv_textures.new()
- uv_layer = me2.uv_layers[0]
- custom_normals = [None] * len(vertices)
- for i in range(len(vertices)//3):
- me2.loops[i*3].vertex_index = i*3
- me2.loops[i*3+1].vertex_index = i*3+1
- me2.loops[i*3+2].vertex_index = i*3+2
- uv_layer.data[i*3].uv = mathutils.Vector(vertices[i*3][1])
- uv_layer.data[i*3+1].uv = mathutils.Vector(vertices[i*3+1][1])
- uv_layer.data[i*3+2].uv = mathutils.Vector(vertices[i*3+2][1])
- me2.vertices[i*3].co = mathutils.Vector(vertices[i*3][0])
- me2.vertices[i*3+1].co = mathutils.Vector(vertices[i*3+1][0])
- me2.vertices[i*3+2].co = mathutils.Vector(vertices[i*3+2][0])
- custom_normals[i*3] = vertices[i*3][2]
- custom_normals[i*3+1] = vertices[i*3+1][2]
- custom_normals[i*3+2] = vertices[i*3+2][2]
- me2.polygons[i].loop_start = i*3
- me2.polygons[i].loop_total = 3
- me2.polygons[i].material_index = 0
- me2.update(calc_edges=True)
- me2.normals_split_custom_set(custom_normals)
- me2.materials.append(bpy.data.materials['bronze_medal'])
- me2.use_auto_smooth = True
- obj2 = bpy.data.objects.new("copy object", me2)
- bpy.context.scene.objects.link(obj2)
- obj2.location = mathutils.Vector([0,-1,0])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement