dev #84

Merged
ksenia_mikhailova merged 141 commits from dev into main 2024-10-03 15:30:24 +03:00
10 changed files with 68 additions and 37 deletions
Showing only changes of commit 462b1cf5e5 - Show all commits

View File

@ -20,8 +20,8 @@ const lSize = lamelle_height.value
const bSize = 0.0235 const bSize = 0.0235
const pillar_size = 104 * 0.001 const pillar_size = 104 * 0.001
const pillar_one_pos = ref(fence_section.value * -0.5 - 0.015) const pillar_one_pos = ref(fence_section.value * -0.5)
const pillar_two_pos = ref(fence_section.value * 0.5 + pillar_size + bSize - 0.01) const pillar_two_pos = ref(fence_section.value * 0.5 + pillar_size + bSize)
const scale_koef = 1 const scale_koef = 1
const show_pillar_one = ref(props.first_element) 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 getExtraValue = () => (extra_section.value && props.last_element) ? extra_section.value * 0.001 : false
const extra = ref(getExtraValue()) const extra = ref(getExtraValue())
if (extra.value) { if (extra.value) {
pillar_one_pos.value = (extra.value as number) * -0.5 - 0.015 pillar_one_pos.value = (extra.value as number) * -0.5
pillar_two_pos.value = (extra.value as number) * 0.5 + pillar_size + bSize - 0.01 pillar_two_pos.value = (extra.value as number) * 0.5 + pillar_size + bSize
} }
const make_translate_to_section = (source = fence_section.value) => { 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 scale_x = (((extra.value as number) || fence_section.value) * 10)
const pos_x = pillar_size * 0.5 const pos_x = pillar_size * 0.5
const pos_y = (lSize * i) const pos_y = (lSize * i)
const pos_z = 0.02 const pos_z = 0.022 * scale_koef
const newmatrix = new Matrix4().fromArray([ const newmatrix = new Matrix4().fromArray([
scale_x, 0, 0, 0, scale_x, 0, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
@ -90,7 +90,7 @@ const setBraceCount = () => {
brace_count.value = Math.ceil(lamelles_count.value / 4) 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_h = lamelle_height.value * 3
const brace_count = ref<number>() const brace_count = ref<number>()
@ -99,16 +99,16 @@ watch(lamelles_count, setBraceCount)
const pillar = ref<Mesh[]>([]) const pillar = ref<Mesh[]>([])
const setPillar = () => { 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) 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); 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); 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) bottom.position.setComponent(1, lSize * -1)
let arr = [top.clone(), pillar_outer.clone(), pillar_inner.clone(), bottom.clone(),] 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<Object3D[]>([]) const fastening = ref<Object3D[]>([])
const setFastening = () => { const setFastening = () => {
const one = props.models.fastening.children[0].clone(); // const one = props.models.fastening.children[0].clone();
one.position.setComponent(0, pillar_one_pos.value); // one.position.setComponent(0, pillar_one_pos.value);
one.scale.set(1, lamelles_count.value, 1); // one.scale.set(1, lamelles_count.value, 1);
const two = props.models.fastening.children[0].clone(); // const two = props.models.fastening.children[0].clone();
two.position.setComponent(0, pillar_two_pos.value); // two.position.setComponent(0, pillar_two_pos.value);
two.scale.set(-1, lamelles_count.value, 1); // 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 = props.models.top.children[0].children[0].clone(); const top_two = props.models.fastening_top_right.clone().children[0].children[1]
const v = ((extra.value as number) || fence_section.value) * 10 + 0.1 * scale_koef 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.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 => { arr.map(el => {
set_material({ children: [el] }, getColorHexFromRal(pillar_color.value)) set_material({ children: [el] }, getColorHexFromRal(pillar_color.value))
}) })
fastening.value = arr fastening.value = arr
} }
setFastening() setFastening()
watch([pillar_color, fence_section, lamelles_count], setFastening) watch([pillar_color, lamelles_count, pillar_one_pos, pillar_two_pos], setFastening)
const setLamellesColor = () => { const setLamellesColor = () => {
if (instanced_lamelle.value) { if (instanced_lamelle.value) {

View File

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { Vector3 } from 'three'; import { Vector3 } from 'three';
//@ts-ignore //@ts-ignore
import { useGLTF, } from '@tresjs/cientos' import { useGLTF, } from '@tresjs/cientos'
import type { OrbitControlsProps } from '@tresjs/cientos/dist/core/controls/OrbitControls.vue.js'; import type { OrbitControlsProps } from '@tresjs/cientos/dist/core/controls/OrbitControls.vue.js';
const section_count = use_section_count() const section_count = use_section_count()
@ -16,22 +16,27 @@ const goto_target = use_goto_target()
const { scene, controls, camera } = useTresContext() const { scene, controls, camera } = useTresContext()
const { seek, seekAll } = useSeek() const { seek, seekAll } = useSeek()
const { scene: model_fence_top } = await useGLTF('/models_one/top.glb') const { scene: model_pillar_top } = await useGLTF('/models_one/pillar/top.glb')
const { scene: model_fence_center } = await useGLTF('/models_one/center.glb') const { scene: model_pillar_center } = await useGLTF('/models_one/pillar/center.glb')
const { scene: model_fence_bottom } = await useGLTF('/models_one/bottom.glb') const { scene: model_pillar_bottom } = await useGLTF('/models_one/pillar/bottom.glb')
const { scene: model_fence_inner } = await useGLTF('/models_one/inner.glb') const { scene: model_pillar_inner } = await useGLTF('/models_one/pillar/inner.glb')
const { scene: model_brace } = await useGLTF('/models_one/brace.glb') const { scene: model_pillar_brace } = await useGLTF('/models_one/pillar/brace.glb')
const { scene: model_fastening_top_center } = await useGLTF('/models_one/fastening/top_center.glb');
const { scene: model_fastening_top_right } = await useGLTF('/models_one/fastening/top_right.glb');
const { scene: model_fastening_side } = await useGLTF('/models_one/fastening/side.glb');
const { scene: top_model } = await useGLTF('/models_one/top_100.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 { scene: lamelle_model } = await useGLTF('/models_one/lamel_100.glb', { draco: true });
const top = ref(top_model) const top = ref(top_model)
const fence = ref(model_fence_center) const pillar_center = ref(model_pillar_center)
const fence_top = ref(model_fence_top) const pillar_top = ref(model_pillar_top)
const fence_bottom = ref(model_fence_bottom) const pillar_bottom = ref(model_pillar_bottom)
const fence_inner = ref(model_fence_inner) const pillar_inner = ref(model_pillar_inner)
const brace = ref(model_brace) const pillar_brace = ref(model_pillar_brace)
const fastening = ref(fastening_model) const fastening_top_center = ref(model_fastening_top_center)
const fastening_top_right = ref(model_fastening_top_right)
const fastening_side = ref(model_fastening_side)
const lamelle = ref(lamelle_model) const lamelle = ref(lamelle_model)
const total = ref((section_count.value + ~~(!!extra_section.value))) const total = ref((section_count.value + ~~(!!extra_section.value)))
@ -91,8 +96,12 @@ watch(open_calc, () => {
<template> <template>
<TresGroup name="base"> <TresGroup name="base">
<template v-for="line in (total >= 4) ? 4 : 1" :key="`${line}_${count}`"> <template v-for="line in (total >= 4) ? 4 : 1" :key="`${line}_${count}`">
<ModelLine :models="{ top, fence, fence_top, fence_bottom, fence_inner, brace, fastening, lamelle }" :number="line" <ModelLine :models="{
:count="count" /> top,
pillar_center, pillar_top, pillar_bottom, pillar_inner, pillar_brace,
fastening_top_center, fastening_top_right, fastening_side,
lamelle
}" :number="line" :count="count" />
</template> </template>
</TresGroup> </TresGroup>
</template> </template>

Binary file not shown.

Binary file not shown.