gpt4 book ai didi

ios - SCNBox 在每张脸上都有不同的颜色或纹理

转载 作者:IT王子 更新时间:2023-10-29 05:12:11 26 4
gpt4 key购买 nike

我是 iOS 开发的新手,我被难住了。我正在尝试使用 SceneKit 渲染一个立方体,每个面都有不同的颜色。

这是我目前所得到的:

func sceneSetup() {
// 1
let scene = SCNScene()

// 2
let BoxGeometry = SCNBox(width: 0.9, height: 0.9, length: 0.9, chamferRadius: 0.0)

BoxGeometry.firstMaterial?.diffuse.contents = UIColor.redColor()
let cube = SCNNode(geometry: BoxGeometry)
cube.position = SCNVector3(x: 0, y: 0, z: -1)
scene.rootNode.addChildNode(cube)

// 3
sceneView.scene = scene
sceneView.autoenablesDefaultLighting = true
sceneView.allowsCameraControl = true

但我希望每张脸都有不同的颜色。我该怎么做?

最佳答案

盒子由六个不同的元素组成(每边一个)。您可能还注意到,几何对象有一个属性用于第一个 Material ,还有一个属性用于一组 Material 。

具有多个元素和多种 Material 的对象将为每个元素选择递增的 Material (和包裹)。

例如4个元素和1个 Material

Element   1  2  3  4
Material 1 1 1 1

或 4 种元素和 2 种 Material

Element   1  2  3  4
Material 1 2 1 2 // note that they are repeating

例如4种元素7种 Material

Element   1  2  3  4
Material 1 2 3 4 // (5, 6, 7) is unused

在盒子的情况下,这意味着您可以使用六种 Material 的阵列,在盒子的每一侧都有一种独特的 Material 。我在 the sample code for one of the chapters 中有一个这样的例子对于我的 Scene Kit 书(在 Objective-C 中):

// Each side of the box has its own color
// --------------------------------------
// All have the same diffuse and ambient colors to show the
// effect of the ambient light, even with these materials.

SCNMaterial *greenMaterial = [SCNMaterial material];
greenMaterial.diffuse.contents = [NSColor greenColor];
greenMaterial.locksAmbientWithDiffuse = YES;

SCNMaterial *redMaterial = [SCNMaterial material];
redMaterial.diffuse.contents = [NSColor redColor];
redMaterial.locksAmbientWithDiffuse = YES;

SCNMaterial *blueMaterial = [SCNMaterial material];
blueMaterial.diffuse.contents = [NSColor blueColor];
blueMaterial.locksAmbientWithDiffuse = YES;

SCNMaterial *yellowMaterial = [SCNMaterial material];
yellowMaterial.diffuse.contents = [NSColor yellowColor];
yellowMaterial.locksAmbientWithDiffuse = YES;

SCNMaterial *purpleMaterial = [SCNMaterial material];
purpleMaterial.diffuse.contents = [NSColor purpleColor];
purpleMaterial.locksAmbientWithDiffuse = YES;

SCNMaterial *magentaMaterial = [SCNMaterial material];
magentaMaterial.diffuse.contents = [NSColor magentaColor];
magentaMaterial.locksAmbientWithDiffuse = YES;


box.materials = @[greenMaterial, redMaterial, blueMaterial,
yellowMaterial, purpleMaterial, magentaMaterial];

关于ios - SCNBox 在每张脸上都有不同的颜色或纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27509092/

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