i am creating a website with react and next js. i want to display a 3d model in my website. i downloaded a file with glb
format and i saw that in this website.
then i displayed the model in my website by using @react-three/fiber
, @react-three/drei
and three
. but there are a lot of differences between the model i saw in the babylon sandbox
and my website.
the view that i saw in babylon sandbox
the view that i see in my website
converted codes from the glb file:
import React, { useRef } from 'react'
import { useGLTF } from '@react-three/drei'
export default function Model(props) {
const { nodes, materials } = useGLTF('/apple-iphone-13-pro-max.glb')
return (
<group {...props} dispose={null}>
<group rotation={[-Math.PI / 2, 0, 0]}>
<group rotation={[Math.PI / 2, 0, 0]} scale={0.01}>
<group scale={100}>
<mesh geometry={nodes.Body_Mic_0.geometry} material={materials.material} />
<mesh geometry={nodes.Body_Bezel_0.geometry} material={materials.Bezel} />
<mesh geometry={nodes.Body_Body_0.geometry} material={materials.Body} />
<mesh geometry={nodes.Body_Wallpaper_0.geometry} material={materials.Wallpaper} />
<mesh geometry={nodes.Body_Camera_Glass_0.geometry} material={materials.Camera_Glass} />
<mesh geometry={nodes.Body_Lens_0.geometry} material={materials.Lens} />
<mesh geometry={nodes.Body_Material_0.geometry} material={materials.Material} />
<mesh geometry={nodes.Camera_Body_0.geometry} material={materials.Body} />
<mesh geometry={nodes.Camera_Glass_0.geometry} material={materials.Glass} />
<mesh geometry={nodes.Camera_Camera_Frame001_0.geometry} material={materials['Camera_Frame.001']} />
<mesh geometry={nodes.Camera_Mic_0.geometry} material={materials.material} />
<mesh geometry={nodes.Body001_Screen_Glass_0.geometry} material={materials.Screen_Glass} />
<mesh geometry={nodes.Button_Frame_0.geometry} material={materials.Frame} />
<mesh geometry={nodes.Circle003_Frame_0.geometry} material={materials.Frame} />
<mesh geometry={nodes.Apple_Logo_Logo_0.geometry} material={materials.Logo} />
<mesh geometry={nodes.Camera001_Body_0.geometry} material={materials.Body} />
<mesh geometry={nodes.Camera001_Gray_Glass_0.geometry} material={materials.Gray_Glass} />
<mesh geometry={nodes.Camera001_Flash_0.geometry} material={materials.Flash} />
<mesh geometry={nodes.Camera001_Port_0.geometry} material={materials.Port} />
<mesh geometry={nodes.Camera001_Camera_Frame_0.geometry} material={materials.Camera_Frame} />
<mesh geometry={nodes.Camera001_Camera_Glass_0.geometry} material={materials.Camera_Glass} />
<mesh geometry={nodes.Camera001_Lens_0.geometry} material={materials.Lens} />
<mesh geometry={nodes.Camera001_Black_Glass_0.geometry} material={materials.Black_Glass} />
<mesh geometry={nodes.Camera003_Material002_0.geometry} material={materials['Material.002']} />
<mesh geometry={nodes.Frame_Frame_0.geometry} material={materials.Frame} />
<mesh geometry={nodes.Frame_Frame2_0.geometry} material={materials.Frame2} />
<mesh geometry={nodes.Frame_Port_0.geometry} material={materials.Port} />
<mesh geometry={nodes.Frame_Antenna_0.geometry} material={materials.Antenna} />
<mesh geometry={nodes.Frame_Mic_0.geometry} material={materials.material} />
</group>
</group>
</group>
</group>
)
}
useGLTF.preload('/apple-iphone-13-pro-max.glb')
the codes of where i display the model:
import React, { Suspense } from "react";
import { Canvas } from "@react-three/fiber";
import { OrbitControls } from "@react-three/drei";
import Model from "./apple-iphone-13-pro-max";
const ModelDisplayer = () => {
return (
<Canvas
camera={{ position: [5, 5, 5], fov: 10 }}
className="w-full h-full bg-orange-500"
>
<Suspense fallback={null}>
<Model position={[0, 0, 0]} />
</Suspense>
<ambientLight intensity={7} />
<directionalLight intensity={3} />
<OrbitControls />
</Canvas>
);
};
export default ModelDisplayer;
how can i make the model view of my website exactly like the babylon sandbox
? (i played a lot with directionalLight
and directionalLight
but i couldnt make the model of my website exactly like what i saw in babylon sandbox
). and i dont have experience in using the above packages and canva. thanks for helping.