浏览代码

updated prefabs to look at camera when placed, swapped starting state of mesh visualization, changed logic for showing UI

/main
Dan 4 年前
当前提交
a2366c85
共有 18 个文件被更改,包括 80 次插入81 次删除
  1. 6
      Assets/Meshing/Art/Materials/BaseMeshMat.mat
  2. 2
      Assets/Meshing/Art/Materials/CeilingMeshMat.mat
  3. 2
      Assets/Meshing/Art/Materials/DoorMeshMat.mat
  4. 2
      Assets/Meshing/Art/Materials/FloorMeshPrefab.mat
  5. 2
      Assets/Meshing/Art/Materials/NoneMeshMat.mat
  6. 2
      Assets/Meshing/Art/Materials/SeatMeshMat.mat
  7. 2
      Assets/Meshing/Art/Materials/TableMeshMat.mat
  8. 2
      Assets/Meshing/Art/Materials/WallMeshMat.mat
  9. 2
      Assets/Meshing/Art/Materials/WindowMeshMat.mat
  10. 2
      Assets/Meshing/Art/Meshes/Chair.fbx.meta
  11. 4
      Assets/Meshing/Prefabs/Clock.prefab
  12. 4
      Assets/Meshing/Prefabs/DeskLamp.prefab
  13. 4
      Assets/Meshing/Prefabs/PictureFrame1.prefab
  14. 4
      Assets/Meshing/Prefabs/PictureFrame2.prefab
  15. 21
      Assets/Meshing/Scenes/Meshing.unity
  16. 86
      Assets/Meshing/Scripts/ClassificationPlacementManager.cs
  17. 6
      Assets/Meshing/Scripts/MeshClassificationFracking.cs
  18. 8
      Assets/StreamingAssets.meta

6
Assets/Meshing/Art/Materials/BaseMeshMat.mat


- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.801
- _Glossiness: 0
- _Metallic: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02

- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

2
Assets/Meshing/Art/Materials/CeilingMeshMat.mat


- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 0, b: 0.009601116, a: 0.33333334}
- _Color: {r: 1, g: 0, b: 0.009601116, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

2
Assets/Meshing/Art/Materials/DoorMeshMat.mat


- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 0.49172527, b: 0, a: 0.33333334}
- _Color: {r: 1, g: 0.49172527, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

2
Assets/Meshing/Art/Materials/FloorMeshPrefab.mat


- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 0.9445122, b: 0, a: 0.33333334}
- _Color: {r: 1, g: 0.9445122, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

2
Assets/Meshing/Art/Materials/NoneMeshMat.mat


- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 0.5047746, g: 1, b: 0, a: 0.33333334}
- _Color: {r: 0.5047746, g: 1, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

2
Assets/Meshing/Art/Materials/SeatMeshMat.mat


- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 0, g: 0.97431374, b: 1, a: 0.33333334}
- _Color: {r: 0, g: 0.9743137, b: 1, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

2
Assets/Meshing/Art/Materials/TableMeshMat.mat


- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 0, g: 0.18643188, b: 1, a: 0.33333334}
- _Color: {r: 0, g: 0.18643185, b: 1, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

2
Assets/Meshing/Art/Materials/WallMeshMat.mat


- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 0.67299557, g: 0, b: 1, a: 0.33333334}
- _Color: {r: 0.6729955, g: 0, b: 1, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

2
Assets/Meshing/Art/Materials/WindowMeshMat.mat


- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 0, b: 0.81269073, a: 0.33333334}
- _Color: {r: 1, g: 0, b: 0.81269073, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

2
Assets/Meshing/Art/Meshes/Chair.fbx.meta


tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
tangentImportMode: 2
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1

4
Assets/Meshing/Prefabs/Clock.prefab


m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 184978502022235151}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalRotation: {x: 0, y: 0.70710677, z: 0.70710677, w: 0}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 270, y: -90, z: -90}
--- !u!33 &9161197091413447472
MeshFilter:
m_ObjectHideFlags: 0

4
Assets/Meshing/Prefabs/DeskLamp.prefab


m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3336791621454200098}
m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1}
m_LocalRotation: {x: 0.000000020107677, y: 0.39187136, z: 0.00000000856462, w: 0.92002}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 0, y: 46.142002, z: 0}
--- !u!33 &1005124824452606074
MeshFilter:
m_ObjectHideFlags: 0

4
Assets/Meshing/Prefabs/PictureFrame1.prefab


m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3290968437981493747}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: 0, y: 0, z: 1, w: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180}
--- !u!33 &9198861803037120479
MeshFilter:
m_ObjectHideFlags: 0

4
Assets/Meshing/Prefabs/PictureFrame2.prefab


m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4400197571077177786}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalRotation: {x: 0, y: 0.70710677, z: 0.70710677, w: 0}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 270, y: -90, z: -90}
--- !u!33 &8474581158562862015
MeshFilter:
m_ObjectHideFlags: 0

21
Assets/Meshing/Scenes/Meshing.unity


m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Button
m_Text: Apples
--- !u!222 &39405532
CanvasRenderer:
m_ObjectHideFlags: 0

m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Button
m_Text: Frame1
--- !u!222 &313939704
CanvasRenderer:
m_ObjectHideFlags: 0

m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Button
m_Text: Frame2
--- !u!222 &325662366
CanvasRenderer:
m_ObjectHideFlags: 0

m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Button
m_Text: Nightstand
--- !u!222 &571998969
CanvasRenderer:
m_ObjectHideFlags: 0

m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Button
m_Text: Clock
--- !u!222 &857411396
CanvasRenderer:
m_ObjectHideFlags: 0

m_FloorUI: {fileID: 1600074329}
m_WallUI: {fileID: 856040692}
m_TableUI: {fileID: 831576359}
m_ARCameraTransform: {fileID: 1823173801}
--- !u!1 &1175737990
GameObject:
m_ObjectHideFlags: 0

m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Button
m_Text: Plant
--- !u!222 &1227297174
CanvasRenderer:
m_ObjectHideFlags: 0

m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Button
m_Text: Chair
--- !u!222 &1503363257
CanvasRenderer:
m_ObjectHideFlags: 0

m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Button
m_Text: Lamp
--- !u!222 &1821923201
CanvasRenderer:
m_ObjectHideFlags: 0

- component: {fileID: 1823173798}
m_Layer: 0
m_Name: AR Camera
m_TagString: Untagged
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0

m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Button
m_Text: Clock
--- !u!222 &2043939721
CanvasRenderer:
m_ObjectHideFlags: 0

86
Assets/Meshing/Scripts/ClassificationPlacementManager.cs


using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.XR.ARKit;
using UnityEngine.XR.ARSubsystems;
public class ClassificationPlacementManager : MonoBehaviour
{

[SerializeField]
GameObject m_TableUI;
[SerializeField]
Transform m_ARCameraTransform;
if (Input.touchCount > 0)
if (m_ClassificationManager.currentClassification == ARMeshClassification.Table ||
m_ClassificationManager.currentClassification == ARMeshClassification.Floor ||
m_ClassificationManager.currentClassification == ARMeshClassification.Wall)
m_Touch = Input.GetTouch(0);
// touched UI, return early
if (IsTouchOverUIObject(m_Touch))
switch (m_ClassificationManager.currentClassification)
return;
}
// valid surfaces for objects
if (m_ClassificationManager.currentClassification == ARMeshClassification.Floor)
{
case ARMeshClassification.Floor:
m_ShowingSelectionUI = true;
}
else if (m_ClassificationManager.currentClassification == ARMeshClassification.Wall)
{
m_WallUI.SetActive(false);
m_TableUI.SetActive(false);
break;
case ARMeshClassification.Wall:
m_ShowingSelectionUI = true;
}
else if(m_ClassificationManager.currentClassification == ARMeshClassification.Table)
{
m_TableUI.SetActive(true);
m_ShowingSelectionUI = true;
}
else
{
m_WallUI.SetActive(false);
m_ShowingSelectionUI = false;
break;
case ARMeshClassification.Table:
m_TableUI.SetActive(true);
m_FloorUI.SetActive(false);
m_WallUI.SetActive(false);
break;
}
else
{
m_FloorUI.SetActive(false);
m_WallUI.SetActive(false);
m_TableUI.SetActive(false);
Instantiate(m_FloorPrefabs[indexToPlace], m_Reticle.GetReticlePosition().position, m_Reticle.GetReticlePosition().rotation);
m_FloorUI.SetActive(false);
m_ShowingSelectionUI = false;
GameObject m_SpawnedObject = Instantiate(m_FloorPrefabs[indexToPlace], m_Reticle.GetReticlePosition().position, m_Reticle.GetReticlePosition().rotation);
// look at device but stay 'flat'
m_SpawnedObject.transform.LookAt(m_ARCameraTransform, Vector3.up);
m_SpawnedObject.transform.rotation = Quaternion.Euler(0, m_SpawnedObject.transform.eulerAngles.y, 0);
m_WallUI.SetActive(false);
m_ShowingSelectionUI = false;
Instantiate(m_TablePrefabs[indexToPlace], m_Reticle.GetReticlePosition().position, m_Reticle.GetReticlePosition().rotation);
m_TableUI.SetActive(false);
m_ShowingSelectionUI = false;
GameObject m_SpawnedObject = Instantiate(m_TablePrefabs[indexToPlace], m_Reticle.GetReticlePosition().position, m_Reticle.GetReticlePosition().rotation);
// look at device but stay 'flat'
m_SpawnedObject.transform.LookAt(m_ARCameraTransform, Vector3.up);
m_SpawnedObject.transform.rotation = Quaternion.Euler(0, m_SpawnedObject.transform.eulerAngles.y, 0);
bool IsTouchOverUIObject(Touch touch)
{
PointerEventData eventDataCurrentPosition = new PointerEventData(EventSystem.current);
eventDataCurrentPosition.position = touch.position;
m_OverUIResults.Clear();
EventSystem.current.RaycastAll(eventDataCurrentPosition, m_OverUIResults);
return m_OverUIResults.Count > 0;
}
}

6
Assets/Meshing/Scripts/MeshClassificationFracking.cs


readonly List<Material> m_SharedPrefabMats = new List<Material>();
const float k_StartAlpha = 0.3f;
bool m_ShowingMeshes = true;
const float k_ShowAlpha = 0.3f;
bool m_ShowingMeshes = false;
/// <summary>
/// On awake, set up the mesh filter delegates.

}
else
{
mat.color = new Color(mat.color.r, mat.color.g, mat.color.b, k_StartAlpha);
mat.color = new Color(mat.color.r, mat.color.g, mat.color.b, k_ShowAlpha);
}
}
m_ShowingMeshes = !m_ShowingMeshes;

8
Assets/StreamingAssets.meta


fileFormatVersion: 2
guid: 5a732e9767686484d9f6d575620b0920
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
正在加载...
取消
保存