libOpenDRIVE adalah pustaka C++ yang ringan, bebas ketergantungan, dan cepat yang menyediakan penguraian file OpenDRIVE dan pembuatan model 3D.
Ini kecil dan dapat dengan mudah diintegrasikan ke dalam proyek lain. Fungsi intinya adalah penguraian file OpenDRIVE dan pembuatan model 3D. Perpustakaan menargetkan OpenDRIVE versi 1.4.
Berikut ini contoh tampilan kode menggunakan libOpenDRIVE. Untuk contoh lebih lengkap lihat tes/test.cpp.
// load map
odr::OpenDriveMap odr_map ( " tests/test.xodr " );
// iterate roads
for (odr::Road road : odr_map.get_roads())
std::cout << " road: " << road.id << " length: " << road.length << std::endl;
// get xyz point for road coordinates
odr::Road odr_road = odr_map.get_road( " 17 " );
odr::Vec3D pt_xyz = odr_road.get_xyz( 2.1 /* s */ , 1.0 /* t */ , 0.0 /* h */ );
// access road network attributes
std::string lane_type = odr_road.get_lanesection( 0.0 ).get_lane(- 1 ).type;
// use routing graph
odr::RoutingGraph routing_graph = odr_map.get_routing_graph();
odr::LaneKey from ( " 17 " /* road id */ , 0.0 /* lane section s0 */ , 1 /* lane id */ );
odr::LaneKey to ( " 41 " , 0.0 , - 1 );
std::vector<odr::LaneKey> path = routing_graph.shortest_path(from, to);
// get road network mesh
odr::RoadNetworkMesh road_network_mesh = odr_map.get_road_network_mesh( 0.1 /* eps */ );
std::cout << road_network_mesh.get_mesh().get_obj() << std::endl;
Untuk membangun perpustakaan statis secara default, jalankan saja:
mkdir build
cd build
cmake ..
make
Jika memerlukan perpustakaan bersama, gunakan:
cmake -DBUILD_SHARED_LIBS=ON ..
Lihat penampil di odrviewer.io yang menggunakan perpustakaan ini. Gunakan proyek odrviewer untuk memposting masalah dan permintaan fitur untuk odrviewer.io.
Info: Pengikatan Viewer dan WebAssembly tidak lagi menjadi bagian dari proyek ini. Hal ini untuk lebih fokus pada fungsionalitas perpustakaan dan menghindari keharusan untuk selalu memperbarui pengikatan. Gunakan v0.3.0 untuk mendapatkan versi terakhir yang masih menyertakan binding Viewer dan WebAssembly.