[READ-ONLY] Mirror of https://github.com/flo-bit/room. tiny 3d rooms saved locally or in your bluesky account, svelte/threlte flo-bit.dev/room/
0

Configure Feed

Select the types of activity you want to include in your feed.

room / src / lib / models / kenney-furniture-kit / chair.svelte
1.5 kB 66 lines
1<!-- 2Auto-generated by: https://github.com/threlte/threlte/tree/main/packages/gltf 3Command: npx @threlte/gltf@3.0.0 static/models/kenney-furniture-kit/chair.glb -t -s 4--> 5 6<script lang="ts"> 7 import type * as THREE from 'three' 8 9 import type { Snippet } from 'svelte' 10 import { T, type Props } from '@threlte/core' 11 import { useGltf } from '@threlte/extras' 12 import { base } from '$app/paths'; 13 14 let { 15 fallback, 16 error, 17 children, 18 colors, 19 opacity, 20 ref = $bindable(), 21 ...props 22 }: Props<THREE.Group> & { 23 ref?: THREE.Group 24 children?: Snippet<[{ ref: THREE.Group }]>; 25 fallback?: Snippet; 26 error?: Snippet<[{ error: Error }]>; 27 colors?: (number | string)[]; 28 opacity?: number; 29 } = $props(); 30 31 type GLTFResult = { 32 nodes: { 33 ['chair(Clone)']: THREE.Mesh 34 } 35 materials: { 36 wood: THREE.MeshStandardMaterial 37 } 38 } 39 40 const gltf = useGltf<GLTFResult>(base + '/models/kenney-furniture-kit/chair.glb'); 41</script> 42 43<T.Group 44 bind:ref 45 dispose={false} 46 {...props} 47> 48 {#await gltf} 49 {@render fallback?.()} 50 {:then gltf} 51 <T.Mesh 52 castShadow 53 receiveShadow 54 geometry={gltf.nodes['chair(Clone)'].geometry} 55 material={gltf.materials.wood.clone()} 56 material.color={colors?.[0] ?? gltf.materials.wood.color} 57 material.opacity={opacity ?? gltf.materials.wood.opacity} 58 material.transparent={opacity !== undefined} 59 position={[-0.1, 0.0, 0.1]} 60 /> 61 {:catch err} 62 {@render error?.({ error: err })} 63 {/await} 64 65 {@render children?.({ ref })} 66</T.Group>