🚀 Auto-deploy: melhoria no snap e medição AR em 11/06/2026 14:07:02

This commit is contained in:
2026-06-11 14:07:02 +00:00
parent c62101d17b
commit fc10c77346
4 changed files with 15 additions and 6 deletions
+5 -1
View File
@@ -313,6 +313,10 @@ function GLBModel({ sceneModel, isActive }: { sceneModel: SceneModel; isActive:
const scaleRatio = useModelStore((st) => st.scaleRatio);
const renderFactor = scaleRatio?.factor ?? 1;
const rotationEuler = useMemo(() => {
return new THREE.Euler(rotXRad, rotYRad, rotZRad, 'YXZ');
}, [rotXRad, rotYRad, rotZRad]);
// Calibration quaternion (applied innermost, around center). We render with identity
// while calibration is in progress for this model so face normals reflect the
// un-calibrated frame; the result is committed at the end.
@@ -382,7 +386,7 @@ function GLBModel({ sceneModel, isActive }: { sceneModel: SceneModel; isActive:
{/* Rotation + scale around the geometry center */}
<group
ref={ref}
rotation={[rotXRad, rotYRad, rotZRad]}
rotation={rotationEuler}
scale={[s, s, s]}
>
{/* Calibration rotation (innermost, around center). */}
+4 -3
View File
@@ -128,13 +128,14 @@ export function XRGrabbable({ allowScale = true, lockedActive = false, onGrabSta
group.scale.set(1, 1, 1);
// Save to store
const euler = new THREE.Euler().setFromQuaternion(finalQuat, 'YXZ');
state.setFineTuning({
posX: finalPos.x / renderFactor,
posY: finalPos.y / renderFactor,
posZ: finalPos.z / renderFactor,
rotX: (new THREE.Euler().setFromQuaternion(finalQuat, 'YXZ').x * 180) / Math.PI,
rotY: (new THREE.Euler().setFromQuaternion(finalQuat, 'YXZ').y * 180) / Math.PI,
rotZ: (new THREE.Euler().setFromQuaternion(finalQuat, 'YXZ').z * 180) / Math.PI,
rotX: (euler.x * 180) / Math.PI,
rotY: (euler.y * 180) / Math.PI,
rotZ: (euler.z * 180) / Math.PI,
scale: finalScale.x / renderFactor,
});
};
+1 -1
View File
@@ -365,7 +365,7 @@ const Index = () => {
{/* Footer */}
<p className="mt-16 text-center font-mono text-xs text-muted-foreground/50">
SteelXR v1.12 Q.C. Inspection
SteelXR v1.13 Q.C. Inspection
</p>
{showLogs && (
+5 -1
View File
@@ -190,6 +190,10 @@ function XRModel({ sceneModel }: { sceneModel: import('@/stores/useModelStore').
const scaleRatio = useModelStore((st) => st.scaleRatio);
const renderFactor = scaleRatio?.factor ?? 1;
const rotationEuler = useMemo(() => {
return new THREE.Euler(rotXRad, rotYRad, rotZRad, 'YXZ');
}, [rotXRad, rotYRad, rotZRad]);
const calQuatArr = sceneModel.calibrationQuat;
const isCalibratingThis = xrCalibration.modelId === sceneModel.id && xrCalibration.step !== 'idle' && xrCalibration.step !== 'done';
const calQuat = useMemo(() => {
@@ -292,7 +296,7 @@ function XRModel({ sceneModel }: { sceneModel: import('@/stores/useModelStore').
{/* Rotação e escala em volta do centro geométrico */}
<group
ref={ref}
rotation={[rotXRad, rotYRad, rotZRad]}
rotation={rotationEuler}
scale={[s, s, s]}
>
{/* Rotação de calibração */}