2015-12-18 18 views
10

Tôi đã sau SCNNode:Scale SCNNode trong 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) 

Nếu tôi áp dụng:

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

nó dường như không có ảnh hưởng đến kích thước của hộp. Tôi đã kiểm tra điều này với boxNode.getBoundingBoxMin(&v1, max: &v2). Nó luôn giống nhau và xuất hiện giống nhau trên màn hình.

Tôi có thiếu gì đó không? Các tài liệu ngụ ý rằng việc thiết lập quy mô sẽ ảnh hưởng đến hình học của nút và do đó có kích thước khác nhau.

Cảm ơn. J.

Trả lời

5

Tôi vừa thử nghiệm ở sân chơi và nó hoạt động hoàn hảo cho tôi. Có lẽ máy ảnh của bạn đang phóng to để bù cho hộp nhỏ hơn?

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) 

Chuyển đổi dòng cuối cùng và bạn sẽ thấy nút chuyển đổi (10 x 10 x 10) lớn hơn quả cầu (đường kính 8) nhỏ hơn quả cầu. Dưới đây là sau khi chia tỷ lệ:

enter image description here

+0

Cảm ơn. Thú vị nhưng khi tôi chạy nó (thử nghiệm trên các máy khác nhau) phải mất một thời gian yên tĩnh để chạy (60 giây chắc chắn) và tôi nhận được hình ảnh đầu tiên (hiển thị ở trên). Nếu tôi bỏ ghi chú dòng tôi chỉ nhận được một hộp màu trắng. Nếu tôi chạy nó trong một Playground iOS tôi nhận được một cái gì đó trông giống như một ngoại lệ GL mở. Tôi đang sử dụng Xcode 7.2, OS/X 10.11.2 –

+0

Vâng, SceneKit Sân chơi có vấn đề về hiệu suất nghiêm trọng trên một số máy. Tôi chạy trong một sân chơi OS X. Nộp một Radar (bugreport.apple.com) với một hồ sơ hệ thống (control-option-command-shift-period) và đính kèm sân chơi. Bạn đang thiết lập máy ảnh một cách rõ ràng hay chỉ sử dụng máy ảnh SceneView mặc định? Điều gì sẽ xảy ra nếu bạn đặt hai nút trong cảnh của bạn và mở rộng chỉ một trong số chúng? –

+0

Tôi đã chạy ứng dụng này trong ứng dụng iOS và hoạt động như mong đợi. Đối với một số lý do Sân chơi không hiển thị chính xác. Tôi ước gì tôi đã làm điều đó trước đó :). Tôi phải có một tập tin DAE xấu vì tôi có thể mở rộng hình khối và hình cầu nhưng không phải là mô hình mà tôi đang nhập. Thx lần nữa. –

Các vấn đề liên quan