diff --git a/public/3dmodels/AI+MANUAL/Head&Shoulders/Head&Shoulders.fbx b/public/3dmodels/AI+MANUAL/Head&Shoulders/Head&Shoulders.fbx new file mode 100644 index 0000000..f3b51b0 Binary files /dev/null and b/public/3dmodels/AI+MANUAL/Head&Shoulders/Head&Shoulders.fbx differ diff --git a/public/3dmodels/AI+MANUAL/Head&Shoulders/Tex/Head&Shoulders.jpg b/public/3dmodels/AI+MANUAL/Head&Shoulders/Tex/Head&Shoulders.jpg new file mode 100644 index 0000000..7fa7f43 Binary files /dev/null and b/public/3dmodels/AI+MANUAL/Head&Shoulders/Tex/Head&Shoulders.jpg differ diff --git a/public/3dmodels/AI+MANUAL/PONDS/Ponds.fbx b/public/3dmodels/AI+MANUAL/PONDS/Ponds.fbx new file mode 100644 index 0000000..61f5f52 Binary files /dev/null and b/public/3dmodels/AI+MANUAL/PONDS/Ponds.fbx differ diff --git a/public/3dmodels/AI+MANUAL/PONDS/Tex/Ponds_Dreamflower.png b/public/3dmodels/AI+MANUAL/PONDS/Tex/Ponds_Dreamflower.png new file mode 100644 index 0000000..e18d1f8 Binary files /dev/null and b/public/3dmodels/AI+MANUAL/PONDS/Tex/Ponds_Dreamflower.png differ diff --git a/public/3dmodels/AI+MANUAL/PONDS/Tex/Ponds_Magic.png b/public/3dmodels/AI+MANUAL/PONDS/Tex/Ponds_Magic.png new file mode 100644 index 0000000..4f9ecda Binary files /dev/null and b/public/3dmodels/AI+MANUAL/PONDS/Tex/Ponds_Magic.png differ diff --git a/public/3dmodels/AI+MANUAL/Spinz/01/Spinz.fbx b/public/3dmodels/AI+MANUAL/Spinz/01/Spinz.fbx new file mode 100644 index 0000000..dc5df5d Binary files /dev/null and b/public/3dmodels/AI+MANUAL/Spinz/01/Spinz.fbx differ diff --git a/public/3dmodels/AI+MANUAL/Spinz/01/Tex/Spinz_Enchant.png b/public/3dmodels/AI+MANUAL/Spinz/01/Tex/Spinz_Enchant.png new file mode 100644 index 0000000..a0edd4f Binary files /dev/null and b/public/3dmodels/AI+MANUAL/Spinz/01/Tex/Spinz_Enchant.png differ diff --git a/public/3dmodels/AI+MANUAL/Spinz/01/Tex/Spinz_Exotic.png b/public/3dmodels/AI+MANUAL/Spinz/01/Tex/Spinz_Exotic.png new file mode 100644 index 0000000..2de94ea Binary files /dev/null and b/public/3dmodels/AI+MANUAL/Spinz/01/Tex/Spinz_Exotic.png differ diff --git a/public/3dmodels/AI+MANUAL/Spinz/02/Spinz.fbx b/public/3dmodels/AI+MANUAL/Spinz/02/Spinz.fbx new file mode 100644 index 0000000..15d134f Binary files /dev/null and b/public/3dmodels/AI+MANUAL/Spinz/02/Spinz.fbx differ diff --git a/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Enchant_AlbedoTransparency.png b/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Enchant_AlbedoTransparency.png new file mode 100644 index 0000000..0691ee0 Binary files /dev/null and b/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Enchant_AlbedoTransparency.png differ diff --git a/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Enchant_Normal.png b/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Enchant_Normal.png new file mode 100644 index 0000000..b6ae97a Binary files /dev/null and b/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Enchant_Normal.png differ diff --git a/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Exotic_AlbedoTransparency.png b/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Exotic_AlbedoTransparency.png new file mode 100644 index 0000000..4c684dd Binary files /dev/null and b/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Exotic_AlbedoTransparency.png differ diff --git a/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Exotic_Normal.png b/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Exotic_Normal.png new file mode 100644 index 0000000..b6ae97a Binary files /dev/null and b/public/3dmodels/AI+MANUAL/Spinz/02/Tex/Spinz_Exotic_Normal.png differ diff --git a/public/3dmodels/Full_AI/Indica/Indica_easy.fbx b/public/3dmodels/Full_AI/Indica/Indica_easy.fbx new file mode 100644 index 0000000..6a1ae03 Binary files /dev/null and b/public/3dmodels/Full_AI/Indica/Indica_easy.fbx differ diff --git a/public/3dmodels/Full_AI/Indica/Tex/Indica.jpg b/public/3dmodels/Full_AI/Indica/Tex/Indica.jpg new file mode 100644 index 0000000..c3403c0 Binary files /dev/null and b/public/3dmodels/Full_AI/Indica/Tex/Indica.jpg differ diff --git a/public/3dmodels/Full_AI/Nyle/Nyle.fbx b/public/3dmodels/Full_AI/Nyle/Nyle.fbx new file mode 100644 index 0000000..cd65036 Binary files /dev/null and b/public/3dmodels/Full_AI/Nyle/Nyle.fbx differ diff --git a/public/3dmodels/Full_AI/Nyle/Tex/Nyle.jpg b/public/3dmodels/Full_AI/Nyle/Tex/Nyle.jpg new file mode 100644 index 0000000..16333f4 Binary files /dev/null and b/public/3dmodels/Full_AI/Nyle/Tex/Nyle.jpg differ diff --git a/public/3dmodels/MANUAL/Cavins/GEE_TIN.fbx b/public/3dmodels/MANUAL/Cavins/GEE_TIN.fbx new file mode 100644 index 0000000..7329439 Binary files /dev/null and b/public/3dmodels/MANUAL/Cavins/GEE_TIN.fbx differ diff --git a/public/3dmodels/MANUAL/Cavins/Tex/GEE_AW.png b/public/3dmodels/MANUAL/Cavins/Tex/GEE_AW.png new file mode 100644 index 0000000..b432df3 Binary files /dev/null and b/public/3dmodels/MANUAL/Cavins/Tex/GEE_AW.png differ diff --git a/public/3dmodels/MANUAL/Cavins_Tetra/Cavins_Tetra.fbx b/public/3dmodels/MANUAL/Cavins_Tetra/Cavins_Tetra.fbx new file mode 100644 index 0000000..892830e Binary files /dev/null and b/public/3dmodels/MANUAL/Cavins_Tetra/Cavins_Tetra.fbx differ diff --git a/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170mL Belgian Chocolate.png b/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170mL Belgian Chocolate.png new file mode 100644 index 0000000..641af31 Binary files /dev/null and b/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170mL Belgian Chocolate.png differ diff --git a/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170mL Chocolate_Artwork.png b/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170mL Chocolate_Artwork.png new file mode 100644 index 0000000..d949549 Binary files /dev/null and b/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170mL Chocolate_Artwork.png differ diff --git a/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170mL Strawberry MilkShake_Artwork.png b/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170mL Strawberry MilkShake_Artwork.png new file mode 100644 index 0000000..e872877 Binary files /dev/null and b/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170mL Strawberry MilkShake_Artwork.png differ diff --git a/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170ml Kaju Buterscotch MilkShake.png b/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170ml Kaju Buterscotch MilkShake.png new file mode 100644 index 0000000..8c9b4ad Binary files /dev/null and b/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170ml Kaju Buterscotch MilkShake.png differ diff --git a/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170ml Vanilla MilkShake.png b/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170ml Vanilla MilkShake.png new file mode 100644 index 0000000..b44a698 Binary files /dev/null and b/public/3dmodels/MANUAL/Cavins_Tetra/Tex/170ml Vanilla MilkShake.png differ diff --git a/public/3dmodels/MANUAL/Fairever/Carton.fbx b/public/3dmodels/MANUAL/Fairever/Carton.fbx new file mode 100644 index 0000000..ab6e167 Binary files /dev/null and b/public/3dmodels/MANUAL/Fairever/Carton.fbx differ diff --git a/public/3dmodels/MANUAL/Fairever/Tex/AW.png b/public/3dmodels/MANUAL/Fairever/Tex/AW.png new file mode 100644 index 0000000..ee0ae0b Binary files /dev/null and b/public/3dmodels/MANUAL/Fairever/Tex/AW.png differ diff --git a/public/3dmodels/MANUAL/Fairever/Tex/Tube_Tex.png b/public/3dmodels/MANUAL/Fairever/Tex/Tube_Tex.png new file mode 100644 index 0000000..109b267 Binary files /dev/null and b/public/3dmodels/MANUAL/Fairever/Tex/Tube_Tex.png differ diff --git a/public/3dmodels/MANUAL/Fairever/Tube.fbx b/public/3dmodels/MANUAL/Fairever/Tube.fbx new file mode 100644 index 0000000..bcdfe35 Binary files /dev/null and b/public/3dmodels/MANUAL/Fairever/Tube.fbx differ diff --git a/public/3dmodels/MANUAL/MAA_Bottle/MAA_Bottle.fbx b/public/3dmodels/MANUAL/MAA_Bottle/MAA_Bottle.fbx new file mode 100644 index 0000000..3c3ca06 Binary files /dev/null and b/public/3dmodels/MANUAL/MAA_Bottle/MAA_Bottle.fbx differ diff --git a/public/3dmodels/MANUAL/MAA_Bottle/Tex/MAA_PET_CAP_Normal.png b/public/3dmodels/MANUAL/MAA_Bottle/Tex/MAA_PET_CAP_Normal.png new file mode 100644 index 0000000..7472b92 Binary files /dev/null and b/public/3dmodels/MANUAL/MAA_Bottle/Tex/MAA_PET_CAP_Normal.png differ diff --git a/public/3dmodels/MANUAL/MAA_Bottle/Tex/MANGO_PET_AW.png b/public/3dmodels/MANUAL/MAA_Bottle/Tex/MANGO_PET_AW.png new file mode 100644 index 0000000..75c61c7 Binary files /dev/null and b/public/3dmodels/MANUAL/MAA_Bottle/Tex/MANGO_PET_AW.png differ diff --git a/public/3dmodels/MANUAL/MAA_Tetra/MAA_Tetra.fbx b/public/3dmodels/MANUAL/MAA_Tetra/MAA_Tetra.fbx new file mode 100644 index 0000000..00204de Binary files /dev/null and b/public/3dmodels/MANUAL/MAA_Tetra/MAA_Tetra.fbx differ diff --git a/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_Apple_AW.png b/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_Apple_AW.png new file mode 100644 index 0000000..05d0240 Binary files /dev/null and b/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_Apple_AW.png differ diff --git a/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_GUAVA_AW.png b/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_GUAVA_AW.png new file mode 100644 index 0000000..0cc26ec Binary files /dev/null and b/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_GUAVA_AW.png differ diff --git a/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_LITCHI_AW.png b/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_LITCHI_AW.png new file mode 100644 index 0000000..78abafa Binary files /dev/null and b/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_LITCHI_AW.png differ diff --git a/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_MANGO_AW.png b/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_MANGO_AW.png new file mode 100644 index 0000000..7bce345 Binary files /dev/null and b/public/3dmodels/MANUAL/MAA_Tetra/Tex/MAA_MANGO_AW.png differ diff --git a/src/components/home/Models.tsx b/src/components/home/Models.tsx new file mode 100644 index 0000000..addb524 --- /dev/null +++ b/src/components/home/Models.tsx @@ -0,0 +1,81 @@ +import { useRef, useMemo } from 'react'; +import { useFrame } from '@react-three/fiber'; +import { useScroll, useFBX } from '@react-three/drei'; +import * as THREE from 'three'; + +export function Models() { + const scroll = useScroll(); + + // Load the actual FBX models from the public folder + const heroFBX = useFBX('/3dmodels/MANUAL/Cavins/GEE_TIN.fbx'); + const featureFBX = useFBX('/3dmodels/Full_AI/Indica/Indica_easy.fbx'); + const ctaFBX = useFBX('/3dmodels/MANUAL/Fairever/Carton.fbx'); + + // Clone them so we don't mutate the cached originals + const heroModel = useMemo(() => heroFBX.clone(), [heroFBX]); + const featureModel = useMemo(() => featureFBX.clone(), [featureFBX]); + const ctaModel = useMemo(() => ctaFBX.clone(), [ctaFBX]); + + const heroRef = useRef(null); + const featureRef = useRef(null); + const ctaRef = useRef(null); + + useFrame((state, delta) => { + const offset = scroll.offset; // 0 to 1 + + if (heroRef.current) { + heroRef.current.rotation.y += delta * 0.3; + // Fade out and move left as we scroll down + heroRef.current.position.y = THREE.MathUtils.lerp(0, 10, offset * 3); + heroRef.current.position.x = THREE.MathUtils.lerp(3, -5, offset * 3); + + // Auto-scale down based on typical FBX sizing + const scaleBase = 0.05; + heroRef.current.scale.setScalar(THREE.MathUtils.lerp(scaleBase, 0, offset * 3)); + } + + if (featureRef.current) { + featureRef.current.rotation.y += delta * 0.4; + + const featureProgress = Math.max(0, Math.min(1, (offset - 0.2) * 2)); + featureRef.current.position.y = THREE.MathUtils.lerp(-10, 0, featureProgress); + featureRef.current.position.x = THREE.MathUtils.lerp(-5, -2, featureProgress); + + const scaleBase = 0.05; + if (offset > 0.6) { + const exitProgress = (offset - 0.6) * 3; + featureRef.current.position.y = THREE.MathUtils.lerp(0, 10, exitProgress); + featureRef.current.scale.setScalar(THREE.MathUtils.lerp(scaleBase, 0, exitProgress)); + } else { + featureRef.current.scale.setScalar(scaleBase); + } + } + + if (ctaRef.current) { + ctaRef.current.rotation.y -= delta * 0.3; + + const ctaProgress = Math.max(0, Math.min(1, (offset - 0.6) * 3)); + ctaRef.current.position.y = THREE.MathUtils.lerp(-10, -1, ctaProgress); + ctaRef.current.position.x = THREE.MathUtils.lerp(5, 2, ctaProgress); + + const scaleBase = 0.05; + ctaRef.current.scale.setScalar(scaleBase); + } + }); + + return ( + + + + + + + + + + + + + + ); +}