diff --git a/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx b/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx index 611ded5..6db275f 100644 --- a/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx +++ b/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx @@ -91,7 +91,7 @@ function RoboticArmAnimator({ const bone = ikSolver.mesh.skeleton.bones.find( (b: any) => b.name === targetBone ); - bone.position.copy(restPosition); + // bone.position.copy(restPosition); ikSolver.update(); }; @@ -100,7 +100,7 @@ function RoboticArmAnimator({ return ( <> {/* {currentPath.length > 0 && ( - <> + {currentPath.map((point, index) => ( @@ -108,8 +108,33 @@ function RoboticArmAnimator({ ))} - + )} */} + {curvePoints && ( + + [p.x, p.y, p.z])} + color="green" + lineWidth={5} + dashed={false} + /> + {currentPath.length >= 1 && ( + <> + {/* First point */} + + + + + + {/* Last point */} + + + + + + )} + + )} ); } diff --git a/app/src/modules/simulation/roboticArm/instances/ikInstance/ikInstance.tsx b/app/src/modules/simulation/roboticArm/instances/ikInstance/ikInstance.tsx index e49f5bf..d818777 100644 --- a/app/src/modules/simulation/roboticArm/instances/ikInstance/ikInstance.tsx +++ b/app/src/modules/simulation/roboticArm/instances/ikInstance/ikInstance.tsx @@ -3,18 +3,19 @@ import * as THREE from "three"; import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader"; import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader"; import { clone } from "three/examples/jsm/utils/SkeletonUtils"; -import { useLoader, useThree } from "@react-three/fiber"; +import { useLoader, useThree } from "@react-three/fiber"; import { CCDIKSolver, CCDIKHelper, } from "three/examples/jsm/animation/CCDIKSolver"; +import { TransformControls } from '@react-three/drei'; type IKInstanceProps = { modelUrl: string; ikSolver: any; setIkSolver: any armBot: any; - groupRef: React.RefObject; + groupRef: any; }; -function IKInstance({ modelUrl, setIkSolver, ikSolver, armBot, groupRef}: IKInstanceProps) { - const {scene}=useThree() +function IKInstance({ modelUrl, setIkSolver, ikSolver, armBot, groupRef }: IKInstanceProps) { + const { scene } = useThree() const gltf = useLoader(GLTFLoader, modelUrl, (loader) => { const draco = new DRACOLoader(); draco.setDecoderPath("https://cdn.jsdelivr.net/npm/three@0.160.0/examples/jsm/libs/draco/"); @@ -23,6 +24,7 @@ function IKInstance({ modelUrl, setIkSolver, ikSolver, armBot, groupRef}: IKInst const cloned = useMemo(() => clone(gltf?.scene), [gltf]); const targetBoneName = "Target"; const skinnedMeshName = "link_0"; + const [selectedArm, setSelectedArm] = useState(); useEffect(() => { if (!gltf) return; @@ -65,6 +67,9 @@ function IKInstance({ modelUrl, setIkSolver, ikSolver, armBot, groupRef}: IKInst setIkSolver(solver); const helper = new CCDIKHelper(OOI.Skinned_Mesh, iks, 0.05) + groupRef.current.add(helper); + console.log('OOI.Target_Bone: ', OOI.Target_Bone); + setSelectedArm(OOI.Target_Bone); scene.add(helper) @@ -73,7 +78,10 @@ function IKInstance({ modelUrl, setIkSolver, ikSolver, armBot, groupRef}: IKInst return ( <> - + { + setSelectedArm(groupRef.current?.getObjectByName(targetBoneName)) + } + }> + {/* {selectedArm && } */} ) }