2017-06-24 25 views
6

Tôi đang cố gắng để hiểu sự khác biệt giữa các yếu tố khác nhau được giới thiệu vào ARKIT và họ có thể tương đương trong SceneKit:ARKIT vs SceneKit phối

  • SCNNode.simdTransform vs SCNNode.transform. Trong ARKit, có vẻ như mọi người sử dụng SCNNode.simdTransform thay vì SCNNode.transform. Chúng khác nhau như thế nào? simdTransform dường như sử dụng thứ tự cột lớn, trong khi biến đổi (SCNMatrix4) là hàng lớn. Làm thế nào để chuyển đổi một cái khác? Chỉ cần chuyển đổi? Tôi đã ấn tượng rằng việc theo dõi không hoạt động cũng như nếu tôi sử dụng transform thay vì simdTransform. Đó là dự kiến ​​hay chỉ là một ấn tượng? Nếu tôi đặt một thuộc tính, điều gì sẽ xảy ra nếu tôi đặt một thuộc tính khác?

  • ARFrame.camera vs Scene.pointOfView: Nhìn vào biến đổi của họ, họ dường như có một chút khác nhau:

.

// ARFrame.camera.transform (matrix_float4x4) 
-0.01 0.99 -0.11 0.02 
-0.99 0.00 0.11 0.06 
0.10 0.11 0.98 0.0 
0.0 0.0 0.0 1.0 

// sceneView.pointOfView.transform (SCNMatrix4) 
// or sceneView.pointOfView.simdTransform^T (matrix_float4x4) 
0.99 0  0.11 0 
0.01 0.99 -0.12 0 
-0.11 0.11 0.98 0 
0.03 0.6 0.0 0.99 

Chúng có cùng một vòng xoay không?

+1

_ "Tôi đã ấn tượng rằng việc theo dõi không hoạt động cũng như nếu tôi sử dụng chuyển đổi thay vì simdTransform. Đó là dự kiến ​​hoặc chỉ là một ấn tượng?" _ ;-) Chỉ có bạn mới có thể biết được đó chỉ là ấn tượng của bạn hoặc bạn có bằng chứng khó ví dụ bằng cách nhìn thấy các bản ghi Xcode cho biết _ [Kỹ thuật] Hiệu suất theo dõi thế giới đang bị ảnh hưởng bởi các ràng buộc tài nguyên_ Hãy cho chúng tôi biết nếu nó là thứ hai, điều đó sẽ rất thú vị. – PDK

Trả lời

4

Cả SceneKit và ARKIT bao gồm những biểu tượng được xác định như các loại SIMD. Kể từ khi ARKit nhập SceneKit, các biểu tượng SIMD được xác định trong SceneKit đều có thể truy cập được cả hai. Các loại SIMD cho phép tính toán song song, vì vậy việc sử dụng chúng có thể cải thiện hiệu suất của logic cập nhật của ứng dụng. Như bạn đã tìm thấy, không phải lúc nào cũng có cách thuận tiện để chuyển đổi giữa loại SIMD và kiểu cũ hơn của SceneKit hoặc Core Graphics, vì vậy bạn sẽ thường nhận được mã sạch hơn bằng cách sử dụng SIMD một cách nhất quán nếu có thể.

Đang cập nhật bất cứ tài sản có ảnh hưởng đến sự biến đổi của một nút cũng cập nhật thay đổi các thuộc tính khác của nó. Điều này cũng áp dụng cho các tọa độ địa phương và thế giới.

Thuộc tính camera của ARFrame mô tả máy ảnh phần cứng của thiết bị chứ không phải máy ảnh ảo được sử dụng để hiển thị cảnh. Trong khi tôi mong chờ một sự tương ứng gần, tôi đoán là bạn đang bỏ phiếu sơ thẩm ARCamera trước dụ SCNCamera đã được cập nhật trong thời gian làm cho vòng lặp. Nếu bạn có thể, tôi khuyên bạn nên thúc đẩy những cập nhật đó từ các phương thức đại biểu thích hợp, vì bạn sẽ biết dữ liệu liên quan được cập nhật.

+1

Tóm tắt tốt. Xem thêm [this answer] (https://stackoverflow.com/a/45182794/957768) để biết thêm về vị trí 'ARAnchor' so với' SCNNode'. – rickster

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