2015-03-25 8 views
5

Chcę używać tego obrazu jako materiał dla SCKSphere:Co to jest poprawny sposób do mapowania tekstur na SCNSphere

enter image description here

mogę to zrobić w następujący sposób:

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

jednak , po uruchomieniu aplikacji obraz został zniekształcony, ponieważ jest odwzorowany na kuli, a linie biegnące od góry do dołu kuli nie są już proste:

enter image description here

Czy istnieje sposób, aby upewnić się, że materiał jest prawidłowo odwzorowany na kuli, a linie pozostają proste?

Ten obraz na dole po lewej pokazuje, czego się spodziewałem, a obraz po prawej pokazuje co mam przeżywa - faliste linie, kiedy będę się spodziewać, że będzie prosto:

enter image description here

+0

Jak można się spodziewać, że linie pozostają proste? Czy mógłbyś spróbować sfałszować coś w edytorze obrazów, żeby nam pokazać? Ponieważ w ten sposób spodziewałbym się, że obraz zostanie zmapowany do sfery. –

+0

@ DavidRönnqvist Zaktualizowałem post, aby dodać obrazek. Mówię o pionowych liniach i choć spodziewałbym się, że będą zakrzywione ze względu na perspektywę, nie oczekiwałbym, że będą wyglądać tak "kędzierzawo", z braku lepszego opisu. – stonesam92

+0

Ach, teraz widzę, co ty oznaczać. Wierzę, że _mapping_ jest technicznie poprawny, ale nadal widzisz zgięcie w sferze niskiej rozdzielczości wzdłuż krawędzi trójkąta. –

Odpowiedz

2

I rozwiązał problem, podnosząc wartość geometrii kuli o wartość segmentCount, która zwiększa szczegół siatki wielokąta używanej do renderowania kształtu, co sprawia, że ​​wydaje się "gładszy".

Aby uzyskać więcej informacji, patrz SCNSphere documentation.

2

Mapowanie tekstur w czasie rzeczywistym generalnie odbywa się za pomocą współrzędnych teksturowych "UV" definiujących piksel w obrazie, do którego wierzchołka w siatce. Pomiędzy tymi pinezkami obraz jest po prostu rozciągnięty liniowo. W przypadku zakrzywionej powierzchni to przybliżenie spowoduje widoczne artefakty, jeśli płaskie wielokąty zbliżone do powierzchni są zbyt grube. Dlatego zwiększenie segmentów (a tym samym płynności) w sferze sprawiło, że obraz wygląda lepiej.