Remove plane detection and add grid on models

This commit is contained in:
2025-03-15 00:41:33 -06:00
parent 68390eb885
commit 159445091c
6 changed files with 214 additions and 25 deletions

View File

@@ -0,0 +1,140 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5236060892799482280
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8378628612892553542}
- component: {fileID: 8762927115585040554}
- component: {fileID: 6909481848820784089}
- component: {fileID: 3792725663845323067}
m_Layer: 0
m_Name: Plane
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8378628612892553542
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5236060892799482280}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.3, y: 1, z: 0.3}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4410441032802257291}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &8762927115585040554
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5236060892799482280}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &6909481848820784089
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5236060892799482280}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d5774351bc3ae4ad393dc1d142ff4235, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!64 &3792725663845323067
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5236060892799482280}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 5
m_Convex: 0
m_CookingOptions: 30
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &7069418182187326116
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4410441032802257291}
m_Layer: 0
m_Name: GridIndicator
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4410441032802257291
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7069418182187326116}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8378628612892553542}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9d00637d689464a7aabd732cb44e1552
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -8,24 +8,24 @@ using UnityEngine.XR.ARSubsystems;
public class DragAndDropManager : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler public class DragAndDropManager : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{ {
public GameObject prefabToInstance; public GameObject prefabToInstance;
public GameObject gridPrefab; // Prefab del grid de detección
private ARRaycastManager arRaycastManager; // Asignable din<69>micamente private ARRaycastManager arRaycastManager;
private Camera arCamera; // Asignable din<69>micamente private ARAnchorManager arAnchorManager; // Se agrega ARAnchorManager para fijar los objetos
private Camera arCamera;
private GameObject draggedObject; private GameObject draggedObject;
private GameObject gridIndicator; // Instancia del grid
// M<>todo para asignar la c<>mara desde MeasuringSystem
public void SetCamera(Camera camera) public void SetCamera(Camera camera)
{ {
if (camera == null) if (camera == null)
{ {
Debug.LogError("C<EFBFBD>mara proporcionada es nula."); Debug.LogError("Cámara proporcionada es nula.");
return; return;
} }
arCamera = camera; arCamera = camera;
Debug.Log($"C<>mara asignada: {arCamera.name}");
} }
// M<>todo para asignar el ARRaycastManager desde MeasuringSystem
public void SetARRaycastManager(ARRaycastManager raycastManager) public void SetARRaycastManager(ARRaycastManager raycastManager)
{ {
if (raycastManager == null) if (raycastManager == null)
@@ -34,7 +34,16 @@ public class DragAndDropManager : MonoBehaviour, IBeginDragHandler, IDragHandler
return; return;
} }
arRaycastManager = raycastManager; arRaycastManager = raycastManager;
Debug.Log($"ARRaycastManager asignado: {arRaycastManager.name}"); }
public void SetARAnchorManager(ARAnchorManager anchorManager)
{
if (anchorManager == null)
{
Debug.LogError("ARAnchorManager proporcionado es nulo.");
return;
}
arAnchorManager = anchorManager;
} }
public void OnBeginDrag(PointerEventData eventData) public void OnBeginDrag(PointerEventData eventData)
@@ -44,36 +53,62 @@ public class DragAndDropManager : MonoBehaviour, IBeginDragHandler, IDragHandler
draggedObject = Instantiate(prefabToInstance); draggedObject = Instantiate(prefabToInstance);
draggedObject.SetActive(false); draggedObject.SetActive(false);
} }
// Crear el grid de detección
if (gridPrefab != null)
{
gridIndicator = Instantiate(gridPrefab);
gridIndicator.SetActive(false);
}
} }
public void OnDrag(PointerEventData eventData) public void OnDrag(PointerEventData eventData)
{ {
if (draggedObject != null) if (draggedObject != null && arRaycastManager != null && arCamera != null)
{ {
if (arRaycastManager == null || arCamera == null)
{
Debug.LogWarning("ARRaycastManager o c<>mara no asignados. No se puede realizar el raycast.");
return;
}
List<ARRaycastHit> hits = new List<ARRaycastHit>(); List<ARRaycastHit> hits = new List<ARRaycastHit>();
if (arRaycastManager.Raycast(eventData.position, hits, TrackableType.Planes)) if (arRaycastManager.Raycast(eventData.position, hits, TrackableType.Planes))
{ {
var hitPose = hits[0].pose; var hitPose = hits[0].pose;
// Colocar el objeto en la posici<EFBFBD>n AR detectada // Colocar el objeto en la posición AR detectada
draggedObject.transform.position = hitPose.position; draggedObject.transform.position = hitPose.position;
draggedObject.transform.rotation = hitPose.rotation; draggedObject.transform.rotation = hitPose.rotation;
draggedObject.SetActive(true); draggedObject.SetActive(true);
// Mostrar el grid en la posición detectada
if (gridIndicator != null)
{
gridIndicator.transform.position = hitPose.position;
gridIndicator.SetActive(true);
}
} }
} }
} }
public void OnEndDrag(PointerEventData eventData) public void OnEndDrag(PointerEventData eventData)
{ {
if (draggedObject != null) if (draggedObject != null && arAnchorManager != null)
{ {
// Agregar un anclaje al objeto para fijarlo en su lugar
ARAnchor anchor = arAnchorManager.AddAnchor(new Pose(draggedObject.transform.position, draggedObject.transform.rotation));
if (anchor != null)
{
draggedObject.transform.SetParent(anchor.transform); // Hacer que el objeto sea hijo del anclaje
}
else
{
Debug.LogWarning("No se pudo crear un ARAnchor. El objeto podría moverse.");
}
draggedObject = null; draggedObject = null;
} }
// Ocultar el grid una vez colocado el objeto
if (gridIndicator != null)
{
Destroy(gridIndicator);
}
} }
} }

View File

@@ -691,8 +691,8 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 1498425121} m_TargetGraphic: {fileID: 1498425121}
m_HandleRect: {fileID: 1498425120} m_HandleRect: {fileID: 1498425120}
m_Direction: 0 m_Direction: 0
m_Value: -0.00000005086193 m_Value: -0.000000050861942
m_Size: 0.37499678 m_Size: 0.37123078
m_NumberOfSteps: 0 m_NumberOfSteps: 0
m_OnValueChanged: m_OnValueChanged:
m_PersistentCalls: m_PersistentCalls:
@@ -787,6 +787,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
prefabToInstance: {fileID: 384462179027726530, guid: d7ca2b9d438a97e46b228f65e3ea34fd, type: 3} prefabToInstance: {fileID: 384462179027726530, guid: d7ca2b9d438a97e46b228f65e3ea34fd, type: 3}
gridPrefab: {fileID: 7069418182187326116, guid: 9d00637d689464a7aabd732cb44e1552, type: 3}
--- !u!114 &518661788 --- !u!114 &518661788
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -1913,6 +1914,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
prefabToInstance: {fileID: 2065567086344354061, guid: d5ced78f2c9acf647bc91230db65e53d, type: 3} prefabToInstance: {fileID: 2065567086344354061, guid: d5ced78f2c9acf647bc91230db65e53d, type: 3}
gridPrefab: {fileID: 7069418182187326116, guid: 9d00637d689464a7aabd732cb44e1552, type: 3}
--- !u!114 &1198553689 --- !u!114 &1198553689
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -2322,6 +2324,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
prefabToInstance: {fileID: 2415200880001261083, guid: 4217598f115eda443b059d1d3029157e, type: 3} prefabToInstance: {fileID: 2415200880001261083, guid: 4217598f115eda443b059d1d3029157e, type: 3}
gridPrefab: {fileID: 7069418182187326116, guid: 9d00637d689464a7aabd732cb44e1552, type: 3}
--- !u!114 &1510757703 --- !u!114 &1510757703
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -2492,6 +2495,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
prefabToInstance: {fileID: 1436977506181758233, guid: 5d852d0f90f588547b2ca56c0dd1340a, type: 3} prefabToInstance: {fileID: 1436977506181758233, guid: 5d852d0f90f588547b2ca56c0dd1340a, type: 3}
gridPrefab: {fileID: 7069418182187326116, guid: 9d00637d689464a7aabd732cb44e1552, type: 3}
--- !u!114 &1824976693 --- !u!114 &1824976693
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -2742,6 +2746,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
prefabToInstance: {fileID: 8617488083332643293, guid: 6749fe3471fc05847a373222f309879f, type: 3} prefabToInstance: {fileID: 8617488083332643293, guid: 6749fe3471fc05847a373222f309879f, type: 3}
gridPrefab: {fileID: 7069418182187326116, guid: 9d00637d689464a7aabd732cb44e1552, type: 3}
--- !u!114 &2016642937 --- !u!114 &2016642937
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -671,6 +671,7 @@ MonoBehaviour:
m_HitDetectionType: 0 m_HitDetectionType: 0
m_SphereCastRadius: 0.1 m_SphereCastRadius: 0.1
m_ConeCastAngle: 6 m_ConeCastAngle: 6
m_LiveConeCastDebugVisuals: 0
m_RaycastMask: m_RaycastMask:
serializedVersion: 2 serializedVersion: 2
m_Bits: 4294967295 m_Bits: 4294967295
@@ -2429,7 +2430,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1776724014} m_GameObject: {fileID: 1776724014}
m_Enabled: 1 m_Enabled: 0
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e1760703bbd54c04488a8d10600262ab, type: 3} m_Script: {fileID: 11500000, guid: e1760703bbd54c04488a8d10600262ab, type: 3}
m_Name: m_Name:
@@ -3333,6 +3334,7 @@ MonoBehaviour:
m_HitDetectionType: 0 m_HitDetectionType: 0
m_SphereCastRadius: 0.1 m_SphereCastRadius: 0.1
m_ConeCastAngle: 6 m_ConeCastAngle: 6
m_LiveConeCastDebugVisuals: 0
m_RaycastMask: m_RaycastMask:
serializedVersion: 2 serializedVersion: 2
m_Bits: 4294967295 m_Bits: 4294967295

View File

@@ -145,14 +145,14 @@ PlayerSettings:
- {fileID: 4800000, guid: b02d09082cbc14569ae46c12d9836abc, type: 3} - {fileID: 4800000, guid: b02d09082cbc14569ae46c12d9836abc, type: 3}
- {fileID: 4800000, guid: f40a6c94c8e1b494d93d434ae522a14f, type: 3} - {fileID: 4800000, guid: f40a6c94c8e1b494d93d434ae522a14f, type: 3}
- {fileID: 4800000, guid: 0f45334fa661448c886e4f99ba812a7e, type: 3} - {fileID: 4800000, guid: 0f45334fa661448c886e4f99ba812a7e, type: 3}
- {fileID: 901716690356561315, guid: e04dc9557a6bcec40b5d8576988f74a3, type: 2}
- {fileID: 11400000, guid: 6bfaaf31cb485f64fb956f1d691a0e1d, type: 2}
- {fileID: -5070790411771939123, guid: 228964b93c232624fac8c242b79176e5, type: 2}
- {fileID: 11400000, guid: 911becadf2ac07e4da62b8afa0b9ea7f, type: 2}
- {fileID: 4800000, guid: e7c77f6eaab324a819efdc13b8125a39, type: 3}
- {fileID: 4800000, guid: 6743a50a812740be8c0aa3fccc46fae9, type: 3}
- {fileID: 4800000, guid: b1d4c517492046e1a4e4cc49b0b73b42, type: 3} - {fileID: 4800000, guid: b1d4c517492046e1a4e4cc49b0b73b42, type: 3}
- {fileID: 4800000, guid: 2b7e3540272684e0b8e12fed2c4609de, type: 3} - {fileID: 4800000, guid: 2b7e3540272684e0b8e12fed2c4609de, type: 3}
- {fileID: 4800000, guid: c9f956787b1d945e7b36e0516201fc76, type: 3}
- {fileID: 4800000, guid: 0945859e5a1034c2cb6dce53cb4fb899, type: 3}
- {fileID: 479186601668263405, guid: e04dc9557a6bcec40b5d8576988f74a3, type: 2}
- {fileID: 11400000, guid: 6bfaaf31cb485f64fb956f1d691a0e1d, type: 2}
- {fileID: -7180841881952691092, guid: 228964b93c232624fac8c242b79176e5, type: 2}
- {fileID: 11400000, guid: 911becadf2ac07e4da62b8afa0b9ea7f, type: 2}
metroInputSource: 0 metroInputSource: 0
wsaTransparentSwapchain: 0 wsaTransparentSwapchain: 0
m_HolographicPauseOnTrackingLoss: 1 m_HolographicPauseOnTrackingLoss: 1