Annonce

Réduire
Aucune annonce.

Ortho4XP

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • #1
    Résultats plutôt encourageants : après correction d'un bug de Shewchuk (segmentation fault), un bug de ma part (arêtes OSM peuvent intersecter plus d'un repère vertical ou horizontal de la grille ortho), et quelques erreurs sur Openstreetmap (le mailleur les détecte maintenant et indique où aller les corriger sur OSM), j'ai pu faire les maillages pour les tuiles +50+00[1/2/3/4/5], +51+00[1/2/3/4/5] et +52+[4/5] et +46-001 avec min_area=0 (= tout osm) et curvature_tol=0.1 (et 0.01 par curiosité sur la +51+004, cela passe mais donne beaucoup trop de triangles (14 millions)).

    Je referai d'autres tests ce soir le long de la côté atlantique, si tjs ok je mettrai en ligne.

    @atanorr : je mets une option sur la mitraillette (avec fricadelle est sauce chasseur)
    Linux Debian sid - Intel i7 4Ghz - 16Gb RAM - Nvidia GTX 970
    Ortho4XP v130 : Dépôt github (mises à jour au fil de l'eau (avant la période de sécheresse)), ou Version clés en main sous Windows.

    Commentaire


    • #1
      Certains se sont meme amusé a le faire en Purebasic



      dans cette exemple compilé pour Windows , tu poses tes points avec le bouton gauche (autant que tu veux )

      le bouton droit Triangule ....

      Esc pour quitter !

      donc , c'est facile d'en faire un prg qui en entrée recupere des Vecteurs
      ici c'est la souris qui les donnent et les mets en structure

      Points(NombrePoints)\x = MouseX()
      Points(NombrePoints)\y = MouseY()

      et d'en faire un maillage

      si ça t’intéresses , je peux meme te mettre en relation avec l'auteur du code , qui devrai pouvoir en faire une version en ligne de commande
      le seul probleme concerne au finale les valeurs en entrée (un tableau ? ) , et ce que tu veux en sortie ! (pour X-plane )

      voir meme que tu en Fasses une adaptation en Python puisque tu maitrise ce sujet

      je me tiens a ta dispo pour expliquer le Code Purebasic (la syntaxe ) pour facilité la conversion

      l'algo a l'air simple
      seulement 5 procédures en oeuvre

      la procédure Triangulation qui fait appel au procedures

      plusprochevoisin(i)
      voisinsuivantdroite(i, j)
      voisinsuivantgauche(i, j)


      Code:
      Procedure plusprochevoisin(i)
        distmin=900000000
        For j=0 To NombrePoints-1
          If i<>j
            dist2=(Points(i)\x-Points(j)\x)*(Points(i)\x-Points(j)\x)+(Points(i)\y-Points(j)\y)*(Points(i)\y-Points(j)\y)
            If (dist2<distmin)
              distmin=dist2
              jmin=j
            EndIf
          EndIf
        Next   
        ProcedureReturn jmin
      EndProcedure
      
      Procedure voisinsuivantdroite(i, j)
        numerovoisin=-1
        Protected.d prodscal,longki2,longki,longkj2,longkj,coskij,cosmin,det
       
        cosmin=1
        For k=0 To NombrePoints-1
          If k<>i And k<>j
            v1x=Points(j)\x-Points(i)\x
            v1y=Points(j)\y-Points(i)\y
            v2x=Points(k)\x-Points(i)\x
            v2y=Points(k)\y-Points(i)\y
            det=v1x*v2y-v1y*v2x
            If det<0 ; on cherche un point à droite
              prodscal=(Points(i)\x-Points(k)\x)*(Points(j)\x-Points(k)\x)+
                       (Points(i)\y-Points(k)\y)*(Points(j)\y-Points(k)\y)
              longki2 =(Points(i)\x-Points(k)\x)*(Points(i)\x-Points(k)\x)+
                       (Points(i)\y-Points(k)\y)*(Points(i)\y-Points(k)\y)
              longkj2 =(Points(j)\x-Points(k)\x)*(Points(j)\x-Points(k)\x)+
                       (Points(j)\y-Points(k)\y)*(Points(j)\y-Points(k)\y)
              longki=Sqr(longki2)
              longkj=Sqr(longkj2)
              coskij=prodscal/(longki*longkj); on veut le cosinus le plus petit possible
              If (coskij<cosmin)
                cosmin=coskij
                numerovoisin=k
              EndIf
            EndIf
          EndIf 
        Next
       
        ProcedureReturn numerovoisin
      EndProcedure
      
      Procedure voisinsuivantgauche(i, j)
        numerovoisin=-1
        Protected.d prodscal,longki2,longki,longkj2,longkj,coskij,cosmin,det
       
        cosmin=1
        For k=0 To NombrePoints-1
          If k<>i And k<>j
            v1x=Points(j)\x-Points(i)\x
            v1y=Points(j)\y-Points(i)\y
            v2x=Points(k)\x-Points(i)\x
            v2y=Points(k)\y-Points(i)\y
            det=v1x*v2y-v1y*v2x
            If det>0 ; on cherche un point à gauche
              prodscal=(Points(i)\x-Points(k)\x)*(Points(j)\x-Points(k)\x)+
                       (Points(i)\y-Points(k)\y)*(Points(j)\y-Points(k)\y)
              longki2=(Points(i)\x-Points(k)\x)*(Points(i)\x-Points(k)\x)+
                      (Points(i)\y-Points(k)\y)*(Points(i)\y-Points(k)\y)
              longkj2=(Points(j)\x-Points(k)\x)*(Points(j)\x-Points(k)\x)+
                      (Points(j)\y-Points(k)\y)*(Points(j)\y-Points(k)\y)
              longki=Sqr(longki2)
              longkj=Sqr(longkj2)
              coskij=prodscal/(longki*longkj); on veut le cosinus le plus petit possible
              If (coskij<cosmin)
                cosmin=coskij
                numerovoisin=k
              EndIf
            EndIf
          EndIf 
        Next
       
        ProcedureReturn numerovoisin
      EndProcedure
      
      Procedure Triangulation()
        For i=0 To NombrePoints-1 ; on prend chaque site
          ppv=plusprochevoisin(i)
          voisins(i,0)=ppv
          longueur(i)=1
          kk=0
          Repeat
            vsd=voisinsuivantdroite(i,voisins(i,kk))
            longueur(i) + 1
            voisins(i,kk+1)=vsd
            kk+1
          Until (vsd=ppv Or vsd=-1)
          If vsd=-1
            envconv(i)=1
            Repeat
              vsg=voisinsuivantgauche(i,voisins(i,0))
              If vsg<>-1
                For kkk=longueur(i)-1 To 0 Step -1
                  voisins(i,kkk+1)=voisins(i,kkk)
                Next
                voisins(i,0)=vsg
                longueur(i)+1
              EndIf
            Until(vsg=-1)
          EndIf
        Next
      EndProcedure
      
      Procedure AfficheTriangles()
        Color = RGB(0, 0, 255)
        For i=0 To NombrePoints-1 ; dessin des triangles autour de i
          For ii=0 To longueur(i)-2
            If voisins(i,ii+1)<>-1
              LineXY(Points(i)\x,Points(i)\y,Points(voisins(i,ii))\x,Points(voisins(i,ii))\y, Color)
              LineXY(Points(i)\x,Points(i)\y,Points(voisins(i,ii+1))\x,Points(voisins(i,ii+1))\y,Color)
              LineXY(Points(voisins(i,ii))\x,Points(voisins(i,ii))\y,Points(voisins(i,ii+1))\x,Points(voisins(i,ii+1))\y,Color)
            EndIf
          Next
        Next 
      EndProcedure



      exemple tiré du forum anglais de Purebasic
      http://forums.purebasic.com/english/...35d59b1cd1cc05


      il y a meme un code pour en faire un *. Mesh
      Dernière modification par Dobro, 08 septembre 2015, 10h46.
      Site: http://michel.dobro.free.fr
      Twitch : https://www.twitch.tv/dobro013
      Msi GT72 Vr Dominator Pro Tobii Eyes (i7 6700HQ,16GoRam DDR4 , Nvidia GTX 1060 , 6Go DDR5 , 17pouces Mat , 1920x1080(Full HD) , 1 SSd 256go, 1 Disks Dur 1 To )(win10)
      sigpic

      Commentaire


      • #1
        Merci de ton aide Dobro.
        Envoyé par Dobro Voir le message
        l'algo a l'air simple seulement 5 procédures en oeuvre
        Celui de Shewchuk fait 16 mille lignes de codes, il y a peut-être une raison.
        Si tu me permets un parallèle un peu douteux, ce n'est pas avec 2 piles 1.5V
        que l'on peut faire tourner une centrale nucléaire. Mais on peut faire plein de
        choses au moins aussi intéressantes avec des piles 1.5V, et le code
        que tu présentes en fait à coup sûr partie.
        Linux Debian sid - Intel i7 4Ghz - 16Gb RAM - Nvidia GTX 970
        Ortho4XP v130 : Dépôt github (mises à jour au fil de l'eau (avant la période de sécheresse)), ou Version clés en main sous Windows.

        Commentaire


        • #1
          J'attends ça avec impatience oscar ;) , met moi ça en ligne non de dju ahahah, au passage tu m'as pas répondu, sur ta vidéo, qu'elle est le zoom, le fournisseur et config couleur ? Franchement impeccable. Je suis admiratif de voir comment tu progresse très très vite.,!

          Commentaire


          • #1
            Bon, voilà que je rentre du travail moi,j'ai fini de faire à manger , pris ma douche , Alors je viens au nouvelles :D ... ou est ce lien ... pom pom pom... Comment !!! ^^ :/ :/ ??!! Bon la fricadelle je l'ai donnée au chien , il à eu la diarrhée avec, .; pas de lien Ortho4XP ! ? non de dju de non de dju ! => ok je go Exit... :/
            Dernière modification par atanorr, 08 septembre 2015, 18h05.

            Commentaire


            • #1
              J'ai mis en ligne la version de modifiée de Triangle4XP pour les 3 os (dans Utils), ne n'ai pas eu le temps
              de faire d'autres tests aujourd'hui mais j'ai cru comprendre qu'Atanorr voulait s'y ateler.

              Il faut aussi prendre la nouvelle version de Ortho4XP.py.

              Nb : Par défaut Ortho4XP réutilise autant que faire se peut les données
              déjà traitées. Pour éviter qu'il n'utilise les anciennes données (dont celles buguées ou avec erreur sur osm
              et donc replante), le plus simple est d'effacer tous les fichier contenus dans la racine de la tuile que l'on
              tente de refaire (pas les répertoires, en particulier pas "textures" bien sûr). Cela ne prend alors qu'entre
              2 et 5 minutes suivant la tuile et l'ordi.

              Dans le fichier de cfg par défaut (pour la +45+006) il y a l'option no_small_angle=True.
              Je recommande de mettre no_small_angle=False pour les tuiles hors montagne.

              @atanorr : comment ne pas retélécharger les jpegs : je t'ai répondu au message #847, la réponse n'a pas changé.

              (je vais changer le mode de fonctionnement par défaut concernant ces réutilisations pour la prochaine
              version, maintenant que les étapes se sont accélérées c'est moins crucial)

              Question : y en a-t-il qui utilisent build_dir autrement que par l'option par défaut, ou bien vous faites
              à chaque fois une copie vers Custom Scenery après construction ?
              Dernière modification par Oscar Pilote, 08 septembre 2015, 21h23.
              Linux Debian sid - Intel i7 4Ghz - 16Gb RAM - Nvidia GTX 970
              Ortho4XP v130 : Dépôt github (mises à jour au fil de l'eau (avant la période de sécheresse)), ou Version clés en main sous Windows.

              Commentaire


              • #1
                , couper coller dans le custom scenery, puisque je construit sur le meme ssd que xplane.

                Merci oscar, pour les infos ,
                OK en 847 , j'ai essayé le return avec une tabulation juste en dessous des lignes que tu m'as décrites , malheureusement , ou j'ai mal mis le return ou quelque chose ne vas pas , enfin tant pis j'attendrais que tu sortes une version ou alors que tu m'envoie une copie du code avec ton return dedans, il me reste 2 tuiles à effectuer avec l'ancienne version , donc mauvaise altitude , mais pour la place j'avais dû effacer les orthophotos.

                - un test_mesh il retélécharge les orthophotos?

                si tu as le temps de me donner juste les petites informations ;-) pour ta video, juste les réglages couleur contrast que tu as utilisé? ;) zoom également 18 je présume? :D sur FR ?

                Aie une petite erreur quelques parts?

                Bonne fin de soirée Oscar , moi je go au lit ;),

                Crash sur le test mesh avec le nouveau Ortho de ce soir.

                K:\Ortho4XP>Ortho4XP test_mesh 51 4
                File "K:\Ortho4XP\Ortho4XP.py", line 937
                til_y0=max(til_yi,til_yf)
                ^
                IndentationError: expected an indented block

                K:\Ortho4XP>

                Vraiment quand tu as du temps, un shutdown comp u t er ;) serais idéal ;)
                Dernière modification par atanorr, 08 septembre 2015, 22h01.

                Commentaire


                • #1
                  Envoyé par atanorr Voir le message
                  , couper coller dans le custom scenery, puisque je construit sur le meme ssd que xplane.
                  pareil, mais sur disque dur
                  Site: http://michel.dobro.free.fr
                  Twitch : https://www.twitch.tv/dobro013
                  Msi GT72 Vr Dominator Pro Tobii Eyes (i7 6700HQ,16GoRam DDR4 , Nvidia GTX 1060 , 6Go DDR5 , 17pouces Mat , 1920x1080(Full HD) , 1 SSd 256go, 1 Disks Dur 1 To )(win10)
                  sigpic

                  Commentaire


                  • #1
                    Envoyé par Dobro Voir le message
                    pareil, mais sur disque dur
                    j'ai également créer un Orto4XP_2 sur un autre dd, histoire de réaliser 2 tuiles en même temps, j'ai essayé 3 , mais au download , c'est pas plus rapide. 2 Me semble le meilleur choix.

                    au lieu de lui ajouter un return ,est-ce que c'est pas mieux qu'il contrôle si les fichiers sont déjà présent dans le répertoire textures ".dds ou .png" , si non , il télécharge les orthophotos ?..
                    ou mettre un interrupteur, on off pour télécharger ou pas..Car je pense que l'on va plus travailler sur les modifications de maillage , les textures elles, ne changerons pas , ou plus.
                    Dernière modification par atanorr, 08 septembre 2015, 22h14.

                    Commentaire


                    • #1
                      Indentation corrigée, quand j'efface mes "print" de test avant de mettre en ligne je vais parfois un peu trop vite...
                      Pour les fichiers, oui je suis d'accord, c'est une solution d'attente pour un grand impatient, je t'ai dit pour la
                      prochaine mise à jour.
                      Pour l'étape 1, le serveur français que j'ai mentionné à Fatboytits dans un message plus haut est beaucoup
                      plus rapide que celui par défaut (il faut changer dans le fichier __init__.py d'un répertoire qui se nomme overpy
                      et qui doit être qqpart sur votre disque dur (pas dans Ortho4XP, je n'ai pas regardé ou cela se trouve sous Windows,
                      sous Linux il suffit de taper "locate overpy"), à terme j'inclurai la source modifiée dans Ortho4XP comme cela vous
                      n'aurez rien à toucher.
                      Linux Debian sid - Intel i7 4Ghz - 16Gb RAM - Nvidia GTX 970
                      Ortho4XP v130 : Dépôt github (mises à jour au fil de l'eau (avant la période de sécheresse)), ou Version clés en main sous Windows.

                      Commentaire


                      • #1
                        Envoyé par Oscar Pilote Voir le message
                        d'un répertoire qui se nomme overpy
                        et qui doit être qqpart sur votre disque dur (pas dans Ortho4XP, je n'ai pas regardé ou cela se trouve sous Windows,
                        chez moi c'est : C:\Python34\Lib\site-packages\overpy\
                        Site: http://michel.dobro.free.fr
                        Twitch : https://www.twitch.tv/dobro013
                        Msi GT72 Vr Dominator Pro Tobii Eyes (i7 6700HQ,16GoRam DDR4 , Nvidia GTX 1060 , 6Go DDR5 , 17pouces Mat , 1920x1080(Full HD) , 1 SSd 256go, 1 Disks Dur 1 To )(win10)
                        sigpic

                        Commentaire


                        • #1
                          @ Daniel
                          Une petite vidéo de LFMG avec le patch ci-dessous.
                          La scène de l'auteur "Jean" est magnifique, à coup sûr une des plus réussies parmi celles que j'ai pu tester !

                          Les zones fléchées correspondent à des "pistes" en pente, la flèche dans le sens de la montée, les zones
                          avec un O correspondent à des zones aplanies. L'utilisateur se borne à tracer ces polygones et à encoder les
                          altitudes cibles. En aval, Ortho4XP triangule les zones aplanies avec peu de triangles (le minimum nécessaire),
                          alors que les zones en arrondi sont automatiquement découpées en quadrilatères (ici environ 1m de côté - le programme
                          découpe d'abord les bords en un nombre approprié de morceaux puis quadrille en se basant sur ces points), enfin
                          il calcule la "bonne" altitude pour chaque point du maillage.


                          PS1) Merci de ne pas poser votre oeil expert sur le variomètre, je me suis inscrit chez Milan mais n'ai pas encore eu le temps de pratiquer...
                          PS2) La scène est en bord de la tuile +43+001, je n'avais pas fait la +43+002 et on voit par endroits les déchirures avec la tuile +43+002 qui est celle du Global Scenery. Celles-ci disparaîtront une fois la +43+002 faite.

                          @Atanor : je ne fais aucune retouche sur les textures, et en général je ne fais qu'un petit bout de tuile en ZL19 (entre 200Mb et 1Gb de DDS) là où je compte voler et très peu ailleurs (ZL16 si je veux aller plus loin, mais souvent rien du tout ou bien ZL14, vu au loin cela ne fait aucune différence, ma limite d'acceptabilité est de 15min de construction par tuile). Pour LFHU c'était BI le fournisseur, ici c'est FR (mais BI m'a l'air plus uniforme dans cette zone, je changerai).
                          Dernière modification par Oscar Pilote, 09 septembre 2015, 08h54.
                          Linux Debian sid - Intel i7 4Ghz - 16Gb RAM - Nvidia GTX 970
                          Ortho4XP v130 : Dépôt github (mises à jour au fil de l'eau (avant la période de sécheresse)), ou Version clés en main sous Windows.

                          Commentaire


                          • #1
                            Envoyé par Oscar Pilote Voir le message
                            PS1) Merci de ne pas poser votre oeil expert sur le variomètre,
                            sans etre expert, c'est plutot ton arrivée et vitesse en virage sortie de piste a la Ari Vatanen qui m'a fait flipper !

                            je ne connais pas cette aérodrome, je suis surpris qu'une piste puisse etre autant Vallonnée..

                            le taxiway l'est effectivement "un peu" ; tu as forcé le trait non ?


                            Dernière modification par Dobro, 09 septembre 2015, 10h28.
                            Site: http://michel.dobro.free.fr
                            Twitch : https://www.twitch.tv/dobro013
                            Msi GT72 Vr Dominator Pro Tobii Eyes (i7 6700HQ,16GoRam DDR4 , Nvidia GTX 1060 , 6Go DDR5 , 17pouces Mat , 1920x1080(Full HD) , 1 SSd 256go, 1 Disks Dur 1 To )(win10)
                            sigpic

                            Commentaire


                            • #1
                              Vraiment incroyable !! non pas l'arrivée hein :D , c'était certainement après un bon coup de champagne pour fêter ça :D
                              Je pense qu'il devait y avoir un élastique comme sur les portes-avions caché quelque pars ... petit filou va ahahah

                              LEs patch des scènes réussie comme sur ta vidéo , crois tu qu'elle seront disponible? comme les masques? ,
                              -
                              perso , je fini d'abord la construction des tuiles , ensuite je peaufine les masques. Comme j'étais bloqué, voilà ...
                              Vraiment Bravo pour ton mailleur et ton programme qui ne devrais d’ailleurs plus être Alpha ... ;)

                              Commentaire


                              • #1
                                Memory allocation statistics:

                                Maximum number of vertices: 1819763
                                Maximum number of triangles: 3636621
                                Maximum number of subsegments: 1165181
                                Maximum number of encroached subsegments: 1
                                Maximum number of bad triangles: 1868253
                                Maximum number of stacked triangle flips: 4
                                Approximate heap memory use (bytes): 522731360

                                Algorithmic statistics:

                                Number of incircle tests: 23750219
                                Number of 2D orientation tests: 94934280
                                Number of triangle circumcenter computations: 1345682

                                '.' n'est pas reconnu en tant que commande interne
                                ou externe, un programme exécutable ou un fichier de commandes.

                                ==>oulà je me perds dans les dédales de nombres...
                                est ce que c'est bien la ligne : Maximum number of triangles: 3636621 , qu'il faut retenir pour la lourdeur de la tuile?

                                Commentaire

                                Chargement...
                                X