質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ARKit

ARKitは、iPhone/iPad向けのARアプリ用フレームワーク。iOS11以降に標準搭載されています。これを用いたARアプリは、特殊なデバイスがなくてもiPhone/iPadの単眼カメラを使用して動作することが可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

657閲覧

ARKitにジェスチャー機能を実装

wongfaytu

総合スコア4

ARKit

ARKitは、iPhone/iPad向けのARアプリ用フレームワーク。iOS11以降に標準搭載されています。これを用いたARアプリは、特殊なデバイスがなくてもiPhone/iPadの単眼カメラを使用して動作することが可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/02/17 02:24

編集2020/02/17 04:49

前提・実現したいこと

ARKitを利用した家具アプリを作りたいのですが
gestureを追加したところ反応はされているのですが
描画が一切変わらず困っています

該当のソースコード

let panGesture = UIPanGestureRecognizer(target: self, action: #selector(doPan)) let rotationGesture = UIRotationGestureRecognizer(target: self, action: #selector(doRotation)) let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(doPinch)) self.sceneView.addGestureRecognizer(panGesture) self.sceneView.addGestureRecognizer(rotationGesture) self.sceneView.addGestureRecognizer(pinchGesture) @objc private func doPan(sender: UIPanGestureRecognizer) { let point = sender.location(in: self.sceneView) print("point = (point)") let results = sceneView.hitTest(point, types: .existingPlaneUsingExtent) if let hitPoint = results.first { guard let node = sceneView.pointOfView else { return } let vector = SCNVector3( x: hitPoint.worldTransform.columns.3.x, y: hitPoint.worldTransform.columns.3.y, z: hitPoint.worldTransform.columns.3.z ) node.position = vector } } @objc private func doRotation(sender: UIRotationGestureRecognizer) { guard let node = sceneView.pointOfView else { return } print("rotation = (node)") node.runAction(SCNAction.rotateBy(x: 0, y: sender.rotation-3, z: 0, duration: 0.1)) } @objc private func doPinch(gesture: UIPinchGestureRecognizer) { let scale = Float(gesture.scale) guard let node = sceneView.pointOfView else { return } switch gesture.state { case .changed: print("pinch = (scale)") //ノードのスケールを拡大・縮小 if scale > 1.000000000 { let action = SCNAction.scale(by: CGFloat(10), duration: 1) node.runAction(action) } else { let action = SCNAction.scale(by: CGFloat(10), duration: 1) node.runAction(action) } default: NSLog("not action") } } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { guard let touch = touches.first else {return} let touchPos = touch.location(in: sceneView) let hitTest = sceneView.hitTest(touchPos, types: .existingPlaneUsingExtent) if !hitTest.isEmpty { // タップした箇所が取得できていればanchorを追加 let anchor = ARAnchor(transform: hitTest.first!.worldTransform) sceneView.session.add(anchor: anchor) } }

試したこと

CGFloatの値を変更しましたが変わらず
他の方のソースコードを参考にしましたがそちらでも動きませんでした

補足情報(FW/ツールのバージョンなど)

Xcode11.3.1
ARSCNView

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問