diff --git a/public/map.json b/public/map.json index 545156f..25619f0 100644 --- a/public/map.json +++ b/public/map.json @@ -28,14 +28,14 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [64.2046, 1.3963, -66.2457], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-77.4301, 1.3912, -56.435], "rotation": [0, 0, 0], @@ -49,7 +49,7 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [9.1941, 10.2941, 72.1876], "rotation": [0, 0, 0], @@ -77,21 +77,21 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-8.7053, 20.947, 57.5741], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-89.8978, 1.4012, -25.8285], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [51.8989, 4.3513, -50.0921], "rotation": [0, 0, 0], @@ -112,7 +112,7 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [34.9999, 1.4037, 93.9609], "rotation": [0, 0, 0], @@ -126,35 +126,35 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [38.7701, 19.0344, 0.8338], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [59.3076, 6.5206, 49.1125], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-89.2687, 2.6346, 16.7745], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [17.8449, 19.0217, -19.9902], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [69.5646, 5.8304, -13.2384], "rotation": [0, 0, 0], @@ -168,28 +168,28 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [70.7249, 3.0111, -37.8449], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [38.1303, 19.7136, 34.2969], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-31.6587, 20.5164, -4.8425], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [65.6865, 1.3944, 77.4458], "rotation": [0, 0, 0], @@ -217,7 +217,7 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-1.7275, 1.4007, 102.2273], "rotation": [0, 0, 0], @@ -4207,21 +4207,21 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [13.7329, 23.9356, 47.3633], "rotation": [3.1416, -0.5734, 3.1416], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [6.2307, 23.9356, 50.7095], "rotation": [3.1416, -0.2657, 3.1416], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-1.9326, 23.9356, 51.6261], "rotation": [3.1416, 0.042, 3.1416], @@ -4235,14 +4235,14 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-17.1848, 23.9356, 46.0625], "rotation": [3.1416, 0.6575, 3.1416], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-22.8406, 23.9356, 40.105], "rotation": [-3.1416, 0.9652, 3.1416], @@ -4263,14 +4263,14 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-26.2655, 23.9356, 16.4799], "rotation": [0, 1.2532, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-22.5343, 23.9356, 9.1615], "rotation": [0, 0.9454, 0], @@ -4291,14 +4291,14 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-1.4024, 23.9356, -1.9435], "rotation": [0, 0.0223, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [6.7412, 23.9356, -0.8655], "rotation": [0, -0.2855, 0], @@ -4312,7 +4312,7 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [20.2026, 23.9356, 8.2103], "rotation": [0, -0.9009, 0], @@ -4368,7 +4368,7 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-7.324, 26.3756, 42.7182], "rotation": [-3.1416, 0.3498, 3.1416], @@ -4389,14 +4389,14 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-18.9887, 26.3756, 30.4312], "rotation": [-3.1416, 1.273, 3.1416], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-19.8252, 26.3756, 24.6616], "rotation": [0, 1.5609, 0], @@ -4417,14 +4417,14 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-12.1298, 26.3756, 9.568], "rotation": [0, 0.6377, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [-6.9691, 26.3756, 6.856], "rotation": [0, 0.33, 0], @@ -4445,7 +4445,7 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [9.8265, 26.3756, 9.0793], "rotation": [0, -0.5932, 0], @@ -4459,21 +4459,21 @@ "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [16.9803, 26.3756, 18.1116], "rotation": [0, -1.2087, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [18.1858, 26.3756, 23.8156], "rotation": [0, -1.5164, 0], "scale": [1, 1, 1] }, { - "name": "arbre", + "name": "pylone", "type": "Mesh", "position": [17.6069, 26.3756, 29.6167], "rotation": [3.1416, -1.3175, 3.1416], diff --git a/public/models/pylone/cable1_base_color.png b/public/models/pylone/cable1_base_color.png new file mode 100644 index 0000000..f1c5101 --- /dev/null +++ b/public/models/pylone/cable1_base_color.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e855a105690f232494d5f3959d8fd6e8512de53de6d1b8a7e13e79d44b455635 +size 170284 diff --git a/public/models/pylone/cable1_height.png b/public/models/pylone/cable1_height.png new file mode 100644 index 0000000..713980d --- /dev/null +++ b/public/models/pylone/cable1_height.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:208daeea7306a6a576fbe1098c66d59571dd984635d7fb6c017fd767cde531ed +size 3178 diff --git a/public/models/pylone/cable1_metallic.png b/public/models/pylone/cable1_metallic.png new file mode 100644 index 0000000..b46e54a --- /dev/null +++ b/public/models/pylone/cable1_metallic.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60041773ef2d493f3547aa1b0fbdf5b1bb548a3da39164384293ef5292b2c5b3 +size 1118 diff --git a/public/models/pylone/cable1_mixed_ao.png b/public/models/pylone/cable1_mixed_ao.png new file mode 100644 index 0000000..b21d620 --- /dev/null +++ b/public/models/pylone/cable1_mixed_ao.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d3210319fea926e024d9d64c9440319550e548a7147f0998610293d05351411 +size 106768 diff --git a/public/models/pylone/cable1_normal.png b/public/models/pylone/cable1_normal.png new file mode 100644 index 0000000..707fa61 --- /dev/null +++ b/public/models/pylone/cable1_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2d01588d749aa5fc4ca2598db56250d22381ca2cb5d4acf22f7e2075d9ee69f +size 145554 diff --git a/public/models/pylone/cable1_normal_opengl.png b/public/models/pylone/cable1_normal_opengl.png new file mode 100644 index 0000000..7fdc9e2 --- /dev/null +++ b/public/models/pylone/cable1_normal_opengl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:700e5261c9513fe08bf918e8e73c82b390bcd5b220427ae8a061150ace2bb39d +size 146495 diff --git a/public/models/pylone/cable1_roughness.png b/public/models/pylone/cable1_roughness.png new file mode 100644 index 0000000..59ffd1c --- /dev/null +++ b/public/models/pylone/cable1_roughness.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fee20587280c1bee1ed7a251c9584a48b4e159d45f674b6aabe58783c17049a +size 53738 diff --git a/public/models/pylone/cable2_base_color.png b/public/models/pylone/cable2_base_color.png new file mode 100644 index 0000000..67aeedd --- /dev/null +++ b/public/models/pylone/cable2_base_color.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fef27c0cae8e434723a7a200f6a490b96349a002af0e2ba583ab689a7501bb58 +size 152980 diff --git a/public/models/pylone/cable2_height.png b/public/models/pylone/cable2_height.png new file mode 100644 index 0000000..713980d --- /dev/null +++ b/public/models/pylone/cable2_height.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:208daeea7306a6a576fbe1098c66d59571dd984635d7fb6c017fd767cde531ed +size 3178 diff --git a/public/models/pylone/cable2_metallic.png b/public/models/pylone/cable2_metallic.png new file mode 100644 index 0000000..b46e54a --- /dev/null +++ b/public/models/pylone/cable2_metallic.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60041773ef2d493f3547aa1b0fbdf5b1bb548a3da39164384293ef5292b2c5b3 +size 1118 diff --git a/public/models/pylone/cable2_mixed_ao.png b/public/models/pylone/cable2_mixed_ao.png new file mode 100644 index 0000000..d0c5f78 --- /dev/null +++ b/public/models/pylone/cable2_mixed_ao.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00fcdce71383ed2081696921fa6ef9592e653560bb7c3058f7d0ac4da6427a8c +size 100588 diff --git a/public/models/pylone/cable2_normal.png b/public/models/pylone/cable2_normal.png new file mode 100644 index 0000000..0aeb96a --- /dev/null +++ b/public/models/pylone/cable2_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6187d87bcb23afd869017739161862832c6520754a0670c460cd326d85357c0f +size 145219 diff --git a/public/models/pylone/cable2_normal_opengl.png b/public/models/pylone/cable2_normal_opengl.png new file mode 100644 index 0000000..0b68af5 --- /dev/null +++ b/public/models/pylone/cable2_normal_opengl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22660de1a0682b1abd1684f7e3fb5e2589b483eabe301f72f3e9d821fe82226e +size 146306 diff --git a/public/models/pylone/cable2_roughness.png b/public/models/pylone/cable2_roughness.png new file mode 100644 index 0000000..bdad05d --- /dev/null +++ b/public/models/pylone/cable2_roughness.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:603aa4f5dc13de2d56a150a3ebaf555b50d87e6928cb8f9f97d372035caf0123 +size 52660 diff --git a/public/models/pylone/chap_base_color.png b/public/models/pylone/chap_base_color.png new file mode 100644 index 0000000..747833f --- /dev/null +++ b/public/models/pylone/chap_base_color.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92723a60f4f0fe39a6309fb3faec588c0178a67cf765c52646a776134d5086b6 +size 86318 diff --git a/public/models/pylone/chap_height.png b/public/models/pylone/chap_height.png new file mode 100644 index 0000000..713980d --- /dev/null +++ b/public/models/pylone/chap_height.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:208daeea7306a6a576fbe1098c66d59571dd984635d7fb6c017fd767cde531ed +size 3178 diff --git a/public/models/pylone/chap_metallic.png b/public/models/pylone/chap_metallic.png new file mode 100644 index 0000000..b46e54a --- /dev/null +++ b/public/models/pylone/chap_metallic.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60041773ef2d493f3547aa1b0fbdf5b1bb548a3da39164384293ef5292b2c5b3 +size 1118 diff --git a/public/models/pylone/chap_mixed_ao.png b/public/models/pylone/chap_mixed_ao.png new file mode 100644 index 0000000..ae16438 --- /dev/null +++ b/public/models/pylone/chap_mixed_ao.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08db27428a9262caa0f45d814fe4e72e813cebe3ea2139417c34c749782b5071 +size 200657 diff --git a/public/models/pylone/chap_normal.png b/public/models/pylone/chap_normal.png new file mode 100644 index 0000000..a7fdf27 --- /dev/null +++ b/public/models/pylone/chap_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81c90f031b04c4376d8d715f4b7087fba8174539e79270155c7ff56d3b5be726 +size 187794 diff --git a/public/models/pylone/chap_normal_opengl.png b/public/models/pylone/chap_normal_opengl.png new file mode 100644 index 0000000..a31b821 --- /dev/null +++ b/public/models/pylone/chap_normal_opengl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d9a52a596c1cafc8e299efcaf215b8d4501ae9ab09ed84ca36729451797ede0 +size 188092 diff --git a/public/models/pylone/chap_roughness.png b/public/models/pylone/chap_roughness.png new file mode 100644 index 0000000..1588b9f --- /dev/null +++ b/public/models/pylone/chap_roughness.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbccc4f4042014922faab436e859024a6e66656eb1b3a7aa2f80c4c48f112e76 +size 78815 diff --git a/public/models/pylone/lampe_base_color.png b/public/models/pylone/lampe_base_color.png new file mode 100644 index 0000000..de93f3e --- /dev/null +++ b/public/models/pylone/lampe_base_color.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b1df0d30023f3f9be05c310f1d2c3fe2b80c9cc79b631f8ceee7df17bb0d7d6 +size 435213 diff --git a/public/models/pylone/lampe_height.png b/public/models/pylone/lampe_height.png new file mode 100644 index 0000000..713980d --- /dev/null +++ b/public/models/pylone/lampe_height.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:208daeea7306a6a576fbe1098c66d59571dd984635d7fb6c017fd767cde531ed +size 3178 diff --git a/public/models/pylone/lampe_metallic.png b/public/models/pylone/lampe_metallic.png new file mode 100644 index 0000000..a2a6ea5 --- /dev/null +++ b/public/models/pylone/lampe_metallic.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73f0f1f9a2449135c3786b1e2a8b0308d91ce0b17e8ab419d42dbe12f6cd49ad +size 119101 diff --git a/public/models/pylone/lampe_mixed_ao.png b/public/models/pylone/lampe_mixed_ao.png new file mode 100644 index 0000000..129ce8e --- /dev/null +++ b/public/models/pylone/lampe_mixed_ao.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79a620d8bf89c36ac579e361a0383f2e00cc0a46bd20af3866a272fbdb66cf44 +size 333234 diff --git a/public/models/pylone/lampe_normal.png b/public/models/pylone/lampe_normal.png new file mode 100644 index 0000000..3fbc93b --- /dev/null +++ b/public/models/pylone/lampe_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:670b8083516218cfa7fee2abfc4b5647bc7c97c513b6ffda6c81544078b190d1 +size 416583 diff --git a/public/models/pylone/lampe_normal_opengl.png b/public/models/pylone/lampe_normal_opengl.png new file mode 100644 index 0000000..ce6b274 --- /dev/null +++ b/public/models/pylone/lampe_normal_opengl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16f4756e77ffb2b96b4964dbf3ba1a455cc551ab04eedbad5f9b25476652e064 +size 420113 diff --git a/public/models/pylone/lampe_opacity.png b/public/models/pylone/lampe_opacity.png new file mode 100644 index 0000000..377c715 --- /dev/null +++ b/public/models/pylone/lampe_opacity.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3bdaa1be72aa14047f2a4c50e112e9e428a088bbbaa5153ad40ae2897decf2b +size 3179 diff --git a/public/models/pylone/lampe_roughness.png b/public/models/pylone/lampe_roughness.png new file mode 100644 index 0000000..f25e00b --- /dev/null +++ b/public/models/pylone/lampe_roughness.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23a8670ac6eb007f98005bf66c49168f20dbb89957478da0254a568e93b71b35 +size 176715 diff --git a/public/models/pylone/model.gltf b/public/models/pylone/model.gltf new file mode 100644 index 0000000..05d147d --- /dev/null +++ b/public/models/pylone/model.gltf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4beb235d9ce60f1a59a8e73b9e1bcdb44f45c6a2017fc6e912a29cee5f249ec +size 3588015 diff --git a/public/models/pylone/panneaux_base_color.png b/public/models/pylone/panneaux_base_color.png new file mode 100644 index 0000000..4b9de68 --- /dev/null +++ b/public/models/pylone/panneaux_base_color.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86cd37f97c5a3f6d381c8aefee406e784e7827cd895d870354624384fe1b79e7 +size 156525 diff --git a/public/models/pylone/panneaux_height.png b/public/models/pylone/panneaux_height.png new file mode 100644 index 0000000..713980d --- /dev/null +++ b/public/models/pylone/panneaux_height.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:208daeea7306a6a576fbe1098c66d59571dd984635d7fb6c017fd767cde531ed +size 3178 diff --git a/public/models/pylone/panneaux_metallic.png b/public/models/pylone/panneaux_metallic.png new file mode 100644 index 0000000..b46e54a --- /dev/null +++ b/public/models/pylone/panneaux_metallic.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60041773ef2d493f3547aa1b0fbdf5b1bb548a3da39164384293ef5292b2c5b3 +size 1118 diff --git a/public/models/pylone/panneaux_mixed_ao.png b/public/models/pylone/panneaux_mixed_ao.png new file mode 100644 index 0000000..e2ac5c4 --- /dev/null +++ b/public/models/pylone/panneaux_mixed_ao.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a73fc0135fbacb8be5a64251dabe071e402d48c9d0f4c2bd25fc033c92eafbc6 +size 237957 diff --git a/public/models/pylone/panneaux_normal.png b/public/models/pylone/panneaux_normal.png new file mode 100644 index 0000000..d910f65 --- /dev/null +++ b/public/models/pylone/panneaux_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54f044e90f7a96a9d9218733b9a4136c164f0c60f4389baa4d0f14b2cbef8270 +size 83209 diff --git a/public/models/pylone/panneaux_normal_opengl.png b/public/models/pylone/panneaux_normal_opengl.png new file mode 100644 index 0000000..2956cf0 --- /dev/null +++ b/public/models/pylone/panneaux_normal_opengl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:537b66ad9e53107bc4b577877ce2282d612de6e38241f5911a2f330ef9ed4c22 +size 86378 diff --git a/public/models/pylone/panneaux_roughness.png b/public/models/pylone/panneaux_roughness.png new file mode 100644 index 0000000..3848015 --- /dev/null +++ b/public/models/pylone/panneaux_roughness.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a4c3430448c893a4c9b13c24b6ba450d2a54ecc19fe73f8a6e07244499f4f13 +size 47993 diff --git a/public/models/pylone/pied_base_color.png b/public/models/pylone/pied_base_color.png new file mode 100644 index 0000000..bf377ef --- /dev/null +++ b/public/models/pylone/pied_base_color.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0175ecfec561cc3614884bfd2a06095715c799f148d20e86c136ef6a3b0d022 +size 220660 diff --git a/public/models/pylone/pied_height.png b/public/models/pylone/pied_height.png new file mode 100644 index 0000000..713980d --- /dev/null +++ b/public/models/pylone/pied_height.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:208daeea7306a6a576fbe1098c66d59571dd984635d7fb6c017fd767cde531ed +size 3178 diff --git a/public/models/pylone/pied_metallic.png b/public/models/pylone/pied_metallic.png new file mode 100644 index 0000000..b46e54a --- /dev/null +++ b/public/models/pylone/pied_metallic.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60041773ef2d493f3547aa1b0fbdf5b1bb548a3da39164384293ef5292b2c5b3 +size 1118 diff --git a/public/models/pylone/pied_mixed_ao.png b/public/models/pylone/pied_mixed_ao.png new file mode 100644 index 0000000..e0b72f3 --- /dev/null +++ b/public/models/pylone/pied_mixed_ao.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf789a1fdd11527c58d70fe288ad149f5f032e677805e914e8142a83895b6b63 +size 268116 diff --git a/public/models/pylone/pied_normal.png b/public/models/pylone/pied_normal.png new file mode 100644 index 0000000..8b3b7bd --- /dev/null +++ b/public/models/pylone/pied_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1070e5d8ae0b38b979bf34f80c03e00a628b21b53bfe64e2a801fccfb976847f +size 259296 diff --git a/public/models/pylone/pied_normal_opengl.png b/public/models/pylone/pied_normal_opengl.png new file mode 100644 index 0000000..648434d --- /dev/null +++ b/public/models/pylone/pied_normal_opengl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77678fa53d89918eefc61f1a6942075cb73e38ff30f9ace95d7916e250d20af3 +size 261233 diff --git a/public/models/pylone/pied_roughness.png b/public/models/pylone/pied_roughness.png new file mode 100644 index 0000000..2d705d1 --- /dev/null +++ b/public/models/pylone/pied_roughness.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:919f981e76f106cf597b90ff0f0d175a3bb61beee039a92b370445f463d52516 +size 104005 diff --git a/public/models/pylone/puces_base_color.png b/public/models/pylone/puces_base_color.png new file mode 100644 index 0000000..566ec43 --- /dev/null +++ b/public/models/pylone/puces_base_color.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e1b5e8e6c40fd84b7d1220990653359933880e478f9dd5122d2f8359d12fb97 +size 343406 diff --git a/public/models/pylone/puces_height.png b/public/models/pylone/puces_height.png new file mode 100644 index 0000000..713980d --- /dev/null +++ b/public/models/pylone/puces_height.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:208daeea7306a6a576fbe1098c66d59571dd984635d7fb6c017fd767cde531ed +size 3178 diff --git a/public/models/pylone/puces_metallic.png b/public/models/pylone/puces_metallic.png new file mode 100644 index 0000000..b46e54a --- /dev/null +++ b/public/models/pylone/puces_metallic.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60041773ef2d493f3547aa1b0fbdf5b1bb548a3da39164384293ef5292b2c5b3 +size 1118 diff --git a/public/models/pylone/puces_mixed_ao.png b/public/models/pylone/puces_mixed_ao.png new file mode 100644 index 0000000..7c4ea3c --- /dev/null +++ b/public/models/pylone/puces_mixed_ao.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c217f278d763ba946e5133c85d45295090cd9a790650af6f084bdd8d169bb5ab +size 262622 diff --git a/public/models/pylone/puces_normal.png b/public/models/pylone/puces_normal.png new file mode 100644 index 0000000..addb846 --- /dev/null +++ b/public/models/pylone/puces_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4f066202057a3edcdf154c9174f1520ec44bf4ce9bab75a24c515b4c4cd3b52 +size 129597 diff --git a/public/models/pylone/puces_normal_opengl.png b/public/models/pylone/puces_normal_opengl.png new file mode 100644 index 0000000..fb4e86d --- /dev/null +++ b/public/models/pylone/puces_normal_opengl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f4e1e08446160b90a55c8f3f7b478cbcf7ea2084add0ad406fe25c1f3b92175 +size 133187 diff --git a/public/models/pylone/puces_roughness.png b/public/models/pylone/puces_roughness.png new file mode 100644 index 0000000..50a2a9b --- /dev/null +++ b/public/models/pylone/puces_roughness.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:814dccc984084f46d5e09a62f5001441d96aa6aa928f3dcbf2b14e73ad975cb6 +size 63405 diff --git a/public/models/test_model/index.html b/public/models/test_model/index.html deleted file mode 100644 index 6b78cac..0000000 --- a/public/models/test_model/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - test_model - - - Index of /models/test_model/ - - diff --git a/src/components/editor/EditorPage.tsx b/src/components/editor/EditorPage.tsx index 7ef8e4b..0d952d3 100644 --- a/src/components/editor/EditorPage.tsx +++ b/src/components/editor/EditorPage.tsx @@ -269,52 +269,27 @@ export function EditorPage(): React.JSX.Element { return; } - const mapNodes = await response.json(); + const mapNodes: MapNode[] = await response.json(); const models = new Map(); - try { - const traverseModels = async (path: string): Promise => { - try { - const response = await fetch(path); - if (!response.ok) return; - const text = await response.text(); + const uniqueModelNames = [ + ...new Set(mapNodes.map((n: MapNode) => n.name)), + ]; + console.log("Unique model names in map:", uniqueModelNames); - if (text.includes("index")) { - const modelUrl = path.replace(/\/$/, "") + "/model.glb"; - const modelResponse = await fetch(modelUrl); - if (modelResponse.ok) { - const blob = await modelResponse.blob(); - const blobUrl = URL.createObjectURL(blob); - const pathParts = path.split("/").filter(Boolean); - const modelName = pathParts[pathParts.length - 1] || ""; - models.set(modelName, blobUrl); - } - } - } catch { - /* empty */ - } - }; - - const baseResponse = await fetch("/models/"); - if (baseResponse.ok) { - const text = await baseResponse.text(); - const lines = text.split("\n"); - for (const line of lines) { - if (line.includes("href") && line.includes("/")) { - const match = line.match(/href="([^"]+)"/); - if (match && match[1]) { - const href = match[1]; - if (href.endsWith("/")) { - await traverseModels(href); - } - } - } + for (const modelName of uniqueModelNames) { + try { + const modelUrl = `/models/${modelName}/model.gltf`; + const modelResponse = await fetch(modelUrl); + if (modelResponse.ok) { + models.set(modelName, modelUrl); } + } catch { + /* empty */ } - } catch (error) { - console.warn("Could not scan models directory:", error); } + console.log("Loaded models:", Array.from(models.keys())); setSceneData({ mapNodes, models }); setHasMapJson(true); @@ -356,7 +331,7 @@ export function EditorPage(): React.JSX.Element { const models = new Map(); for (const [path, file] of fileMap.entries()) { - const modelMatch = path && path.match(/^\/models\/(.+)\/model\.glb$/); + const modelMatch = path && path.match(/^\/models\/(.+)\/model\.gltf$/); if (modelMatch && modelMatch[1]) { const modelName = modelMatch[1]; const blobUrl = URL.createObjectURL(file); diff --git a/src/components/game/GameMap.tsx b/src/components/game/GameMap.tsx new file mode 100644 index 0000000..f166f8a --- /dev/null +++ b/src/components/game/GameMap.tsx @@ -0,0 +1,112 @@ +import { useEffect, useState, useMemo, useRef } from "react"; +import { useGLTF } from "@react-three/drei"; +import * as THREE from "three"; +import { useOctreeGraphNode } from "@/hooks/useOctreeGraphNode"; +import type { OctreeReadyHandler } from "@/types/3d"; + +interface MapNode { + name: string; + type: string; + position: [number, number, number]; + rotation: [number, number, number]; + scale: [number, number, number]; +} + +const MAP_JSON_PATH = "/map.json"; + +const clonedScenesCache = new Map(); + +interface GameMapProps { + onOctreeReady: OctreeReadyHandler; +} + +export function GameMap({ onOctreeReady }: GameMapProps): React.JSX.Element { + const [mapNodes, setMapNodes] = useState([]); + const [availableModels, setAvailableModels] = useState>( + new Set(), + ); + const [isLoading, setIsLoading] = useState(true); + const groupRef = useRef(null); + + useOctreeGraphNode(groupRef, onOctreeReady); + + useEffect(() => { + const loadMap = async () => { + try { + const nodesResponse = await fetch(MAP_JSON_PATH); + if (!nodesResponse.ok) { + console.warn("map.json not found"); + setIsLoading(false); + return; + } + + const nodes: MapNode[] = await nodesResponse.json(); + setMapNodes(nodes); + + const uniqueModelNames = [...new Set(nodes.map((n) => n.name))]; + const available = new Set(); + + for (const modelName of uniqueModelNames) { + try { + const modelUrl = `/models/${modelName}/model.gltf`; + const modelResponse = await fetch(modelUrl); + if (modelResponse.ok) { + available.add(modelName); + } + } catch { + /* empty */ + } + } + setAvailableModels(available); + } catch (error) { + console.error("Error loading map:", error); + } finally { + setIsLoading(false); + } + }; + + loadMap(); + }, []); + + const nodesToRender = useMemo(() => { + return mapNodes.filter((node) => availableModels.has(node.name)); + }, [mapNodes, availableModels]); + + if (isLoading) { + return <>; + } + + return ( + + {nodesToRender.map((node, index) => ( + + ))} + + ); +} + +function ModelInstance({ node }: { node: MapNode }): React.JSX.Element { + const modelPath = `/models/${node.name}/model.gltf`; + const { scene } = useGLTF(modelPath); + + const groupRef = useRef(null); + + const clonedScene = useMemo(() => { + if (!clonedScenesCache.has(modelPath)) { + const clone = scene.clone(true); + clonedScenesCache.set(modelPath, clone); + return clone; + } + return clonedScenesCache.get(modelPath)!; + }, [modelPath, scene]); + + const instance = useMemo(() => { + const inst = clonedScene.clone(true); + inst.position.set(...node.position); + inst.rotation.set(...node.rotation); + inst.scale.set(...node.scale); + return inst; + }, [clonedScene, node.position, node.rotation, node.scale]); + + return ; +} diff --git a/src/world/World.tsx b/src/world/World.tsx index af7c39f..b7a68ef 100644 --- a/src/world/World.tsx +++ b/src/world/World.tsx @@ -10,7 +10,7 @@ import { DebugCameraControls } from "@/utils/debug/scene/DebugCameraControls"; import { DebugHelpers } from "@/utils/debug/scene/DebugHelpers"; import { Environment } from "@/world/Environment"; import { Lighting } from "@/world/Lighting"; -import { Map } from "@/world/Map"; +import { GameMap } from "@/components/game/GameMap"; import { PlayerComponent } from "@/world/player/PlayerComponent"; import { TestScene } from "@/world/debug/TestScene"; @@ -31,7 +31,7 @@ export function World(): React.JSX.Element { {cameraMode === "debug" ? : null} {sceneMode === "game" ? ( - + ) : ( )}