From 065b3a646fef0ccedfb5e286029e0d36a65a4469 Mon Sep 17 00:00:00 2001 From: Kseninia Mikhaylova Date: Thu, 26 Sep 2024 17:01:42 +0300 Subject: [PATCH] part of models --- components/model/fence.vue | 7 ++-- components/model/parametric.vue | 4 +-- .../{krepleniye_planok.glb => fastening.glb} | Bin ...{verh_planka_right (1).glb => top_100.glb} | Bin utils/material.ts | 33 ++++++++++++------ 5 files changed, 29 insertions(+), 15 deletions(-) rename public/models_one/{krepleniye_planok.glb => fastening.glb} (100%) rename public/models_one/{verh_planka_right (1).glb => top_100.glb} (100%) diff --git a/components/model/fence.vue b/components/model/fence.vue index e48a4a1..8df42e5 100644 --- a/components/model/fence.vue +++ b/components/model/fence.vue @@ -135,9 +135,10 @@ const setFastening = () => { two.position.setComponent(0, pillar_two_pos.value); two.scale.set(-1, lamelles_count.value, 1); - const top = props.models.top.children[0].clone(); - top.scale.setComponent(0, 1); - top.position.set(pillar_size * 0.5, lamelles_count.value * lSize, 0) + const top = props.models.top.children[0].children[0].clone(); + const v = ((extra.value as number) || fence_section.value) * 10 + 0.1 * scale_koef + top.scale.setComponent(0, v); + top.position.set(0, lamelles_count.value * lSize, 0) let arr = [one.clone(), two.clone(), top.clone(),] arr.map(el => { diff --git a/components/model/parametric.vue b/components/model/parametric.vue index f68124c..b2dbdc5 100644 --- a/components/model/parametric.vue +++ b/components/model/parametric.vue @@ -16,13 +16,13 @@ const goto_target = use_goto_target() const { scene, controls, camera } = useTresContext() const { seek, seekAll } = useSeek() -const { scene: top_model } = await useGLTF('/models_one/verh_100.glb', { draco: true }) const { scene: model_fence_top } = await useGLTF('/models_one/top.glb') const { scene: model_fence_center } = await useGLTF('/models_one/center.glb') const { scene: model_fence_bottom } = await useGLTF('/models_one/bottom.glb') const { scene: model_fence_inner } = await useGLTF('/models_one/inner.glb') const { scene: model_brace } = await useGLTF('/models_one/brace.glb') -const { scene: fastening_model } = await useGLTF('/models_one/krepleniye_planok.glb', { draco: true }); +const { scene: top_model } = await useGLTF('/models_one/top_100.glb', { draco: true }) +const { scene: fastening_model } = await useGLTF('/models_one/fastening.glb', { draco: true }); const { scene: lamelle_model } = await useGLTF('/models_one/lamel_100.glb', { draco: true }); const top = ref(top_model) diff --git a/public/models_one/krepleniye_planok.glb b/public/models_one/fastening.glb similarity index 100% rename from public/models_one/krepleniye_planok.glb rename to public/models_one/fastening.glb diff --git a/public/models_one/verh_planka_right (1).glb b/public/models_one/top_100.glb similarity index 100% rename from public/models_one/verh_planka_right (1).glb rename to public/models_one/top_100.glb diff --git a/utils/material.ts b/utils/material.ts index 35ed4ea..be5bc62 100644 --- a/utils/material.ts +++ b/utils/material.ts @@ -42,7 +42,6 @@ const set_metaril_func = (scene: any, material: any) => { }) } -const noiseTexture = useLoader(TextureLoader, '/texture/normal.jpg') const loaded_patterns: { [key: string]: any } = {} for (let index = 0; index < patterns.length; index++) { const element = patterns[index]; @@ -51,6 +50,29 @@ for (let index = 0; index < patterns.length; index++) { loaded_patterns[filename] = useLoader(TextureLoader, filename) } } +function generateNoiseTexture(width: number, height: number) { + const size = width * height; + const data = new Uint8Array(4 * size); + const color = new Color(0xffffff); + + for (let i = 0; i < size; i++) { + const r = Math.floor(Math.random() * 255) * 0.05; + const g = 0; + const b = Math.floor(Math.random() * 255) * 0.05; + + const stride = i * 4; + data[stride] = r; + data[stride + 1] = g; + data[stride + 2] = b; + data[stride + 3] = 255; + } + + // used the buffer to create a DataTexture + const texture = new DataTexture(data, width, height); + texture.needsUpdate = true; + return texture; +} + export const set_material = (scene: any, color: any, pattern: { pattern: patternTypes, count: number } | undefined = undefined) => { let c = color @@ -76,15 +98,6 @@ export const set_material = (scene: any, color: any, pattern: { pattern: pattern }) } } - // const noiseTexture = generateNoiseTexture(64, 64); - noiseTexture.then((res: Texture) => { - if (pattern && pattern.pattern !== undefined) { - res.wrapT = RepeatWrapping; - res.repeat.set(1, pattern.count); - res.needsUpdate = true - } - material.normalMap = res; - }) if (scene) set_metaril_func(scene, material) else console.log(scene)