{"id":130,"date":"2024-03-12T00:00:09","date_gmt":"2024-03-11T16:00:09","guid":{"rendered":"https:\/\/ultserver.com\/blog\/?p=130"},"modified":"2024-03-20T17:37:10","modified_gmt":"2024-03-20T09:37:10","slug":"open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94","status":"publish","type":"post","link":"https:\/\/ultserver.com\/blog\/cpp\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\/","title":{"rendered":"Open3D \u4e2d RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4"},"content":{"rendered":"\n<p>\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u53d1\u73b0\uff0c\u9879\u76ee\u5728\u5c04\u7ebf\u6c42\u4ea4\u7684\u8ba1\u7b97\u8017\u65f6\u592a\u5927\uff0c\u4e0d\u4f7f\u7528\u5c04\u7ebf\u6c42\u4ea4\u548c\u4f7f\u7528\u5c04\u7ebf\u6c42\u4ea4\u7684\u8fd0\u884c\u65f6\u95f4\u76f8\u5dee\u4e863\u500d\u5de6\u53f3\u3002<\/p>\n\n\n\n<p>\u4e4b\u524d\u4e3a\u4e86\u65b9\u4fbf\u5f00\u53d1\uff0c\u6c42\u4ea4\u65f6\u4f7f\u7528\u7684\u662f\u4e00\u4e2a $1 * 6$ \u7684\u5f20\u91cf\u5206\u591a\u6b21\u8ba1\u7b97\u6c42\u4ea4\uff0c\u793a\u4f8b\u4ee3\u7801\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">C++<\/span><span role=\"button\" tabindex=\"0\" data-code=\"const auto start = (double)clock();\n\n\nopen3d::t::geometry::RaycastingScene scene;\nconst auto&amp; tensor = open3d::t::geometry::TriangleMesh::FromLegacy(part, open3d::core::Float32, open3d::core::Int64);\nscene.AddTriangles(tensor);\n\n\nconst auto numRays = (int)part.vertices_.size() * 10;\nauto rays = open3d::core::Tensor::Zeros({1, 6}, open3d::core::Float32);\n\n\nEigen::Vector3d position(0.05,0.5, -0.25);\n\n\nfor (size_t idx = 0; idx &lt; numRays; idx++) {\n    const auto&amp; vertex = part.vertices_[idx % part.vertices_.size()];\n    Eigen::Vector3d rayDir = (vertex - position).normalized();\n\n\n    rays.SetItem({open3d::core::TensorKey::Index(0), open3d::core::TensorKey::Slice(0, 6, 1)},\n                 open3d::core::Tensor::Init&lt;float&gt;({float(position.x()), float(position.y()), float(position.z()),\n                                                    float(rayDir.x()), float(rayDir.y()), float(rayDir.z())}));\n    \/\/ \u5faa\u73af\u8fdb\u884c\u591a\u6b21\u6c42\u4ea4\n    auto castResults = scene.CastRays(rays);\n}\ncout &lt;&lt; ((double)clock() - start) \/ CLOCKS_PER_SEC &lt;&lt; endl;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\"> start = (<\/span><span style=\"color: #569CD6\">double<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #DCDCAA\">clock<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">t<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">geometry<\/span><span style=\"color: #D4D4D4\">::RaycastingScene scene;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\">&amp; tensor = <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">t<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">geometry<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">TriangleMesh<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #DCDCAA\">FromLegacy<\/span><span style=\"color: #D4D4D4\">(part, <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::Float32, <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::Int64);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">scene<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">AddTriangles<\/span><span style=\"color: #D4D4D4\">(tensor);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\"> numRays = (<\/span><span style=\"color: #569CD6\">int<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #9CDCFE\">part<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">vertices_<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">size<\/span><span style=\"color: #D4D4D4\">() * <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\"> rays = <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">Tensor<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #DCDCAA\">Zeros<\/span><span style=\"color: #D4D4D4\">({<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\">}, <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::Float32);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #4EC9B0\">Eigen<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">Vector3d<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">position<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">0.05<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #B5CEA8\">0.5<\/span><span style=\"color: #D4D4D4\">, -<\/span><span style=\"color: #B5CEA8\">0.25<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">size_t<\/span><span style=\"color: #D4D4D4\"> idx = <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">; idx &lt; numRays; idx++) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\">&amp; vertex = <\/span><span style=\"color: #9CDCFE\">part<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">vertices_<\/span><span style=\"color: #D4D4D4\">[idx % <\/span><span style=\"color: #9CDCFE\">part<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">vertices_<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">size<\/span><span style=\"color: #D4D4D4\">()];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #4EC9B0\">Eigen<\/span><span style=\"color: #D4D4D4\">::Vector3d rayDir = (vertex - position).<\/span><span style=\"color: #DCDCAA\">normalized<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">rays<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">SetItem<\/span><span style=\"color: #D4D4D4\">({<\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">TensorKey<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #DCDCAA\">Index<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">), <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">TensorKey<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #DCDCAA\">Slice<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">)},<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">Tensor<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #DCDCAA\">Init<\/span><span style=\"color: #D4D4D4\">&lt;<\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">&gt;({<\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">position<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">x<\/span><span style=\"color: #D4D4D4\">()), <\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">position<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">y<\/span><span style=\"color: #D4D4D4\">()), <\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">position<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">z<\/span><span style=\"color: #D4D4D4\">()),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                                    <\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">rayDir<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">x<\/span><span style=\"color: #D4D4D4\">()), <\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">rayDir<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">y<\/span><span style=\"color: #D4D4D4\">()), <\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">rayDir<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">z<\/span><span style=\"color: #D4D4D4\">())}));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\">    \/\/ \u5faa\u73af\u8fdb\u884c\u591a\u6b21\u6c42\u4ea4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\"> castResults = <\/span><span style=\"color: #9CDCFE\">scene<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">CastRays<\/span><span style=\"color: #D4D4D4\">(rays);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">cout &lt;&lt; ((<\/span><span style=\"color: #569CD6\">double<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #DCDCAA\">clock<\/span><span style=\"color: #D4D4D4\">() - start) \/ CLOCKS_PER_SEC &lt;&lt; endl;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u800cOpen3D\u7684RayCast\u5b9e\u9645\u4e0a\u4f1a\u5728\u5e95\u5c42\u5229\u7528\u591a\u7ebf\u7a0b\u6765\u5904\u7406\u5f20\u91cf\uff0c\u7406\u8bba\u4e0a\u901f\u5ea6\u66f4\u5feb\uff0c\u56e0\u6b64\u4f7f\u7528\u4e0b\u8ff0\u4ee3\u7801\u8fdb\u884c\u6d4b\u8bd5\uff1a<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">C++<\/span><span role=\"button\" tabindex=\"0\" data-code=\"const auto start = (double)clock();\nopen3d::t::geometry::RaycastingScene scene;\nconst auto&amp; tensor = open3d::t::geometry::TriangleMesh::FromLegacy(part, open3d::core::Float32, open3d::core::Int64);\nscene.AddTriangles(tensor);\n\n\nconst auto numRays = (int)part.vertices_.size() * 10;\nauto rays = open3d::core::Tensor::Zeros({numRays, 6}, open3d::core::Float32);\n\n\nEigen::Vector3d position(0.05,0.5, -0.25);\n\n\nfor (size_t idx = 0; idx &lt; numRays; idx++) {\n    const auto&amp; vertex = part.vertices_[idx % part.vertices_.size()];\n    Eigen::Vector3d rayDir = (vertex - position).normalized();\n\n\n    rays.SetItem({open3d::core::TensorKey::Index((int)idx), open3d::core::TensorKey::Slice(0, 6, 1)},\n                 open3d::core::Tensor::Init&lt;float&gt;({float(position.x()), float(position.y()), float(position.z()),\n                                                    float(rayDir.x()), float(rayDir.y()), float(rayDir.z())}));\n}\nauto castResults = scene.CastRays(rays);\n\n\ncout &lt;&lt; ((double)clock() - start) \/ CLOCKS_PER_SEC &lt;&lt; endl;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\"> start = (<\/span><span style=\"color: #569CD6\">double<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #DCDCAA\">clock<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">t<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">geometry<\/span><span style=\"color: #D4D4D4\">::RaycastingScene scene;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\">&amp; tensor = <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">t<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">geometry<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">TriangleMesh<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #DCDCAA\">FromLegacy<\/span><span style=\"color: #D4D4D4\">(part, <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::Float32, <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::Int64);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">scene<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">AddTriangles<\/span><span style=\"color: #D4D4D4\">(tensor);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\"> numRays = (<\/span><span style=\"color: #569CD6\">int<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #9CDCFE\">part<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">vertices_<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">size<\/span><span style=\"color: #D4D4D4\">() * <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\"> rays = <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">Tensor<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #DCDCAA\">Zeros<\/span><span style=\"color: #D4D4D4\">({numRays, <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\">}, <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::Float32);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #4EC9B0\">Eigen<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">Vector3d<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">position<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">0.05<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #B5CEA8\">0.5<\/span><span style=\"color: #D4D4D4\">, -<\/span><span style=\"color: #B5CEA8\">0.25<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">size_t<\/span><span style=\"color: #D4D4D4\"> idx = <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">; idx &lt; numRays; idx++) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">const<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\">&amp; vertex = <\/span><span style=\"color: #9CDCFE\">part<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">vertices_<\/span><span style=\"color: #D4D4D4\">[idx % <\/span><span style=\"color: #9CDCFE\">part<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">vertices_<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">size<\/span><span style=\"color: #D4D4D4\">()];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #4EC9B0\">Eigen<\/span><span style=\"color: #D4D4D4\">::Vector3d rayDir = (vertex - position).<\/span><span style=\"color: #DCDCAA\">normalized<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">rays<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">SetItem<\/span><span style=\"color: #D4D4D4\">({<\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">TensorKey<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #DCDCAA\">Index<\/span><span style=\"color: #D4D4D4\">((<\/span><span style=\"color: #569CD6\">int<\/span><span style=\"color: #D4D4D4\">)idx), <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">TensorKey<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #DCDCAA\">Slice<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">6<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">)},<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 <\/span><span style=\"color: #4EC9B0\">open3d<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">core<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #4EC9B0\">Tensor<\/span><span style=\"color: #D4D4D4\">::<\/span><span style=\"color: #DCDCAA\">Init<\/span><span style=\"color: #D4D4D4\">&lt;<\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">&gt;({<\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">position<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">x<\/span><span style=\"color: #D4D4D4\">()), <\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">position<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">y<\/span><span style=\"color: #D4D4D4\">()), <\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">position<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">z<\/span><span style=\"color: #D4D4D4\">()),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                                                    <\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">rayDir<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">x<\/span><span style=\"color: #D4D4D4\">()), <\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">rayDir<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">y<\/span><span style=\"color: #D4D4D4\">()), <\/span><span style=\"color: #569CD6\">float<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">rayDir<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">z<\/span><span style=\"color: #D4D4D4\">())}));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">auto<\/span><span style=\"color: #D4D4D4\"> castResults = <\/span><span style=\"color: #9CDCFE\">scene<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">CastRays<\/span><span style=\"color: #D4D4D4\">(rays);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">cout &lt;&lt; ((<\/span><span style=\"color: #569CD6\">double<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #DCDCAA\">clock<\/span><span style=\"color: #D4D4D4\">() - start) \/ CLOCKS_PER_SEC &lt;&lt; endl;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u6700\u7ec8\u7684\u6d4b\u8bd5\u7ed3\u679c\uff08\u5149\u7ebf\u6570\u91cf\u7ea6\u4e3a7\u4e07\uff09\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"135\" height=\"52\" src=\"https:\/\/ultserver.com\/blog\/wp-content\/uploads\/2024\/03\/\u622a\u56fe-2023-08-22-16-51-41.png\" alt=\"\" class=\"wp-image-131\"\/><\/figure>\n\n\n\n<p>\u53ef\u89c1\uff0c\u4e24\u79cd\u65b9\u5f0f\u5728\u6027\u80fd\u4e0a\u786e\u5b9e\u5b58\u5728\u4e00\u5b9a\u5dee\u5f02\u3002<\/p>\n\n\n\n<p>\u4e0d\u8fc7\u9700\u8981\u6ce8\u610f\uff0c\u5f20\u91cf\u5728\u521d\u59cb\u5316\u65f6\u9700\u8981\u8017\u8d39\u4e00\u5b9a\u65f6\u95f4\uff0c\u56e0\u6b64\u5728\u5149\u7ebf\u6570\u91cf\u8f83\u5c11\u7684\u60c5\u51b5\u4e0b\uff0c\u4e24\u8005\u5dee\u8ddd\u5e76\u4e0d\u5927\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Update:<\/strong> \u8fdb\u4e00\u6b65\u6d4b\u8bd5\u53d1\u73b0\uff0c\u5f20\u91cf\u5728\u5b9e\u9645\u573a\u666f\u4e2d\u901f\u5ea6\u4f1a\u66f4\u5feb\uff0c\u5e94\u8be5\u662f\u7531\u4e8e\u6d4b\u8bd5\u6570\u636e\u8fc7\u4e8e\u7406\u60f3\u5bfc\u81f4\u7684\uff0c\u5b9e\u9645\u573a\u666f\u4e2d\u5b58\u5728\u8fdc\u8ddd\u79bb\u6216\u65e0\u4ea4\u70b9\u7684\u6781\u7aef\u60c5\u51b5\u3002<\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>\u4f7f\u7528Open3D\u7684C++\u63a5\u53e3\uff08\u9ed8\u8ba4\u7f16\u8bd1\u9009\u9879\uff09\uff0c\u5bf9 RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","wikipediapreview_detectlinks":true,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[7],"tags":[19],"class_list":["post-130","post","type-post","status-publish","format-standard","hentry","category-cpp","tag-open3d"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Open3D \u4e2d RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4 - UltBlog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ultserver.com\/blog\/cpp\/open3d-\u4e2d-raycast-\u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Open3D \u4e2d RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4 - UltBlog\" \/>\n<meta property=\"og:description\" content=\"\u4f7f\u7528Open3D\u7684C++\u63a5\u53e3\uff08\u9ed8\u8ba4\u7f16\u8bd1\u9009\u9879\uff09\uff0c\u5bf9 RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ultserver.com\/blog\/cpp\/open3d-\u4e2d-raycast-\u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4\/\" \/>\n<meta property=\"og:site_name\" content=\"UltBlog\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-11T16:00:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-20T09:37:10+00:00\" \/>\n<meta name=\"author\" content=\"Ultcrt\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ultcrt\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/cpp\\\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/cpp\\\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\\\/\"},\"author\":{\"name\":\"Ultcrt\",\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/#\\\/schema\\\/person\\\/7e56085265669846c542f2b5790feab2\"},\"headline\":\"Open3D \u4e2d RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4\",\"datePublished\":\"2024-03-11T16:00:09+00:00\",\"dateModified\":\"2024-03-20T09:37:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/cpp\\\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\\\/\"},\"wordCount\":9,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/#\\\/schema\\\/person\\\/7e56085265669846c542f2b5790feab2\"},\"keywords\":[\"Open3D\"],\"articleSection\":[\"C++\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ultserver.com\\\/blog\\\/cpp\\\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/cpp\\\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\\\/\",\"url\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/cpp\\\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\\\/\",\"name\":\"Open3D \u4e2d RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4 - UltBlog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/#website\"},\"datePublished\":\"2024-03-11T16:00:09+00:00\",\"dateModified\":\"2024-03-20T09:37:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/cpp\\\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\\\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ultserver.com\\\/blog\\\/cpp\\\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/cpp\\\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Open3D \u4e2d RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/\",\"name\":\"UltBlog\",\"description\":\"Ultcrt\u7684\u4e2a\u4eba\u535a\u5ba2\",\"publisher\":{\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/#\\\/schema\\\/person\\\/7e56085265669846c542f2b5790feab2\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/#\\\/schema\\\/person\\\/7e56085265669846c542f2b5790feab2\",\"name\":\"Ultcrt\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/LOGOv1.1.5-Transparent.png\",\"url\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/LOGOv1.1.5-Transparent.png\",\"contentUrl\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/LOGOv1.1.5-Transparent.png\",\"width\":800,\"height\":600,\"caption\":\"Ultcrt\"},\"logo\":{\"@id\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/LOGOv1.1.5-Transparent.png\"},\"description\":\"\u70ed\u7231\u5f00\u53d1\u548c\u6e38\u620f\",\"sameAs\":[\"https:\\\/\\\/ultserver.com\\\/blog\"],\"url\":\"https:\\\/\\\/ultserver.com\\\/blog\\\/author\\\/ultcrt\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Open3D \u4e2d RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4 - UltBlog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ultserver.com\/blog\/cpp\/open3d-\u4e2d-raycast-\u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4\/","og_locale":"zh_CN","og_type":"article","og_title":"Open3D \u4e2d RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4 - UltBlog","og_description":"\u4f7f\u7528Open3D\u7684C++\u63a5\u53e3\uff08\u9ed8\u8ba4\u7f16\u8bd1\u9009\u9879\uff09\uff0c\u5bf9 RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4","og_url":"https:\/\/ultserver.com\/blog\/cpp\/open3d-\u4e2d-raycast-\u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4\/","og_site_name":"UltBlog","article_published_time":"2024-03-11T16:00:09+00:00","article_modified_time":"2024-03-20T09:37:10+00:00","author":"Ultcrt","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"Ultcrt","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"1 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ultserver.com\/blog\/cpp\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\/#article","isPartOf":{"@id":"https:\/\/ultserver.com\/blog\/cpp\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\/"},"author":{"name":"Ultcrt","@id":"https:\/\/ultserver.com\/blog\/#\/schema\/person\/7e56085265669846c542f2b5790feab2"},"headline":"Open3D \u4e2d RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4","datePublished":"2024-03-11T16:00:09+00:00","dateModified":"2024-03-20T09:37:10+00:00","mainEntityOfPage":{"@id":"https:\/\/ultserver.com\/blog\/cpp\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\/"},"wordCount":9,"commentCount":0,"publisher":{"@id":"https:\/\/ultserver.com\/blog\/#\/schema\/person\/7e56085265669846c542f2b5790feab2"},"keywords":["Open3D"],"articleSection":["C++"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ultserver.com\/blog\/cpp\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ultserver.com\/blog\/cpp\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\/","url":"https:\/\/ultserver.com\/blog\/cpp\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\/","name":"Open3D \u4e2d RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4 - UltBlog","isPartOf":{"@id":"https:\/\/ultserver.com\/blog\/#website"},"datePublished":"2024-03-11T16:00:09+00:00","dateModified":"2024-03-20T09:37:10+00:00","breadcrumb":{"@id":"https:\/\/ultserver.com\/blog\/cpp\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ultserver.com\/blog\/cpp\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ultserver.com\/blog\/cpp\/open3d-%e4%b8%ad-raycast-%e5%9c%a8%e5%be%aa%e7%8e%af%e8%b0%83%e7%94%a8%e5%92%8c%e4%bd%bf%e7%94%a8%e5%bc%a0%e9%87%8f%e6%83%85%e5%86%b5%e4%b8%8b%e7%9a%84%e6%80%a7%e8%83%bd%e5%af%b9%e6%af%94\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/ultserver.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Open3D \u4e2d RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4"}]},{"@type":"WebSite","@id":"https:\/\/ultserver.com\/blog\/#website","url":"https:\/\/ultserver.com\/blog\/","name":"UltBlog","description":"Ultcrt\u7684\u4e2a\u4eba\u535a\u5ba2","publisher":{"@id":"https:\/\/ultserver.com\/blog\/#\/schema\/person\/7e56085265669846c542f2b5790feab2"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ultserver.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":["Person","Organization"],"@id":"https:\/\/ultserver.com\/blog\/#\/schema\/person\/7e56085265669846c542f2b5790feab2","name":"Ultcrt","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/ultserver.com\/blog\/wp-content\/uploads\/2024\/03\/LOGOv1.1.5-Transparent.png","url":"https:\/\/ultserver.com\/blog\/wp-content\/uploads\/2024\/03\/LOGOv1.1.5-Transparent.png","contentUrl":"https:\/\/ultserver.com\/blog\/wp-content\/uploads\/2024\/03\/LOGOv1.1.5-Transparent.png","width":800,"height":600,"caption":"Ultcrt"},"logo":{"@id":"https:\/\/ultserver.com\/blog\/wp-content\/uploads\/2024\/03\/LOGOv1.1.5-Transparent.png"},"description":"\u70ed\u7231\u5f00\u53d1\u548c\u6e38\u620f","sameAs":["https:\/\/ultserver.com\/blog"],"url":"https:\/\/ultserver.com\/blog\/author\/ultcrt\/"}]}},"spectra_custom_meta":{"_edit_lock":["1710927435:1"],"_edit_last":["1"],"_yoast_wpseo_primary_category":["7"],"_yoast_wpseo_content_score":["90"],"_yoast_wpseo_estimated-reading-time-minutes":["1"],"_yoast_wpseo_wordproof_timestamp":[""],"_uagb_toc_options":["a:2:{s:17:\"_uagb_toc_version\";s:10:\"1777915058\";s:18:\"_uagb_toc_headings\";a:0:{}}"],"_uagb_previous_block_counts":["a:90:{s:21:\"uagb\/advanced-heading\";i:0;s:15:\"uagb\/blockquote\";i:0;s:12:\"uagb\/buttons\";i:0;s:18:\"uagb\/buttons-child\";i:0;s:19:\"uagb\/call-to-action\";i:0;s:15:\"uagb\/cf7-styler\";i:0;s:11:\"uagb\/column\";i:0;s:12:\"uagb\/columns\";i:0;s:14:\"uagb\/container\";i:0;s:21:\"uagb\/content-timeline\";i:0;s:27:\"uagb\/content-timeline-child\";i:0;s:14:\"uagb\/countdown\";i:0;s:12:\"uagb\/counter\";i:0;s:8:\"uagb\/faq\";i:0;s:14:\"uagb\/faq-child\";i:0;s:10:\"uagb\/forms\";i:0;s:17:\"uagb\/forms-accept\";i:0;s:19:\"uagb\/forms-checkbox\";i:0;s:15:\"uagb\/forms-date\";i:0;s:16:\"uagb\/forms-email\";i:0;s:17:\"uagb\/forms-hidden\";i:0;s:15:\"uagb\/forms-name\";i:0;s:16:\"uagb\/forms-phone\";i:0;s:16:\"uagb\/forms-radio\";i:0;s:17:\"uagb\/forms-select\";i:0;s:19:\"uagb\/forms-textarea\";i:0;s:17:\"uagb\/forms-toggle\";i:0;s:14:\"uagb\/forms-url\";i:0;s:14:\"uagb\/gf-styler\";i:0;s:15:\"uagb\/google-map\";i:0;s:11:\"uagb\/how-to\";i:0;s:16:\"uagb\/how-to-step\";i:0;s:9:\"uagb\/icon\";i:0;s:14:\"uagb\/icon-list\";i:0;s:20:\"uagb\/icon-list-child\";i:0;s:10:\"uagb\/image\";i:0;s:18:\"uagb\/image-gallery\";i:0;s:13:\"uagb\/info-box\";i:0;s:18:\"uagb\/inline-notice\";i:0;s:11:\"uagb\/lottie\";i:0;s:21:\"uagb\/marketing-button\";i:0;s:10:\"uagb\/modal\";i:0;s:18:\"uagb\/popup-builder\";i:0;s:16:\"uagb\/post-button\";i:0;s:18:\"uagb\/post-carousel\";i:0;s:17:\"uagb\/post-excerpt\";i:0;s:14:\"uagb\/post-grid\";i:0;s:15:\"uagb\/post-image\";i:0;s:17:\"uagb\/post-masonry\";i:0;s:14:\"uagb\/post-meta\";i:0;s:18:\"uagb\/post-taxonomy\";i:0;s:18:\"uagb\/post-timeline\";i:0;s:15:\"uagb\/post-title\";i:0;s:20:\"uagb\/restaurant-menu\";i:0;s:26:\"uagb\/restaurant-menu-child\";i:0;s:11:\"uagb\/review\";i:0;s:12:\"uagb\/section\";i:0;s:14:\"uagb\/separator\";i:0;s:11:\"uagb\/slider\";i:0;s:17:\"uagb\/slider-child\";i:0;s:17:\"uagb\/social-share\";i:0;s:23:\"uagb\/social-share-child\";i:0;s:16:\"uagb\/star-rating\";i:0;s:23:\"uagb\/sure-cart-checkout\";i:0;s:22:\"uagb\/sure-cart-product\";i:0;s:15:\"uagb\/sure-forms\";i:0;s:22:\"uagb\/table-of-contents\";i:0;s:9:\"uagb\/tabs\";i:0;s:15:\"uagb\/tabs-child\";i:0;s:18:\"uagb\/taxonomy-list\";i:0;s:9:\"uagb\/team\";i:0;s:16:\"uagb\/testimonial\";i:0;s:14:\"uagb\/wp-search\";i:0;s:19:\"uagb\/instagram-feed\";i:0;s:10:\"uagb\/login\";i:0;s:17:\"uagb\/loop-builder\";i:0;s:18:\"uagb\/loop-category\";i:0;s:20:\"uagb\/loop-pagination\";i:0;s:15:\"uagb\/loop-reset\";i:0;s:16:\"uagb\/loop-search\";i:0;s:14:\"uagb\/loop-sort\";i:0;s:17:\"uagb\/loop-wrapper\";i:0;s:13:\"uagb\/register\";i:0;s:19:\"uagb\/register-email\";i:0;s:24:\"uagb\/register-first-name\";i:0;s:23:\"uagb\/register-last-name\";i:0;s:22:\"uagb\/register-password\";i:0;s:30:\"uagb\/register-reenter-password\";i:0;s:19:\"uagb\/register-terms\";i:0;s:22:\"uagb\/register-username\";i:0;}"],"_uag_css_file_name":["uag-css-130.css"],"_uag_js_file_name":["uag-js-130.js"],"_uag_page_assets":["a:9:{s:3:\"css\";s:5938:\"\ufeff.wp-block-uagb-table-of-contents .uagb-toc__wrap{display:inline-block;max-width:-moz-available;max-width:-webkit-fill-available;max-width:fill-available}.wp-block-uagb-table-of-contents li.uagb-toc__list{padding-top:10px}.wp-block-uagb-table-of-contents ul.uagb-toc__list,.wp-block-uagb-table-of-contents ol.uagb-toc__list{list-style-position:inside;padding-left:0;margin-bottom:0;margin-left:2.2em}.wp-block-uagb-table-of-contents ul.uagb-toc__list li,.wp-block-uagb-table-of-contents ol.uagb-toc__list li{margin:0}.wp-block-uagb-table-of-contents ul li:empty{display:none}.wp-block-uagb-table-of-contents .uagb-toc__title-wrap{display:flex;align-items:center}.wp-block-uagb-table-of-contents .uagb-toc__title{display:flex;align-items:center}.wp-block-uagb-table-of-contents .uagb-toc__is-collapsible.uagb-toc__title-wrap{cursor:pointer}.wp-block-uagb-table-of-contents .uag-toc__collapsible-wrap svg{width:20px;height:20px}.wp-block-uagb-table-of-contents svg{width:20px;height:20px;display:inline-block;margin-left:10px;cursor:pointer}.wp-block-uagb-table-of-contents .uag-toc__collapsible-wrap{display:flex;margin-left:10px;cursor:pointer}.wp-block-uagb-table-of-contents.uagb-toc__collapse .uagb-toc__list-wrap{display:none}.wp-block-uagb-table-of-contents.uagb-toc__collapse--list ul.uagb-toc__list,.wp-block-uagb-table-of-contents.uagb-toc__collapse--list ol.uagb-toc__list{padding-left:2px}ol.uagb-toc__list li.uagb-toc__list ul,ol.uagb-toc__list ul.uagb-toc__list ul{list-style-type:circle}ol.uagb-toc__list>ul,ol.uagb-toc__list>li{list-style-type:disc}.uagb-toc__scroll-top{position:fixed;right:50px;bottom:50px;display:none;padding:10px;background:#ccd0d4;cursor:pointer;font-size:1rem;line-height:1.8571428571}.uagb-toc__scroll-top svg{width:1.6em;height:.6em;margin-left:0;transform:translate(0, -20%) rotate(180deg);fill:currentColor}.uagb-toc__scroll-top.uagb-toc__show-scroll{display:inline-table}body[class*=astra] .uagb-toc__list{line-height:normal}.uagb-toc__list{margin-top:0}.wp-block-uagb-table-of-contents ol.uagb-toc__list li.uagb-toc__list.uagb-toc__list--expandable{list-style-type:none !important}ul.uagb-toc__list--child-of-closed-list{padding-top:0 !important}ul.uagb-toc__list--hidden-child{display:none !important}.list-open::before,.list-collapsed::before{content:\"\u25bc\"\/\"\";transition:transform .3s ease;transform:scale(0.7) translateX(-50%);display:inline-block}.list-collapsed::before{transform:scale(0.7) rotate(-90deg) translate(-84%, 6%)}span.list-open,span.list-collapsed{cursor:pointer;outline:none !important}.uagb-toc__list.transition{transition:max-height 300ms ease-in-out,padding-top 300ms ease-in-out}.uagb-toc__loader{border:2px solid #f3f3f3;border-top:2px solid #0073aa;border-radius:50%;width:20px;height:20px;animation:spin 1.1s linear infinite;display:block;position:absolute;margin-top:5px}.uagb-toc__list-hidden{opacity:0}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}[dir=rtl] .list-open::before{transform:scale(0.7) translateX(50%)}[dir=rtl] .list-collapsed::before{transform:scale(0.7) rotate(90deg) translate(84%, 6%)}[dir=rtl] .wp-block-uagb-table-of-contents.uagb-toc__collapse--list ul.uagb-toc__list,[dir=rtl] .wp-block-uagb-table-of-contents.uagb-toc__collapse--list ol.uagb-toc__list{padding-left:0;padding-right:2px;margin-left:0;margin-right:2.2em}.uagb-block-0cf44a2b.wp-block-uagb-table-of-contents{text-align: left;}.uagb-block-0cf44a2b .uagb-toc__list-wrap li a:hover{color: #000000;}.uagb-block-0cf44a2b .uagb-toc__list-wrap li a{color: #a00000;}.uagb-block-0cf44a2b .uagb-toc__wrap .uagb-toc__title-wrap{justify-content: left;}.uagb-block-0cf44a2b .uagb-toc__wrap .uagb-toc__title{color: #000000;justify-content: space-between;cursor: pointer;}.uagb-block-0cf44a2b .uagb-toc__wrap{border-top-left-radius: 6px;border-top-right-radius: 6px;border-bottom-left-radius: 6px;border-bottom-right-radius: 6px;border-color: #333;border-style: none;padding-left: 30px;padding-right: 30px;padding-top: 30px;padding-bottom: 30px;background: #ffffff;width: 100%;}.uagb-block-0cf44a2b .uagb-toc__list-wrap{column-count: 1;overflow: hidden;text-align: left;}.uagb-block-0cf44a2b .uagb-toc__list-wrap > ul.uagb-toc__list > li:first-child{padding-top: 0;}.uagb-block-0cf44a2b .uagb-toc__list-wrap ol.uagb-toc__list:first-child{margin-left: 0px;margin-right: 0px;margin-top: 0px;margin-bottom: 0px;}.uagb-block-0cf44a2b .uagb-toc__list-wrap ul.uagb-toc__list:last-child > li:last-child{padding-bottom: 0;}.uagb-block-0cf44a2b .uag-toc__collapsible-wrap svg{fill: #000000;}.uagb-block-0cf44a2b svg{fill: #000000;}.uagb-block-0cf44a2b .uagb-toc__list-wrap ol.uagb-toc__list > li{padding-top: calc( 0px \/ 2 );padding-bottom: calc( 0px \/ 2 );}.uagb-block-0cf44a2b .uagb-toc__list-wrap ul.uagb-toc__list > li{padding-top: calc( 0px \/ 2 );padding-bottom: calc( 0px \/ 2 );}.uagb-block-0cf44a2b .uagb-toc__list-wrap li.uagb-toc__list.uagb-toc__list--expandable > ul.uagb-toc__list{padding-top: calc( 0px \/ 2 );}.uagb-block-0cf44a2b .uagb-toc__list .uagb-toc__list{list-style-type: disc !important;}.uagb-block-0cf44a2b .uagb-toc__title{font-weight: Default;font-size: 20px;}@media only screen and (max-width: 976px) {.uagb-block-0cf44a2b .uagb-toc__wrap{border-style: none;}.uagb-block-0cf44a2b .uagb-toc__list-wrap{column-count: 1;overflow: hidden;text-align: left;}.uagb-block-0cf44a2b .uagb-toc__list-wrap > ul.uagb-toc__list > li:first-child{padding-top: 0;}.uagb-block-0cf44a2b .uagb-toc__list-wrap ul.uagb-toc__list:last-child > li:last-child{padding-bottom: 0;}}@media only screen and (max-width: 767px) {.uagb-block-0cf44a2b .uagb-toc__wrap{border-style: none;}.uagb-block-0cf44a2b .uagb-toc__list-wrap{column-count: 1;overflow: hidden;text-align: left;}.uagb-block-0cf44a2b .uagb-toc__list-wrap > ul.uagb-toc__list > li:first-child{padding-top: 0;}.uagb-block-0cf44a2b .uagb-toc__list-wrap ul.uagb-toc__list:last-child > li:last-child{padding-bottom: 0;}}\";s:2:\"js\";s:382:\"document.addEventListener(\"DOMContentLoaded\", function(){ window.addEventListener( 'load', function(){\n\tUAGBTableOfContents._run( {\"mappingHeaders\":[true,true,true,true,true,true],\"scrollToTop\":false,\"makeCollapsible\":true,\"enableCollapsableList\":false,\"initialCollapse\":false,\"markerView\":\"disc\",\"isFrontend\":true,\"initiallyCollapseList\":false}, '.uagb-block-0cf44a2b' );\n} );\n });\";s:18:\"current_block_list\";a:18:{i:0;s:14:\"core\/paragraph\";i:1;s:27:\"kevinbatdorf\/code-block-pro\";i:2;s:10:\"core\/image\";i:3;s:10:\"core\/quote\";i:4;s:11:\"core\/search\";i:5;s:10:\"core\/group\";i:6;s:12:\"core\/heading\";i:7;s:17:\"core\/latest-posts\";i:8;s:20:\"core\/latest-comments\";i:9;s:13:\"core\/archives\";i:10;s:15:\"core\/categories\";i:11;s:14:\"core\/page-list\";i:12;s:10:\"core\/embed\";i:14;s:18:\"core\/legacy-widget\";i:15;s:9:\"core\/list\";i:16;s:14:\"core\/list-item\";i:17;s:22:\"uagb\/table-of-contents\";i:18;s:25:\"uagb\/animations-extension\";}s:8:\"uag_flag\";b:1;s:11:\"uag_version\";s:10:\"1777915058\";s:6:\"gfonts\";a:0:{}s:10:\"gfonts_url\";s:0:\"\";s:12:\"gfonts_files\";a:0:{}s:14:\"uag_faq_layout\";b:0;}"]},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Ultcrt","author_link":"https:\/\/ultserver.com\/blog\/author\/ultcrt\/"},"uagb_comment_info":0,"uagb_excerpt":"\u4f7f\u7528Open3D\u7684C++\u63a5\u53e3\uff08\u9ed8\u8ba4\u7f16\u8bd1\u9009\u9879\uff09\uff0c\u5bf9 RayCast \u5728\u5faa\u73af\u8c03\u7528\u548c\u4f7f\u7528\u5f20\u91cf\u60c5\u51b5\u4e0b\u7684\u6027\u80fd\u5bf9\u6bd4","_links":{"self":[{"href":"https:\/\/ultserver.com\/blog\/wp-json\/wp\/v2\/posts\/130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ultserver.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ultserver.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ultserver.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ultserver.com\/blog\/wp-json\/wp\/v2\/comments?post=130"}],"version-history":[{"count":2,"href":"https:\/\/ultserver.com\/blog\/wp-json\/wp\/v2\/posts\/130\/revisions"}],"predecessor-version":[{"id":440,"href":"https:\/\/ultserver.com\/blog\/wp-json\/wp\/v2\/posts\/130\/revisions\/440"}],"wp:attachment":[{"href":"https:\/\/ultserver.com\/blog\/wp-json\/wp\/v2\/media?parent=130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ultserver.com\/blog\/wp-json\/wp\/v2\/categories?post=130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ultserver.com\/blog\/wp-json\/wp\/v2\/tags?post=130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}