Могу ли я прослушивать изменения вращения и положения на сетках gltf, созданных анимацией gltf?

#javascript #three.js #react-three-fiber

Вопрос:

У меня есть объект .glb, который выполняет анимацию ключевых кадров. Я импортировал этот объект в свои три JS-сцены, и все работает нормально. Но мне нужно вращение сетки и изменение положения, которые происходят в анимации. В любом случае, их свойства меняются во время воспроизведения анимации (и они движутся). Вот мой код:

 import React, {  forwardRef,  useEffect,  useRef, } from "react"; import * as THREE from "three"; import { useFrame } from "@react-three/fiber"; import { useGLTF, useAnimations } from "@react-three/drei";  export default forwardRef(({ ...props }, plane) =gt; {   const { nodes, materials, animations } = useGLTF("/plane.glb");  const { actions } = useAnimations(animations, plane);   const topR = useRef();    useEffect(() =gt; {  if (plane.current !== null) {  const { fold } = actions;  fold.repetitions = 1;  fold.clampWhenFinished = true;  fold.play();  }  }, [topR.current]);   useFrame(() =gt; {  if (actions.fold.isRunning()) {  if (topR.current) {  console.log(topR.current.rotation);  console.log(topR.current.position);  //THEY DO NOT CHANGE FROM THE ANIMATION  }  }  });   return (  lt;group  layers={2}  scale={[8, 8, 8]}  ref={plane}  {...props}  dispose={null}  gt;  lt;mesh  name="topR"  ref={topR}  layers={2}  geometry={nodes.topR.geometry}  material={nodes.topR.material}  morphTargetDictionary={nodes.topR.morphTargetDictionary}  morphTargetInfluences={nodes.topR.morphTargetInfluences}  gt;  lt;meshStandardMaterial  {...materials}  metalness={0}  roughness={0.8}  side={THREE.DoubleSide}  shadowSide={THREE.DoubleSide}  /gt;  lt;/meshgt;  lt;mesh  lt;/groupgt;  ); });  useGLTF.preload("/plane.glb");  

Ответ №1:

пробовать :

 if (topR.current) {  console.log(topR.current.camera.rotation);  console.log(topR.current.camera.position);  console.log(topR.current);  }  

осмотрите topR.current , вы можете увидеть, что меняется, и все такое.