Remove plane detection and add grid on models
This commit is contained in:
parent
68390eb885
commit
159445091c
140
Assets/Prefab/GridIndicator.prefab
Normal file
140
Assets/Prefab/GridIndicator.prefab
Normal 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}
|
||||
7
Assets/Prefab/GridIndicator.prefab.meta
Normal file
7
Assets/Prefab/GridIndicator.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9d00637d689464a7aabd732cb44e1552
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -8,24 +8,24 @@ using UnityEngine.XR.ARSubsystems;
|
||||
public class DragAndDropManager : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
|
||||
{
|
||||
public GameObject prefabToInstance;
|
||||
public GameObject gridPrefab; // Prefab del grid de detección
|
||||
|
||||
private ARRaycastManager arRaycastManager; // Asignable dinámicamente
|
||||
private Camera arCamera; // Asignable dinámicamente
|
||||
private ARRaycastManager arRaycastManager;
|
||||
private ARAnchorManager arAnchorManager; // Se agrega ARAnchorManager para fijar los objetos
|
||||
private Camera arCamera;
|
||||
private GameObject draggedObject;
|
||||
private GameObject gridIndicator; // Instancia del grid
|
||||
|
||||
// Método para asignar la cámara desde MeasuringSystem
|
||||
public void SetCamera(Camera camera)
|
||||
{
|
||||
if (camera == null)
|
||||
{
|
||||
Debug.LogError("Cámara proporcionada es nula.");
|
||||
Debug.LogError("Cámara proporcionada es nula.");
|
||||
return;
|
||||
}
|
||||
arCamera = camera;
|
||||
Debug.Log($"Cámara asignada: {arCamera.name}");
|
||||
}
|
||||
|
||||
// Método para asignar el ARRaycastManager desde MeasuringSystem
|
||||
public void SetARRaycastManager(ARRaycastManager raycastManager)
|
||||
{
|
||||
if (raycastManager == null)
|
||||
@ -34,7 +34,16 @@ public class DragAndDropManager : MonoBehaviour, IBeginDragHandler, IDragHandler
|
||||
return;
|
||||
}
|
||||
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)
|
||||
@ -44,36 +53,62 @@ public class DragAndDropManager : MonoBehaviour, IBeginDragHandler, IDragHandler
|
||||
draggedObject = Instantiate(prefabToInstance);
|
||||
draggedObject.SetActive(false);
|
||||
}
|
||||
|
||||
// Crear el grid de detección
|
||||
if (gridPrefab != null)
|
||||
{
|
||||
gridIndicator = Instantiate(gridPrefab);
|
||||
gridIndicator.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
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>();
|
||||
if (arRaycastManager.Raycast(eventData.position, hits, TrackableType.Planes))
|
||||
{
|
||||
var hitPose = hits[0].pose;
|
||||
|
||||
// Colocar el objeto en la posición AR detectada
|
||||
// Colocar el objeto en la posición AR detectada
|
||||
draggedObject.transform.position = hitPose.position;
|
||||
draggedObject.transform.rotation = hitPose.rotation;
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
// Ocultar el grid una vez colocado el objeto
|
||||
if (gridIndicator != null)
|
||||
{
|
||||
Destroy(gridIndicator);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -691,8 +691,8 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 1498425121}
|
||||
m_HandleRect: {fileID: 1498425120}
|
||||
m_Direction: 0
|
||||
m_Value: -0.00000005086193
|
||||
m_Size: 0.37499678
|
||||
m_Value: -0.000000050861942
|
||||
m_Size: 0.37123078
|
||||
m_NumberOfSteps: 0
|
||||
m_OnValueChanged:
|
||||
m_PersistentCalls:
|
||||
@ -787,6 +787,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
prefabToInstance: {fileID: 384462179027726530, guid: d7ca2b9d438a97e46b228f65e3ea34fd, type: 3}
|
||||
gridPrefab: {fileID: 7069418182187326116, guid: 9d00637d689464a7aabd732cb44e1552, type: 3}
|
||||
--- !u!114 &518661788
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1913,6 +1914,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
prefabToInstance: {fileID: 2065567086344354061, guid: d5ced78f2c9acf647bc91230db65e53d, type: 3}
|
||||
gridPrefab: {fileID: 7069418182187326116, guid: 9d00637d689464a7aabd732cb44e1552, type: 3}
|
||||
--- !u!114 &1198553689
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2322,6 +2324,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
prefabToInstance: {fileID: 2415200880001261083, guid: 4217598f115eda443b059d1d3029157e, type: 3}
|
||||
gridPrefab: {fileID: 7069418182187326116, guid: 9d00637d689464a7aabd732cb44e1552, type: 3}
|
||||
--- !u!114 &1510757703
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2492,6 +2495,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
prefabToInstance: {fileID: 1436977506181758233, guid: 5d852d0f90f588547b2ca56c0dd1340a, type: 3}
|
||||
gridPrefab: {fileID: 7069418182187326116, guid: 9d00637d689464a7aabd732cb44e1552, type: 3}
|
||||
--- !u!114 &1824976693
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2742,6 +2746,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
prefabToInstance: {fileID: 8617488083332643293, guid: 6749fe3471fc05847a373222f309879f, type: 3}
|
||||
gridPrefab: {fileID: 7069418182187326116, guid: 9d00637d689464a7aabd732cb44e1552, type: 3}
|
||||
--- !u!114 &2016642937
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@ -671,6 +671,7 @@ MonoBehaviour:
|
||||
m_HitDetectionType: 0
|
||||
m_SphereCastRadius: 0.1
|
||||
m_ConeCastAngle: 6
|
||||
m_LiveConeCastDebugVisuals: 0
|
||||
m_RaycastMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
@ -2429,7 +2430,7 @@ MonoBehaviour:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1776724014}
|
||||
m_Enabled: 1
|
||||
m_Enabled: 0
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e1760703bbd54c04488a8d10600262ab, type: 3}
|
||||
m_Name:
|
||||
@ -3333,6 +3334,7 @@ MonoBehaviour:
|
||||
m_HitDetectionType: 0
|
||||
m_SphereCastRadius: 0.1
|
||||
m_ConeCastAngle: 6
|
||||
m_LiveConeCastDebugVisuals: 0
|
||||
m_RaycastMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
|
||||
@ -145,14 +145,14 @@ PlayerSettings:
|
||||
- {fileID: 4800000, guid: b02d09082cbc14569ae46c12d9836abc, type: 3}
|
||||
- {fileID: 4800000, guid: f40a6c94c8e1b494d93d434ae522a14f, 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: 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
|
||||
wsaTransparentSwapchain: 0
|
||||
m_HolographicPauseOnTrackingLoss: 1
|
||||
|
||||
Loading…
Reference in New Issue
Block a user