dev #90
|
@ -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>
|
||||
|
|
|
@ -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>
|
|
@ -20,7 +20,7 @@ export function useSceneVisibility() {
|
|||
}, 100); // Задержка в 300 мс
|
||||
});
|
||||
},
|
||||
{ threshold: 0.05 } // Порог видимости
|
||||
{ threshold: 0.1 } // Порог видимости
|
||||
);
|
||||
|
||||
if (element) {
|
||||
|
|
Loading…
Reference in New Issue