将背景图像添加到 ScnScene
Posted
技术标签:
【中文标题】将背景图像添加到 ScnScene【英文标题】:Adding background image to ScnScene 【发布时间】:2015-11-06 19:27:41 【问题描述】:我有一个使用 SpriteKit 和发射器粒子 (sks) 的应用程序,我发现它不像场景套件的粒子 (scnp) 那样逼真。所以我希望将其合并到 SKScene 中,但我不确定这是否可能。所以我决定创建一个 SCNScene 和粒子(scnp)。但是我想添加一个背景图像,唯一的 3D 效果就是粒子。谁能帮我为我的 SCNScene 设置背景图像。传统上,我会像这样将它添加到 SKScene,但我无法在线找到 SceneKit 的任何帮助。
let backgroundNode = SKSpriteNode(imageNamed: "backgroundImage")
backgroundNode.size = view.frame.size
backgroundNode.position = CGPointMake(view.frame.size.width/2, view.frame.height/2)
self.addChild(backgroundNode)
提前谢谢你
【问题讨论】:
***.com/questions/24356070/… 看看。使用场景的背景和内容。 【参考方案1】:let scnScene = SCNScene()
scnScene.background.contents = UIImage(named: "earth.jpg")
【讨论】:
正是如此。谢谢! 谢谢。然而,图像被拉伸以填满屏幕。有什么办法让它保持它的外观?【参考方案2】:与@Kusal Shrestha 的答案基本相同,但我能够使用一堆不同的技术放置渐变背景。还是很简单有用的。
const CGFloat DIVISOR = 255.0f;
CIColor *bottomColor = [CIColor colorWithRed:(CGFloat)0xee / DIVISOR green:(CGFloat)0x78 / DIVISOR blue:(CGFloat)0x0f / DIVISOR alpha:1];
CIColor *topColor = [CIColor colorWithRed:0xff / DIVISOR green:0xfb / DIVISOR blue:0xcf / DIVISOR alpha:1];
SKTexture* textureGradient = [SKTexture textureWithVerticalGradientofSize:scnview.frame.size topColor:topColor bottomColor:bottomColor];
UIImage* uiimageGradient = [UIImage imageWithCGImage:textureGradient.CGImage];
self.background.contents = uiimageGradient;
其中“self”是 SCNScene 的子类。
此示例需要来自此处的纹理类别:https://gist.github.com/Tantas/7fc01803d6b559da48d6
【讨论】:
【参考方案3】:我尝试使用@Kusal Shresthas 的答案。但是,当我将图像文件放入scnassets
时,图像没有加载。但是当我将文件放入xcassets
时,它就起作用了。
scnScene.background.contents = UIImage(named: "earth")
【讨论】:
以上是关于将背景图像添加到 ScnScene的主要内容,如果未能解决你的问题,请参考以下文章