2

I've been trying to understand the code from this sandbox and give it some features of my own.

My goal is to create a link to a different website in the hidden <Geo> element. However, I can't figure out how to embed the link like the other <Text> elements so that it only appears and scales after the overlayed image disappears.

Here is the code for the <Geo> part:

export default function Model(props) {
  const group = useRef();
  const shadow = useRef();
  const { nodes } = useGLTF("/geo.min.glb", true);
  useFrame(({ clock }) => {
    const t = (1 + Math.sin(clock.getElapsedTime() * 1.5)) / 2;
    group.current.position.y = t / 3;
    shadow.current.scale.y = shadow.current.scale.z = 1 + t;
    shadow.current.scale.x = (1 + t) * 1.25;
    group.current.rotation.x = group.current.rotation.z += 0.005;
    group.current.position.x = THREE.MathUtils.lerp(
      group.current.position.x,
      state.mouse[0] / 2,
      0.05
    );
    group.current.position.z = THREE.MathUtils.lerp(
      group.current.position.z,
      state.mouse[1] / 4,
      0.03
    );
  });
  return (
    <group {...props} dispose={null}>
      <group ref={group}>
        <mesh geometry={nodes.geo.geometry} castShadow receiveShadow>
          <MeshDistortMaterial
            color="#ffffff"
            flatShading
            roughness={1}
            metalness={0.5}
            factor={15}
            speed={5}
          />
        </mesh>
        <mesh geometry={nodes.geo.geometry}>
          <meshBasicMaterial wireframe />
        </mesh>
      </group>
      <group position={[1.25, -0.5, 0]}>
        <Text
          position={[0, 0, 0]}
          fontSize={0.07}
          lineHeight={1}
          letterSpacing={-0.05}
        >
          03
          <meshBasicMaterial color="#cccccc" toneMapped={false} />
        </Text>
        <Text
          bold
          position={[-0.01, -0.1, 0]}
          fontSize={0.1}
          lineHeight={1}
          letterSpacing={-0.05}
          color="black"
        >
          {`Poimandres,\nThe vision of Hermes`}
        </Text>
      </group>
      <group position={[1.0, -1, 0]}>
        <Text
          bold
          position={[0, 0.5, 0]}
          fontSize={0.15}
          lineHeight={1}
          letterSpacing={-0.05}
          color="white"
        >
          Links
          <meshBasicMaterial color="#cccccc" toneMapped={false} />
        </Text>
        <Html>
          <a href="https://www.youtube.com/">YouTube</a>
        </Html>
      </group>
      <Shadow
        ref={shadow}
        opacity={0.3}
        rotation-x={-Math.PI / 2}
        position={[0, -1.51, 0]}
      />
    </group>
  );
}
diedu
  • 19,277
  • 4
  • 32
  • 49

0 Answers0