さて、私はPCLpointcloud2に読み込んだOBJファイルを1つ持っています。今私はそれをK-dTreeにフィードしたいと思います。 PCLPointCloud2を入力として使用していない私はそれが私のOBJファイルの表面にある場合、任意の一般的なポイントを照会したいと思います。 私は彼らの文書を理解するのが難しいと思っています。それでどうすればいいですか? さらに、わかりやすく解釈可能な良いリファレンスを教えてください。そして "PointT" BTWは何ですか?私たちによって定義されたカスタムビルドタイプですか?詳しく教えてください。ポイントクラウドライブラリのloadOBJfileで使用されるPCLPointCloud2を使用してKdTreeを実装する方法は?
答えて
pcl_mesh_sampling
(PCLコードディレクトリtools/mesh_sampling.cpp
)のコードを見てください。それは比較的簡単です。 PLYまたはOBJからモデルをロードし、各三角形について、三角形からランダムな点をサンプリングします。最終的な点群は次に点を比較的均一にするためにボクセルグリッドのサンプルを受ける。あるいは、objファイルでpcl_mesh_sampling
プログラムを実行するだけで出力PCDを取得し、PCDファイルを独自のコードにロードする前にpcl_viewer
で視覚化することができます。
あなたは、最終的なポイントクラウドをしたら、あなたはhttp://pointclouds.org/documentation/tutorials/kdtree_search.php
PointT
に従ってKD-ツリーを構築し、使用することができ、テンプレート引数です。 pointXYZRGBNormal(x、y、z、normal_x、normal_y、normal_z、curvature、r、g、およびzを含む)のようなより複雑なポイントまで、さまざまなポイントタイプを扱うことができます。およびbチャネル)。各アルゴリズムは、使用するポイントタイプにテンプレート化されています。おそらく、OBJファイルでPointXYZを使用した方が簡単なので、すべてのテンプレート引数にpcl :: PointXYZを使用してください。テンプレートの詳細については、http://www.tutorialspoint.com/cplusplus/cpp_templates.htmとhttp://pointclouds.org/documentation/tutorials/adding_custom_ptype.phpを参照してください。
アップデート(最新のコメントへの返信)この回答はコメントのために長すぎるので、ここで追加
。
私はあなたが何を得ているかを見ていると思います。だから、ポイント・クラウドからポイントをサンプルするときには、オブジェクト・サーフェスのKDツリーを構築し、そのポイントの近くにどのポイントがあるかを追跡します(おそらく、ポイントがサンプリングされたフェースに隣接するすべての十分な?1つの顔が不十分です)。次に、クエリポイントが与えられたら、KDツリーの最も近いポイントを見つけて、クエリポイントがKDツリーのそのポイントに関連付けられている近くの顔の完全なリストの「外側」または内側にあるかどうかをチェックします。おそらくそれは内部のポイントです。しかし、私はこれが本当であることを保証することはできません。それは現時点でその質問に対する私の考えです。しかし、メッシュベースのアプローチが本当に必要かどうかは不思議です。ところで、メッシュを凸部品に分割すると、各凸部品を処理する際に優れた保証が得られます。
もう1つ、kdツリーにクエリを実行してポイントのセットを取得すると、テストポイントのために、これらの取得したポイントを調べるだけで、オブジェクトの内側または外側にあるかどうかをチェックする必要があります。 –
明確にするために、特定のクエリポイントがオブジェクトの内部にあるのか外部にあるのかを確認するという追加の要件があります。これは、表面上の近くの点を見つけることに加えて、右ですか?別の質問があります。なぜオブジェクトをポイントクラウドに変換していて、クエリポイントを各ファセットと比較するだけではないのですか? –
はい、これはまさに私の必要条件です。しかし、私のクエリポイントは、キーボードからのユーザー入力によって絶えず変化し、クエリポイントの新しい位置ごとにチェックしなければならないファセットの数は膨大になります。そのため、私は一度に頂点のサブセットを取得する必要があります。 –
- 1. PCL :: PCLPointCloud2の使用
- 2. C#を使用してIPPゲートウェイを実装する方法は?
- 3. STLを使用してLFUキャッシュを実装する方法は?
- 4. CLを使用して `tail`コマンドを実装する方法は?
- 5. Entity Frameworkを使用してビジネスロジックを実装する方法は?
- 6. ブートストラップを使用してモーダルを実装する方法は?
- 7. Identity Serverを使用してSSOを実装する方法は?
- 8. webglを使用してバッチを実装する方法は?
- 9. Ajaxを使用してliferay-ui:tabsを実装する方法は?
- 10. Angular 2.0を使用してデータテーブルを実装する方法は?
- 11. SounCloud APIを使用してページネーションを実装する方法は?
- 12. Apache Wicketを使用してACLを実装する方法は?
- 13. DotNetOpenAuthを使用してシングルサインオンを実装する方法は?
- 14. カスタムメソッドを実装してSQLAlchemyのクエリで使用する方法
- 15. jqueryを使用してドラッグでスクロールを実装する方法
- 16. WPVMでMVVMを使用してフィルタボックスを実装する方法
- 17. C#でDynamicObjectを使用してイベントアクセッサを実装する方法
- 18. typescriptを使用してネイティブスクリプトでObservableを実装する方法
- 19. Redisでロールバックを使用してトランザクションを実装する方法
- 20. JavaScriptを使用してインターフェイスを実装する方法
- 21. html5 + jQueryを使用してスクロールタブuiを実装する方法
- 22. WSO2を使用してエッジコンピューティングを実装する方法
- 23. SmartGWTとSQLを使用してレイジーリストを実装する方法
- 24. F#を使用してProps.Createを実装する方法
- 25. トークン認証を使用してユーザープロファイルを実装する方法
- 26. NodeJsを使用して水平スケーラビリティを実装する方法
- 27. 接続プーリングを使用してMulti_threadingを実装する方法
- 28. Azure Traffic Managerを使用してフォールトトレランスを実装する方法
- 29. specs2を使用して実装をスキップする方法
- 30. ionicを使用してrating starを実装する方法
読み込んでいるOBJファイルには、オブジェクトの表面にあるすべての点、またはポイントクラウドライブラリが補間したいと思う頂点だけが含まれていますか? –
可能であれば、ポイントを補間する必要があります。それはできますか? –