fix(pose_3d): gizmo visibility (use getHelper for r160) + larger wrist hitbox + diagnostics
This commit is contained in:
1 parent
0a3ee61007
commit
25c94d3861
1 file changed
+12
-2
+12
-2
@@ -29,12 +29,13 @@ function makeUCS(size = 0.1) {
|
||||
function makeWristMarker(color) {
|
||||
const group = new THREE.Group();
|
||||
const sphere = new THREE.Mesh(
|
||||
new THREE.SphereGeometry(0.025, 16, 12),
|
||||
new THREE.SphereGeometry(0.04, 16, 12),
|
||||
new THREE.MeshStandardMaterial({ color, metalness: 0.2, roughness: 0.5 }),
|
||||
);
|
||||
group.add(sphere);
|
||||
group.add(makeUCS(0.07));
|
||||
group.userData.sphere = sphere;
|
||||
group.userData.sphere.userData.kind = 'wrist';
|
||||
return group;
|
||||
}
|
||||
|
||||
@@ -130,9 +131,15 @@ function initScene() {
|
||||
|
||||
const transform = new TransformControls(camera, renderer.domElement);
|
||||
transform.setMode('translate');
|
||||
transform.size = 0.6;
|
||||
// Disable orbit while dragging gizmo
|
||||
transform.addEventListener('dragging-changed', (e) => { orbit.enabled = !e.value; });
|
||||
scene.add(transform);
|
||||
// In r160 the visual helper is exposed via getHelper(); fall back to the
|
||||
// transform object itself for older versions.
|
||||
const transformHelper = typeof transform.getHelper === 'function'
|
||||
? transform.getHelper()
|
||||
: transform;
|
||||
scene.add(transformHelper);
|
||||
|
||||
state.three = { scene, camera, renderer, orbit, transform };
|
||||
|
||||
@@ -288,9 +295,11 @@ function setupSelection() {
|
||||
const candidates = [state.arms.right.userData.sphere,
|
||||
state.arms.left.userData.sphere];
|
||||
const hits = raycaster.intersectObjects(candidates, false);
|
||||
console.log('[pose_3d] click on canvas, raycast hits:', hits.length);
|
||||
if (hits.length > 0) {
|
||||
const sphere = hits[0].object;
|
||||
const side = sphere.parent.userData.side;
|
||||
console.log('[pose_3d] activating side:', side);
|
||||
activateSide(side);
|
||||
}
|
||||
});
|
||||
@@ -306,6 +315,7 @@ function activateSide(side) {
|
||||
ensureGhostInit(side);
|
||||
const { transform } = state.three;
|
||||
transform.attach(state.ghosts[side]);
|
||||
console.log('[pose_3d] gizmo attached to ghost', side, 'at', state.ghosts[side].position);
|
||||
state.ghosts[side].visible = true;
|
||||
updateReadout();
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user