我想将此图像用作SCKSphere的材料:
我可以这样做:
SCNSphere *sphereGeometry = [SCNSphere sphereWithRadius:5];
sphereGeometry.firstMaterial.diffuse.contents = [UIImage imageNamed:@"navball.png"];
然而,当我运行应用程序时,图像在映射到球体时已经失真,并且从球体的顶部到底部的线条不再是直的:
有没有办法确保材料正确地映射到球体上并且线条保持笔直?
左下方的图像显示了我的期望,右侧的图像显示了我遇到的情况 - 当我希望它们是直的时,波浪线:
答案 0 :(得分:3)
我通过增加球体几何体的segmentCount
值来解决这个问题,这会增加用于渲染形状的多边形网格的细节,使其显得“更平滑”。
有关详细信息,请参阅SCNSphere documentation。
答案 1 :(得分:2)
实时纹理映射通常使用' UV'纹理坐标,用于定义图像中的哪个像素固定到网格中的哪个顶点。在这些引脚之间,图像只是线性拉伸。对于曲面,如果近似于表面的平面多边形太粗糙,则该近似将导致可见的伪影。这就是为什么增加球体中的线段(以及因此平滑度)使图像看起来更好。