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

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

ただいまの
回答率

87.90%

分裂している3Dオブジェクトの表示方法

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 777

score 138

Bowl of Ramenこのサイトから3Dオブジェクトをお借りして、ARkitを使ってラーメンのモデルを表示しようとしたのですが、3Dオブジェクトがラーメンの具材や、器、レンゲなど細かく分離されてしまっていて、Identityに名前をつけて呼び出しても3Dモデルの一部しか呼び出すことができません。
画像はscnファイルを開いてモデルをクリックした時のものです、チャーシューの部分しか選択できていません。
image
分離している3Dモデルを1つのオブジェクトとして表示させることはできるのでしょうか?
またはXcode内で1つのオブジェクトに変換できたりするのでしょうか?
それともMayaのようなソフトで3Dオブジェクトを加工するしか無いのでしょうか?

※追記
ラーメンのオブジェクトを追加しているコードは下記になります。
tapされたらオブジェクトが落ちてくるイメージです。

func addRamen(hitResult: ARHitTestResult){
        guard let scene = SCNScene(named: "model.scn", inDirectory: "Ramen", options: nil) else {fatalError()}
        guard let ramenNode = scene.rootNode.childNode(withName: "Ramen", recursively: true) else {fatalError()}

        let (min, max) = ramenNode.boundingBox
        let w = CGFloat(max.x - min.x)

        let magnification = 0.1 / w
        ramenNode.scale = SCNVector3(magnification, magnification, magnification)
        //nodeのポジションを設定
        ramenNode.position = SCNVector3(hitResult.worldTransform.columns.3.x, hitResult.worldTransform.columns.3.y + 0.20, hitResult.worldTransform.columns.3.z)

        //重力
        let shape = SCNPhysicsShape(node: ramenNode, options: nil)
        let gravity = SCNPhysicsBody(type: .dynamic, shape: shape)
        gravity.restitution = 1
        //重力をラーメンに設定
        ramenNode.physicsBody = gravity
        sceneView.scene.rootNode.addChildNode(ramenNode)
    }


実際のビルド時の画像がこちらになります。モデルの一部?だけが落下してきます。
イメージ説明

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

例えば分離されていたとしても一つ親のSCNNodeのchildNodeとして、具材や、器、レンゲなどがくっついている形であれば、親のSCNNodeを置けば1つのオブジェクトとして出せるはずです。

また、 https://3dwarehouse.sketchup.com/model/u6a8fa04c-3589-4d50-bb48-c0b68596a19a/Bowl-of-Ramen のサイトから.daeの形式でダウンロードできますが、その.daeをそのままXcodeでSCNSceneとして読みこんで表示できるはずです。

現状のソースコードやscnファイルを共有していただければ、もっとアドバイスできるかもです!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/24 20:28 編集

    Nodeを追加している部分のソースコードと実行時のスクリーンショットを追記しました。
    scnに関してはどう置けば良いのかわからなかったので乗せられていません。

    >>その.daeをそのままXcodeでSCNSceneとして読みこんで表示できるはずです。
    scnファイルに変換しなくてもそのまま使えるのでしょうか?モデルを入れ直して試してみましたが、私がやった限りではできませんでした...

    scene.rootNode.childNodeのwithNameの部分がどうたらいいのかわかっていないので、できていないんだと思います。オブジェクトが分離していたのでそれぞれのモデルのIdentityのNameをRamenに統一したんですが、だめでした。

    コードは、前にKBOYさんに質問させていただいたニンニクのモデルに差し替えて使って、タップをすると問題なく3Dモデルが表示できています。

    キャンセル

  • 2018/10/25 14:00 編集

    ちなみにdaeはSCNSceneの別のイニシャライザで読み込めるとは思います。
    以下の堤さんの記事のudszはdaeやobjでもできるものなので。
    https://qiita.com/shu223/items/84cc00802399c381aefe

    とはいえ今回はそこが論点ではないと思うので、まず、

    ```
    guard let ramenNode = scene.rootNode.childNode(withName: "Ramen", recursively: true) else {fatalError()}
    ```



    ```
    let ramenNode = scene.rootNode
    ```

    に変更して試してどうなるか確認していただけますか?
    全てのchildNodeがくっついた親のnodeごと取得できるはずです。

    キャンセル

  • 2018/10/25 19:33

    let ramenNode = scene.rootNode
    に置き換えて試したところ全部表示することができました!
    ありがとうございます

    キャンセル

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

  • ただいまの回答率 87.90%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る