Transilvania Ring [laserscanned] - Dev Log

Discussion in 'Comunitate & Modding' started by Luchian, Aug 28, 2022.

  1. Luchian

    Luchian Administrator Staff Member Concurent RLR

    Joined:
    Jun 3, 2014
    Messages:
    1,107
    Likes Received:
    279
    Salut,
    Noi suntem Racing League Romania, cea mai mare comunitate de simracing din Romania. Avem Facebook, avem Discord, avem Platforma de competitii, heck, avem pana si MeWe.

    O buna parte dintre voi stiti deja ca motivul pentru care acest forum arata pustiu, este curentul modern numit Discord & the like. Avem si noi unul, cum am scris mai sus. Si pentru interactiuni de zi cu zi, functioneaza foarte bine. Dar pentru a organiza informatie sau pentru a ii oferi vizibilitate, Discord e nul (google indexing much?). Daca in plus mai ai si o varsta, reteta e asigurata - nu-ti place Discord. Cel mult il tolerezi.

    Ahm.. titlul spune Transilvania Ring. Ce tot indrugi despre Discord tataie? Corect. Acest intro a fost pentru a spune de fapt ca am luat decizia ca jurnalul de lucru va fi aici pe forum (doar optional si pe Discord), pentru a oferi cat mai multa vizibilitate proiectului. Si de ce nu, pentru a oferi ocazia unor oameni noi de a descoperi Racing League Romania.

    Ce este acest proiect?
    RLR a creat in trecut o versiune digitala a Motorpark Romania, utilizabila in Assetto Corsa. Acum avem un nou proiect: prin participarea financiara a comunitatii (si cu ajutorul unor oameni pasionati) circuitul Transilvania Ring a fost scanat cu laser. Asta a furnizat un nor de puncte foarte precis, ceea ce ne va permite sa modelam o versiune digitala, cu o eroare maxima de 2 cm fata de realitatea din teren. Este tehnologia folosita de toate simulatoarele serioase: iRacing, Assetto Corsa (circuitele oficiale), Assetto Corsa Competizione, si mai nou, rFactor 2.
    intro.jpeg

    Wen download?
    Suntem departe de a avea o versiune ingame. Cu atat mai putin una suficient de avansata pentru a fi publicata. Insa pana atunci, as dori, din respect pentru toti cei ce au contribuit, sa va tin informati despre cum avanseaza lucrurile. Nu exista un program fix pentru executie si finalizare (implicit, nici pentru comunicare), dar voi posta ori de cate ori am facut un progres notabil.

    Iar cand va veni momentul unei arhive publice, ea va fi disponibila doar pe Discordul RLR. Pai cum, ne intoarcem la Discord? Da, e util pentru a cunoaste oameni. Si vrem sa va cunoastem pe toti cei interesati de acest mod. Speram ca sentimentul va fi reciproc, atunci cand va fi timpul :).

    Sportiv,
    RLR.
     
    Sergiu Neagu and Cosmyo like this.
  2. Luchian

    Luchian Administrator Staff Member Concurent RLR

    Joined:
    Jun 3, 2014
    Messages:
    1,107
    Likes Received:
    279
    Nu chiar progres, inca tot felul de teste cu norul de puncte. Pana si cu 32 GB RAM raman fara memorie daca folosesc scanul complet si nu divizat. In poza, un segment de circuit, unde am generat un mesh pentru a vedea cam ce precizie au datele in forma bruta. mesh_test.jpg
     
    Sergiu Neagu likes this.
  3. Luchian

    Luchian Administrator Staff Member Concurent RLR

    Joined:
    Jun 3, 2014
    Messages:
    1,107
    Likes Received:
    279
    Stiti momentele alea cand urmaresti un proiect, apoi uiti de el, apoi iti reamintesti dupa mult timp si verifici progresul pentru ca sigur s-au intamplat multe in absenta ta? Ei bine, asta nu e unul dintre ele :D.

    Totusi o sa va crut de scuze despre viata si timp si chef si etc, asa ca scriu despre unde ne aflam astazi :).

    STUDIU si TESTE
    Am "lucrat" on and off la acest proiect, dar startul e o perioada deloc sexy si progresul nu e foarte vizibil. Cam ca atunci cand faci fundatia unei case, nothing to show for. Au fost multe ore de studiu privind lucrul cu un nor de puncte (e prima data si pentru mine, cu atat mai mult cu cat este laser scan la sol, si nu aerial lidar - o sa revin la asta). De ajutor, in afara de documentatia oficiala sau diferite pagini web, au fost aceste serii de video-uri:
    1/ James Dietrich YT - lucru cu CloudCompare, se aplica indiferent de sursa norului de puncte.
    2/ Lilski YT - procesul in mare, de la un nor de puncte la un model 3d utilizabil in-game. Se aplica mai degraba la lidar, dar e un punct (get it?) bun de plecare.

    La asta se adauga un strat suplimentar de dificultate: norul de puncte in urma scanarii la sol este mult mai dens comparativ cu un nor aerial lidar (scanare din satelit/avion, de la inaltimi foarte mari). Pentru simplul motiv ca rezolutia scanarii este mult mai mare. Partea buna? scan de la sol = precizie mai mare. Partea mai putin buna? Multe softuri isi dau duhul sub povara multor zeci de milioane de puncte.

    Asadar, inspirat de clipurile de mai sus si urmand aceleasi principii generale, au urmat multe ore "pierdute aiurea", cu tot felul de teste pentru a defini un workflow adecvat proiectului nostru.

    iso_pit_view.png

    PARANTEZA
    Profit de discutia asta pentru a mai adresa o confuzie des auzita:
    Pai daca ai scanul, il bagi in soft, ii dai "build" si astepti sa iasa modelul 3d, precum carnatii din masina de tocat. Nu?

    Nu. Fara sa intru in discutii despre limitari de memorie ale motoarelor jocurilor/simulatoarelor, modelul 3d (in acest caz, circuitul Transilvania Ring) va trebui sa ruleze in timp real, la 100+ de cadre pe secunda, pe PC-ul fiecaruia dintre noi. Asta inseamna ca numarul de poligoane (toate obiectele incluse) trebuie sa fie undeva la 1-2-3 milioane. Si nu la 70-80-100 milioane, cate are norul de puncte in forma bruta.

    Mai departe, un mesh 3D generat brut dintr-un nor de puncte arata ca o coaja de portocala (in cel mai bun caz), fara a lua in calcul tot felul de artefacte. Chiar daca la nivelul unui circuit nu pare mult (ce sunt cativa centimetri la scara unui circuit?), in-game, s-ar simti ca si cum am conduce pe piatra cubica si/sau borduri.

    Asadar, un nor de puncte serveste drept sablon/matrita/calapod/referinta, peste care se creaza manual fiecare obiect 3d pe care il veti vedea in-game in final. Ca si cum asezi o prelata peste o masina. Poate sunteti tentati sa credeti ca scanul e degeaba. Absolut deloc. Este practic imposibil sa capturezi cu aceeasi precizie fiecare denivelare sau fiecare inclinatie a circuitului cu o alta metoda. Folosind scanul ca referinta, devierile pe oricare din axele X,Y,Z vor fi neglijabile (<2 cm). Vom avea o reprezentare 1:1 cu realitatea din teren, si nu cea din planurile de constructie. Ca sa nu mai mentionez logistica din jur: imaginati-va cate mii de masuratori ar fi necesare in teren pentru a pozitiona fiecare obiect fix acolo unde e, si nu doar din ochi sau bazat pe google data (care vine cu devierile sale).

    iso_intrare.png

    WORKFLOW (wip)
    Bun, revin la teste si concluzii preliminare. Modul de lucru astazi. Am pregatit asa:

    1/ Un nor de puncte separat, strict cu suprafata asfaltica a circuitului (cu putina marja in stanga si dreapta), la rezolutia maxima. De altfel, asta este partea cea mai importanta, si aici dorim cea mai mare precizie. Datorita modului in care este creat modelul 3d al asfaltului, e foarte util ca norul de puncte sa fie un singur segment. Asadar, bazat pe acest nor, am generat 3 fisiere ce servesc ca referinta in softul de modelare 3d (in cazul meu Blender):
    - un mesh 3d raw, din norul de puncte (fbx, binary); din nou, doar ca referinta.
    - norul in format pe care sa il inteleaga si Blender (ply, binary)
    - o imagine la rezolutie cat mai mare cu intensity data (valori intre 0 si 255, i.e. full black/full white), asa cum le-a capturat senzorul. Exemplu:
    intensity_data.png

    2-x/Apoi unul sau mai multe segmente cu nori de puncte, la o rezolutie mai mica, pentru relieful din jur. Acolo ne intereseaza de fapt inclinatia si localizarea, si nu daca dealul este 2 cm mai sus sau mai jos.

    Bun, cam atat pentru astazi, inchei cu inca un beauty shot. Sa speram ca ne auzim mai des de acum incolo :D.
    iso_uphill_turn.png
     

Share This Page