Skip to content
Commit 37a64ca1 authored by Radek Ošlejšek's avatar Radek Ošlejšek
Browse files

CHANGELOG.md file updated with commits between the current and previous tag.

parent 1b3b106b
  • Author Owner

    @all Dnes jsem do masteru zmergoval svoje zmeny a vytvoril novou release. Jsou dost prekopane visitory, zejmena se to tyka vypoctu vzdalenosti bod-mesh (DistanceToVerticesVisitor a DistanceToTrianglesVisitor) a hausdorffovy vzdalenosti (HausdorffDistanceVisitor). Omlouvam se za komplikace, ktere vam to mozna zpusobi, ale zmeny byly nevyhnutelne.

    Dosavani kod pocital hausdorffovu vzdalenost mezi dvema obliceji s vyuzitim presnejicho vypoctu (point-to-triangle) 1 hodinu. Po zmenach to trva 9 sekund! Po zapojeni kd-stromu se musime dostat pod sekundu.

    Podrobnosti vysvetlim ve ctvrtek.

  • Owner

    Ahoj Radku, skvele. Co myslis oznacenim "dosavadni kod" ? Puvodni F, nebo nove rozpracovana verze? Zdravi Jirka

    ne 28. 2. 2021 v 12:27 odesílatel Radek Ošlejšek gitlab@fi.muni.cz napsal:

  • Author Owner

    Nase rozpracovana verze. Ty casy puvodniho F by men zajimaly, ale nevim, jak to rychle zjistit.

    A jeste jeden vysledek: rozdil vypoctu HD presnejsi a mene presnou variantou je v nasem podani pomerne zanedbatelny (asi 1s). Opet nevim, jak velky byl rozdil v puvodnim F. DOsahl jsem toho tak, ze i v presnejsi variante se nejprve najde nejblizsi vrchol a pak se prozkoumaji pouze trojuhelnihy kolem toho vrcholu, aby se vypocet zpresnil.

    Jiří Sochor píše v Ne 28. 02. 2021 v 12:39 +0100:

  • Author Owner

    @all Ted se divam do stareho F, a tam se pri vypoctu HD pocita vzdalenost trojuhelnik-bod pro skoro vsechny trojuhelniky zdrojoveho meshe. Takze je to naprogramovano stejne blbe, jako jsme to meli predtim my. To slovo "skoro" jsem pouzil proto, ze diky kd-stromu se nektere torjuhelniky z vypoctu vynechaji. Takze nase implementace musi byt po zavedeni kd-stromu z principu rychlejsi. Tak snad se nepletu :-)

    Edited by Radek Ošlejšek
  • Contributor

    @oslejsek Omlouvám se, pokud jsem to pochopil špatně, ale nejsem si jist, jestli nám tento přístup (vybrat nejbližší bod a potom najít nejbližší trojúhelník s vrcholem v tomto bodě) dá vždy správný výsledek.

    Mějme například trojúhelníky ABC a ABD, kde body mají souřadnice [x; y; z]: A[-5; -5; 0], B[5; 0; 0], C[-5; 5; 0] a D[0; 0; 1]. Potom mějme bod X[0; 0; 0] a hledejme k tomuto bodu nejbližší trojúhelník.

    Pokud se nemýlím, tak výše zmíněný přístup nám vrátí trojúhelník ABD, protože nejbližším bodem je bod D. Ale správně bychom měli dostat trojúhelník ABC, protože bod X leží uvnitř tohoto trojúhelníku a vzdálenost od něj je tedy nulová.

    Pokouším se najít efektivnější způsob, jak toto spočítat. Ale zjistit pro každý bod nejbližší vzdálenost ke všem trojúhelníkům sítě mi zatím zůstává jako jediný (i když neefektivní) způsob řešící i podobné krajní případy.

  • Author Owner

    Zkazil jste mi radost, ale máte pravdu. Otázka je, jestli takové situace na našich modelech mohou nastat? IHO to vyžaduje ostré zalomení trojúhelníků (pod úhlem menším než 90 stupňů). Obličeje jsou v tomto dost hladké (a máme dost jemnou síť), s výjimkou nějakých chybně naskenovaných oblastí nebo vousů apod. V takových oblastech ale asi nemá cenu vůbec porovnávat a HD měřit.

    Každopádně platí, že výpočet vzdálenosti bod-trojúhelník je extrémně drahá operace a jakákoliv redukce v tomto směru je obrovské zrychlení. KD stromy v tomto podle mě neplní úlohu zcela dobře, protože už během traverzování se neustále počítá bod-trojúhleník po celé cestě. To mě vede na myšlenku, že by mělo být mnohem výhodnější použít BVH. Trasovat BVH pouze s testem "je bod uvnitř volume?". Pokud by se dotrasovalo až do listů a bod byl stále uvnitř nějakých volumes, tak otestovat jen příslušné trojúhelníky. Pokud by po cestě "vypadl", otestovat všechny tojúhelníky uvnitř poslední volume. Protože máme obličeje napasované těsně na sebe a síť je hustá, tak k testování zbudou jednotky trojúhelníků. Pouze v místech, kde jsou obličeje daleko od sebe, by těch trojúhelníků mohlo zbýt hodně. V takové situaci je ale už bezpečná ta metoda "najdi nejbližší bod a prozkoumej jeho okolí". Takže by se to dalo zkombinovat.

    @sochor Jirko, asi to nemá cenu řešit takto textově, ale ve čtvrtek bych ty možnosti rád probral.

  • Owner

    Dobry vecer, jeste o tom budu premyslet, ale mam nasledujici predtuchu. Kds jsou zavedeny z duvodu pasovani dvou bodovych mraku - nalezeni rigidni transformace jednoho mraku s minimalizaci vzdalenosti bod/bod mereno globalne pres cele modely. Tady se neuvazuji trojuhelniky. Naopak - Hausdorf meri odlisnosti dvou povrchu. Hledame tedy optimalni algoritmus pro vyhledani blizkych povrchu. Reseni jeste nevidim, ale podstata problemu je asi tato.

    Ozvu se zitra, ale to neznamena, ze nemuzete prijit s vlastnim navrhem.

    Zdravi J.Sochor

    po 1. 3. 2021 v 19:41 odesílatel Radek Ošlejšek gitlab@fi.muni.cz napsal:

  • Author Owner

    Ten nápad s BVH beru zpět. To by nefungovalo.

  • Owner

    Ahoj Radku, skvele. Co myslis oznacenim "dosavadni kod" ? Puvodni F, nebo nove rozpracovana verze? Zdravi Jirka

    ne 28. 2. 2021 v 12:27 odesílatel Radek Ošlejšek gitlab@fi.muni.cz napsal:

  • Author Owner

    Nase rozpracovana verze. Ty casy puvodniho F by men zajimaly, ale nevim, jak to rychle zjistit.

    A jeste jeden vysledek: rozdil vypoctu HD presnejsi a mene presnou variantou je v nasem podani pomerne zanedbatelny (asi 1s). Opet nevim, jak velky byl rozdil v puvodnim F. DOsahl jsem toho tak, ze i v presnejsi variante se nejprve najde nejblizsi vrchol a pak se prozkoumaji pouze trojuhelnihy kolem toho vrcholu, aby se vypocet zpresnil.

    Jiří Sochor píše v Ne 28. 02. 2021 v 12:39 +0100:

  • Owner

    Dobry vecer, jeste o tom budu premyslet, ale mam nasledujici predtuchu. Kds jsou zavedeny z duvodu pasovani dvou bodovych mraku - nalezeni rigidni transformace jednoho mraku s minimalizaci vzdalenosti bod/bod mereno globalne pres cele modely. Tady se neuvazuji trojuhelniky. Naopak - Hausdorf meri odlisnosti dvou povrchu. Hledame tedy optimalni algoritmus pro vyhledani blizkych povrchu. Reseni jeste nevidim, ale podstata problemu je asi tato.

    Ozvu se zitra, ale to neznamena, ze nemuzete prijit s vlastnim navrhem.

    Zdravi J.Sochor

    po 1. 3. 2021 v 19:41 odesílatel Radek Ošlejšek gitlab@fi.muni.cz napsal:

  • Owner

    Radku, prosim, dej mi typ, kde se vlastne spocita to cislo HD mezi bod/normala/ploska? Prohlizel jsem to dnes asi 2 hodiny, pochopil jsem vytvoreni skupiny nejblizsich bodu kd proti danemu vrcholu. Ale kde se skryva ten vzorec ? Hledam a hledam ... Jirka

    st 3. 3. 2021 v 19:18 odesílatel Radek Ošlejšek gitlab@fi.muni.cz napsal:

  • Author Owner

    V našem kódu:

    Ve starém F je vstupním bodem pro zkoumání třída KdTreeFaces

    Edited by Radek Ošlejšek
  • Owner

    Diky. Nas kod je dobre citelny a voli rozumna jmena. Potize mam pri zkoumani puvodniho kodu ... Zdravi Jirka

    čt 4. 3. 2021 v 8:24 odesílatel Radek Ošlejšek gitlab@fi.muni.cz napsal:

  • Author Owner

    Clanky jsem dal do wiki

0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment