|
@@ -666,169 +666,6 @@ export let openDriveMixin = {
|
|
window.requestAnimationFrame(this.animate);
|
|
window.requestAnimationFrame(this.animate);
|
|
}, 1000 / 30);
|
|
}, 1000 / 30);
|
|
this.controls.update();
|
|
this.controls.update();
|
|
- this.camera.setViewOffset(
|
|
|
|
- this.renderer.domElement.width, //画布的宽度
|
|
|
|
- this.renderer.domElement.height, //画布的高度
|
|
|
|
- (this.renderer.domElement.width / 2) | 0, //画布坐标系中,相机的x坐标位置
|
|
|
|
- (this.renderer.domElement.height / 2) | 0, //画布坐标系中,相机的y坐标位置
|
|
|
|
- 1, //副相机的宽度
|
|
|
|
- 1 //副相机的高度
|
|
|
|
- );
|
|
|
|
- //离屏渲染
|
|
|
|
- this.renderer.setRenderTarget(this.lane_picking_texture);
|
|
|
|
- this.renderer.render(this.lane_picking_scene, this.camera);
|
|
|
|
-
|
|
|
|
- this.renderer.setRenderTarget(this.roadmark_picking_texture);
|
|
|
|
- this.renderer.render(this.roadmark_picking_scene, this.camera);
|
|
|
|
-
|
|
|
|
- this.renderer.setRenderTarget(this.xyz_texture);
|
|
|
|
- this.renderer.render(this.xyz_scene, this.camera);
|
|
|
|
-
|
|
|
|
- this.renderer.setRenderTarget(this.st_texture);
|
|
|
|
- this.renderer.render(this.st_scene, this.camera);
|
|
|
|
-
|
|
|
|
- const lane_id_pixel_buffer = new Float32Array(4);
|
|
|
|
- this.renderer.readRenderTargetPixels(
|
|
|
|
- this.lane_picking_texture,
|
|
|
|
- 0,
|
|
|
|
- 0,
|
|
|
|
- 1,
|
|
|
|
- 1,
|
|
|
|
- this.lane_id_pixel_buffer
|
|
|
|
- );
|
|
|
|
- const roadmark_id_pixel_buffer = new Float32Array(4);
|
|
|
|
- this.renderer.readRenderTargetPixels(
|
|
|
|
- this.roadmark_picking_texture,
|
|
|
|
- 0,
|
|
|
|
- 0,
|
|
|
|
- 1,
|
|
|
|
- 1,
|
|
|
|
- this.roadmark_id_pixel_buffer
|
|
|
|
- );
|
|
|
|
- const xyz_pixel_buffer = new Float32Array(4);
|
|
|
|
- this.renderer.readRenderTargetPixels(
|
|
|
|
- this.xyz_texture,
|
|
|
|
- 0,
|
|
|
|
- 0,
|
|
|
|
- 1,
|
|
|
|
- 1,
|
|
|
|
- this.xyz_pixel_buffer
|
|
|
|
- );
|
|
|
|
- xyz_pixel_buffer[0] += this.OpenDriveMap.x_offs;
|
|
|
|
- xyz_pixel_buffer[1] += this.OpenDriveMap.y_offs;
|
|
|
|
- const st_pixel_buffer = new Float32Array(4);
|
|
|
|
- this.renderer.readRenderTargetPixels(
|
|
|
|
- this.st_texture,
|
|
|
|
- 0,
|
|
|
|
- 0,
|
|
|
|
- 1,
|
|
|
|
- 1,
|
|
|
|
- this.st_pixel_buffer
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- this.camera.clearViewOffset();
|
|
|
|
- this.renderer.setRenderTarget(null);
|
|
|
|
-
|
|
|
|
- if (this.isValid(lane_id_pixel_buffer) && false) {
|
|
|
|
- const decoded_lane_id = this.decodeUInt32(lane_id_pixel_buffer);
|
|
|
|
- const odr_lanes_mesh =
|
|
|
|
- this.road_network_mesh.userData.odr_road_network_mesh.lanes_mesh;
|
|
|
|
- if (this.INTERSECTED_LANE_ID != decoded_lane_id) {
|
|
|
|
- if (this.INTERSECTED_LANE_ID != 0xffffffff) {
|
|
|
|
- this.road_network_mesh.geometry.attributes.color.array.fill(
|
|
|
|
- this.COLORS.road
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- this.INTERSECTED_LANE_ID = decoded_lane_id;
|
|
|
|
- const lane_vert_idx_interval =
|
|
|
|
- odr_lanes_mesh.get_idx_interval_lane(this.INTERSECTED_LANE_ID);
|
|
|
|
- const vert_count =
|
|
|
|
- lane_vert_idx_interval[1] - lane_vert_idx_interval[0];
|
|
|
|
- this.applyVertexColors(
|
|
|
|
- this.road_network_mesh.geometry.attributes.color,
|
|
|
|
- new THREE.Color(this.COLORS.lane_highlight),
|
|
|
|
- lane_vert_idx_interval[0],
|
|
|
|
- vert_count
|
|
|
|
- );
|
|
|
|
- this.road_network_mesh.geometry.attributes.color.needsUpdate = true;
|
|
|
|
- }
|
|
|
|
- odr_lanes_mesh.delete();
|
|
|
|
- } else {
|
|
|
|
- if (this.INTERSECTED_LANE_ID != 0xffffffff) {
|
|
|
|
- const odr_lanes_mesh =
|
|
|
|
- this.road_network_mesh.userData.odr_road_network_mesh.lanes_mesh;
|
|
|
|
- const lane_vert_idx_interval =
|
|
|
|
- odr_lanes_mesh.get_idx_interval_lane(this.INTERSECTED_LANE_ID);
|
|
|
|
- this.road_network_mesh.geometry.attributes.color.array.fill(this.COLORS.road);
|
|
|
|
- this.road_network_mesh.geometry.attributes.color.needsUpdate = true;
|
|
|
|
- odr_lanes_mesh.delete();
|
|
|
|
- this.INTERSECTED_LANE_ID = 0xffffffff;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (this.isValid(roadmark_id_pixel_buffer)) {
|
|
|
|
- //获取
|
|
|
|
- const decoded_roadmark_id = this.decodeUInt32(roadmark_id_pixel_buffer);
|
|
|
|
- const odr_roadmarks_mesh =
|
|
|
|
- this.road_network_mesh.userData.odr_road_network_mesh.roadmarks_mesh;
|
|
|
|
- if (this.INTERSECTED_ROADMARK_ID != decoded_roadmark_id) {
|
|
|
|
- if (this.INTERSECTED_ROADMARK_ID != 0xffffffff) {
|
|
|
|
- const prev_roadmark_vert_idx_interval =
|
|
|
|
- odr_roadmarks_mesh.get_idx_interval_roadmark(
|
|
|
|
- this.INTERSECTED_ROADMARK_ID
|
|
|
|
- );
|
|
|
|
- this.roadmarks_mesh.geometry.attributes.color.array.fill(
|
|
|
|
- this.COLORS.roadmark,
|
|
|
|
- prev_roadmark_vert_idx_interval[0] * 3,
|
|
|
|
- prev_roadmark_vert_idx_interval[1] * 3
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
- this.INTERSECTED_ROADMARK_ID = decoded_roadmark_id;
|
|
|
|
- const roadmark_vert_idx_interval =
|
|
|
|
- odr_roadmarks_mesh.get_idx_interval_roadmark(
|
|
|
|
- this.INTERSECTED_ROADMARK_ID
|
|
|
|
- );
|
|
|
|
- const vert_count =
|
|
|
|
- roadmark_vert_idx_interval[1] - roadmark_vert_idx_interval[0];
|
|
|
|
- this.applyVertexColors(
|
|
|
|
- this.roadmarks_mesh.geometry.attributes.color,
|
|
|
|
- new THREE.Color(this.COLORS.roadmark_highlight),
|
|
|
|
- roadmark_vert_idx_interval[0],
|
|
|
|
- vert_count
|
|
|
|
- );
|
|
|
|
- this.roadmarks_mesh.geometry.attributes.color.needsUpdate = true;
|
|
|
|
- }
|
|
|
|
- odr_roadmarks_mesh.delete();
|
|
|
|
- } else {
|
|
|
|
- if (this.INTERSECTED_ROADMARK_ID != 0xffffffff) {
|
|
|
|
- const odr_roadmarks_mesh =
|
|
|
|
- this.road_network_mesh.userData.odr_road_network_mesh.roadmarks_mesh;
|
|
|
|
- const roadmark_vert_idx_interval =
|
|
|
|
- odr_roadmarks_mesh.get_idx_interval_lane(this.INTERSECTED_ROADMARK_ID);
|
|
|
|
- this.roadmarks_mesh.geometry.attributes.color.array.fill(
|
|
|
|
- this.COLORS.roadmark,
|
|
|
|
- roadmark_vert_idx_interval[0] * 3,
|
|
|
|
- roadmark_vert_idx_interval[1] * 3
|
|
|
|
- );
|
|
|
|
- this.roadmarks_mesh.geometry.attributes.color.needsUpdate = true;
|
|
|
|
- this.INTERSECTED_ROADMARK_ID = 0xffffffff;
|
|
|
|
- odr_roadmarks_mesh.delete();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (this.INTERSECTED_LANE_ID != 0xffffffff) {
|
|
|
|
- const odr_lanes_mesh =
|
|
|
|
- this.road_network_mesh.userData.odr_road_network_mesh.lanes_mesh;
|
|
|
|
- const road_id = odr_lanes_mesh.get_road_id(this.INTERSECTED_LANE_ID);
|
|
|
|
- const lanesec_s0 = odr_lanes_mesh.get_lanesec_s0(this.INTERSECTED_LANE_ID);
|
|
|
|
- const lane_id = odr_lanes_mesh.get_lane_id(this.INTERSECTED_LANE_ID);
|
|
|
|
- const lane_type = this.OpenDriveMap.roads
|
|
|
|
- .get(road_id)
|
|
|
|
- .s_to_lanesection.get(lanesec_s0)
|
|
|
|
- .id_to_lane.get(lane_id).type;
|
|
|
|
- odr_lanes_mesh.delete();
|
|
|
|
- }
|
|
|
|
this.renderer.render(this.scene, this.camera);
|
|
this.renderer.render(this.scene, this.camera);
|
|
},
|
|
},
|
|
fillColorLine(roadId, lineId) {
|
|
fillColorLine(roadId, lineId) {
|