2015-03-25 3 views
5

voglio usare questa immagine come materiale per uno SCKSphere:Qual è il modo corretto per mappare le texture sul SCNSphere

enter image description here

posso fare questo nel modo seguente:

SCNSphere *sphereGeometry = [SCNSphere sphereWithRadius:5]; 
sphereGeometry.firstMaterial.diffuse.contents = [UIImage imageNamed:@"navball.png"]; 

Tuttavia , quando eseguo l'applicazione, l'immagine è stata distorta mentre è mappata sulla sfera e le linee che vanno dalla cima alla parte inferiore della sfera non sono più diritte:

enter image description here

Esiste un modo per garantire che il materiale sia mappato correttamente sulla sfera e le linee rimangano diritte?

Questa immagine sul basso a sinistra mostra quello che mi aspettavo, e l'immagine sulla destra mostra quello che sto vivendo - linee ondulate quando mi aspetterei loro di essere dritto:

enter image description here

+0

Come ti aspetti che le linee rimangano dritte? Potresti provare a simulare qualcosa in un editor di immagini per mostrarci? Perché è così che mi aspetto che un'immagine venga mappata a una sfera. –

+0

@ DavidRönnqvist Ho aggiornato il post per includere un'immagine ora. Sto parlando delle linee verticali e mentre mi aspetterei che apparissero curve a causa della prospettiva, non mi aspetterei che apparissero così "ondulate", per mancanza di una descrizione migliore – stonesam92

+0

Ah, ora vedo cosa tu significare. Credo che il _mapping_ sia tecnicamente corretto ma si vede ancora piegarsi nella sfera a bassa risoluzione lungo i bordi del triangolo. –

risposta

2

I risolto il problema aumentando il valore segmentCount della geometria della sfera, che aumenta il dettaglio della mesh poligonale utilizzata per il rendering della forma, facendola apparire "più liscia".

Per ulteriori dettagli, vedere SCNSphere documentation.

2

La mappatura della trama in tempo reale viene generalmente eseguita con le coordinate della trama "UV" che definiscono quale pixel dell'immagine è bloccato rispetto al vertice nella mesh. Tra questi pin, l'immagine viene semplicemente allungata linearmente. Per una superficie curva, questa approssimazione produrrà artefatti visibili se i poligoni piatti che si avvicinano alla superficie sono troppo grossolani. Ecco perché l'aumento dei segmenti (e quindi della levigatezza) nella sfera ha reso l'immagine un aspetto migliore.