gpt4 book ai didi

uiimage - Swift:设置 SCNMaterial 适用于 SCNBox 但不适用于从 Wings3D DAE 加载的 SCNGeometry

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

这段代码摘录(场景、相机、灯光等。从代码中截取)在 iOS 模拟器上以 Swift 运行:

    let boxNode = SCNNode()

// Create a box
boxNode.geometry = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0.1)
let numFaces = 6

scene.rootNode.addChildNode(boxNode)

// create and configure a material for each face
var materials: [SCNMaterial] = Array()

for i in 1...numFaces
{
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "texture")
materials += material
}

// set the material to the 3d object geometry
boxNode.geometry.materials = materials

它生成一个方框,每张脸都是方格图像。

SCNBox in App

尝试使用在 Wings3D 中创建的简单库存几何体进行相同的操作,将其保存到 DAE 中并加载到应用程序中,这会给我一个合适的形状,但面部没有阴影和图像:

    let boxNode = SCNNode()

// Load the geometry
let urlToColladaFile = NSBundle.mainBundle().URLForResource("Objects", withExtension:"dae")
let sceneSource = SCNSceneSource(URL:urlToColladaFile, options:nil)

boxNode.geometry = sceneSource.entryWithIdentifier("dodecahedron3-0", withClass:SCNGeometry.self) as SCNGeometry
let numFaces = 10

scene.rootNode.addChildNode(boxNode)

// create and configure a material for each face
var materials: [SCNMaterial] = Array()

for i in 1...numFaces
{
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "texture")
materials += material
}

// set the material to the 3d object geometry
boxNode.geometry.materials = materials

Dodecahedron from Wings3D

我错过了什么?

最佳答案

你的几何体有纹理坐标吗?您可以通过编程方式(通过检查是否存在具有 SCNGeometrySourceSemanticTexcoord 语义的源)或在 Xcode 内置的 SceneKit 编辑器中验证这一点。

另请注意,您不必为每个几何元素创建一种 Material 。如果它们都相同,只需构建一个由一种 Material 组成的阵列,它将用于整个几何体。

关于uiimage - Swift:设置 SCNMaterial 适用于 SCNBox 但不适用于从 Wings3D DAE 加载的 SCNGeometry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24710609/

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