„Raymarching + Distancefields” este tehnica care a fost folosita mai ales in majoritatea intro 4k lansate in 2009 (si va avea inca o influenta puternica in 2010). In cadrul Frecventei, xt95 a introdus aceasta tehnica datorita fantasticului lucru al lui iq si Systemkit. Cand wullon a cerut Frecventei sa construiasca o mica informatie pentru a anunta constructia site-ului demoscene.fr, xt95 a produs un prim proiect promitator al Potratro din care puteam lucra pentru imbunatatirea designului general, formele „isos” si scenele. escorte bt www.junera.net Cu toate acestea, nu-mi luasem timpul sa intelegem principiul RayMarching + DistanceFields, chiar daca nu parea sa fie total absurd.
Inapoi din #main 2009, in timp ce ma uitam la pachetul BBS, am dat urmatoarea fire: “Deci, cum arata ecuatiile de camp la distanta? Si cum le rezolvam?” . Intrebare banala, dar primele raspunsuri nu m-au luminat cu privire la intelegerea de baza pe care o aveam deja, dar principiul principal era inca un pic obscur pentru mine. Insa Ferris a postat apoi un link catre un articol de John C. escorte site exitgrandstrand.com Hart, „Sphere tracing: a metode geometric for the antialiased ray tracing of superficies implicit” in 1996 si IQ s-a referit la doua articole, primul chiar mai vechi de John C. Hart ”, Ray Tracing Deterministic 3-D fractals “datand din 1989 si o reluare a principiului in” Capitolul 8. Per-Pixel Displacement Mapping with Distance Functions “din cartea GPU de la NVidia-Gems2 care dateaza din 2004. Cautand articolul original de John C. escorte mature alba www.camillar.com Hart, totul a devenit clar! Acest articol este o incercare de a va restabili o parte din principiul de baza al RayMarching + DistanceFields, sau mai explicit numit Sphere Tracing.
Principiul general
Nu voi detalia conceptul de raytracing, ci doar voi pune in legatura cu RayMarching. Pentru a face o redare, raytracing trebuie sa calculeze intersectia fasciculului de vedere cu un obiect din scena (pentru a extrage informatii din materialul de suprafata: culoare difuza, refractie, difractie etc.) Si, prin urmare, pentru a calcula formule a intersectiilor pentru fiecare obiect. escorte filmate www.snowflakesoft.com In cazul in care un obiect este modelat de un set de triunghiuri, este necesar sa se calculeze intersectia razei cu fiecare triunghi din scena pentru a determina ce obiect este vizat de fascicul. Calculul intersectiilor este foarte usor de implementat, formulele sunt stabilite, deci nu exista probleme, cu exceptia performantei,
Cu toate acestea, atunci cand se doreste reprezentarea suprafetelor implicite continue sau discontinue (numite si „suprafata de nivel” sau „izosurface”), este mult mai dificil sa se calculeze aceasta intersectie, deoarece ar necesita calcularea intersectiei dintre ecuatia suprafetei (Fig. 1) si calea unei raze. Acest calcul ar fi specific fiecarei ecuatii. forum escorte tm nimseye.com Astfel, daca principiul unei redari de tip raytracing se bazeaza pe intersectia razei turnate cu obiectele dintr-o scena, cum sa calculam eficient intersectia razei cu suprafete implicite?
Definitia unei suprafete implicite. Fig.1 (vezi Wikipedia)
Inainte de a discuta despre RayMarching de intersectie, facem un mic memento pentru a informa discutia noastra. In exemplul dat al unei sfere simple de raza r (originea 0): formula algebrica este:
Reprezentand ca distanta, sfera poate fi scrisa diferit:
Pentru a calcula intersectia cu sp1 o sfera de raza r1 folosind RayMarching cu o raza de vedere in spatele p1 (x1, y1, z1) si directia v1 (VX1, VY1, VZ1), vom pleca de la originea razei (x1, y1) , z1), calculati distanta pana la suprafata sferei, substituind urmatoarele:
Si cu urmatoarele proprietati pentru d1:
- Daca d1 = 0, atunci punctul (x1, y1, z1) este situat exact pe suprafata sferei
- Daca d1 <0, atunci punctul (x1, y1, z1) este o distanta | d1 | suprafata interioara. escorte lux craiova www.ueigroupdies.com
- Daca d1> 0, atunci punctul (x1, y1, z1) este o distanta | d1 | suprafata exterioara.
Daca d1> 0, punctul p1 este in afara sferei, este suficient sa se calculeze intersectia i1, trebuie sa trecem de la p1 la o distanta de d1 in directia v1: i1 = p1 + d1v1
In cazul unei singure sfere, calculul intersectiei folosind metoda RayMarching este destul de banal (si nu este chiar mai interesant decat rezolutia analitica), dar daca avem o forma mai complexa, nu putem determina intersectia dintr-o data. Ia exemplul unei a doua sfere care ar fi adaugata la scena anterioara:
Vrem sa stabilim cu ce sfera (p1, v1) se intersecteaza. Cu o singura sfera, am determinat aceasta intersectie miscandu-se usor p1 la d1. escorte oradea www.ridewear.com v1. Dar cu o alta sfera sp2, cum putem merge inainte fara a ne ciocni cu sp2? Daca trecem la d1 fara sa verificam si se constata ca sp2 este pe drum, vom omite sp2 si vom rata intersectia cu sp2.
Cu toate acestea, stim ca distanta dintre p1 si sp2 este:
Trucul este sa va deplasati catre v1 la distanta minima a tuturor obiectelor din scena. Deci, ne indreptam un pas catre intersectie, un pas care este egal cu minD:
Pana la minD> 0, inseamna ca inca nu am intersectat niciun obiect. escorte m ciuc qbar.us Putem generaliza apoi marsul razei prin:
Pentru a explica un pic mai mult progresul pe raza si interactiunile complexe cu obiectele, puteti descarca SphereTracing2DApp.zip, o aplicatie 2D dezvoltata in C # care va permite sa vizualizati progresul unei raze si numarul de pasi care trebuie sa efectuati inainte de a cadea pe o intersectie:
O captura de ecran de SphereTracing2DApp o aplicatie C # 2D pentru a intelege SphereTracing
Punctul alb din partea stanga jos este originea razei (camera foto). Linia rosie este directia razei. Primul cerc alb este distanta minima fata de origine cu toate obiectele din scena (aici, dreptunghiul albastru). publi 24 escorte bucuresti www.oupjournals.com Prin urmare, raza se poate deplasa catre acea sfera de distanta fara a intalni un singur obiect.
- escorte calimanesti
- escorte horezu
- escorte din romania
- escorte arges
- escorte mature braila
- escorte tg jiu
- escorte piatra neamt
- escorte sector5
- escorte 24
- escorte bucuredti
- escorte botosani
- top escorte cluj
- escorte alba iulia
- escorte harghita
- escorte bucurwsti
- escorte vl
- publi24 escorte
- escorte bucresti
- escorte sibiu
- escorte cuplu
Operatia este astfel repetata pana cand un obiect este intr-adevar indeplinit (sau minD <epsilon). Linia verde ne spune ce obiect a fost selectat din cel mai apropiat „camp de distanta”.
Intelegem acum ca calcularea intersectiei razei camerei cu o suprafata ISO este de fapt o aproximare incrementala a unei sfere de delimitare care se deplaseaza spre linia de intersectie a razei. escorte cluj www.sagerobbins.tc
Nota despre terminologie: SphereTracing, RayMarching, DistanceFields …
Dupa cum am vazut, algoritmul este sa se deplaseze pe o distanta dintr-o sfera de raza egala cu distanta minima dintre raza de origine si suprafata tuturor obiectelor din scena. escorte campina rentmehandyman.com Aceasta tehnica a fost numita Sphere Tracing de John.C.Hart. In timp ce se afla in demoscen, iq a introdus termenii campuri de distanta, dar, din pacate, a eclipsat termenul initial, care mi se pare mult mai explicit. escorte la domiciliu bucuresti qk3.secondcurve.net
Asadar, atunci cand vorbim de „Raymarching-Distancefields”, efectuam de fapt un Sphere Tracing!
Algoritmul general Sphere Tracing
Algoritmul general Sphere Tracing este urmatorul:
ro // r0: pozitia initiala a camerei v // v: Directia camerei d = 0 // d: distanta fata de obiectul p = ro // p: Pozitia urmatoare face camera (d = iso (r) / / Distanta la obiectul p = p + d * v; pasul ++;) while (d <epsilon && step <MAX_STEP)
Functia Iso returneaza distanta minima r de la suprafata tuturor obiectelor din scena. In cazul a doua sfere, functia anterioara ISO ar fi ca:
Daca nu este intalnita nicio intersectie, urmarirea sferei este oprita pe baza unei distante maxime zfar p sau prin limitarea numarului de pasi (MAX_STEP).
primitive
Sfera nu este desigur singurul element pe care il putem folosi pentru modelarea unei ISO de suprafata. Dupa cum am vazut, orice functie f (x, y, z) ar putea face trucul (cu conditia ca aceasta functie sa returneze valori care nu introduc prea multe discontinuitati la suprafata). escorte bv nageldesign.com Astfel, este destul de usor sa folosesti alte primitive (cutie, con, torus …) asa cum este descris in articolul de John C. escorte beasov muslimlife.dialysisvideo.com Hart.
Constructia unei scene complexe
Pentru informatii 4k, este destul de uimitor sa vezi complexitatea scenelor care pot fi realizate cu acest sistem. Am vorbit pana acum despre o singura sfera. Cum sa construim apoi scene mai complexe? Folosind principiul CSG (Constructive Solid Geometry) asa cum se arata in John. escorte mm www.laukien.info C.Hart, una dintre cele mai vechi tehnici in modelarea 3D: este suficient sa se efectueze „operatii booleane” pe formule ISO: intersectie, unire, complement … escorte satu mare susinc.net etc.
Astfel, doua obiecte, fiecare cu functiile respective ISO d1 si d2, pentru a calcula:
- Unirea a doua obiecte (D1 U D2), ia doar un minut de d1 si d2: izo (p) = min (d1 (p), d2 (p)).
- Intersectia a doua obiecte (D1 n D2), ia doar max de d1 si d2: izo (p) = max (d1 (p), d2 (p)).
- Inversul unui obiect (-d1), pur si simplu inversa iso semn iso (p) = -d1 (p). escorte slobozia forwardpass.net
- Scaderea a doua obiecte (d1-d2) fac doar o intersectie de d1 cu inversului d2: iso (p) = max (d1 (p), – d2 (p))
Traducerea poate fi efectuata chiar in interiorul formulei ISO. Pentru o sfera al carei centru c (cx, cy, cz) al razei r, distanta geometrica a p (x, y, z) este:
Ca scara, rotatie, rasucire … escorte din cluj smartseekerz.com etc.
- escorte tg mures
- escorte sighisoara
- escorte bihor
- shemale escorte
- public24 escorte bucuresti
- escorte sex galati
- escorte blaj
- escorte br
- escorte floresti cluj
- escorte militari residence
- Keyword
- escorte timisoara deplasari
- escorte timis
- escorte lorena
- escorte petrosani
- escorte vrancea
- publi24 escorte galati
- escorte bucurești publi
- escorte recomandate
- escorte europa
Exemplu de rasucire pe axa y:
In prezentarea sa NVScene8, iq ofera o lista completa de alte functii: modulo, amestecare, zgomot … escorte amsterdam ww1.indiangames.net etc. Mai multe tehnici folosesc de asemenea texturi3D pentru a aplica transformari mai bogate pe suprafetele iso (vezi Clouds Dreams sau Rudebox #main 2009).
Reflectie, lumina etc. . forum escorte character-ed.info .. AO.
Odata ce am iesit din bucla Sphere Tracing, daca d <epsilon, p se afla pe suprafata obiectului vizualizat. escorte targu jiu xd.f-score.com Pentru a calcula normalul la suprafata, folosim un gradient in p, calculam o aproximare a derivatului pe suprafata. Fie n (p), p si eps normale sunt suficient de mici:
De acolo, este destul de usor sa implementati reflectie, umbre, iluminare, un OSAO (obiect-Space-Ambient-Oclusion), mapare cu bump … acest lucru este limitat doar de resursele GPU!
optimizari
Dupa cum am vazut, numarul de pasi necesari pentru un SphereTracing poate fi important, mai ales atunci cand o raza este aproape de un obiect fara a o atinge (consultati aplicatia C # pentru a intelege fenomenul). In acest caz, raza marseaza in pasi mici, iar numarul de calcule poate deveni foarte mare (de mai multe ori calculul formulei originale ISO a unui singur punct). Exista unele modalitati de a evita acest lucru, cum ar fi utilizarea unei dimensiuni minime de pas.
Pentru aceasta, exista cateva sfaturi de urmat:
- Minimizati instructiuni precum if / then / else / treceti codul, subfunctiile . .. etc. daca nu le eliminati.
- Prin urmare, evitati o gestionare a scenei in shader (daca scene == 0 atunci aceasta functie ISO, altfel daca o alta functie ISO), dar gestionati-le in afara shader-ului (prin compilarea diferitor shader in GLSL, sau folosind diferite treceri / tehnici in HLSL).
- Construiti scene specifice umbrelor (una care accepta reflectia, alta care sustine reflectia ao +) si faza de initializare in linie si formatul ISO. Pentru acest ajutor de tehnici, cum ar fi „ templatization ”, cum ar fi codul de concatenare / substituire la initializarea shader-ului (care a fost de exemplu utilizat in Rudebox Alcatraz prin directivele # predefinite preprocesare, sau Muon baryon cu o concatenare / substituire in C).
- Faceti o etapa grosiera a precomputarii intr-o textura 3D pentru a accelera un SphereTracing grosier, apoi aplicati un SphereTracing pe fiecare pixel al ecranului atunci cand este necesar.
Urmator →?
Am vazut principiul Sphere Tracing sau RayMarching-DistanceFields, o tehnica la moda larga in ultimele informatii 4k. Aceasta tehnica are avantajul de a fi deosebit de simpla de implementat si incredibil de eficienta in redarea ei. Este un pariu sigur ca aceasta tehnica va fi inca in jurul anului 2010 si ca scenele devin din ce in ce mai complexe si bogate (cu, de exemplu, crearea de instrumente specifice pentru a ajuta modelarea scenelor CSG).
Exemplu de cod: SphereTracing2DApp. zip este o aplicatie C # 2D care arata algoritmul de marcare a razelor in actiune.
Acest articol a fost initial scris pentru site-ul www.demoscene.fr. Este o traducere imperfecta facuta rapid cu serviciul Google Translator si cu putine modificari minore. Spune-mi daca este ceva gresit explicat aici! 😉








