使用 ARVideoKit 录制视频时粒子加速

Particles Speed Up When Recording A Video Using ARVideoKit

我们有一个使用 ARVideoKit pod (link). Inside our scene we have a fire particle. Fire is playing at a slow speed. However, when you start recording a video the fire particle speeds up. I can't figure out why the fire particle is speeding up. Please see the video (here) 录制视频的 ARKit & SceneKit 应用程序来查看问题。

这是一个示例项目,您可以使用它来测试问题:Project

如果有人能解释为什么会这样,我将不胜感激。

编辑 1:下面是我的 ViewController 代码

import UIKit
import ARKit
import SceneKit
import ARVideoKit

class ViewController: UIViewController, ARSCNViewDelegate {
  @IBOutlet var sceneView: ARSCNView!
  @IBOutlet weak var photoButton: UIButton!
  @IBOutlet weak var videoButton: UIButton!
  @IBOutlet weak var takeVideoButtonPressedLabel: UILabel!

  // ARVideoKit Variables
  var recorder  : RecordAR?
  var takenImage: UIImage?
  var takenVideoAtURL : URL?
  let recordingQueue = DispatchQueue(label: "recordingThread", attributes: .concurrent)

  var arTrackingConfig = ARWorldTrackingConfiguration()

  override func viewDidLoad() {
    super.viewDidLoad()
    sceneView.delegate = self
    sceneView.scene = SCNScene(named: "art.scnassets/fire.scn")!
    self.resetTracking()
  }

  func resetTracking() {
    arTrackingConfig = ARWorldTrackingConfiguration()
    arTrackingConfig.isLightEstimationEnabled = true
    sceneView.session.run(arTrackingConfig, options: [.resetTracking,
                                                      .removeExistingAnchors])
  }
}

// MARK: - ARVideoKit Implementation
extension ViewController {
  @IBAction func takePhoto(_ sender: UIButton) {
    // Do Nothing
  }

  @IBAction func takeVideo(_ sender: UIButton) {
    setupCamera()
    startRecording()
  }

  func setupCamera() {
    recorder = RecordAR(ARSceneKit: sceneView)
    recorder?.prepare(arTrackingConfig)
  }

  func startRecording() {
    takeVideoButtonPressedLabel.isHidden = false
    recordingQueue.async {
      self.recorder?.record(forDuration: 5) { path in
        self.takenVideoAtURL = path
        DispatchQueue.main.async {
          self.takeVideoButtonPressedLabel.isHidden = true
        }
      }
    }
  }
}

编辑 2:添加了用于测试的示例项目。

当使用snapshot方法从SCNRenderer获取图像时传递0作为时间,这样就不会发生强制渲染并且动画会更流畅。在你的情况下粒子不会加速