diff --git a/front/src/components/Promo/load_models.vue b/front/src/components/Promo/load_models.vue index cb561e6..6ad51c8 100644 --- a/front/src/components/Promo/load_models.vue +++ b/front/src/components/Promo/load_models.vue @@ -73,18 +73,24 @@ const loadModels = async () => { const element = clickable.value[index]; const find_element = seekByName(scene.value, element.object_name) if (!find_element) continue - const res_array = (find_element as Group).isGroup ? find_element?.children : [find_element] + // const res_array = (find_element as Group).isGroup ? find_element?.children : [find_element] if (find_element && !(find_element as Group).isGroup) { const world_position = new Vector3(); ((find_element as Mesh).geometry.boundingBox as any).getCenter(world_position); (find_element as Mesh).localToWorld(world_position); - const map = new TextureLoader().load('sprite.png'); const p = raw_data.min_distance * 0.05 - const material = new MeshBasicMaterial({ color: new Color('red'), side: DoubleSide }); const plane = new PlaneGeometry(p, p) - const point = new Mesh(plane, material); + const mesh_material = new MeshBasicMaterial({side: DoubleSide}) + if(element.image) { + const map = new TextureLoader().load(`${IMAGE_URL}/${element.image}`); + mesh_material.map = map + } else { + mesh_material.color = new Color('red') + } + + const point = new Mesh(plane, mesh_material); point.position.set(world_position.x, p * 3, world_position.z) point.name = `${element.id}_clickable` point.renderOrder = 1 @@ -130,6 +136,7 @@ watch(() => props.source, () => { if (loaded) { loaded.children = [] } + sidebar.close() loadModels() }) diff --git a/front/src/index.d.ts b/front/src/index.d.ts index 1652cf9..70c6adc 100644 --- a/front/src/index.d.ts +++ b/front/src/index.d.ts @@ -38,6 +38,7 @@ interface clickableAreaType { id: number; name: string; object_name: string; + image?: string; source: number; target: number; target_name?: string