2015-12-18 8 views
10

Ich habe folgendes SCNNode:Maßstab SCNNode in SceneKit

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) 

Wenn ich anwenden:

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

es keine Auswirkungen auf die Größe der Box zu haben scheint. Ich habe das mit boxNode.getBoundingBoxMin(&v1, max: &v2) überprüft. Es ist immer das Gleiche und erscheint auf dem Bildschirm gleich.

Fehle ich etwas? Die Dokumentation legt nahe, dass das Festlegen der Skalierung sich auf die Geometrie des Knotens auswirken und daher eine andere Größe haben sollte.

Danke. J.

Antwort

5

Ich habe gerade auf einem Spielplatz getestet und es funktionierte perfekt für mich. Vielleicht zoomt Ihre Kamera, um die kleinere Box zu kompensieren?

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) 

Uncomment die letzte Zeile, und Sie werden die Box (10 x 10 x 10) von Schalterschalt größer ist als die Kugel (Durchmesser von 8) auf, die kleiner als die Kugel sehen. Hier ist es nach der Skalierung:

enter image description here

+0

Dank. Interessant, aber wenn ich das teste (getestet auf verschiedenen Maschinen), dauert es eine Weile, um zu laufen (60 sec. Sicher) und ich bekomme das erste Bild (siehe oben). Wenn ich die Zeile auskommentiere, bekomme ich nur eine weiße Box. Wenn ich es in einem iOS-Playground starte, bekomme ich etwas, das wie eine offene GL-Ausnahme aussieht. Ich benutze Xcode 7.2, OS/X 10.11.2 –

+0

Yeah, SceneKit Playgrounds haben schwerwiegende Leistungsprobleme auf einigen Computern. Ich lief auf einem OS X Spielplatz. Schreiben Sie ein Radar (bugreport.apple.com) mit einem Systemprofil (control-option-command-shift-period) und hängen Sie den Spielplatz an. Richten Sie eine Kamera explizit ein oder verwenden Sie einfach die Standard-SceneView-Kamera? Was passiert, wenn Sie zwei Knoten in Ihre Szene einfügen und nur einen skalieren? –

+0

Ich habe dies in einer iOS App ausgeführt und es hat wie erwartet funktioniert. Aus irgendeinem Grund werden Spielplätze es nicht richtig rendern. Ich wünschte, ich hätte das früher machen müssen :). Ich muss eine schlechte DAE-Datei haben, weil ich Würfel und Kugeln skalieren kann, aber kein Modell, das ich importiere. Danke nochmal. –

Verwandte Themen