drawing fixed
This commit is contained in:
@@ -6,7 +6,7 @@ class App:
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.renderer = Renderer(1280, 720)
|
self.renderer = Renderer(1280, 720)
|
||||||
self.renderer.caption = "Virtual camera"
|
self.renderer.caption = "3D Renderer"
|
||||||
|
|
||||||
def main(self):
|
def main(self):
|
||||||
obj_builder1 = ObjectBuilder()
|
obj_builder1 = ObjectBuilder()
|
||||||
|
|||||||
@@ -17,19 +17,23 @@ class Object:
|
|||||||
def draw(self):
|
def draw(self):
|
||||||
vertices_matrix = np.array([[v.x, v.y, v.z, 1.0] for v in self.vertices])
|
vertices_matrix = np.array([[v.x, v.y, v.z, 1.0] for v in self.vertices])
|
||||||
vertices_matrix = vertices_matrix @ self.__renderer.camera.camera_matrix()
|
vertices_matrix = vertices_matrix @ self.__renderer.camera.camera_matrix()
|
||||||
|
hidden_vertices = [row[0, 2] <= 0 for row in vertices_matrix]
|
||||||
vertices_matrix = vertices_matrix @ self.__renderer.camera.projection_matrix()
|
vertices_matrix = vertices_matrix @ self.__renderer.camera.projection_matrix()
|
||||||
vertices_matrix /= vertices_matrix[:, -1].reshape(-1, 1)
|
vertices_matrix /= vertices_matrix[:, -1].reshape(-1, 1)
|
||||||
vertices_matrix = vertices_matrix @ self.__renderer.camera.screen_matrix()
|
vertices_matrix = vertices_matrix @ self.__renderer.camera.screen_matrix()
|
||||||
vertices_matrix = vertices_matrix[:, :2]
|
vertices_matrix = vertices_matrix[:, :2]
|
||||||
vertices = {}
|
vertices = {}
|
||||||
for i in range(len(self.vertices)):
|
for i in range(len(self.vertices)):
|
||||||
vertices[self.vertices[i]] = vertices_matrix[i].tolist()[0]
|
if not hidden_vertices[i]:
|
||||||
|
vertices[self.vertices[i]] = vertices_matrix[i].tolist()[0]
|
||||||
|
|
||||||
for v in vertices.values():
|
for v in vertices.values():
|
||||||
pg.draw.circle(self.__renderer.screen, pg.Color("black"), v, 2)
|
pg.draw.circle(self.__renderer.screen, pg.Color("black"), v, 2)
|
||||||
for l in self.lines:
|
for l in self.lines:
|
||||||
v1 = vertices[l[0]]
|
v1 = vertices.get(l[0])
|
||||||
v2 = vertices[l[1]]
|
v2 = vertices.get(l[1])
|
||||||
|
if (v1 is None or v2 is None):
|
||||||
|
continue
|
||||||
pg.draw.line(self.__renderer.screen, pg.Color("black"), v1, v2, 1)
|
pg.draw.line(self.__renderer.screen, pg.Color("black"), v1, v2, 1)
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user