将纹理映射到SCNSphere的正确方法是什么

时间:2015-03-25 22:51:20

标签: ios objective-c scenekit

我想将此图像用作SCKSphere的材料:

enter image description here

我可以这样做:

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

然而,当我运行应用程序时,图像在映射到球体时已经失真,并且从球体的顶部到底部的线条不再是直的:

enter image description here

有没有办法确保材料正确地映射到球体上并且线条保持笔直?

左下方的图像显示了我的期望,右侧的图像显示了我遇到的情况 - 当我希望它们是直的时,波浪线:

enter image description here

2 个答案:

答案 0 :(得分:3)

我通过增加球体几何体的segmentCount值来解决这个问题,这会增加用于渲染形状的多边形网格的细节,使其显得“更平滑”。

有关详细信息,请参阅SCNSphere documentation

答案 1 :(得分:2)

实时纹理映射通常使用' UV'纹理坐标,用于定义图像中的哪个像素固定到网格中的哪个顶点。在这些引脚之间,图像只是线性拉伸。对于曲面,如果近似于表面的平面多边形太粗糙,则该近似将导致可见的伪影。这就是为什么增加球体中的线段(以及因此平滑度)使图像看起来更好。