小编Nic*_*pes的帖子

使用touch在SceneKit中移动节点

我试图通过触摸移动SceneKit中的节点。我在这里使用代码:使用touch在SceneKit中移动特定节点

我遇到的问题是,每次启动panGesture时,我触摸的对象都会转到场景的左上角以开始移动。从该位置移动并松开是可以的,只是在每次平移开始时,对象都会从左角重置的问题。如果我缩小,它将在此新缩放级别的角上重置自己。

我的代码是:

func CGPointToSCNVector3(view: SCNView, depth: Float, point: CGPoint) -> SCNVector3 {
    let projectedOrigin = view.projectPoint(SCNVector3Make(0, 0, depth))
    let locationWithz   = SCNVector3Make(Float(point.x), Float(point.y), projectedOrigin.z)
    return view.unprojectPoint(locationWithz)
}
func dragObject(sender: UIPanGestureRecognizer){
    if(movingNow){
        let translation = sender.translationInView(sender.view!)
        var result : SCNVector3 = CGPointToSCNVector3(objectView, depth: tappedObjectNode.position.z, point: translation)
        tappedObjectNode.position = result
    }
    else{
        let hitResults = objectView.hitTest(sender.locationInView(objectView), options: nil)
        if hitResults.count > 0 {
            movingNow = true
        }
    }
    if(sender.state == UIGestureRecognizerState.Ended) {
    }
}
Run Code Online (Sandbox Code Playgroud)

override func viewDidLoad() {
    super.viewDidLoad() …
Run Code Online (Sandbox Code Playgroud)

ios scenekit swift

5
推荐指数
1
解决办法
3640
查看次数

asp C#Application Default Credentials不可用

我在C#中运行Google Translate API.在我的计算机上本地运行下一个代码工作,但在服务器上联机它会引发以下错误:

using Google.Cloud.Translation.V2;
TranslationClient client = TranslationClient.Create();
var response = client.TranslateText(sentence, targetLanguage, sourceLanguage: sourceLanguage);
Run Code Online (Sandbox Code Playgroud)

"应用程序默认凭据不可用.如果在Google Compute Engine中运行,则可以使用它们.否则,必须定义环境变量GOOGLE_APPLICATION_CREDENTIALS,指向定义凭据的文件.请参阅https://developers.google.com/accounts/docs/application-default-credentials有关详细信息."

本地只需安装Cloud SDK Installer即可完成所有设置,无需在代码中进行身份验证.在服务器上,我应该使用OAuth 2.0或服务帐户密钥吗?

有人可以帮我解决这个问题吗?

编辑:有人可以向我确认是否有必要访问本地服务器以在命令行中运行命令,如https://cloud.google.com/storage/docs/authentication?这将是非常荒谬的,而不仅仅是编写代码.例如,Youtube API不需要本地访问.

c# asp.net authentication google-translate google-cloud-platform

5
推荐指数
2
解决办法
4356
查看次数

react-native-firebase 通知中的深层链接

我使用带有消息传递功能的react-native-firebase通过云功能向我的应用程序传递通知,使用admin.messaging().send(message),与这里非常相似: https: //medium.com/the-modern-development -stack/react-native-push-notifications-with-firebase-cloud-functions-74b832d45386

当应用程序在后台时我会收到通知。现在,我正在通知正文中发送一条文本,例如“新位置已添加到地图中”。我希望能够添加某种深层链接,这样当我在通知上滑动视图(例如在 iOS 上)时,它会将我带到应用程序内的特定屏幕。如何将数据从通知传递到应用程序?

我在应用程序中使用react-native-navigation。我只能从应用程序内部找到有关深层链接的代码(https://wix.github.io/react-native-navigation/#/deep-links?id=deep-links)。

react-native react-native-navigation react-native-firebase

4
推荐指数
1
解决办法
1万
查看次数

EXIF 的 PHContentEditingInputRequestOptions 阻塞主线程

我正在获取图像 EXIF 以获取 LensMake。

这是我发现这样做的唯一方法:

let lstAssets : PHFetchResult<PHAsset> = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: nil)
lstAssets.enumerateObjects({object , index, stop in
    let options = PHContentEditingInputRequestOptions()
    object.requestContentEditingInput(with: options) { (contentEditingInput: PHContentEditingInput?, _) -> Void in
        let fullImage : CIImage = CIImage(contentsOf: contentEditingInput!.fullSizeImageURL!)!
        if let exif = fullImage.properties["{Exif}"]{ ...
Run Code Online (Sandbox Code Playgroud)

问题在于 requestContentEditingInput 的回调/声明/完成中的代码在主线程中运行,并阻止来自 UI 的任何调用(例如按钮的 IBAction)。因此,如果我以 100 的 lstAssets.count 开始并在 enumerateObjects 中发出 100 个请求,则需要完成所有回调才能在 UI 中执行某些操作。

我尝试将 enumerateObjects 放在 DispatchQueue.global(qos: .background).async 中,但没有成功。如果我将回调代码放在后台线程中,也会发生同样的情况。

奇怪的是,如果我将 PHImageManager.default() 与 requestImageData 用于图像,则这种行为会有所不同,但问题是我无法以这种方式获得 EXIF。

如何解除阻塞队列?有没有更好的方法来获得EXIF?

我在 Xcode 8.2 中运行 Swift 3。 …

multithreading exif grand-central-dispatch ios swift

1
推荐指数
1
解决办法
1271
查看次数