audio
This commit is contained in:
parent
a76d6b700f
commit
f2284926bc
|
@ -1,5 +1,5 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, ref } from 'vue';
|
import { onMounted, reactive, ref } from 'vue';
|
||||||
import { Object3D, Vector3 } from 'three';
|
import { Object3D, Vector3 } from 'three';
|
||||||
import { TresCanvas, useRenderLoop } from '@tresjs/core';
|
import { TresCanvas, useRenderLoop } from '@tresjs/core';
|
||||||
import { vLightHelper } from '@tresjs/core'
|
import { vLightHelper } from '@tresjs/core'
|
||||||
|
@ -49,12 +49,21 @@ onLoop(() => {
|
||||||
spot_light_target.value.translateX(step)
|
spot_light_target.value.translateX(step)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const audio_played = ref<boolean>(false)
|
||||||
|
const audio = new Audio('/sea.ogg')
|
||||||
|
const playAudio = () => {
|
||||||
|
if (!audio_played.value) {
|
||||||
|
audio_played.value = true
|
||||||
|
audio.play()
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div :class="[{ 'invisible': !!hasFinishLoading }, 'loader']">
|
<div :class="[{ 'invisible': !!hasFinishLoading }, 'loader']">
|
||||||
Загрузка {{ progress }}%
|
Загрузка {{ progress }}%
|
||||||
</div>
|
</div>
|
||||||
<div :class="[{ 'invisible': !hasFinishLoading }]">
|
<div :class="[{ 'invisible': !hasFinishLoading }]" @click="playAudio">
|
||||||
<TresCanvas window-size alpha shadows clear-color="#87ceeb">
|
<TresCanvas window-size alpha shadows clear-color="#87ceeb">
|
||||||
<TresPerspectiveCamera :position="cameraPosition" />
|
<TresPerspectiveCamera :position="cameraPosition" />
|
||||||
<CameraControls v-bind="controlsState" @change="onChange" make-default />
|
<CameraControls v-bind="controlsState" @change="onChange" make-default />
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { Box3, Vector3 } from 'three';
|
import { Box3, Vector3 } from 'three';
|
||||||
import { PositionalAudio, useGLTF, } from '@tresjs/cientos'
|
import { useGLTF, } from '@tresjs/cientos'
|
||||||
import { onMounted, onUnmounted, shallowRef } from 'vue';
|
|
||||||
|
|
||||||
const props = defineProps(['modelUrl', 'onClick'])
|
const props = defineProps(['modelUrl', 'onClick'])
|
||||||
|
|
||||||
|
@ -20,21 +19,12 @@ const show_alert = () => {
|
||||||
}
|
}
|
||||||
scene.receiveShadow = true
|
scene.receiveShadow = true
|
||||||
scene.castShadow = true
|
scene.castShadow = true
|
||||||
|
|
||||||
const positionalAudioRef = shallowRef(null)
|
|
||||||
|
|
||||||
onUnmounted(() => {
|
|
||||||
positionalAudioRef?.value?.dispose()
|
|
||||||
})
|
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<TresGroup :posiion="[0, 0, 0]">
|
<TresGroup :posiion="[0, 0, 0]">
|
||||||
<TresMesh :position="center" @click="show_alert" cast-shadow receive-shadow>
|
<TresMesh :position="center" @click="show_alert" cast-shadow receive-shadow>
|
||||||
<TresBoxGeometry :args="box_size" />
|
<TresBoxGeometry :args="box_size" />
|
||||||
<TresMeshPhysicalMaterial :opacity="0" color="pink" :transparent="true" />
|
<TresMeshPhysicalMaterial :opacity="0" color="pink" :transparent="true" />
|
||||||
<Suspense>
|
|
||||||
<PositionalAudio ref="positionalAudioRef" url="/sea.ogg" helper />
|
|
||||||
</Suspense>
|
|
||||||
</TresMesh>
|
</TresMesh>
|
||||||
<TresMesh cast-shadow receive-shadow>
|
<TresMesh cast-shadow receive-shadow>
|
||||||
<primitive :object="scene" />
|
<primitive :object="scene" />
|
||||||
|
|
|
@ -30,7 +30,6 @@ renderer.value.toneMapping = ACESFilmicToneMapping
|
||||||
renderer.value.toneMappingExposure = 0.15
|
renderer.value.toneMappingExposure = 0.15
|
||||||
renderer.value.shadowMap.enabled = true
|
renderer.value.shadowMap.enabled = true
|
||||||
|
|
||||||
console.log(renderer)
|
|
||||||
const repeat = 20
|
const repeat = 20
|
||||||
|
|
||||||
map.wrapS = RepeatWrapping
|
map.wrapS = RepeatWrapping
|
||||||
|
|
Loading…
Reference in New Issue