feat: les couleurs :O

This commit is contained in:
gdamms 2022-10-18 00:06:57 +02:00
parent fbaf17a81f
commit 45c8130749

50
main.py
View file

@ -575,43 +575,44 @@ class MAPS(obja.Model):
# Check if point is in triangle
return (u >= 0) and (v >= 0) and (u + v < 1)
def truc(self, output):
def debug(self, output):
self.update()
priorities = self.compute_priority()
# min_p = min(priorities)
# priorities = [p - min_p for p in priorities]
# max_p = max(priorities)
colors = [priorities[face.a] + priorities[face.b] +
priorities[face.c] if face is not None else 0.0 for face in self.faces]
min_c = min(colors)
colors = [c - min_c for c in colors]
max_c = max(colors)
operations = []
for i, face in enumerate(self.faces):
if face != None:
r, g, b = colors[i] / max_c, 1.0, 1.0
c = 0
for x in (face.a, face.b, face.c):
for feature_edge in self.feature_edges:
if x in feature_edge:
c += 1
break
if c > 1:
if face is None:
continue
r, g, b = colors[i] / max_c, 1.0, 1.0
for feature_edge in self.feature_edges:
face_vertices = (face.a, face.b, face.c)
if feature_edge.a in face_vertices and feature_edge.b in face_vertices:
r, g, b = 1.0, 0.0, 0.0
operations.append(('fc', i, (r, g, b), 0, 0, 0))
operations.append(('af', i, face, 0, 0, 0))
break
operations.append(('fc', i, (r, g, b)))
operations.append(('af', i, face.to_obja()))
for i, vertex in enumerate(self.vertices):
if vertex is None:
# r, g, b = priorities[i] / max_p , 1.0, 1.0
operations.append(('av', i, vertex, 1.0, 1.0, 1.0))
continue
operations.append(('av', i, vertex.to_obja()))
operations.reverse()
# Write the result in output file
output_model = obja.Output(output)
for (op, index, value, r, g, b) in operations:
for (op, index, value) in operations:
if op == 'av':
output_model.add_vertex_rgb(index, value, r, g, b)
output_model.add_vertex(index, value)
elif op == 'af':
output_model.add_face(index, value)
elif op == 'ev':
@ -627,7 +628,7 @@ class MAPS(obja.Model):
file=output
)
def compress(self, output: io.TextIOWrapper, level: int, final_only: bool) -> None:
def compress(self, output: io.TextIOWrapper, level: int, final_only: bool, debug: bool) -> None:
""" Compress the 3d model
Args:
@ -675,6 +676,10 @@ class MAPS(obja.Model):
('av', v_index, self.vertices[v_index].to_obja()))
self.vertices[v_index] = None
if debug:
self.debug(output)
return
# Register remaining vertices and faces
for i, face in enumerate(self.faces):
if face is not None:
@ -718,9 +723,7 @@ def main(args):
model.parse_file(args.input)
with open(args.output, 'w') as output:
model.compress(output, args.level, args.final)
# with open(args.output, 'w') as output:
# model.truc(output)
model.compress(output, args.level, args.final or args.debug, args.debug)
if __name__ == '__main__':
@ -730,6 +733,7 @@ if __name__ == '__main__':
parser.add_argument('-o', '--output', type=str, required=True)
parser.add_argument('-l', '--level', type=int, required=True)
parser.add_argument('-f', '--final', type=bool, default=False)
parser.add_argument('-d', '--debug', type=bool, default=False)
args = parser.parse_args()
main(args)