Сохранение моментального снимка ARSCNView в методе didUpdateFrame заставляет камеру замораживать - github


1

Я создаю видео в ARKit во время сеанса. Когда я нажимаю кнопку записи, камера замерзает. Я написал код в делегате didUpdateFrame, который вызывает проблему. Там я сохраняю scene.snapshot в массиве. Также, когда я создаю видео с этих изображений, приложение вылетает со следующим сообщением в отладчике: Сообщение от отладчика: завершено из-за проблемы с памятью

    -(void)session:(ARSession *)session didUpdateFrame:(ARFrame *)frame
    {
     if (_recordButton.state  == UIControlStateSelected)
     {
      currentState = Recording;
     [self saveImage];
    }
    else if (previousState == Recording)
    {
    NSLog(@"Stop recording");
    currentState = NotRecording;
    recordTime = NULL;
    self.nextButton.enabled=YES;
   }
//update recording state per frame update
previousState = currentState;

}

    -(void)saveImage 
    {
      UIImage *image = self.sceneView.snapshot;
      [self.bufferArray addObject:image];
      image = nil;
   }
Источник
  •  15
  •  1
  • 9 мар 2020 2020-03-09 06:39:22

1 ответ

2

Не используйте ARSCNView.snapshot с реализацией ARSessionDelegate.didUpdateFrame. У меня была такая же проблема, и решение не выполняло ARSessionDelegate.didUpdateFrame. Я использовал CADisplayLink с ARSCNView.snapshot, и он работает хорошо. Я также попытался использовать ARFrame.capturedImage, но он вообще не содержит объектов AR. ARSCNView.snapshot содержит их.

  • 9 мар 2020 2020-03-09 06:39:23