浏览代码

Merge branch 'image-tracking-improvements' into 2.1-preview

/1.5-preview
Tim Mowrer 6 年前
当前提交
93ea9332
共有 18 个文件被更改,包括 273 次插入255 次删除
  1. 3
      Assets/Scenes/ImageTracking/ImageTracking.unity
  2. 47
      Assets/Scenes/ImageTracking/Images/Rafflesia.jpg.meta
  3. 33
      Assets/Scenes/ImageTracking/Images/ReferenceImageLibrary.asset
  4. 11
      Assets/Scenes/ImageTracking/Images/unitylogowhiteonblack.jpg.meta
  5. 11
      Assets/Scenes/ImageTracking/Images/QRCode.jpg.meta
  6. 110
      Assets/Scenes/ImageTracking/TrackedImageInfoManager.cs
  7. 90
      Assets/Scenes/ImageTracking/Images/QRCode.jpg
  8. 88
      Assets/Scenes/ImageTracking/Images/unitylogowhiteonblack.jpg
  9. 18
      Assets/Scenes/ImageTracking/Images/QRCode.asset
  10. 8
      Assets/Scenes/ImageTracking/Images/QRCode.asset.meta
  11. 9
      Assets/Scenes/ImageTracking/Images/QRCode.png
  12. 18
      Assets/Scenes/ImageTracking/Images/Rafflesia.asset
  13. 8
      Assets/Scenes/ImageTracking/Images/Rafflesia.asset.meta
  14. 18
      Assets/Scenes/ImageTracking/Images/UnityLogoBlack.asset
  15. 8
      Assets/Scenes/ImageTracking/Images/UnityLogoBlack.asset.meta
  16. 48
      Assets/Scenes/ImageTracking/Images/unitylogowhiteonblack.png
  17. 0
      /Assets/Scenes/ImageTracking/Images/unitylogowhiteonblack.jpg.meta
  18. 0
      /Assets/Scenes/ImageTracking/Images/QRCode.jpg.meta

3
Assets/Scenes/ImageTracking/ImageTracking.unity


m_EditorClassIdentifier:
m_WorldSpaceCanvasCamera: {fileID: 1247506530}
m_DefaultTexture: {fileID: 10305, guid: 0000000000000000f000000000000000, type: 0}
m_TextureReferenceImagePairs:
- texture: {fileID: 2800000, guid: 8185ee60df6f2a44e8c0cf22387f31aa, type: 3}
referenceImage: {fileID: 11400000, guid: a7351be44527d304a85355f98dc6e294, type: 2}
--- !u!1 &1247506529
GameObject:
m_ObjectHideFlags: 0

47
Assets/Scenes/ImageTracking/Images/Rafflesia.jpg.meta


fileFormatVersion: 2
guid: 8185ee60df6f2a44e8c0cf22387f31aa
TextureImporter:
fileIDToRecycleName: {}
internalIDToNameTable: []
serializedVersion: 7
serializedVersion: 9
enableMipMap: 1
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0

compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 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: []

spriteID:
internalID: 0
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

33
Assets/Scenes/ImageTracking/Images/ReferenceImageLibrary.asset


m_Script: {fileID: 11500000, guid: 848409ee8ba454f42a5ddff137688a27, type: 3}
m_Name: ReferenceImageLibrary
m_EditorClassIdentifier:
m_GuidLow: 5438900029218683827
m_GuidHigh: 11338665651040755373
- {fileID: 11400000, guid: a7351be44527d304a85355f98dc6e294, type: 2}
- m_SerializedGuid:
m_GuidLow: 5332104792803380197
m_GuidHigh: 185310804734996668
m_SerializedTextureGuid:
m_GuidLow: 3045804918016700000
m_GuidHigh: 12263723139385508072
m_Size: {x: 0.254, y: 0.16891992}
m_SpecifySize: 1
m_Name: Rafflesia
m_Texture: {fileID: 2800000, guid: 8185ee60df6f2a44e8c0cf22387f31aa, type: 3}
- m_SerializedGuid:
m_GuidLow: 4688767676970561261
m_GuidHigh: 9713720137873368247
m_SerializedTextureGuid:
m_GuidLow: 16430241910255274575
m_GuidHigh: 3143750354108030859
m_Size: {x: 0.1, y: 0.1}
m_SpecifySize: 1
m_Name: Logo
m_Texture: {fileID: 2800000, guid: 5a804a4ff1f7e4038b1f1e6f4ad8a02b, type: 3}
- m_SerializedGuid:
m_GuidLow: 5602505921028117032
m_GuidHigh: 208412801924047543
m_SerializedTextureGuid:
m_GuidLow: 288924497207985411
m_GuidHigh: 4143232447317295274
m_Size: {x: 0.05, y: 0.05}
m_SpecifySize: 1
m_Name: QRCode
m_Texture: {fileID: 2800000, guid: a6fd8503774c0402aa403884f5b77f39, type: 3}

11
Assets/Scenes/ImageTracking/Images/unitylogowhiteonblack.jpg.meta


fileFormatVersion: 2
guid: 4560bbb1efc550f4ab718112f77f2454
guid: 5a804a4ff1f7e4038b1f1e6f4ad8a02b
fileIDToRecycleName: {}
internalIDToNameTable: []
serializedVersion: 7
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1

compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0

allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []

spriteID:
internalID: 0
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

11
Assets/Scenes/ImageTracking/Images/QRCode.jpg.meta


fileFormatVersion: 2
guid: bf2e9553ee29615409e2c1613bed5621
guid: a6fd8503774c0402aa403884f5b77f39
fileIDToRecycleName: {}
internalIDToNameTable: []
serializedVersion: 7
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1

compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0

allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []

spriteID:
internalID: 0
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0

110
Assets/Scenes/ImageTracking/TrackedImageInfoManager.cs


using UnityEngine.XR.ARSubsystems;
using UnityEngine.XR.ARFoundation;
#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
/// <summary>
/// Each XRReferenceImage only stores a Guid, not a Texture2D.
/// At build time, generate a list of source Texture2Ds and store references
/// so that we will have them at runtime.
/// </summary>
class TrackedImageInfoManagerBuildProcessor : IPreprocessBuildWithReport
{
public int callbackOrder { get { return 0; } }
public void OnPreprocessBuild(BuildReport report)
{
var infoManagers = UnityEngine.Object.FindObjectsOfType<TrackedImageInfoManager>();
if (infoManagers == null)
return;
foreach (var infoManager in infoManagers)
infoManager.RebuildDictionary();
AssetDatabase.Refresh();
}
}
#endif
/// <summary>
/// This component listens for images detected by the <c>XRImageTrackingSubsystem</c>
/// and overlays some information as well as the source Texture2D on top of the
/// detected image.

set { m_DefaultTexture = value; }
}
/// <summary>
/// A serializable container for Texture2D and XRReferenceImage pairs.
/// This is used to associate a reference image with the source texture.
/// </summary>
[Serializable]
struct TextureReferenceImagePair
{
[SerializeField]
public Texture2D texture;
[SerializeField]
public XRReferenceImage referenceImage;
public TextureReferenceImagePair(Texture2D texture, XRReferenceImage referenceImage)
{
this.texture = texture;
this.referenceImage = referenceImage;
}
}
/// <summary>
/// A serializable list of Texture2D-ReferenceImage pairs used to lookup
/// a reference image's source Texture2D at runtime.
/// </summary>
[SerializeField, HideInInspector]
List<TextureReferenceImagePair> m_TextureReferenceImagePairs = new List<TextureReferenceImagePair>();
Dictionary<Guid, Texture2D> m_Textures;
// Build a dictionary of Guid to Texture2D
m_Textures = new Dictionary<Guid, Texture2D>();
foreach (var pair in m_TextureReferenceImagePairs)
m_Textures[pair.referenceImage.guid] = pair.texture;
#if UNITY_EDITOR
/// <summary>
/// Rebuilds a serializable list of Texture2D-XRReferenceImage pairs.
/// At runtime, this List is used to populate a dictionary.
/// </summary>
internal void RebuildDictionary()
{
m_TextureReferenceImagePairs = new List<TextureReferenceImagePair>();
var trackedImageManager = GetComponent<ARTrackedImageManager>();
if (trackedImageManager != null && trackedImageManager.referenceLibrary != null)
{
foreach (var referenceImage in trackedImageManager.referenceLibrary)
{
var guid = referenceImage.guid;
var texturePath = AssetDatabase.GUIDToAssetPath(guid.ToString("N"));
if (string.IsNullOrEmpty(texturePath))
{
Debug.LogWarningFormat("Null or empty texturePath for image {0}", guid);
continue;
}
var texture = AssetDatabase.LoadAssetAtPath<Texture2D>(texturePath);
m_TextureReferenceImagePairs.Add(new TextureReferenceImagePair(texture, referenceImage));
}
}
}
#endif
void OnEnable()
{
m_TrackedImageManager.trackedImagesChanged += OnTrackedImagesChanged;

// Update information about the tracked image
var text = canvas.GetComponentInChildren<Text>();
text.text = string.Format(
"trackableId\n{0}\ntrackingState: {1}\nGUID: {2}\nReference width: {3}\nDetected size: {4:0.0000}x{5:0.0000}",
trackedImage.trackableId,
"{0}\ntrackingState: {1}\nGUID: {2}\nReference size: {3} cm\nDetected size: {4} cm",
trackedImage.referenceImage.name,
trackedImage.referenceImage.width,
trackedImage.size.x,
trackedImage.size.y);
trackedImage.referenceImage.size * 100f,
trackedImage.size * 100f);
var planeParentGo = trackedImage.transform.GetChild(0).gameObject;
var planeGo = planeParentGo.transform.GetChild(0).gameObject;

trackedImage.transform.localScale = new Vector3(trackedImage.size.x, 1f, trackedImage.size.y);
// Set the texture
var meshRenderer = planeGo.GetComponentInChildren<MeshRenderer>();
// Look up the texture by Guid
Texture2D texture;
if (!m_Textures.TryGetValue(trackedImage.referenceImage.guid, out texture))
texture = defaultTexture;
meshRenderer.material.mainTexture = texture;
var material = planeGo.GetComponentInChildren<MeshRenderer>().material;
material.mainTexture = (trackedImage.referenceImage.texture == null) ? defaultTexture : trackedImage.referenceImage.texture;
}
else
{

90
Assets/Scenes/ImageTracking/Images/QRCode.jpg

之前 之后
宽度: 300  |  高度: 300  |  大小: 23 KiB

88
Assets/Scenes/ImageTracking/Images/unitylogowhiteonblack.jpg

之前 之后
宽度: 512  |  高度: 512  |  大小: 18 KiB

18
Assets/Scenes/ImageTracking/Images/QRCode.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 11f2715bf4e5ea943bc99337c8e80edf, type: 3}
m_Name: QRCode
m_EditorClassIdentifier:
m_GuidLow: 7013492382791275859
m_GuidHigh: 2402368290547687945
m_Width: 0.076
m_SpecifyWidth: 1

8
Assets/Scenes/ImageTracking/Images/QRCode.asset.meta


fileFormatVersion: 2
guid: 75b68e9ca7443e94897aee9514317bda
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

9
Assets/Scenes/ImageTracking/Images/QRCode.png

之前 之后

18
Assets/Scenes/ImageTracking/Images/Rafflesia.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 11f2715bf4e5ea943bc99337c8e80edf, type: 3}
m_Name: Rafflesia
m_EditorClassIdentifier:
m_GuidLow: 3045804918016700000
m_GuidHigh: 12263723139385508072
m_Width: 0.28
m_SpecifyWidth: 1

8
Assets/Scenes/ImageTracking/Images/Rafflesia.asset.meta


fileFormatVersion: 2
guid: a7351be44527d304a85355f98dc6e294
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

18
Assets/Scenes/ImageTracking/Images/UnityLogoBlack.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 11f2715bf4e5ea943bc99337c8e80edf, type: 3}
m_Name: UnityLogoBlack
m_EditorClassIdentifier:
m_GuidLow: 5833551047903198129
m_GuidHigh: 6063111697491653035
m_Width: 0.14
m_SpecifyWidth: 1

8
Assets/Scenes/ImageTracking/Images/UnityLogoBlack.asset.meta


fileFormatVersion: 2
guid: 80ce057f5368fdf44b72098a9085f0d6
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

48
Assets/Scenes/ImageTracking/Images/unitylogowhiteonblack.png

之前 之后

/Assets/Scenes/ImageTracking/Images/unitylogowhiteonblack.png.meta → /Assets/Scenes/ImageTracking/Images/unitylogowhiteonblack.jpg.meta

/Assets/Scenes/ImageTracking/Images/QRCode.png.meta → /Assets/Scenes/ImageTracking/Images/QRCode.jpg.meta

正在加载...
取消
保存