瀏覽代碼

fix(cientos): draco encoding and decoderPath

Alvaro 2 年之前
父節點
當前提交
c9bd7ad6ef

+ 2 - 1
packages/cientos/src/core/useGLTF/component.ts

@@ -7,12 +7,13 @@ export const GLTFModel = defineComponent({
   props: {
     path: String,
     draco: Boolean,
+    decoderPath: String,
   },
 
   async setup(props) {
     const scene = inject<Ref<Scene>>('local-scene')
 
-    const { scene: model } = await useGLTF(props.path as string, { draco: props.draco })
+    const { scene: model } = await useGLTF(props.path as string, { draco: props.draco, decoderPath: props.decoderPath })
     if (scene?.value) {
       scene.value.add(model)
     }

+ 8 - 4
packages/cientos/src/core/useGLTF/index.ts

@@ -1,5 +1,6 @@
 import { GLTFLoader, DRACOLoader } from 'three-stdlib'
-import { useLoader } from '@tresjs/core'
+import { useLoader } from '../../../../tres/src/core'
+/* import { useLoader } from '@tresjs/core' */
 import { Object3D } from 'three'
 
 export interface GLTFLoaderOptions {
@@ -24,10 +25,13 @@ function setExtensions(options: GLTFLoaderOptions, extendLoader?: (loader: GLTFL
     if (extendLoader) {
       extendLoader(loader as GLTFLoader)
     }
-    if (!dracoLoader) {
-      dracoLoader = new DRACOLoader()
+    if (options.draco) {
+      if (!dracoLoader) {
+        dracoLoader = new DRACOLoader()
+      }
+      dracoLoader.setDecoderPath(options.decoderPath || 'https://www.gstatic.com/draco/versioned/decoders/1.4.3/')
+      loader.setDRACOLoader(dracoLoader)
     }
-    dracoLoader.setDecoderPath(options.decoderPath || 'https://www.gstatic.com/draco/versioned/decoders/1.4.3/')
   }
 }
 export async function useGLTF(

+ 4 - 7
packages/tres/src/components/TheExperience.vue

@@ -1,5 +1,6 @@
 <script setup lang="ts">
-import { OrbitControls } from '@tresjs/cientos'
+import { OrbitControls, GLTFModel } from '../../../cientos/src/'
+/* import { OrbitControls, GLTFModel } from '@tresjs/cientos' */
 </script>
 <template>
   <TresCanvas
@@ -14,12 +15,8 @@ import { OrbitControls } from '@tresjs/cientos'
     <TresScene>
       <OrbitControls />
       <TresAmbientLight :intensity="0.5" />
-      <!--  <TresOrbitControls v-if="state.renderer" :args="[state.camera, state.renderer?.domElement]" /> -->
-      <TresMesh :position="[0, 0, 0]">
-        <TresBoxGeometry />
-        <TresMeshNormalMaterial />
-      </TresMesh>
-      <TresAxesHelper :args="[1]" :visible="false" />
+      <TresFog :color="'#444'" />
+      <GLTFModel draco path="https://raw.githubusercontent.com/Tresjs/assets/main/models/gltf/portal/portal.gltf" />
       <TresDirectionalLight :position="[0, 2, 4]" :intensity="2" cast-shadow />
     </TresScene>
   </TresCanvas>

+ 1 - 1
packages/tres/src/core/useLoader/index.ts

@@ -47,7 +47,7 @@ export async function useLoader<T extends LoaderProto<T>, U extends string | str
   }
 
   if (extensions) {
-    extensions(Loader)
+    extensions(proto)
   }
 
   const paths = (Array.isArray(url) ? url : [url]) as string[]