From 462b1cf5e5f0041de85524ea152997221ebf03c5 Mon Sep 17 00:00:00 2001 From: aarizona Date: Thu, 26 Sep 2024 22:05:38 +0300 Subject: [PATCH] pivot test --- components/model/fence.vue | 66 ++++++++++++------ components/model/parametric.vue | 39 +++++++---- .../{fastening.glb => fastening/side.glb} | Bin public/models_one/fastening/top_center.glb | Bin 0 -> 6192 bytes public/models_one/fastening/top_right.glb | Bin 0 -> 12416 bytes public/models_one/{ => pillar}/bottom.glb | Bin public/models_one/{ => pillar}/brace.glb | Bin public/models_one/{ => pillar}/center.glb | Bin public/models_one/{ => pillar}/inner.glb | Bin public/models_one/{ => pillar}/top.glb | Bin 10 files changed, 68 insertions(+), 37 deletions(-) rename public/models_one/{fastening.glb => fastening/side.glb} (100%) create mode 100644 public/models_one/fastening/top_center.glb create mode 100644 public/models_one/fastening/top_right.glb rename public/models_one/{ => pillar}/bottom.glb (100%) rename public/models_one/{ => pillar}/brace.glb (100%) rename public/models_one/{ => pillar}/center.glb (100%) rename public/models_one/{ => pillar}/inner.glb (100%) rename public/models_one/{ => pillar}/top.glb (100%) diff --git a/components/model/fence.vue b/components/model/fence.vue index 8df42e5..3a01558 100644 --- a/components/model/fence.vue +++ b/components/model/fence.vue @@ -20,8 +20,8 @@ const lSize = lamelle_height.value const bSize = 0.0235 const pillar_size = 104 * 0.001 -const pillar_one_pos = ref(fence_section.value * -0.5 - 0.015) -const pillar_two_pos = ref(fence_section.value * 0.5 + pillar_size + bSize - 0.01) +const pillar_one_pos = ref(fence_section.value * -0.5) +const pillar_two_pos = ref(fence_section.value * 0.5 + pillar_size + bSize) const scale_koef = 1 const show_pillar_one = ref(props.first_element) @@ -30,8 +30,8 @@ const show_pillar_two = ref(true) const getExtraValue = () => (extra_section.value && props.last_element) ? extra_section.value * 0.001 : false const extra = ref(getExtraValue()) if (extra.value) { - pillar_one_pos.value = (extra.value as number) * -0.5 - 0.015 - pillar_two_pos.value = (extra.value as number) * 0.5 + pillar_size + bSize - 0.01 + pillar_one_pos.value = (extra.value as number) * -0.5 + pillar_two_pos.value = (extra.value as number) * 0.5 + pillar_size + bSize } const make_translate_to_section = (source = fence_section.value) => { @@ -58,7 +58,7 @@ watch([instanced_lamelle, fence_section, extra_section, lamelles_count, extra], const scale_x = (((extra.value as number) || fence_section.value) * 10) const pos_x = pillar_size * 0.5 const pos_y = (lSize * i) - const pos_z = 0.02 + const pos_z = 0.022 * scale_koef const newmatrix = new Matrix4().fromArray([ scale_x, 0, 0, 0, 0, 1, 0, 0, @@ -90,7 +90,7 @@ const setBraceCount = () => { brace_count.value = Math.ceil(lamelles_count.value / 4) } -const brace = props.models.brace.clone().children[0] +const brace = props.models.pillar_brace.clone().children[0] const brace_h = lamelle_height.value * 3 const brace_count = ref() @@ -99,16 +99,16 @@ watch(lamelles_count, setBraceCount) const pillar = ref([]) const setPillar = () => { - const top = props.models.fence_top.children[0]; + const top = props.models.pillar_top.children[0]; top.position.setComponent(1, lSize * lamelles_count.value) - const pillar_outer = props.models.fence.children[0]; + const pillar_outer = props.models.pillar_center.children[0]; pillar_outer.scale.setComponent(1, lamelles_count.value); - const pillar_inner = props.models.fence_inner.children[0]; + const pillar_inner = props.models.pillar_inner.children[0]; pillar_inner.scale.setComponent(1, lamelles_count.value); - const bottom = props.models.fence_bottom.children[0]; + const bottom = props.models.pillar_bottom.children[0]; bottom.position.setComponent(1, lSize * -1) let arr = [top.clone(), pillar_outer.clone(), pillar_inner.clone(), bottom.clone(),] @@ -127,27 +127,49 @@ watch([pillar_pattern, pillar_color, fence_section, lamelles_count], setPillar) const fastening = ref([]) const setFastening = () => { - const one = props.models.fastening.children[0].clone(); - one.position.setComponent(0, pillar_one_pos.value); - one.scale.set(1, lamelles_count.value, 1); + // const one = props.models.fastening.children[0].clone(); + // one.position.setComponent(0, pillar_one_pos.value); + // one.scale.set(1, lamelles_count.value, 1); - const two = props.models.fastening.children[0].clone(); - two.position.setComponent(0, pillar_two_pos.value); - two.scale.set(-1, lamelles_count.value, 1); - - const top = props.models.top.children[0].children[0].clone(); - const v = ((extra.value as number) || fence_section.value) * 10 + 0.1 * scale_koef + // const two = props.models.fastening.children[0].clone(); + // two.position.setComponent(0, pillar_two_pos.value); + // two.scale.set(-1, lamelles_count.value, 1); + const z_koef = -0.005 * scale_koef + const top_one = props.models.fastening_top_right.clone().children[0].children[1] + top_one.position.set(pillar_one_pos.value - bSize * 2, lamelles_count.value * lSize - 0.02 * scale_koef, 0) + top_one.updateMatrixWorld() + + const top_two = props.models.fastening_top_right.clone().children[0].children[1] + top_two.position.set(pillar_two_pos.value - bSize * 2, lamelles_count.value * lSize - 0.02 * scale_koef, 0) + top_two.updateMatrixWorld() + + const top = props.models.fastening_top_center.clone().children[0]; + top.position.set(0, lamelles_count.value * lSize - 0.02 * scale_koef, 0); + const v = ((extra.value as number) || fence_section.value) * 10 top.scale.setComponent(0, v); - top.position.set(0, lamelles_count.value * lSize, 0) + top.updateMatrixWorld() - let arr = [one.clone(), two.clone(), top.clone(),] + const side_one = props.models.fastening_side.clone().children[0]; + side_one.name = 'side_one' + side_one.position.set(pillar_one_pos.value, 0, z_koef * -1); + side_one.scale.set(1, lamelles_count.value, 1) + side_one.updateMatrixWorld(); + + const side_two = props.models.fastening_side.clone().children[0]; + side_two.name = 'side_two' + side_two.scale.set(-1, lamelles_count.value, -1) + side_two.position.set(pillar_two_pos.value, 0, z_koef); + side_two.updateMatrixWorld(); + + // let arr = [one.clone(), two.clone(), top.clone(),] + let arr = [top_one.clone(), top.clone(), top_two.clone(), side_one.clone(), side_two.clone()] arr.map(el => { set_material({ children: [el] }, getColorHexFromRal(pillar_color.value)) }) fastening.value = arr } setFastening() -watch([pillar_color, fence_section, lamelles_count], setFastening) +watch([pillar_color, lamelles_count, pillar_one_pos, pillar_two_pos], setFastening) const setLamellesColor = () => { if (instanced_lamelle.value) { diff --git a/components/model/parametric.vue b/components/model/parametric.vue index b2dbdc5..f09d119 100644 --- a/components/model/parametric.vue +++ b/components/model/parametric.vue @@ -1,7 +1,7 @@