Unity3D 网络摄像头自动对焦回调?

Unity3D Webcam Autofocus Callback?

我想用 Unity 从相机拍照。拍照本身没什么大不了的,但我想要更准确的使用自动对焦回调方法,如 Android (onAutoFocus(boolean success, Camera camera)) 所以如果回调 returns 成功,我可以拍照 true .有什么办法可以在 Unity 中做到这一点,或者我需要一些插件吗?如果有人可以参考它吗?非常感谢!

assetstore 上有一个名为 Camera Capture Kit 的插件,似乎可以满足您的需求。我们使用代码使这些功能在 Android 和 iPhone 上都可用。

    https://www.assetstore.unity3d.com/en/#!/content/56673

Camera Capture Kit 附带一个即插即用的相机应用程序,可启用自动对焦 - 您可以通过调用来设置自动对焦模式。

CameraCapture.UnitySetFocusMode( webCamTextureReferance, FocusModes.Autofocus );

这将代表 AVCaptureFocusModeAutoFocus,您应该能够通过在文件 Assets/Tastybits/Native/iOS/CameraCapture.mm 的函数 initCapture 中添加一段这样的代码来自己触发焦点事件的回调:

[camDevice addObserver:self forKeyPath:@"adjustingFocus" options:flags context:nil];

现在,Camera Capture Kit 不会在 iOS 上完成对焦时给您回调,因此您必须自己添加它并使用 SendMessage 自己回调以统一。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if( [keyPath isEqualToString:@"adjustingFocus"] ){
    BOOL adjustingFocus = [ [change objectForKey:NSKeyValueChangeNewKey] isEqualToNumber:[NSNumber numberWithInt:1] ];
    NSLog(@"Is adjusting focus? %@", adjustingFocus ? @"YES" : @"NO" );
    if(adjustingFocus)
      UnitySendMessage( "FocusController", "FocusChanged", "1" );
    else 
      UnitySendMessage( "FocusController", "FocusChanged", "0" );
}}