【问题标题】:What is the correct way to map textures onto SCNSphere将纹理映射到 SCNSphere 的正确方法是什么
【发布时间】:2015-05-29 20:26:48
【问题描述】:

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

我可以这样做:

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

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

有什么方法可以确保材质正确映射到球体上并且线条保持笔直?

左下角的这张图显示了我的预期,右图显示了我的体验 - 我认为波浪线是直的:

【问题讨论】:

  • 您如何期望线条保持笔直?你能试着在图像编辑器中伪造一些东西给我们看吗?因为这就是我希望将图像映射到球体的方式。
  • @DavidRönnqvist 我已经更新了帖子以包含图像。我说的是垂直线,虽然我希望它们由于视角而显得弯曲,但我不希望它们看起来如此“弯曲”,因为需要更好的描述
  • 啊,现在我明白你的意思了。我相信 映射 在技术上是正确的,但您仍然可以看到沿着三角形边缘在低分辨率球体中弯曲。

标签: ios objective-c scenekit


【解决方案1】:

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

更多详情请见SCNSphere documentation

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      相关资源
      最近更新 更多