ARKIT ARCamera zFar
Кто-нибудь знает, как сменить zFar или ARKIT ARCamera? Или получить текущее значение этого.
У меня очень большая модель, которая обрезается. Я думаю. В блендере у меня была та же проблема, и я исправил ее, установив значение Frustum.
Я могу создать матрицу проекции для каждого кадра камеры, но не могу установить ее.
func session(_ session: ARSession, cameraDidChangeTrackingState camera: ARCamera) {
textManager.showTrackingQualityInfo(for: camera.trackingState, autoHide: true)
let projectionMatrix: matrix_float4x4 = camera.projectionMatrix(withViewportSize: camera.viewport.size,
orientation: .portrait,
zNear: 0.1,
zFar: 5000)
//ERROR - readonly
camera.projectionMatrix = matrix_float4x4
...
1 ответ
ARCamera
не имеет ничего общего с рендерингом вашего виртуального 3D-контента. Как говорится в его документации, это просто "информация о положении камеры и характеристиках изображения для захваченного видеокадра в сеансе AR". То есть он предоставляет данные, которые помогут вам настроить любую технологию, которую вы используете для рендеринга (будь то SceneKit, пользовательский рендер, использующий Metal и т. Д.).
camera.projectionMatrix(...)
Метод является частью этой роли по предоставлению информации - он использует то, что ARKit знает об ориентации камеры вашего физического устройства, а также предоставленные вами значения zNear и zFar, для построения матрицы, которую вы можете использовать в вашем рендерере.
Если вы используете SceneKit, вы можете передать эту матрицу SCNCamera
, (Вам, вероятно, нужно конвертировать из simd_float4x4
в SCNMatrix4
.) Если вы используете какой-то другой рендер, вы можете использовать эту матрицу там.