dev #90

Merged
ksenia_mikhailova merged 20 commits from dev into main 2025-03-20 14:15:19 +03:00
3 changed files with 62 additions and 2 deletions
Showing only changes of commit 50f61e9341 - Show all commits

View File

@ -51,7 +51,9 @@ onBeforeUnmount(() => {
Загрузка 3D модели
</div>
</template>
<TresCanvas height="600" :render-mode="renderMode" :key="renderMode">
{{ renderMode }}
<TresCanvas height="600">
<ModelUpdateRenderMode :render-mode="renderMode" />
<TresPerspectiveCamera :position="[-7, 2, 4]" ref="camera" />
<OrbitControls v-bind="controlsState" ref="controls" make-default />
<Suspense>

View File

@ -0,0 +1,58 @@
<!-- RenderModeController.vue -->
<script setup lang="ts">
import { watch, onMounted } from 'vue';
import { useTresContext } from '@tresjs/core';
// Пропсы для управления render-mode
const props = defineProps({
renderMode: {
type: String,
default: 'always', // Значение по умолчанию
validator: (value: string) => ['always', 'never'].includes(value),
},
});
// Получаем контекст TresJS
const { renderer, scene, camera } = useTresContext();
// Функция для обновления render-mode
const updateRenderMode = () => {
if (!renderer.value || !scene.value || !camera.value) {
console.warn('Tres context is not ready');
return;
}
console.log(scene)
console.log(renderer)
switch (props.renderMode) {
case 'always':
// Рендерим постоянно
scene.value.visible = true
break;
case 'manual':
// Полностью останавливаем рендеринг
scene.value.visible = false
break;
default:
console.warn(`Unsupported render mode: ${props.renderMode}`);
}
};
// Наблюдаем за изменением renderMode
watch(
() => props.renderMode,
() => {
updateRenderMode();
}
);
// Инициализация при монтировании
onMounted(() => {
updateRenderMode();
});
</script>
<template>
<!-- Компонент не требует шаблона, так как он управляет логикой -->
</template>

View File

@ -20,7 +20,7 @@ export function useSceneVisibility() {
}, 100); // Задержка в 300 мс
});
},
{ threshold: 0.05 } // Порог видимости
{ threshold: 0.1 } // Порог видимости
);
if (element) {