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