gpt4 book ai didi

ios - 如何以编程方式在 SceneKit 中围绕立方体包装 png 纹理

转载 作者:搜寻专家 更新时间:2023-10-31 22:35:45 25 4
gpt4 key购买 nike

我是 SceneKit 的新手...尝试让一些基本的东西工作但到目前为止没有太大成功。出于某种原因,当我尝试将 png 纹理应用于 CNBox 时,我最终只得到黑色。这是我在 viewDidLoad 中的简单代码片段:

    let sceneView = (view as SCNView)

let scene = SCNScene()

let boxGeometry = SCNBox(width: 10.0, height: 10.0, length: 10.0, chamferRadius: 1.0)

let mat = SCNMaterial()
mat.locksAmbientWithDiffuse = true
mat.diffuse.contents = ["sofb.png","sofb.png","sofb.png","sofb.png","sofb.png", "sofb.png"]
mat.specular.contents = UIColor.whiteColor()
boxGeometry.firstMaterial = mat

let boxNode = SCNNode(geometry: boxGeometry)

scene.rootNode.addChildNode(boxNode)

sceneView.scene = scene

sceneView.autoenablesDefaultLighting = true
sceneView.allowsCameraControl = true

它最终看起来像是黑色背景下黑色立方体反射的白色光源。我错过了什么?感谢所有回复

最佳答案

如果您有不同的图像,您可以像这样从每个图像构建一个不同的 SCNMaterial 对象:

let material_L = SCNMaterial()
material_L.diffuse.contents = UIImage(named: "CapL")

在这里,CapL 指的是已存储在项目的 Assets.xcassets 文件夹中的 .png 文件。构建 6 个这样的对象后,将它们传递给 boxNode,如下所示:

boxGeometry.materials = [material_L, material_green_r, material_K, material_purple_r, material_g, material_j]

请注意,“boxGeometry”最好命名为“box”或“cube”。此外,最好在项目的新类中完成这项工作,其构造如下:

class BoxScene: SCNScene {

然后您将在 viewController 的 viewDidLoad 方法中使用现代 Swift 调用它,如下所示:

let scnView = self.view as! SCNView
scnView.scene = BoxScene()

(要使 let 语句起作用,转到 Main.storyboard -> View Controller Scene -> View Controller -> View -> Identity icon 然后在 Custom Class 下,将其从 UIView 更改为 SCNView。否则,您会收到错误消息消息,例如:

无法将“UIView”类型的值转换为“SCNView”

关于ios - 如何以编程方式在 SceneKit 中围绕立方体包装 png 纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com