Scale SCNNode в SceneKit

У меня есть следующий SCNNode:

let box = SCNBox(width: 10.0, height: 10.0, length: 10.0, chamferRadius: 0)
let boxNode = SCNNode(geometry: box)
boxNode.position = SCNVector3(x: 0, y: 0, z: 0)

Если я применим:

boxNode.scale = SCNVector3(x: 0.5, y: 0.5, z: 0.5)

похоже, не влияет на размер окна. Я проверил это с помощью boxNode.getBoundingBoxMin(&v1, max: &v2). Он всегда один и тот же и отображается на экране.

Я что-то упустил? Документы подразумевают, что установка масштаба должна влиять на геометрию node и, следовательно, быть другого размера.

Спасибо. J.

Ответ 1

Я только что испытал на детской площадке, и он отлично работал у меня. Возможно, ваша камера масштабируется, чтобы компенсировать меньший размер?

import SceneKit
import SpriteKit
import XCPlayground

let sceneView = SCNView(frame: CGRect(x: 0, y: 0, width: 800, height: 600))

XCPlaygroundPage.currentPage.liveView = sceneView

var scene = SCNScene()
sceneView.scene = scene
sceneView.backgroundColor = SKColor.greenColor()
sceneView.debugOptions = .ShowWireframe

// default lighting
sceneView.autoenablesDefaultLighting = true

// a camera
var cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3(x: 15, y: 15, z: 30)
scene.rootNode.addChildNode(cameraNode)

let box = SCNBox(width: 10.0, height: 10.0, length: 10.0, chamferRadius: 0)
let boxNode = SCNNode(geometry: box)
boxNode.position = SCNVector3(x: 0, y: 0, z: 0)
scene.rootNode.addChildNode(boxNode)
let centerConstraint = SCNLookAtConstraint(target: boxNode)
cameraNode.constraints = [centerConstraint]

let sphere = SCNSphere(radius: 4)
let sphereNode = SCNNode(geometry: sphere)
sphereNode.position = SCNVector3(x:15, y:0, z:0)
scene.rootNode.addChildNode(sphereNode)

//boxNode.scale = SCNVector3(x: 0.5, y: 0.5, z: 0.5)

Раскомментируйте последнюю строку, и вы увидите, что переключатель переключателя (10 x 10 x 10) больше, чем сфера (диаметр 8), чтобы быть меньше шара. Вот он после масштабирования:

введите описание изображения здесь