浏览代码

finished placement demo for contact position shader

/Shaders2019
Dan 4 年前
当前提交
0f0fc62f
共有 16 个文件被更改,包括 653 次插入145 次删除
  1. 2
      Assets/Shaders/PositionRendering/Prefabs/AnimatedPlacedObject.prefab
  2. 344
      Assets/Shaders/PositionRendering/Scenes/PositionBasedRendering.unity
  3. 32
      Assets/Shaders/PositionRendering/Scripts/AnimatedPlaceObject.cs
  4. 4
      ProjectSettings/EditorBuildSettings.asset
  5. 1
      ProjectSettings/GraphicsSettings.asset
  6. 2
      ProjectSettings/ProjectSettings.asset
  7. 97
      Assets/Shaders/PositionRendering/Scripts/ARContactPosition.cs
  8. 60
      Assets/Shaders/PositionRendering/Scripts/ContactPositionPlacement.cs
  9. 11
      Assets/Shaders/PositionRendering/Scripts/ContactPositionPlacement.cs.meta
  10. 8
      Assets/Shaders/PositionRendering/Textures.meta
  11. 20
      Assets/Shaders/PositionRendering/Textures/icon_plus.png
  12. 128
      Assets/Shaders/PositionRendering/Textures/icon_plus.png.meta
  13. 81
      Assets/Shaders/PositionRendering/Scripts/ARPositionManager.cs
  14. 8
      Assets/ARFoundationDemos.meta
  15. 0
      /Assets/Shaders/PositionRendering/Scripts/ARContactPosition.cs.meta

2
Assets/Shaders/PositionRendering/Prefabs/AnimatedPlacedObject.prefab


m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8320938194050022958}
m_Enabled: 1
m_CastShadows: 1
m_CastShadows: 0
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1

344
Assets/Shaders/PositionRendering/Scenes/PositionBasedRendering.unity


m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
--- !u!1 &285340574
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 285340578}
- component: {fileID: 285340577}
- component: {fileID: 285340576}
- component: {fileID: 285340575}
m_Layer: 5
m_Name: ContactPositionUI
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &285340575
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 285340574}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &285340576
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 285340574}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
--- !u!223 &285340577
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 285340574}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!224 &285340578
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 285340574}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1909101414}
- {fileID: 1290181596}
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!1 &427002218
GameObject:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
m_CameraManager: {fileID: 282840816}
m_BrightnessMod: 2
--- !u!1 &1290181595
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1290181596}
- component: {fileID: 1290181599}
- component: {fileID: 1290181598}
- component: {fileID: 1290181597}
m_Layer: 5
m_Name: SpawnObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1290181596
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1290181595}
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_Children: []
m_Father: {fileID: 285340578}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 0}
m_AnchoredPosition: {x: 0, y: 256}
m_SizeDelta: {x: 256, y: 256}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1290181597
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1290181595}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 1290181598}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 1335839542}
m_MethodName: SpawnPlacementObject
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &1290181598
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1290181595}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 3397f679b52c548a1bff2845b2a4c080, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &1290181599
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1290181595}
m_CullTransparentMesh: 0
--- !u!1 &1335839533
GameObject:
m_ObjectHideFlags: 0

- component: {fileID: 1335839535}
- component: {fileID: 1335839534}
- component: {fileID: 1335839537}
- component: {fileID: 1335839536}
- component: {fileID: 1335839539}
- component: {fileID: 1335839542}
- component: {fileID: 1335839541}
m_Layer: 0
m_Name: AR Session Origin

m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1335839536
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1335839533}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7ab0e80cee9cc1d44928bfe488dd1e2d, type: 3}
m_Name:
m_EditorClassIdentifier:
m_PointCloudPrefab: {fileID: 5706843430230825157, guid: 2a91e1f16d3bef84eb6c25e4c6a63fdb,
type: 3}
--- !u!114 &1335839537
MonoBehaviour:
m_ObjectHideFlags: 0

m_Name:
m_EditorClassIdentifier:
m_RaycastPrefab: {fileID: 0}
--- !u!114 &1335839539
--- !u!114 &1335839540
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1335839533}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 35373097541764a2381fa4039397591c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RaycastManager: {fileID: 1335839538}
m_PlaneManager: {fileID: 1335839537}
m_DelayPosition: 1
--- !u!114 &1335839541
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}

m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 446fc7fee4cf2ad4daa02222a84869c4, type: 3}
m_Script: {fileID: 11500000, guid: 33ad232cbb38441b9be19ff966ccc4a7, type: 3}
m_PlacedPrefab: {fileID: 6562802905340916462, guid: f87dd2359ba946141af737fcd7366b3a,
type: 3}
m_MaxNumberOfObjectsToPlace: 1
m_CanReposition: 1
--- !u!114 &1335839540
--- !u!114 &1335839542
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}

m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 35373097541764a2381fa4039397591c, type: 3}
m_Script: {fileID: 11500000, guid: 67c3a5279a63942198928254c7a39580, type: 3}
m_RaycastManager: {fileID: 1335839538}
m_PlaneManager: {fileID: 1335839537}
m_ARContactPosition: {fileID: 1335839540}
--- !u!114 &1335839541
--- !u!1 &1909101413
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1909101414}
- component: {fileID: 1909101416}
- component: {fileID: 1909101415}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1909101414
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1909101413}
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_Children: []
m_Father: {fileID: 285340578}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 0}
m_AnchoredPosition: {x: 0, y: 200}
m_SizeDelta: {x: 0, y: 400}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1909101415
m_GameObject: {fileID: 1335839533}
m_GameObject: {fileID: 1909101413}
m_Script: {fileID: 11500000, guid: 33ad232cbb38441b9be19ff966ccc4a7, type: 3}
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.1764706}
m_RaycastTarget: 1
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &1909101416
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1909101413}
m_CullTransparentMesh: 0
--- !u!1 &2146458540
GameObject:
m_ObjectHideFlags: 0

32
Assets/Shaders/PositionRendering/Scripts/AnimatedPlaceObject.cs


using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using DG.Tweening;
using UnityEngine.XR.ARSubsystems;
public float ShakeVal;
public Ease MoveEase;
void Update()
public Transform placementSphere
#if UNITY_EDITOR
if (Input.GetKeyDown(KeyCode.A))
{
m_PlacementSphere.localPosition = new Vector3(0, 0.375f, 0);
}
if (Input.GetKeyDown(KeyCode.Space))
{
AnimatePlacement();
}
#endif
get => m_PlacementSphere;
set => m_PlacementSphere = value;
const float k_ShakeScale = 0.5f;
const Ease k_MoveEase = Ease.OutBounce;
m_PlacementSphere.DOLocalMove(Vector3.zero, 0.1f).SetEase(MoveEase).OnComplete(BounceLand);
m_PlacementSphere.DOLocalMove(Vector3.zero, 0.1f).SetEase(k_MoveEase).OnComplete(BounceLand);
m_PlacementSphere.DOShakeScale(0.1f, ShakeVal);
m_PlacementSphere.DOShakeScale(0.1f, k_ShakeScale);
}
}

4
ProjectSettings/EditorBuildSettings.asset


serializedVersion: 2
m_Scenes:
- enabled: 1
path: Assets/Shaders/Shadows/Scenes/ShadowPlacement.unity
guid: d88edf08dec76432fb75bc510222417f
path: Assets/Shaders/PositionRendering/Scenes/PositionBasedRendering.unity
guid: 8822fc85570ef47cc9f6768669d07a04
m_configObjects:
UnityEditor.XR.ARCore.ARCoreSettings: {fileID: 11400000, guid: 0f640456e31a1497aa336938d310040e,
type: 2}

1
ProjectSettings/GraphicsSettings.asset


- {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 16003, guid: 0000000000000000f000000000000000, type: 0}
m_PreloadedShaders: []
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
type: 0}

2
ProjectSettings/ProjectSettings.asset


bundleVersion: 0.1
preloadedAssets:
- {fileID: 11400000, guid: 6f7fbab671a5848ddae17e25cb330888, type: 2}
- {fileID: 4800000, guid: e7c77f6eaab324a819efdc13b8125a39, type: 3}
- {fileID: -7698313333363481667, guid: 5c86decb01f9d6b46a50ce486fba0042, type: 2}
metroInputSource: 0
wsaTransparentSwapchain: 0
m_HolographicPauseOnTrackingLoss: 1

97
Assets/Shaders/PositionRendering/Scripts/ARContactPosition.cs


using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
public class ARContactPosition : MonoBehaviour
{
[SerializeField]
ARRaycastManager m_RaycastManager;
public ARRaycastManager raycastManager
{
get => m_RaycastManager;
set => m_RaycastManager = value;
}
[SerializeField]
ARPlaneManager m_PlaneManager;
public ARPlaneManager planeManager
{
get => m_PlaneManager;
set => m_PlaneManager = value;
}
[SerializeField]
bool m_DelayPosition;
public bool delayPosition
{
get => m_DelayPosition;
set => m_DelayPosition = true;
}
Vector3 m_TargetPosition;
public Vector3 targetPosition
{
get => m_TargetPosition;
set => m_TargetPosition = value;
}
Quaternion m_TargetRotation;
public Quaternion targetRotation
{
get => m_TargetRotation;
set => m_TargetRotation = value;
}
TrackableId m_HitID;
Pose m_HitPose;
static List<ARRaycastHit> s_Hits = new List<ARRaycastHit>();
const string k_ShaderPositionProperty = "_ContactPosition";
const string k_ShaderContactProperty = "_IsInContact";
const float k_LerpDelayValue = 0.05f;
void OnEnable()
{
m_TargetPosition = Vector3.zero;
}
void Update()
{
if (m_RaycastManager.Raycast(CenterScreenHelper.Instance.GetCenterScreen(), s_Hits, TrackableType.PlaneWithinBounds))
{
m_HitID = s_Hits[0].trackableId;
m_HitPose = s_Hits[0].pose;
m_TargetRotation = m_HitPose.rotation;
}
if (m_DelayPosition)
{
m_TargetPosition = Vector3.Lerp(m_TargetPosition, m_HitPose.position, k_LerpDelayValue);
}
else
{
m_TargetPosition = m_HitPose.position;
}
foreach(ARPlane plane in m_PlaneManager.trackables)
{
if (plane.trackableId == m_HitID)
{
plane.transform.GetComponent<MeshRenderer>().material.SetFloat(k_ShaderContactProperty, 1);
plane.transform.GetComponent<MeshRenderer>().material.SetVector(k_ShaderPositionProperty, m_TargetPosition);
}
else
{
plane.transform.GetComponent<MeshRenderer>().material.SetFloat(k_ShaderContactProperty, 0);
}
}
}
}

60
Assets/Shaders/PositionRendering/Scripts/ContactPositionPlacement.cs


using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ContactPositionPlacement : MonoBehaviour
{
[SerializeField]
ARContactPosition m_ARContactPosition;
public ARContactPosition arContactPosition
{
get => m_ARContactPosition;
set => m_ARContactPosition = value;
}
[SerializeField]
GameObject m_ObjectPrefab;
public GameObject objectPrefab
{
get => m_ObjectPrefab;
set => m_ObjectPrefab = value;
}
GameObject m_SpawnedObject;
bool m_Placed;
void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
if (m_SpawnedObject && !m_Placed)
{
m_Placed = true;
if(m_SpawnedObject.TryGetComponent(out AnimatedPlaceObject m_PlacedObject))
{
m_PlacedObject.AnimatePlacement();
}
}
}
}
if (m_SpawnedObject && !m_Placed)
{
m_SpawnedObject.transform.SetPositionAndRotation(m_ARContactPosition.targetPosition, m_ARContactPosition.targetRotation);
}
}
public void SpawnPlacementObject()
{
m_SpawnedObject = Instantiate(m_ObjectPrefab, m_ARContactPosition.targetPosition, m_ARContactPosition.targetRotation);
m_Placed = false;
}
}

11
Assets/Shaders/PositionRendering/Scripts/ContactPositionPlacement.cs.meta


fileFormatVersion: 2
guid: 67c3a5279a63942198928254c7a39580
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/Shaders/PositionRendering/Textures.meta


fileFormatVersion: 2
guid: 1d2cddb8fdc404abbaab416e16f1843e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

20
Assets/Shaders/PositionRendering/Textures/icon_plus.png

之前 之后
宽度: 128  |  高度: 128  |  大小: 4.5 KiB

128
Assets/Shaders/PositionRendering/Textures/icon_plus.png.meta


fileFormatVersion: 2
guid: 3397f679b52c548a1bff2845b2a4c080
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

81
Assets/Shaders/PositionRendering/Scripts/ARPositionManager.cs


using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
public class ARPositionManager : MonoBehaviour
{
[SerializeField]
ARRaycastManager m_RaycastManager;
[SerializeField]
ARPlaneManager m_PlaneManager;
[SerializeField]
GameObject m_ObjectPrefab;
GameObject m_SpawnedObject;
Vector3 m_DelayedPosition;
bool m_Placed = false;
TrackableId m_HitID;
Pose m_HitPose;
static List<ARRaycastHit> s_Hits = new List<ARRaycastHit>();
const string k_ShaderPositionProperty = "_ContactPosition";
const string k_ShaderContactProperty = "_IsInContact";
void OnEnable()
{
m_SpawnedObject = Instantiate(m_ObjectPrefab);
m_DelayedPosition = new Vector3(0,0,0);
}
public void SpawnPlaceableObject()
{
}
void Update()
{
if (m_RaycastManager.Raycast(CenterScreenHelper.Instance.GetCenterScreen(), s_Hits, TrackableType.PlaneWithinBounds))
{
m_HitID = s_Hits[0].trackableId;
m_HitPose = s_Hits[0].pose;
}
m_DelayedPosition = Vector3.Lerp(m_DelayedPosition, m_HitPose.position, 0.085f);
if (!m_Placed)
{
m_SpawnedObject.transform.position = m_DelayedPosition;
}
foreach(ARPlane plane in m_PlaneManager.trackables)
{
if (plane.trackableId == m_HitID)
{
plane.transform.GetComponent<MeshRenderer>().material.SetFloat(k_ShaderContactProperty, 1);
plane.transform.GetComponent<MeshRenderer>().material.SetVector(k_ShaderPositionProperty, m_DelayedPosition);
}
else
{
plane.transform.GetComponent<MeshRenderer>().material.SetFloat(k_ShaderContactProperty, 0);
}
}
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
m_Placed = true;
m_SpawnedObject.GetComponent<AnimatedPlaceObject>().AnimatePlacement();
}
}
}
}

8
Assets/ARFoundationDemos.meta


fileFormatVersion: 2
guid: faeaceca7df854ff49277ef3f74f530f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

/Assets/Shaders/PositionRendering/Scripts/ARPositionManager.cs.meta → /Assets/Shaders/PositionRendering/Scripts/ARContactPosition.cs.meta

正在加载...
取消
保存