index.vue 727 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <script setup lang="ts">
  2. import { useRenderLoop, extend } from '@tresjs/core'
  3. import { shallowRef, watchEffect } from 'vue'
  4. import { WobbleMaterialImpl as MeshWobbleMaterial } from './material'
  5. const props = withDefaults(
  6. defineProps<{
  7. speed?: number
  8. factor?: number
  9. }>(),
  10. {
  11. speed: 1,
  12. factor: 1,
  13. },
  14. )
  15. const materialRef = shallowRef()
  16. extend({ MeshWobbleMaterial })
  17. const { onLoop } = useRenderLoop()
  18. watchEffect(() => {
  19. console.log(materialRef.value)
  20. })
  21. onLoop(({ elapsed }) => {
  22. if (materialRef.value) {
  23. materialRef.value.time = elapsed * props?.speed
  24. }
  25. })
  26. </script>
  27. <template>
  28. <TresMeshWobbleMaterial
  29. ref="materialRef"
  30. :factor="factor"
  31. v-bind="$attrs"
  32. />
  33. </template>