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

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

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

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

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

AR(Augmented Reality)

AR(Augmented Reality)とは、拡張現実のことです。人が認識する現実の環境で視覚・聴覚などの知覚が感知する情報をコンピュータで拡張する技術、もしくはその環境そのものを表す言葉です。

Q&A

0回答

1182閲覧

読み込んだモデルに物理ボディを設定する

hodoru3sei

総合スコア284

Swift

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

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

AR(Augmented Reality)

AR(Augmented Reality)とは、拡張現実のことです。人が認識する現実の環境で視覚・聴覚などの知覚が感知する情報をコンピュータで拡張する技術、もしくはその環境そのものを表す言葉です。

0グッド

0クリップ

投稿2018/06/11 15:38

外部から読み込んできたモデルに対して物理ボディを設定したいです。
正確には物理ボディを設定してタップしたらARkitの平面にモデルを落としたいと考えています。
落下させるものがSceneKitのジオメトリであれば以下のようにして物理ボディを設定することができました。

lang

1 // ジオメトリを作る 2 let box = SCNBox(width: 0.01, height: 0.03, length: 0.05, chamferRadius: 0.01) 3 //box.firstMaterial?.diffuse.contents = UIColor.gray 4 // ノードのgeometryプロパティに設定する 5 geometry = box 6 // タップされた座標から位置決め 7 let pos = hitTestResult.worldTransform.columns.3 8 let y = pos.y + Float(box.height/2.0) + 0.2 // 箱の高さより0.2m上から落とす 9 position = SCNVector3(pos.x, y, pos.z) 10 // 物理ボディを設定する 11 let bodyShape = SCNPhysicsShape(geometry: geometry!, options: [:]) 12 physicsBody = SCNPhysicsBody(type: .dynamic, shape: bodyShape) 13 physicsBody?.friction = 1.0 // 摩擦 14 physicsBody?.restitution = 0.2 // 反発力

これを自分で読み込んできたモデルに対しても行いたいと思っています。

lang

1       //モデルのを読み込み 2 guard let scene = SCNScene(named: "Garlic.scn", inDirectory: "art.scnassets/garlic") else {fatalError()} 3 guard let garlicNode = scene.rootNode.childNode(withName: "GARLIC", recursively: true) else {fatalError()} 4 // nodeのスケールを調整する 5 let (min, max) = garlicNode.boundingBox 6 let w = CGFloat(max.x - min.x) 7 // 1mを基準にした縮尺を計算 8 let magnification = 0.1 / w 9 garlicNode.scale = SCNVector3(magnification, magnification, magnification) 10 // nodeのポジションを設定 11 garlicNode.position = SCNVector3(planeAnchor.center.x, 0, planeAnchor.center.z) 12 // 物理ボディを設定する 13 let bodyShape = SCNPhysicsShape(geometry: garlicNode!, options: [:]) 14 physicsBody = SCNPhysicsBody(type: .dynamic, shape: bodyShape) 15 physicsBody?.friction = 1.0 // 摩擦 16 physicsBody?.restitution = 0.2 // 反発力

これで同じように読み込んだモデルに対しても物理ボディを設定できるかと思ったのですが、設定することができませんでした。
わかる方いらっしゃいましたらどうすればモデルに物理ボディをつけられるのか教えてください。よろしくお願いします

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問