Sto lavorando ad alcune grafiche di rendering, ho un modello come questo, sto usando strumenti di tela Java e finestre, altrimenti scritto in modo indipendente.Poligoni rettangolari di ordinamento della profondità, tutte le parti degli assi del modello che si affacciano
Tutte le parti sono o poligoni rettangolari o line-segmenti. Come accade in questo modello, tutte le parti poligonali sono allineate con i piani x, yo z, l'origine xy che corre dall'angolo anteriore del modello nell'immagine. (è possibile distinguere la suddivisione rettangolare dei lati osservando da vicino il modo in cui appaiono rattoppati insieme, ma eliminare questo artefatto non viene affrontato qui)
Non ho trovato una tecnica per ottenere una profondità pulita -sorting, questo è basato sul vertice più lontano. Ho provato alcune tecniche ingenue e hanno tutti vari artefatti. Ho notato il partizionamento dello spazio binario e l'algoritmo di Newell senza scavare, ma ho la sensazione che ci dovrebbe essere un modo più semplice in questo caso, in particolare con la condizione che tutte le parti siano allineate a destra e parallele agli assi. Eventuali suggerimenti su modi su di esso apprezzato
Aggiornamento
mi è venuta in mente questa idea che potrebbe avere qualcosa in corso per questo
Data la piana di fronte a vincolo, ci sono 6 possibili relazioni, (piano xx), (piano xy), (piano xz), (piano yy), (piano yz) e (piano zz).
È facile ordinare due poligoni se condividono lo stesso piano, le altre 3 combinazioni sono mostrate sopra (xy su xz), (xy su yz) e (xz su yz), con diverso ordine di profondità che può si verificano.
Sto pensando la mia condizione di confronto potrebbe andare qualcosa come questo, dato P1 = polygon1 e P2 = polygon2
if (P1 == xy_plane) return min(P1.z, P2.z)
if (P2 == xy_plane) return min(P2.z, P1.z)
if (P1 == xz_plane) return min(P1.y, P2.y)
if (P2 == xz_plane) return min(P2.y, P1.y)
P1 o P2 devono trovarsi in uno dei primi due piani, quindi per dichiarazione problema dovrebbe essere sufficiente, necessario confermare se questo approccio funziona
Update2
ho avuto qualche progresso lungo l'idea di cui sopra, e sembra che l'ordinamento sulla corrispondenza poligono sta facendo qualcosa di inte riposando, ha funzionato parzialmente, direi che sembra facile, ma ... beh, spero che tu pensi che sia e possa dirmi cosa devo fare.
Lungo la linea sopra, prima di tutto contrariamente a quanto suppongo, i poligoni nello stesso piano non sono banali, possono avere diverse configurazioni mostrate qui; parallelo e non condividere un altro asse come nei primi due, o parallelo e sullo stesso piano. Questo a volte significa che a loro non importa quali assi scelgono (per un confronto a coppie), (e parla di un lato più profondo di questa ricerca).
Impostazione di una serie di istruzioni condizionali a prescindere, qualcosa sulla falsariga del suggerimento di cui sopra, che aveva un sapore di forza bruta, con una nutrita serie di "if-else", penso che alla fine ho trovato un corretto confronto tra poligoni a coppie e poligoni, in modo che in questa nozione si possa dire certamente se il soggetto o l'altro è il più vicino.
Lavorando su un solo lato del modello qui, è riuscito a produrre qualcosa che sembra abbastanza convincente. Il processo in generale si sente vicino a bloccarsi, ma cercare di liberarsi di qualche disallineamento finale in qualche modo provocatorio, mentre le vecchie trivias fisiche che fissano una parte dall'altra si rompono sempre.
Vuoi ordinare in relazione alla direzione della telecamera o solo a uno dei tre assi? – MooseBoys
Considera 3 triangoli, in cui l'angolo superiore di ognuno è sopra la sezione larga di uno degli altri. Facile da visualizzare, ma solo un buffer di profondità può risolverlo. Detto questo, potrebbe esserci solo una soluzione per il tuo caso limitato. – usr2564301
Mi piacerebbe relativo alla fotocamera, come nella vista sopra, sto usando un punto focale A, spesso l'origine, e una fotocamera mobile, vettore C.Stavo pensando, ma non sono arrivato a un metodo, che se la telecamera è su uno degli otto xyz ottanti, gli aerei avrebbero una preferenza lungo ciascuno degli assi + ive o -ive, l'ordinamento su uno di questi spesso dà risultati ragionevoli, ma non completamente puliti, ancora – area5one