2016-01-08 20 views
5

Tôi đã nhập tệp OBJ Wavefront từ URL và bây giờ tôi muốn chèn nó vào cảnh của mình (SceneKit) trên ứng dụng iOS 9 của tôi (trong Swift). Những gì tôi đã làm cho đến thời điểm này là:Làm cách nào để chuyển đổi tệp OBJ Wavefront thành SCNNode bằng Mô hình I/O

let asset = MDLAsset(URL: localFileUrl) 
print("count = \(asset.count)") // 1 

Bất kỳ trợ giúp nào chuyển đổi mã này thành SCNNode sẽ được đánh giá cao. Theo tài liệu của Apple:

Model I/O can share data buffers with the MetalKit, GLKit, and SceneKit frameworks to help you load, process, and render 3D assets efficiently.

Nhưng tôi không biết cách lấy bộ đệm từ MDLAsset vào mã SCNNode.

Trả lời

7

Biến điều này khá dễ dàng vì nhiều lớp ModelIO đã được kết nối. Tôi đã làm import ModelIO cho phép tôi truy cập vào tất cả các lớp ModelIO và tương tự như vậy import SceneKit đã cho tôi các lớp SceneKit, nhưng, tôi đã thiếu import SceneKit.ModelIO để mang lại hỗ trợ SceneKit cho ModelIO.

let url = NSURL(string: "url-to-your-obj-here") 
let asset = MDLAsset(URL: url!) 
let object = asset.objectAtIndex(0) 
let node = SCNNode(MDLObject: object) 

Dễ dàng như vậy ...

+4

lưu ý rằng '+ [SCNScene sceneWithURL: tùy chọn: lỗi:]' cũng sẽ làm việc. – mnuages

+2

Cũng lưu ý rằng có một số chi phí để phân tích/nhập OBJ. Nếu đây là tài sản mà bạn đang giao hàng trong/với ứng dụng của mình, hãy xem xét chuyển đổi thành '.scn' trong Xcode (hoặc bằng các công cụ của riêng bạn chạy trên Mac, trước tiên sử dụng Mẫu I/O). – rickster

+0

Cảm ơn @mnuages – guru

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