【问题标题】:iOS - Adding a 2D image to a scenekit gameiOS - 将 2D 图像添加到场景工具包游戏中
【发布时间】:2017-03-31 09:19:03
【问题描述】:

您好,我这辈子都不知道如何使用 scenekit 在场景中添加 2D 图像,这有可能吗?我想要完成的是在 2D 背景图像上放置 3D 飞行飞机,但背景图像无法覆盖整个屏幕。感谢任何可以提供帮助的人

【问题讨论】:

  • 你是在 swift 还是 Objective c 工作?你试过什么?什么有效,什么无效?
  • 我正在快速工作,我尝试使用 uiimage 并尝试制作 skspritenode,但我找不到将其添加到场景中的方法
  • 你试过搜索堆栈溢出吗?这可能会有所帮助...stackoverflow.com/a/33900358/3033386
  • 是的,我有并且感谢您的链接,但他们使用的是 SpriteKit 框架我使用的是 SceneKit 框架
  • 你试过苹果的场景套件框架参考吗? developer.apple.com/library/prerelease/ios/documentation/…

标签: ios scenekit


【解决方案1】:

上面其他人都说了很多好建议。

让我总结一下每个解决方案的不同场景:

  • 使用scnScene.background:最简单,但全屏和静态。不能在场景的较小区域内显示,也不能自定义变换。

  • 使用scnScene.overlaySKScene 显示2D SKScene 并添加图像精灵。这可能适合您的情况。如果您想要 static 但具有可配置的转换,这是一个不错的选择。值得注意的是,Apple 推荐 overlaySKScene 在您的 3D 场景中创建 HUD。

    但是,如果您希望 2D 内容跟踪 3D 运动,则需要每帧进行一些从 3D 空间到 2D 空间的坐标转换。坏消息是这项工作是由 CPU 完成的,这会增加性能拖累。 (相信我,这也让我很沮丧!)

  • 使用SCNNodeSCNPlane 几何并设置diffuse.content 和图像;将SCNBillBoardConstraint 添加到节点以确保它始终面向摄像头。

    最灵活。但是,如果您的相机不是正交相机,则图片会随着相机视野的变化而缩放,这看起来不是 2D,而是一个悬挂的 3D 广告牌。

【讨论】:

    【解决方案2】:

    SceneKit 和 SpriteKit 配合得非常好。

    将背景 2D 图像实现为具有 SCNPlane 几何的 SceneKit 节点,使用您的图像作为平面的材质。如果您想变得更高级,请使用完整的实时 SpriteKit 场景作为 SCNPlane 的材质。将该节点放置在相机平截头体的远端,您的 3D 飞机在其前面。

    您还可以考虑提供立方体贴图(天空盒)作为场景的背景。见SCNScene.background

    【讨论】:

      【解决方案3】:

      您可以使用 SCNScene 上的background 属性来设置背景图片。

      scnScene.background.contents = UIImage(named: "myImage")
      

      Contents

      您可以使用以下任何方法为此属性设置值 类型:

      一种颜色(NSColor/UIColor 或 CGColorRef),指定一个常量颜色 穿过材料表面

      一个图像(NSImage/UIImage 或 CGImageRef),指定一个纹理为 映射到材质表面

      指定图像文件位置的 NSString 或 NSURL 对象

      六个图像的数组 (NSArray),指定立方体贴图的面

      一个核心动画层(CALayer)

      纹理(SKTexture、MDLTexture、MTLTexture 或 GLKTextureInfo)

      Sprite Kit 场景 (SKScene)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-05
        • 2018-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多