build meshes properly (props to blender for bad documentation! <3)
This commit is contained in:
parent
5b4ee0b4d0
commit
b2e6443200
1 changed files with 7 additions and 12 deletions
|
@ -121,7 +121,7 @@ class BlenderEngine(Base3DEngine):
|
||||||
mesh = bpy.data.meshes.new(name=name)
|
mesh = bpy.data.meshes.new(name=name)
|
||||||
mesh.from_pydata(
|
mesh.from_pydata(
|
||||||
tuple((x, y, minz) for x, y in coords),
|
tuple((x, y, minz) for x, y in coords),
|
||||||
tuple(zip(indices, indices[1:]+(0, ))),
|
(),
|
||||||
(indices, ),
|
(indices, ),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ class BlenderEngine(Base3DEngine):
|
||||||
mesh = bpy.data.meshes.new(name=name)
|
mesh = bpy.data.meshes.new(name=name)
|
||||||
mesh.from_pydata(
|
mesh.from_pydata(
|
||||||
coords,
|
coords,
|
||||||
tuple(zip(indices, indices[1:]+(0, ))),
|
(),
|
||||||
(indices, ),
|
(indices, ),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -164,16 +164,11 @@ class BlenderEngine(Base3DEngine):
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
def add_mesh(name, vertices, faces):
|
def add_mesh(name, vertices, faces):
|
||||||
edges = set()
|
|
||||||
for face in faces:
|
|
||||||
for edge in ((face[0], face[1]), (face[1], face[2]), (face[2], face[0])):
|
|
||||||
edges.add(tuple(sorted(edge)))
|
|
||||||
|
|
||||||
# create mesh
|
# create mesh
|
||||||
mesh = bpy.data.meshes.new(name=name)
|
mesh = bpy.data.meshes.new(name=name)
|
||||||
mesh.from_pydata(
|
mesh.from_pydata(
|
||||||
vertices,
|
vertices,
|
||||||
tuple(edges),
|
(),
|
||||||
faces,
|
faces,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -187,10 +182,10 @@ class BlenderEngine(Base3DEngine):
|
||||||
height = abs(height)
|
height = abs(height)
|
||||||
bottom_obj = clone_object(bottom_mesh_plane)
|
bottom_obj = clone_object(bottom_mesh_plane)
|
||||||
extrude_object(bottom_obj, -height)
|
extrude_object(bottom_obj, -height)
|
||||||
subtract_object(obj, bottom_obj, delete_after=False)
|
subtract_object(obj, bottom_obj, delete_after=True)
|
||||||
top_obj = clone_object(top_mesh_plane)
|
top_obj = clone_object(top_mesh_plane)
|
||||||
extrude_object(top_obj, height)
|
extrude_object(top_obj, height)
|
||||||
subtract_object(obj, top_obj, delete_after=False)
|
subtract_object(obj, top_obj, delete_after=True)
|
||||||
|
|
||||||
polygons_for_join = []
|
polygons_for_join = []
|
||||||
current_mesh_plane = None
|
current_mesh_plane = None
|
||||||
|
@ -284,8 +279,8 @@ class BlenderEngine(Base3DEngine):
|
||||||
self._add_mesh_plane('Level %s top mesh plane' % geoms.short_label, vertices / 1000, faces)
|
self._add_mesh_plane('Level %s top mesh plane' % geoms.short_label, vertices / 1000, faces)
|
||||||
|
|
||||||
self._add_polygon('Level %s buildings' % geoms.short_label, geoms.buildings,
|
self._add_polygon('Level %s buildings' % geoms.short_label, geoms.buildings,
|
||||||
last_min_z-1, current_max_z+1)
|
last_min_z-1000, current_max_z+1000)
|
||||||
self._cut_last_poly_with_mesh_planes(last_min_z-1, current_max_z+1)
|
self._cut_last_poly_with_mesh_planes(last_min_z-1000, current_max_z+1000)
|
||||||
|
|
||||||
for altitudearea in geoms.altitudeareas:
|
for altitudearea in geoms.altitudeareas:
|
||||||
break
|
break
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue