OBJ.py 973 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import json
  2. def transformeOBJ(nom, pas=1):
  3. """
  4. Transforme un fichier RCL (matrice d'altitudes) en fichier OBJ.
  5. Args:
  6. nom : nom du fichier sans extension
  7. pas : distance entre deux points en mètres
  8. Créé :
  9. nom.obj
  10. """
  11. # Lecture du RCL
  12. with open(nom + ".rcl", "r") as f:
  13. terrain = json.load(f)
  14. hauteur = len(terrain)
  15. largeur = len(terrain[0])
  16. fichier_obj = nom + ".obj"
  17. with open(fichier_obj, "w") as obj:
  18. # Création des sommets
  19. for y in range(hauteur):
  20. for x in range(largeur):
  21. obj.write(
  22. f"v {x * pas} {y * pas} {terrain[y][x]}\n"
  23. )
  24. # Création des faces
  25. for y in range(hauteur - 1):
  26. for x in range(largeur - 1):
  27. # index OBJ commence à 1
  28. p1 = y * largeur + x + 1
  29. p2 = p1 + 1
  30. p3 = p1 + largeur
  31. p4 = p3 + 1
  32. # Premier triangle
  33. obj.write(
  34. f"f {p1} {p2} {p3}\n"
  35. )
  36. # Deuxième triangle
  37. obj.write(
  38. f"f {p2} {p4} {p3}\n"
  39. )
  40. print(f"Fichier créé : {fichier_obj}")