3 Commits

Author SHA1 Message Date
Sean Lu
dfdcd0fd7f version 2.4.2 2024-10-30 16:02:07 +08:00
babelsw_hsu
5ac252bf2e Changed: The License file.
Symptom: Plugin
Root Cause: N/A
Solution: Changed the License file.
Project: VIVE OpenXR Unity Plugin
Note:
2024-09-27 17:49:27 +08:00
Sean
fa1969a087 version 2.4.1 2024-07-18 14:29:33 +08:00
164 changed files with 200585 additions and 4998 deletions

4
LICENSE.txt Normal file
View File

@@ -0,0 +1,4 @@
Copyright © HTC Corporation, LLC and its affiliates. All rights reserved.
Your use of this SDK, sample, or tool is subject to HTC VIVE SDK License Agreement, available at https://developer.vive.com/resources/downloads/licenses-and-agreements/

View File

@@ -359,10 +359,10 @@ namespace VIVE.OpenXR.CompositionLayer.Passthrough
#if UNITY_STANDALONE #if UNITY_STANDALONE
private static void SubmitLayer() private static void SubmitLayer()
{ {
XR_HTC_passthrough.Interop.GetOriginEndFrameLayerList(out List<IntPtr> layerList);//GetOriginEndFrameLayers
foreach(var passthrough in passthrough2IsUnderLay.Keys) foreach(var passthrough in passthrough2IsUnderLay.Keys)
{ {
//Get and submit layer list //Get and submit layer list
XR_HTC_passthrough.Interop.GetOriginEndFrameLayerList(out List<IntPtr> layerList);//GetOriginEndFrameLayers
if (layerList.Count != 0) if (layerList.Count != 0)
{ {
Marshal.StructureToPtr(passthrough2Layer[passthrough], passthrough2LayerPtr[passthrough], false); Marshal.StructureToPtr(passthrough2Layer[passthrough], passthrough2LayerPtr[passthrough], false);
@@ -370,9 +370,9 @@ namespace VIVE.OpenXR.CompositionLayer.Passthrough
layerList.Insert(0, passthrough2LayerPtr[passthrough]); layerList.Insert(0, passthrough2LayerPtr[passthrough]);
else else
layerList.Insert(1, passthrough2LayerPtr[passthrough]); layerList.Insert(1, passthrough2LayerPtr[passthrough]);
XR_HTC_passthrough.Interop.SubmitLayers(layerList);
} }
} }
XR_HTC_passthrough.Interop.SubmitLayers(layerList);
} }
#endif #endif
@@ -393,21 +393,23 @@ namespace VIVE.OpenXR.CompositionLayer.Passthrough
ERROR("HTC_Passthrough feature instance not found."); ERROR("HTC_Passthrough feature instance not found.");
return false; return false;
} }
if (!passthroughFeature.PassthroughIDList.Contains(passthroughID))
if (!passthroughFeature.PassthroughIDList.Contains(passthroughID)) {
{ ERROR("Passthrough to be destroyed not found");
ERROR("Passthrough to be destroyed not found"); return false;
return false; }
}
#if UNITY_STANDALONE #if UNITY_STANDALONE
XrPassthroughHTC passthrough = (XrPassthroughHTC)(ulong)passthroughID; XrPassthroughHTC passthrough = passthrough2Layer[passthroughID].passthrough;
passthrough2Layer.Remove(passthroughID); XR_HTC_passthrough.xrDestroyPassthroughHTC(passthrough);
Marshal.FreeHGlobal(passthrough2LayerPtr[passthroughID]);
passthrough2LayerPtr.Remove(passthroughID);
passthrough2IsUnderLay.Remove(passthroughID); passthrough2IsUnderLay.Remove(passthroughID);
Marshal.FreeHGlobal(passthrough2meshTransformInfoPtr[passthroughID]); SubmitLayer();
passthrough2Layer.Remove(passthroughID);
if(passthrough2LayerPtr.ContainsKey(passthroughID)) Marshal.FreeHGlobal(passthrough2LayerPtr[passthroughID]);
passthrough2LayerPtr.Remove(passthroughID);
if(passthrough2meshTransformInfoPtr.ContainsKey(passthroughID)) Marshal.FreeHGlobal(passthrough2meshTransformInfoPtr[passthroughID]);
passthrough2meshTransformInfoPtr.Remove(passthroughID); passthrough2meshTransformInfoPtr.Remove(passthroughID);
passthrough2meshTransform.Remove(passthroughID); passthrough2meshTransform.Remove(passthroughID);
return true; return true;
#endif #endif
#if UNITY_ANDROID #if UNITY_ANDROID

View File

@@ -527,7 +527,10 @@ namespace VIVE.OpenXR.CompositionLayer.Passthrough
XrResult res = xrCreatePassthroughHTC(m_XrSession, createInfo, out passthrough); XrResult res = xrCreatePassthroughHTC(m_XrSession, createInfo, out passthrough);
if (res == XrResult.XR_SUCCESS) if (res == XrResult.XR_SUCCESS)
{
passthroughList.Add(passthrough); passthroughList.Add(passthrough);
passthroughIDList.Add(((int)(ulong)passthrough));
}
else else
ERROR("CreatePassthroughHTC() "+res); ERROR("CreatePassthroughHTC() "+res);
return res; return res;
@@ -541,6 +544,7 @@ namespace VIVE.OpenXR.CompositionLayer.Passthrough
if (res == XrResult.XR_SUCCESS) if (res == XrResult.XR_SUCCESS)
{ {
passthroughList.Remove(passthrough); passthroughList.Remove(passthrough);
passthroughIDList.Remove(((int)(ulong)passthrough));
} }
return res; return res;
} }

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 65a24dbb45287c244bce088cb4a0a8aa
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,676 @@
// Copyright HTC Corporation All Rights Reserved.
using UnityEngine.XR.OpenXR;
using UnityEngine.XR.OpenXR.Features;
using UnityEngine;
using System.Runtime.InteropServices;
using System;
using AOT;
#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.XR.OpenXR.Features;
#endif
namespace VIVE.OpenXR.EyeTracker
{
#if UNITY_EDITOR
[OpenXRFeature(UiName = "VIVE XR Eye Tracker",
BuildTargetGroups = new[] { BuildTargetGroup.Standalone },
Company = "HTC",
Desc = "Support the eye tracker extension.",
DocumentationLink = "..\\Documentation",
OpenxrExtensionStrings = kOpenxrExtensionString,
Version = "1.0.0",
FeatureId = featureId)]
#endif
public class ViveEyeTracker : OpenXRFeature
{
const string LOG_TAG = "VIVE.OpenXR.Eye.ViveEyeTracker";
void DEBUG(string msg) { Debug.Log(LOG_TAG + " " + msg); }
void WARNING(string msg) { Debug.LogWarning(LOG_TAG + " " + msg); }
void ERROR(string msg) { Debug.LogError(LOG_TAG + " " + msg); }
public const string kOpenxrExtensionString = "XR_HTC_eye_tracker";
/// <summary>
/// The feature id string. This is used to give the feature a well known id for reference.
/// </summary>
public const string featureId = "vive.openxr.feature.eye.tracker";
#region OpenXR Life Cycle
private bool m_XrInstanceCreated = false;
private XrInstance m_XrInstance = 0;
private static IntPtr xrGetInstanceProcAddr_prev;
private static IntPtr WaitFrame_prev;
private static XrFrameWaitInfo m_frameWaitInfo;
private static XrFrameState m_frameState;
protected override IntPtr HookGetInstanceProcAddr(IntPtr func)
{
UnityEngine.Debug.Log("EXT: registering our own xrGetInstanceProcAddr");
xrGetInstanceProcAddr_prev = func;
return Marshal.GetFunctionPointerForDelegate(m_intercept_xrWaitFrame_xrGetInstanceProcAddr);
}
[MonoPInvokeCallback(typeof(OpenXRHelper.xrGetInstanceProcAddrDelegate))]
private static XrResult intercept_xrWaitFrame_xrGetInstanceProcAddr(XrInstance instance, string name, out IntPtr function)
{
if (xrGetInstanceProcAddr_prev == null || xrGetInstanceProcAddr_prev == IntPtr.Zero)
{
UnityEngine.Debug.LogError("xrGetInstanceProcAddr_prev is null");
function = IntPtr.Zero;
return XrResult.XR_ERROR_VALIDATION_FAILURE;
}
// Get delegate of old xrGetInstanceProcAddr.
var xrGetProc = Marshal.GetDelegateForFunctionPointer<OpenXRHelper.xrGetInstanceProcAddrDelegate>(xrGetInstanceProcAddr_prev);
XrResult result = xrGetProc(instance, name, out function);
if (name == "xrWaitFrame")
{
WaitFrame_prev = function;
m_intercept_xrWaitFrame = intercepted_xrWaitFrame;
function = Marshal.GetFunctionPointerForDelegate(m_intercept_xrWaitFrame); ;
UnityEngine.Debug.Log("Getting xrWaitFrame func");
}
return result;
}
[MonoPInvokeCallback(typeof(OpenXRHelper.xrWaitFrameDelegate))]
private static int intercepted_xrWaitFrame(ulong session, ref XrFrameWaitInfo frameWaitInfo, ref XrFrameState frameState)
{
// Get delegate of prev xrWaitFrame.
var xrWaitFrame = Marshal.GetDelegateForFunctionPointer<OpenXRHelper.xrWaitFrameDelegate>(WaitFrame_prev);
int res = xrWaitFrame(session, ref frameWaitInfo, ref frameState);
m_frameWaitInfo = frameWaitInfo;
m_frameState = frameState;
return res;
}
/// <summary>
/// Called when <see href="https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#xrCreateInstance">xrCreateInstance</see> is done.
/// </summary>
/// <param name="xrInstance">The created instance.</param>
/// <returns>True for valid <see cref="XrInstance">XrInstance</see></returns>
protected override bool OnInstanceCreate(ulong xrInstance)
{
if (!OpenXRRuntime.IsExtensionEnabled(kOpenxrExtensionString))
{
WARNING("OnInstanceCreate() " + kOpenxrExtensionString + " is NOT enabled.");
return false;
}
m_XrInstanceCreated = true;
m_XrInstance = xrInstance;
DEBUG("OnInstanceCreate() " + m_XrInstance);
return GetXrFunctionDelegates(m_XrInstance);
}
/// <summary>
/// Called when <see href="https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#xrDestroyInstance">xrDestroyInstance</see> is done.
/// </summary>
/// <param name="xrInstance">The instance to destroy.</param>
protected override void OnInstanceDestroy(ulong xrInstance)
{
m_XrInstanceCreated = false;
m_XrInstance = 0;
DEBUG("OnInstanceDestroy() " + xrInstance);
}
private XrSystemId m_XrSystemId = 0;
/// <summary>
/// Called when the <see cref="XrSystemId">XrSystemId</see> retrieved by <see href="https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#xrGetSystem">xrGetSystem</see> is changed.
/// </summary>
/// <param name="xrSystem">The system id.</param>
protected override void OnSystemChange(ulong xrSystem)
{
m_XrSystemId = xrSystem;
DEBUG("OnSystemChange() " + m_XrSystemId);
}
private bool m_XrSessionCreated = false;
private XrSession m_XrSession = 0;
private bool hasEyeTracker = false;
private XrEyeTrackerHTC m_EyeTracker = 0;
/// <summary>
/// Called when <see href="https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#xrCreateSession">xrCreateSession</see> is done.
/// </summary>
/// <param name="xrSession">The created session ID.</param>
protected override void OnSessionCreate(ulong xrSession)
{
m_XrSession = xrSession;
m_XrSessionCreated = true;
DEBUG("OnSessionCreate() " + m_XrSession);
if (CreateEyeTracker()) { DEBUG("OnSessionCreate() m_EyeTracker " + m_EyeTracker); }
}
/// <summary>
/// Called when <see href="https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#xrDestroySession">xrDestroySession</see> is done.
/// </summary>
/// <param name="xrSession">The session ID to destroy.</param>
protected override void OnSessionDestroy(ulong xrSession)
{
DEBUG("OnSessionDestroy() " + xrSession);
// Eye Tracking is binding with xrSession so we destroy the trackers when xrSession is destroyed.
DestroyEyeTracker();
m_XrSession = 0;
m_XrSessionCreated = false;
}
#endregion
#region OpenXR function delegates
private static readonly OpenXRHelper.xrGetInstanceProcAddrDelegate m_intercept_xrWaitFrame_xrGetInstanceProcAddr
= new OpenXRHelper.xrGetInstanceProcAddrDelegate(intercept_xrWaitFrame_xrGetInstanceProcAddr);
private static OpenXRHelper.xrWaitFrameDelegate m_intercept_xrWaitFrame;
/// xrGetInstanceProcAddr
OpenXRHelper.xrGetInstanceProcAddrDelegate XrGetInstanceProcAddr;
/// xrGetSystemProperties
OpenXRHelper.xrGetSystemPropertiesDelegate xrGetSystemProperties;
private XrResult GetSystemProperties(ref XrSystemProperties properties)
{
if (!m_XrSessionCreated)
{
ERROR("GetSystemProperties() XR_ERROR_SESSION_LOST.");
return XrResult.XR_ERROR_SESSION_LOST;
}
if (!m_XrInstanceCreated)
{
ERROR("GetSystemProperties() XR_ERROR_INSTANCE_LOST.");
return XrResult.XR_ERROR_INSTANCE_LOST;
}
return xrGetSystemProperties(m_XrInstance, m_XrSystemId, ref properties);
}
/// xrDestroySpace
OpenXRHelper.xrDestroySpaceDelegate xrDestroySpace;
private XrResult DestroySpace(XrSpace space)
{
if (!m_XrSessionCreated)
{
ERROR("DestroySpace() XR_ERROR_SESSION_LOST.");
return XrResult.XR_ERROR_SESSION_LOST;
}
if (!m_XrInstanceCreated)
{
ERROR("DestroySpace() XR_ERROR_INSTANCE_LOST.");
return XrResult.XR_ERROR_INSTANCE_LOST;
}
return xrDestroySpace(space);
}
ViveEyeTrackerHelper.xrCreateEyeTrackerHTCDelegate xrCreateEyeTrackerHTC;
private XrResult CreateEyeTrackerHTC(ref XrEyeTrackerCreateInfoHTC createInfo, out XrEyeTrackerHTC eyeTracker)
{
if (!m_XrSessionCreated)
{
ERROR("CreateEyeTrackerHTC() XR_ERROR_SESSION_LOST.");
eyeTracker = 0;
return XrResult.XR_ERROR_SESSION_LOST;
}
if (!m_XrInstanceCreated)
{
ERROR("CreateEyeTrackerHTC() XR_ERROR_INSTANCE_LOST.");
eyeTracker = 0;
return XrResult.XR_ERROR_INSTANCE_LOST;
}
return xrCreateEyeTrackerHTC(m_XrSession, ref createInfo, out eyeTracker);
}
ViveEyeTrackerHelper.xrDestroyEyeTrackerHTCDelegate xrDestroyEyeTrackerHTC;
private XrResult DestroyEyeTrackerHTC(XrEyeTrackerHTC eyeTracker)
{
if (!m_XrSessionCreated)
{
ERROR("DestroyEyeTrackerHTC() XR_ERROR_SESSION_LOST.");
return XrResult.XR_ERROR_SESSION_LOST;
}
if (!m_XrInstanceCreated)
{
ERROR("DestroyEyeTrackerHTC() XR_ERROR_INSTANCE_LOST.");
return XrResult.XR_ERROR_INSTANCE_LOST;
}
return xrDestroyEyeTrackerHTC(eyeTracker);
}
ViveEyeTrackerHelper.xrGetEyeGazeDataHTCDelegate xrGetEyeGazeDataHTC;
private XrResult GetEyeGazeDataHTC(XrEyeTrackerHTC eyeTracker,ref XrEyeGazeDataInfoHTC gazeInfo, ref XrEyeGazeDataHTC eyeGazes)
{
if (!m_XrSessionCreated)
{
ERROR("GetEyeGazeDataHTC() XR_ERROR_SESSION_LOST.");
return XrResult.XR_ERROR_SESSION_LOST;
}
if (!m_XrInstanceCreated)
{
ERROR("GetEyeGazeDataHTC() XR_ERROR_INSTANCE_LOST.");
return XrResult.XR_ERROR_INSTANCE_LOST;
}
XrResult res = xrGetEyeGazeDataHTC(eyeTracker,ref gazeInfo,ref eyeGazes);
return res;
}
ViveEyeTrackerHelper.xrGetEyePupilDataHTCDelegate xrGetEyePupilDataHTC;
private XrResult GetEyePupilDataHTC(XrEyeTrackerHTC eyeTracker,ref XrEyePupilDataInfoHTC pupilDataInfo,ref XrEyePupilDataHTC pupilData)
{
if (!m_XrSessionCreated)
{
ERROR("GetEyePupilData() XR_ERROR_SESSION_LOST.");
return XrResult.XR_ERROR_SESSION_LOST;
}
if (!m_XrInstanceCreated)
{
ERROR("GetEyePupilData() XR_ERROR_INSTANCE_LOST.");
return XrResult.XR_ERROR_INSTANCE_LOST;
}
return xrGetEyePupilDataHTC(eyeTracker,ref pupilDataInfo, ref pupilData);
}
ViveEyeTrackerHelper.xrGetEyeGeometricDataHTC xrGetEyeGeometricDataHTC;
private XrResult GetEyeGeometricDataHTC(XrEyeTrackerHTC eyeTracker,
ref XrEyeGeometricDataInfoHTC info,
ref XrEyeGeometricDataHTC eyeGeometricData)
{
if (!m_XrSessionCreated)
{
ERROR("GetEyeGeometricData() XR_ERROR_SESSION_LOST.");
return XrResult.XR_ERROR_SESSION_LOST;
}
if (!m_XrInstanceCreated)
{
ERROR("GetEyeGeometricData() XR_ERROR_INSTANCE_LOST.");
return XrResult.XR_ERROR_INSTANCE_LOST;
}
return xrGetEyeGeometricDataHTC(eyeTracker,ref info, ref eyeGeometricData);
}
private bool GetXrFunctionDelegates(XrInstance xrInstance)
{
/// xrGetInstanceProcAddr
if (xrGetInstanceProcAddr != null && xrGetInstanceProcAddr != IntPtr.Zero)
{
DEBUG("Get function pointer of xrGetInstanceProcAddr.");
XrGetInstanceProcAddr = Marshal.GetDelegateForFunctionPointer(
xrGetInstanceProcAddr,
typeof(OpenXRHelper.xrGetInstanceProcAddrDelegate)) as OpenXRHelper.xrGetInstanceProcAddrDelegate;
}
else
{
ERROR("xrGetInstanceProcAddr is null");
return false;
}
IntPtr funcPtr = IntPtr.Zero;
/// xrGetSystemProperties
if (XrGetInstanceProcAddr(xrInstance, "xrGetSystemProperties", out funcPtr) == XrResult.XR_SUCCESS)
{
if (funcPtr != IntPtr.Zero)
{
DEBUG("Get function pointer of xrGetSystemProperties.");
xrGetSystemProperties = Marshal.GetDelegateForFunctionPointer(
funcPtr,
typeof(OpenXRHelper.xrGetSystemPropertiesDelegate)) as OpenXRHelper.xrGetSystemPropertiesDelegate;
}
}
else
{
ERROR("xrGetSystemProperties");
return false;
}
/// xrDestroySpace
if (XrGetInstanceProcAddr(xrInstance, "xrDestroySpace", out funcPtr) == XrResult.XR_SUCCESS)
{
if (funcPtr != IntPtr.Zero)
{
DEBUG("Get function pointer of xrDestroySpace.");
xrDestroySpace = Marshal.GetDelegateForFunctionPointer(
funcPtr,
typeof(OpenXRHelper.xrDestroySpaceDelegate)) as OpenXRHelper.xrDestroySpaceDelegate;
}
}
else
{
ERROR("xrDestroySpace");
return false;
}
/// xrCreateEyeTrackerHTC
if (XrGetInstanceProcAddr(xrInstance, "xrCreateEyeTrackerHTC", out funcPtr) == XrResult.XR_SUCCESS)
{
if (funcPtr != IntPtr.Zero)
{
DEBUG("Get function pointer of xrCreateEyeTrackerHTC.");
xrCreateEyeTrackerHTC = Marshal.GetDelegateForFunctionPointer(
funcPtr,
typeof(ViveEyeTrackerHelper.xrCreateEyeTrackerHTCDelegate)) as ViveEyeTrackerHelper.xrCreateEyeTrackerHTCDelegate;
}
}
else
{
ERROR("xrCreateEyeTrackerHTC");
return false;
}
/// xrDestroyEyeTrackerHTC
if (XrGetInstanceProcAddr(xrInstance, "xrDestroyEyeTrackerHTC", out funcPtr) == XrResult.XR_SUCCESS)
{
if (funcPtr != IntPtr.Zero)
{
DEBUG("Get function pointer of xrDestroyEyeTrackerHTC.");
xrDestroyEyeTrackerHTC = Marshal.GetDelegateForFunctionPointer(
funcPtr,
typeof(ViveEyeTrackerHelper.xrDestroyEyeTrackerHTCDelegate)) as ViveEyeTrackerHelper.xrDestroyEyeTrackerHTCDelegate;
}
}
else
{
ERROR("xrDestroyEyeTrackerHTC");
return false;
}
/// xrGetEyeGazeDataHTC
if (XrGetInstanceProcAddr(xrInstance, "xrGetEyeGazeDataHTC", out funcPtr) == XrResult.XR_SUCCESS)
{
if (funcPtr != IntPtr.Zero)
{
DEBUG("Get function pointer of xrGetEyeGazeDataHTC.");
xrGetEyeGazeDataHTC = Marshal.GetDelegateForFunctionPointer(
funcPtr,
typeof(ViveEyeTrackerHelper.xrGetEyeGazeDataHTCDelegate)) as ViveEyeTrackerHelper.xrGetEyeGazeDataHTCDelegate;
}
}
else
{
ERROR("xrGetEyeGazeDataHTC");
return false;
}
/// xrGetEyePupilDataHTC
if (XrGetInstanceProcAddr(xrInstance, "xrGetEyePupilDataHTC", out funcPtr) == XrResult.XR_SUCCESS)
{
if (funcPtr != IntPtr.Zero)
{
DEBUG("Get function pointer of xrGetEyePupilDataHTC.");
xrGetEyePupilDataHTC = Marshal.GetDelegateForFunctionPointer(
funcPtr,
typeof(ViveEyeTrackerHelper.xrGetEyePupilDataHTCDelegate)) as ViveEyeTrackerHelper.xrGetEyePupilDataHTCDelegate;
}
}
else
{
ERROR("xrGetEyePupilDataHTC");
return false;
}
/// xrGetEyeGeometricDataHTC
if (XrGetInstanceProcAddr(xrInstance, "xrGetEyeGeometricDataHTC", out funcPtr) == XrResult.XR_SUCCESS)
{
if (funcPtr != IntPtr.Zero)
{
DEBUG("Get function pointer of xrGetEyeGeometricDataHTC.");
xrGetEyeGeometricDataHTC = Marshal.GetDelegateForFunctionPointer(
funcPtr,
typeof(ViveEyeTrackerHelper.xrGetEyeGeometricDataHTC)) as ViveEyeTrackerHelper.xrGetEyeGeometricDataHTC;
}
}
else
{
ERROR("xrGetEyeGeometricDataHTC");
return false;
}
return true;
}
#endregion
XrSystemEyeTrackingPropertiesHTC eyeTrackingSystemProperties;
XrSystemProperties systemProperties;
private bool IsEyeTrackingSupported()
{
if (!m_XrSessionCreated)
{
ERROR("IsEyeTrackingSupported() session is not created.");
return false;
}
eyeTrackingSystemProperties.type = XrStructureType.XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_HTC;
systemProperties.type = XrStructureType.XR_TYPE_SYSTEM_PROPERTIES;
systemProperties.next = Marshal.AllocHGlobal(Marshal.SizeOf(eyeTrackingSystemProperties));
long offset = 0;
if (IntPtr.Size == 4)
offset = systemProperties.next.ToInt32();
else
offset = systemProperties.next.ToInt64();
IntPtr sys_eye_tracking_prop_ptr = new IntPtr(offset);
Marshal.StructureToPtr(eyeTrackingSystemProperties, sys_eye_tracking_prop_ptr, false);
if (GetSystemProperties(ref systemProperties) == XrResult.XR_SUCCESS)
{
if (IntPtr.Size == 4)
offset = systemProperties.next.ToInt32();
else
offset = systemProperties.next.ToInt64();
sys_eye_tracking_prop_ptr = new IntPtr(offset);
eyeTrackingSystemProperties = (XrSystemEyeTrackingPropertiesHTC)Marshal.PtrToStructure(sys_eye_tracking_prop_ptr, typeof(XrSystemEyeTrackingPropertiesHTC));
DEBUG("IsEyeTrackingSupported() XrSystemEyeTrackingPropertiesHTC.supportsEyeTracking: "
+ eyeTrackingSystemProperties.supportsEyeTracking);
return (eyeTrackingSystemProperties.supportsEyeTracking > 0);
}
else
{
ERROR("IsEyeTrackingSupported() GetSystemProperties failed.");
}
return false;
}
/// <summary>
/// An application can create an <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> handle using CreateEyeTracker.
/// </summary>
/// <param name="createInfo">The <see cref="XrEyeTrackerCreateInfoHTC">XrEyeTrackerCreateInfoHTC</see> used to specify the eye tracker.</param>
/// <param name="eyeTracker">The returned XrEyeTrackerHTC handle.</param>
/// <returns>XR_SUCCESS for success.</returns>
public XrResult CreateEyeTracker(XrEyeTrackerCreateInfoHTC createInfo, out XrEyeTrackerHTC eyeTracker)
{
if (hasEyeTracker)
{
eyeTracker = m_EyeTracker;
DEBUG("CreateEyeTracker() m_EyeTracker: " + eyeTracker + " already created before.");
return XrResult.XR_SUCCESS;
}
if (!IsEyeTrackingSupported())
{
ERROR("CreateEyeTracker() is NOT supported.");
eyeTracker = 0;
return XrResult.XR_ERROR_VALIDATION_FAILURE;
}
var result = CreateEyeTrackerHTC(ref createInfo, out eyeTracker);
DEBUG("CreateEyeTracker() " + result + ", eyeTracker: " + eyeTracker);
if (result == XrResult.XR_SUCCESS)
{
hasEyeTracker = true;
m_EyeTracker = eyeTracker;
DEBUG("CreateEyeTracker() m_EyeTracker " + m_EyeTracker);
}
return result;
}
/// <summary>
/// An application can create an <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> handle using CreateEyeTracker.
/// </summary>
/// <returns>True for success.</returns>
public bool CreateEyeTracker()
{
XrEyeTrackerCreateInfoHTC createInfo = new XrEyeTrackerCreateInfoHTC(
in_type: XrStructureType.XR_TYPE_EYE_TRACKER_CREATE_INFO_HTC,
in_next: IntPtr.Zero);
var result = CreateEyeTracker(createInfo, out XrEyeTrackerHTC value);
DEBUG("CreateEyeTracker() " + " tracker: " + value);
return result == XrResult.XR_SUCCESS;
}
/// <summary>
/// Releases the eye tracker and the underlying resources when the eye tracking experience is over.
/// </summary>
/// <param name="eyeTracker">An XrEyeTrackerHTC previously created by xrCreateEyeTrackerHTC.</param>
/// <returns>XR_SUCCESS for success.</returns>
public XrResult DestroyEyeTracker(XrEyeTrackerHTC eyeTracker)
{
XrResult result = DestroyEyeTrackerHTC(eyeTracker);
DEBUG("DestroyEyeTracker() " + eyeTracker + ", result: " + result);
return result;
}
/// <summary>
/// Releases the eye tracker and the underlying resources when the eye tracking experience is over.
/// </summary>
/// <returns>True for success.</returns>
public bool DestroyEyeTracker()
{
if (!hasEyeTracker)
{
DEBUG("DestroyEyeTracker() no " + "tracker.");
return true;
}
XrResult ret = XrResult.XR_ERROR_VALIDATION_FAILURE;
ret = DestroyEyeTracker(m_EyeTracker);
hasEyeTracker = false;
m_EyeTracker = 0;
return ret == XrResult.XR_SUCCESS;
}
private XrEyeGazeDataHTC m_gazes = new XrEyeGazeDataHTC();// = new XrEyeGazeDataHTC(XrStructureType.XR_TYPE_EYE_GAZE_DATA_HTC, IntPtr.Zero, 0);
/// <summary>
/// Retrieves an array of <see cref="XrSingleEyeGazeDataHTC">XrSingleEyeGazeDataHTC</see> containing the returned eye gaze directions.
/// </summary>
/// <param name="out_gazes">Output parameter to retrieve an array of <see cref="XrSingleEyeGazeDataHTC">XrSingleEyeGazeDataHTC</see>.</param>
/// <returns>True for success.</returns>
public bool GetEyeGazeData(out XrSingleEyeGazeDataHTC[] out_gazes)
{
m_gazes.type = XrStructureType.XR_TYPE_EYE_GAZE_DATA_HTC;
m_gazes.next = IntPtr.Zero;
m_gazes.time = m_frameState.predictedDisplayTime;
out_gazes = m_gazes.gaze;
XrEyeGazeDataInfoHTC gazeInfo = new XrEyeGazeDataInfoHTC(
in_type: XrStructureType.XR_TYPE_EYE_GAZE_DATA_INFO_HTC,
in_next: IntPtr.Zero,
in_baseSpace: GetCurrentAppSpace(),
in_time: m_frameState.predictedDisplayTime);
if (GetEyeGazeData(m_EyeTracker, gazeInfo, out m_gazes) == XrResult.XR_SUCCESS)
{
out_gazes = m_gazes.gaze;
return true;
}
return false;
}
/// <summary>
/// Retrieves the <see cref="XrEyeGazeDataHTC">XrEyeGazeDataHTC</see> data of a <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see>.
/// </summary>
/// <param name="eyeTracker">An <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> previously created by <see cref="ViveEyeTrackerHelper.xrCreateEyeTrackerHTCDelegate">xrCreateEyeTrackerHTC</see>.</param>
/// <param name="gazeInfo">The information to get eye gaze.</param>
/// <param name="eyeGazes">Output parameter to retrieve a pointer to <see cref="XrEyeGazeDataHTC">XrEyeGazeDataHTC</see> receiving the returned eye poses.</param>
/// <returns>XR_SUCCESS for success.</returns>
public XrResult GetEyeGazeData(XrEyeTrackerHTC eyeTracker, XrEyeGazeDataInfoHTC gazeInfo, out XrEyeGazeDataHTC eyeGazes)
{
m_gazes.type = XrStructureType.XR_TYPE_EYE_GAZE_DATA_HTC;
m_gazes.next = IntPtr.Zero;
m_gazes.time = m_frameState.predictedDisplayTime;
eyeGazes = m_gazes;
XrResult result = XrResult.XR_ERROR_VALIDATION_FAILURE;
result = GetEyeGazeDataHTC(eyeTracker,ref gazeInfo,ref m_gazes);
if (result == XrResult.XR_SUCCESS) { eyeGazes = m_gazes; }
return result;
}
private XrEyePupilDataHTC m_eyePupilData = new XrEyePupilDataHTC();
/// <summary>
/// Retrieves an array of <see cref="XrSingleEyePupilDataHTC">XrSingleEyePupilDataHTC</see> containing the returned data for user's pupils.
/// </summary>
/// <param name="pupilData">Output parameter to retrieve an array of <see cref="XrSingleEyePupilDataHTC">XrSingleEyePupilDataHTC</see>.</param>
/// <returns>XR_SUCCESS for success.</returns>
public bool GetEyePupilData(out XrSingleEyePupilDataHTC[] pupilData)
{
m_eyePupilData.type = XrStructureType.XR_TYPE_EYE_PUPIL_DATA_HTC;
m_eyePupilData.next = IntPtr.Zero;
m_eyePupilData.time = m_frameState.predictedDisplayTime;
pupilData = m_eyePupilData.pupilData;
XrEyePupilDataInfoHTC pupilDataInfo = new XrEyePupilDataInfoHTC(
in_type: XrStructureType.XR_TYPE_EYE_PUPIL_DATA_INFO_HTC,
in_next: IntPtr.Zero);
if (GetEyePupilData(m_EyeTracker, pupilDataInfo, out m_eyePupilData) == XrResult.XR_SUCCESS)
{
pupilData = m_eyePupilData.pupilData;
return true;
}
return false;
}
/// <summary>
/// Retrieves the <see cref="XrEyePupilDataHTC">XrEyePupilDataHTC</see> data of a <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see>.
/// </summary>
/// <param name="eyeTracker">An <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> previously created by <see cref="ViveEyeTrackerHelper.xrCreateEyeTrackerHTCDelegate">xrCreateEyeTrackerHTC</see>.</param>
/// <param name="pupilDataInfo">The information to get pupil data.</param>
/// <param name="pupilData">A pointer to <see cref="XrEyePupilDataHTC">XrEyePupilDataHTC</see> returned by the runtime.</param>
/// <returns>XR_SUCCESS for success.</returns>
public XrResult GetEyePupilData(XrEyeTrackerHTC eyeTracker, XrEyePupilDataInfoHTC pupilDataInfo, out XrEyePupilDataHTC pupilData)
{
m_eyePupilData.type = XrStructureType.XR_TYPE_EYE_PUPIL_DATA_HTC;
m_eyePupilData.next = IntPtr.Zero;
m_eyePupilData.time = m_frameState.predictedDisplayTime;
pupilData = m_eyePupilData;
XrResult result = XrResult.XR_ERROR_VALIDATION_FAILURE;
result = GetEyePupilDataHTC(eyeTracker,ref pupilDataInfo, ref m_eyePupilData);
if (result == XrResult.XR_SUCCESS) { pupilData = m_eyePupilData; }
return result;
}
private XrEyeGeometricDataHTC m_eyeGeometricData = new XrEyeGeometricDataHTC();//XrStructureType.XR_TYPE_EYE_GEOMETRIC_DATA_HTC, IntPtr.Zero, 0);
/// <param name="geometricData">Output parameter to retrieve an array of <see cref="XrSingleEyeGeometricDataHTC">XrSingleEyeGeometricDataHTC</see>.</param>
/// <returns>XR_SUCCESS for success.</returns>
public bool GetEyeGeometricData(out XrSingleEyeGeometricDataHTC[] geometricData)
{
m_eyeGeometricData.type = XrStructureType.XR_TYPE_EYE_GEOMETRIC_DATA_HTC;
m_eyeGeometricData.next = IntPtr.Zero;
m_eyeGeometricData.time = m_frameState.predictedDisplayTime;
geometricData = m_eyeGeometricData.eyeGeometricData;
XrEyeGeometricDataInfoHTC eyeGeometricDataInfo = new XrEyeGeometricDataInfoHTC(
in_type: XrStructureType.XR_TYPE_EYE_GEOMETRIC_DATA_INFO_HTC,
in_next: IntPtr.Zero);
if (GetEyeGeometricData(m_EyeTracker, eyeGeometricDataInfo, out m_eyeGeometricData) == XrResult.XR_SUCCESS)
{
geometricData = m_eyeGeometricData.eyeGeometricData;
return true;
}
return false;
}
/// <param name="eyeTracker">An <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> previously created by <see cref="ViveEyeTrackerHelper.xrCreateEyeTrackerHTCDelegate">xrCreateEyeTrackerHTC</see>.</param>
/// <param name="eyeGeometricDataInfo">A pointer to <see cref="XrEyeGeometricDataInfoHTC">XrEyeGeometricDataInfoHTC</see> structure.</param>
/// <param name="eyeGeometricData">A pointer to <see cref="XrEyeGeometricDataHTC">XrEyeGeometricDataHTC</see> returned by the runtime.</param>
/// <returns>XR_SUCCESS for success.</returns>
public XrResult GetEyeGeometricData(XrEyeTrackerHTC eyeTracker, XrEyeGeometricDataInfoHTC eyeGeometricDataInfo, out XrEyeGeometricDataHTC eyeGeometricData)
{
m_eyeGeometricData.type = XrStructureType.XR_TYPE_EYE_GEOMETRIC_DATA_HTC;
m_eyeGeometricData.next = IntPtr.Zero;
m_eyeGeometricData.time = m_frameState.predictedDisplayTime;
eyeGeometricData = m_eyeGeometricData;
XrResult result = XrResult.XR_ERROR_VALIDATION_FAILURE;
result = GetEyeGeometricDataHTC(eyeTracker,ref eyeGeometricDataInfo, ref m_eyeGeometricData);
if (result == XrResult.XR_SUCCESS) { eyeGeometricData = m_eyeGeometricData; }
return result;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9eca1674b64bae840af3a53d3ae576ec
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,426 @@
// Copyright HTC Corporation All Rights Reserved.
using System;
using System.Runtime.InteropServices;
namespace VIVE.OpenXR.EyeTracker
{
/// <summary>
/// The XrEyeTrackerHTC handle represents the resources for eye tracking.
/// </summary>
public struct XrEyeTrackerHTC : IEquatable<UInt64>
{
private readonly UInt64 value;
public XrEyeTrackerHTC(UInt64 u)
{
value = u;
}
public static implicit operator UInt64(XrEyeTrackerHTC equatable)
{
return equatable.value;
}
public static implicit operator XrEyeTrackerHTC(UInt64 u)
{
return new XrEyeTrackerHTC(u);
}
public bool Equals(XrEyeTrackerHTC other)
{
return value == other.value;
}
public bool Equals(UInt64 other)
{
return value == other;
}
public override bool Equals(object obj)
{
return obj is XrEyeTrackerHTC && Equals((XrEyeTrackerHTC)obj);
}
public override int GetHashCode()
{
return value.GetHashCode();
}
public override string ToString()
{
return value.ToString();
}
public static bool operator ==(XrEyeTrackerHTC a, XrEyeTrackerHTC b) { return a.Equals(b); }
public static bool operator !=(XrEyeTrackerHTC a, XrEyeTrackerHTC b) { return !a.Equals(b); }
public static bool operator >=(XrEyeTrackerHTC a, XrEyeTrackerHTC b) { return a.value >= b.value; }
public static bool operator <=(XrEyeTrackerHTC a, XrEyeTrackerHTC b) { return a.value <= b.value; }
public static bool operator >(XrEyeTrackerHTC a, XrEyeTrackerHTC b) { return a.value > b.value; }
public static bool operator <(XrEyeTrackerHTC a, XrEyeTrackerHTC b) { return a.value < b.value; }
public static XrEyeTrackerHTC operator +(XrEyeTrackerHTC a, XrEyeTrackerHTC b) { return a.value + b.value; }
public static XrEyeTrackerHTC operator -(XrEyeTrackerHTC a, XrEyeTrackerHTC b) { return a.value - b.value; }
public static XrEyeTrackerHTC operator *(XrEyeTrackerHTC a, XrEyeTrackerHTC b) { return a.value * b.value; }
public static XrEyeTrackerHTC operator /(XrEyeTrackerHTC a, XrEyeTrackerHTC b)
{
if (b.value == 0)
{
throw new DivideByZeroException();
}
return a.value / b.value;
}
}
/// <summary>
/// The XrEyePositionHTC describes which eye is under tracking for the data retrieved from <see cref="XrEyeGazeDataHTC">XrEyeGazeDataHTC</see>, <see cref="XrEyePupilDataHTC">XrEyePupilDataHTC</see> or <see cref="XrEyeGeometricDataHTC">XrEyeGeometricDataHTC</see>.
/// </summary>
public enum XrEyePositionHTC
{
/// <summary>
/// Specifies the position of the left eye.
/// </summary>
XR_EYE_POSITION_LEFT_HTC = 0,
/// <summary>
/// Specifies the position of the right eye.
/// </summary>
XR_EYE_POSITION_RIGHT_HTC = 1,
XR_EYE_POSITION_COUNT_HTC = 2
};
/// <summary>
/// An application can inspect whether the system is capable of eye tracking input by extending the <see cref="XrSystemProperties">XrSystemProperties</see> with <see cref="XrSystemEyeTrackingPropertiesHTC">XrSystemEyeTrackingPropertiesHTC</see> structure when calling <see href="https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#xrGetSystemProperties">xrGetSystemProperties</see>.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct XrSystemEyeTrackingPropertiesHTC
{
/// <summary>
/// The <see cref="XrStructureType">XrStructureType</see> of this structure.
/// </summary>
public XrStructureType type;
/// <summary>
/// NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.
/// </summary>
public IntPtr next;
/// <summary>
/// Indicating if the current system is capable of receiving eye tracking input.
/// </summary>
public XrBool32 supportsEyeTracking;
};
/// <summary>
/// The XrEyeTrackerCreateInfoHTC structure describes the information to create an <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> handle.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct XrEyeTrackerCreateInfoHTC
{
/// <summary>
/// The <see cref="XrStructureType">XrStructureType</see> of this structure.
/// </summary>
public XrStructureType type;
/// <summary>
/// NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.
/// </summary>
public IntPtr next;
/// <param name="in_type">The <see cref="XrStructureType">XrStructureType</see> of this structure.</param>
/// <param name="in_next">NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.</param>
public XrEyeTrackerCreateInfoHTC(XrStructureType in_type, IntPtr in_next)
{
type = in_type;
next = in_next;
}
};
/// <summary>
/// The XrEyeGazeDataInfoHTC structure describes the information to get eye gaze directions.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct XrEyeGazeDataInfoHTC
{
/// <summary>
/// The <see cref="XrStructureType">XrStructureType</see> of this structure.
/// </summary>
public XrStructureType type;
/// <summary>
/// NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.
/// </summary>
public IntPtr next;
/// <summary>
/// An <see cref="XrSpace">XrSpace</see> within which the returned eye poses will be represented.
/// </summary>
public XrSpace baseSpace;
/// <summary>
/// An <see cref="XrTime">XrTime</see> at which the eye gaze information is requested.
/// </summary>
public XrTime time;
/// <param name="in_type">The <see cref="XrStructureType">XrStructureType</see> of this structure.</param>
/// <param name="in_next">NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.</param>
/// <param name="in_baseSpace">An <see cref="XrSpace">XrSpace</see> within which the returned eye poses will be represented.</param>
/// <param name="in_time">An <see cref="XrTime">XrTime</see> at which the eye gaze information is requested.</param>
public XrEyeGazeDataInfoHTC(XrStructureType in_type, IntPtr in_next, XrSpace in_baseSpace, XrTime in_time)
{
type = in_type;
next = in_next;
baseSpace = in_baseSpace;
time = in_time;
}
};
/// <summary>
/// The XrSingleEyeGazeDataHTC structure describes the validity and direction of a eye gaze observation.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct XrSingleEyeGazeDataHTC
{
/// <summary>
/// An <see cref="XrBool32">XrBool32</see> indicating if the returned gazePose is valid. Callers should check the validity of pose prior to use.
/// </summary>
public XrBool32 isValid;
/// <summary>
/// An <see cref="XrPosef">XrPosef</see> describing the position and orientation of the user's eye. The pose is represented in the coordinate system provided by <see cref="XrEyeGazeDataInfoHTC">XrEyeGazeDataInfoHTC</see>::<see cref="XrEyeGazeDataInfoHTC.baseSpace">baseSpace</see>.
/// </summary>
public XrPosef gazePose;
/// <param name="in_isValid">An <see cref="XrBool32">XrBool32</see> indicating if the returned gazePose is valid. Callers should check the validity of pose prior to use.</param>
/// <param name="in_gazePose">An <see cref="XrPosef">XrPosef</see> describing the position and orientation of the user's eye. The pose is represented in the coordinate system provided by <see cref="XrEyeGazeDataInfoHTC">XrEyeGazeDataInfoHTC</see>::<see cref="XrEyeGazeDataInfoHTC.baseSpace">baseSpace</see>.</param>
public XrSingleEyeGazeDataHTC(XrBool32 in_isValid, XrPosef in_gazePose)
{
isValid = in_isValid;
gazePose = in_gazePose;
}
};
/// <summary>
/// The XrEyeGazeDataHTC structure returns the state of the eye gaze directions.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct XrEyeGazeDataHTC
{
/// <summary>
/// The <see cref="XrStructureType">XrStructureType</see> of this structure.
/// </summary>
public XrStructureType type;
/// <summary>
/// NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.
/// </summary>
public IntPtr next;
/// <summary>
/// An <see cref="XrTime">XrTime</see> at which the eye gaze information is requested.
/// </summary>
public XrTime time;
/// <summary>
/// An array of <see cref="XrSingleEyeGazeDataHTC">XrSingleEyeGazeDataHTC</see> receiving the returned eye gaze directions.
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public XrSingleEyeGazeDataHTC[] gaze;
};
/// <summary>
/// The XrEyePupilDataInfoHTC structure describes the information to get pupil data.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct XrEyePupilDataInfoHTC
{
/// <summary>
/// The <see cref="XrStructureType">XrStructureType</see> of this structure.
/// </summary>
public XrStructureType type;
/// <summary>
/// NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.
/// </summary>
public IntPtr next;
/// <param name="in_type">The <see cref="XrStructureType">XrStructureType</see> of this structure.</param>
/// <param name="in_next">NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.</param>
public XrEyePupilDataInfoHTC(XrStructureType in_type, IntPtr in_next)
{
type = in_type;
next = in_next;
}
};
/// <summary>
/// The XrSingleEyePupilDataHTC structure describes the validity, diameter and position of a pupil observation.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct XrSingleEyePupilDataHTC
{
/// <summary>
/// An <see cref="XrBool32">XrBool32</see> indicating if the returned pupilDiameter is valid. Callers should check the validity of diameter prior to use.
/// </summary>
public XrBool32 isDiameterValid;
/// <summary>
/// An <see cref="XrBool32">XrBool32</see> indicating if the returned pupilPosition is valid. Callers should check the validity of position prior to use.
/// </summary>
public XrBool32 isPositionValid;
/// <summary>
/// The diameter of pupil in millimeters.
/// </summary>
public float pupilDiameter;
/// <summary>
/// The position of pupil in sensor area which x and y are normalized in [0,1] with +Y up and +X to the right.
/// </summary>
public XrVector2f pupilPosition;
/// <param name="in_isDiameterValid">An <see cref="XrBool32">XrBool32</see> indicating if the returned gazePose is valid. Callers should check the validity of pose prior to use.</param>
/// <param name="in_isPositionValid">An <see cref="XrBool32">XrBool32</see> indicating if the returned pupilPosition is valid. Callers should check the validity of position prior to use.</param>
/// <param name="in_pupilDiameter">The diameter of pupil in millimeters.</param>
/// <param name="in_pupilPosition">The position of pupil in sensor area which x and y are normalized in [0,1]with +Y up and +X to the right.</param>
public XrSingleEyePupilDataHTC(XrBool32 in_isDiameterValid, XrBool32 in_isPositionValid, float in_pupilDiameter, XrVector2f in_pupilPosition)
{
isDiameterValid = in_isDiameterValid;
isPositionValid = in_isPositionValid;
pupilDiameter = in_pupilDiameter;
pupilPosition = in_pupilPosition;
}
};
/// <summary>
/// The XrEyePupilDataHTC structure returns the pupil data.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct XrEyePupilDataHTC
{
/// <summary>
/// The <see cref="XrStructureType">XrStructureType</see> of this structure.
/// </summary>
public XrStructureType type;
/// <summary>
/// NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.
/// </summary>
public IntPtr next;
/// <summary>
/// An <see cref="XrTime">XrTime</see> at which the pupil data was captured.
/// </summary>
public XrTime time;
/// <summary>
/// An array of <see cref="XrSingleEyePupilDataHTC">XrSingleEyePupilDataHTC</see> receiving the returned pupil data.
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public XrSingleEyePupilDataHTC[] pupilData;
};
/// <summary>
/// The XrEyeGeometricDataInfoHTC structure describes the information to get geometric related data.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct XrEyeGeometricDataInfoHTC
{
/// <summary>
/// The <see cref="XrStructureType">XrStructureType</see> of this structure.
/// </summary>
public XrStructureType type;
/// <summary>
/// NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.
/// </summary>
public IntPtr next;
/// <param name="in_type">The <see cref="XrStructureType">XrStructureType</see> of this structure.</param>
/// <param name="in_next">NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.</param>
public XrEyeGeometricDataInfoHTC(XrStructureType in_type, IntPtr in_next)
{
type = in_type;
next = in_next;
}
};
/// <summary>
/// The XrSingleEyeGeometricDataHTC structure describes the geometric related data.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct XrSingleEyeGeometricDataHTC
{
/// <summary>
/// A flag that indicates if the geometric data is valid. Callers should check the validity of the geometric data prior to use.
/// </summary>
public XrBool32 isValid;
/// <summary>
/// A value in range [0,1] representing the openness of the user's eye. When this value is zero, the eye closes normally. When this value is one, the eye opens normally. When this value goes higher, the eye approaches open.
/// </summary>
public float eyeOpenness;
/// <summary>
/// A value in range [0,1] representing how the user's eye open widely. When this value is zero, the eye opens normally. When this value goes higher, the eye opens wider.
public float eyeWide;
/// <summary>
/// A value in range [0,1] representing how the user's eye is closed. When this value is zero, the eye closes normally. When this value goes higher, the eye closes tighter.
/// </summary>
public float eyeSqueeze;
/// <param name="in_isValid">A flag that indicates if the geometric data is valid. Callers should check the validity of the geometric data prior to use.</param>
/// <param name="in_eyeOpenness">A value in range [0,1] representing the openness of the user's eye. When this value is zero, the eye closes normally. When this value is one, the eye opens normally. When this value goes higher, the eye approaches open.</param>
/// <param name="in_eyeWide">A value in range [0,1] representing how the user's eye open widely. When this value is zero, the eye opens normally. When this value goes higher, the eye opens wider.</param>
/// <param name="in_eyeSqueeze">A value in range [0,1] representing how the user's eye is closed. When this value is zero, the eye closes normally. When this value goes higher, the eye closes tighter.</param>
public XrSingleEyeGeometricDataHTC(XrBool32 in_isValid, float in_eyeOpenness, float in_eyeWide, float in_eyeSqueeze)
{
isValid = in_isValid;
eyeOpenness = in_eyeOpenness;
eyeWide = in_eyeWide;
eyeSqueeze = in_eyeSqueeze;
}
};
[StructLayout(LayoutKind.Sequential)]
public struct XrEyeGeometricDataHTC
{
/// <summary>
/// The <see cref="XrStructureType">XrStructureType</see> of this structure.
/// </summary>
public XrStructureType type;
/// <summary>
/// NULL or a pointer to the next structure in a structure chain. No such structures are defined in core OpenXR or this extension.
/// </summary>
public IntPtr next;
/// <summary>
/// An <see cref="XrTime">XrTime</see> at which the returned eye data is tracked.
/// </summary>
public XrTime time;
/// <summary>
/// An array of <see cref="XrSingleEyeGeometricDataHTC">XrSingleEyeGeometricDataHTC</see> receiving the returned eye geometric data.
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public XrSingleEyeGeometricDataHTC[] eyeGeometricData;
};
public static class ViveEyeTrackerHelper
{
/// <param name="session">An XrSession in which the eye tracker will be active.</param>
/// <param name="createInfo">The <see cref="XrEyeTrackerCreateInfoHTC">XrEyeTrackerCreateInfoHTC</see> used to specify the eye tracker.</param>
/// <param name="eyeTracker">The returned <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> handle.</param>
/// <returns>XR_SUCCESS for success.</returns>
public delegate XrResult xrCreateEyeTrackerHTCDelegate(
XrSession session,
ref XrEyeTrackerCreateInfoHTC createInfo,
out XrEyeTrackerHTC eyeTracker);
/// <param name="eyeTracker">An XrEyeTrackerHTC previously created by xrCreateEyeTrackerHTC.</param>
/// <returns>XR_SUCCESS for success.</returns>
public delegate XrResult xrDestroyEyeTrackerHTCDelegate(
XrEyeTrackerHTC eyeTracker);
/// <summary>
/// Retrieves the <see cref="XrEyeGazeDataHTC">XrEyeGazeDataHTC</see> data of a <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see>.
/// </summary>
/// <param name="eyeTracker">An <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> previously created by <see cref="xrCreateEyeTrackerHTCDelegate">xrCreateEyeTrackerHTC</see>.</param>
/// <param name="gazeInfo">The information to get eye gaze.</param>
/// <param name="eyeGazes">A pointer to <see cref="XrEyeGazeDataHTC">XrEyeGazeDataHTC</see> receiving the returned eye poses.</param>
/// <returns>XR_SUCCESS for success.</returns>
public delegate XrResult xrGetEyeGazeDataHTCDelegate(
XrEyeTrackerHTC eyeTracker,
ref XrEyeGazeDataInfoHTC gazeInfo,
ref XrEyeGazeDataHTC eyeGazes);
/// <param name="eyeTracker">An <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> previously created by <see cref="xrCreateEyeTrackerHTCDelegate">xrCreateEyeTrackerHTC</see>.</param>
/// <param name="pupilDataInfo">The information to get pupil data.</param>
/// <param name="pupilData">A pointer to <see cref="XrEyePupilDataHTC">XrEyePupilDataHTC</see> returned by the runtime.</param>
/// <returns>XR_SUCCESS for success.</returns>
public delegate XrResult xrGetEyePupilDataHTCDelegate(
XrEyeTrackerHTC eyeTracker,
ref XrEyePupilDataInfoHTC pupilDataInfo,
ref XrEyePupilDataHTC pupilData);
/// <param name="eyeTracker">An <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> previously created by <see cref="xrCreateEyeTrackerHTCDelegate">xrCreateEyeTrackerHTC</see>.</param>
/// <param name="info">A pointer to <see cref="XrEyeGeometricDataInfoHTC">XrEyeGeometricDataInfoHTC</see> structure.</param>
/// <param name="eyeGeometricData">A pointer to <see cref="XrEyeGeometricDataHTC">XrEyeGeometricDataHTC</see> returned by the runtime.</param>
/// <returns>XR_SUCCESS for success.</returns>
public delegate XrResult xrGetEyeGeometricDataHTC(
XrEyeTrackerHTC eyeTracker,
ref XrEyeGeometricDataInfoHTC info,
ref XrEyeGeometricDataHTC eyeGeometricData);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e9a5198e29bcef243bf89dc19b46ce0d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -325,6 +325,23 @@ namespace VIVE.OpenXR
XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_HTC = 1000317004, XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_HTC = 1000317004,
XR_TYPE_SYSTEM_ANCHOR_PROPERTIES_HTC = 1000319000, XR_TYPE_SYSTEM_ANCHOR_PROPERTIES_HTC = 1000319000,
XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_HTC = 1000319001, XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_HTC = 1000319001,
XR_TYPE_PERSISTED_ANCHOR_COLLECTION_CREATE_INFO_HTC = 1000320000,
XR_TYPE_SPATIAL_ANCHOR_PERSIST_INFO_HTC = 1000320001,
XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_HTC = 1000320002,
XR_TYPE_PERSISTED_ANCHOR_PROPERTIES_GET_INFO_HTC = 1000320003,
XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB = 1000171000,
XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB = 1000171001,
XR_TYPE_EYE_TRACKER_CREATE_INFO_HTC = 1000326001,
XR_TYPE_EYE_GAZE_DATA_INFO_HTC = 1000326002,
XR_TYPE_EYE_GAZE_DATA_HTC = 1000326003,
XR_TYPE_SINGLE_EYE_GAZE_DATA_HTC = 1000326004,
XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_HTC = 1000326005,
XR_TYPE_EYE_PUPIL_DATA_INFO_HTC = 1000326006,
XR_TYPE_EYE_PUPIL_DATA_HTC = 1000326007,
XR_TYPE_SINGLE_EYE_PUPIL_DATA_HTC = 1000326008,
XR_TYPE_EYE_GEOMETRIC_DATA_INFO_HTC = 1000326009,
XR_TYPE_EYE_GEOMETRIC_DATA_HTC = 1000326010,
XR_TYPE_SINGLE_EYE_GEOMETRIC_DATA_HTC = 1000326011,
XR_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF XR_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
} }
/// <summary> /// <summary>

View File

@@ -0,0 +1,143 @@
// ===================== 2022 HTC Corporation. All Rights Reserved. ===================
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using VIVE.OpenXR.EyeTracker;
namespace VIVE.OpenXR
{
public class XR_HTC_eye_tracker_defs
{
public virtual XrResult xrCreateEyeTrackerHTC(XrEyeTrackerCreateInfoHTC createInfo, out XrEyeTrackerHTC eyeTracker)
{
eyeTracker = 0;
return XrResult.XR_ERROR_FEATURE_UNSUPPORTED;
}
public virtual XrResult xrDestroyEyeTrackerHTC(XrEyeTrackerHTC eyeTracker)
{
return XrResult.XR_ERROR_FEATURE_UNSUPPORTED;
}
protected XrEyeGazeDataHTC m_eyeGazes = new XrEyeGazeDataHTC(); //= new XrEyeGazeDataHTC(XrStructureType.XR_TYPE_EYE_GAZE_DATA_HTC, IntPtr.Zero, 0);
public virtual XrResult xrGetEyeGazeDataHTC(XrEyeTrackerHTC eyeTracker, XrEyeGazeDataInfoHTC gazeInfo, out XrEyeGazeDataHTC eyeGazes)
{
m_eyeGazes.type = XrStructureType.XR_TYPE_EYE_GAZE_DATA_HTC;
m_eyeGazes.next = IntPtr.Zero;
m_eyeGazes.time = 0;
eyeGazes = m_eyeGazes;
return XrResult.XR_ERROR_FEATURE_UNSUPPORTED;
}
public virtual bool GetEyeGazeData(out XrSingleEyeGazeDataHTC[] out_gazes)
{
m_eyeGazes.type = XrStructureType.XR_TYPE_EYE_GAZE_DATA_HTC;
m_eyeGazes.next = IntPtr.Zero;
m_eyeGazes.time = 0;
out_gazes = m_eyeGazes.gaze;
return false;
}
protected XrEyePupilDataHTC m_pupilData = new XrEyePupilDataHTC();
public virtual XrResult xrGetEyePupilDataHTC(XrEyeTrackerHTC eyeTracker, XrEyePupilDataInfoHTC pupilDataInfo, out XrEyePupilDataHTC pupilData)
{
m_pupilData.type = XrStructureType.XR_TYPE_EYE_PUPIL_DATA_HTC;
m_pupilData.next = IntPtr.Zero;
m_pupilData.time = 0;
pupilData = m_pupilData;
return XrResult.XR_ERROR_FEATURE_UNSUPPORTED;
}
public virtual bool GetEyePupilData(out XrSingleEyePupilDataHTC[] pupilData)
{
m_pupilData.type = XrStructureType.XR_TYPE_EYE_PUPIL_DATA_HTC;
m_pupilData.next = IntPtr.Zero;
m_pupilData.time = 0;
pupilData = m_pupilData.pupilData;
return false;
}
protected XrEyeGeometricDataHTC m_eyeGeometricData = new XrEyeGeometricDataHTC();
public virtual XrResult xrGetEyeGeometricDataHTC(XrEyeTrackerHTC eyeTracker,
XrEyeGeometricDataInfoHTC info,
out XrEyeGeometricDataHTC eyeGeometricData)
{
m_eyeGeometricData.type = XrStructureType.XR_TYPE_EYE_GEOMETRIC_DATA_HTC;
m_eyeGeometricData.next = IntPtr.Zero;
m_eyeGeometricData.time = 0;
eyeGeometricData = m_eyeGeometricData;
return XrResult.XR_ERROR_FEATURE_UNSUPPORTED;
}
public virtual bool GetEyeGeometricData(out XrSingleEyeGeometricDataHTC[] geometricData)
{
m_eyeGeometricData.type = XrStructureType.XR_TYPE_EYE_GEOMETRIC_DATA_HTC;
m_eyeGeometricData.next = IntPtr.Zero;
m_eyeGeometricData.time = 0;
geometricData = m_eyeGeometricData.eyeGeometricData;
return false;
}
}
public class XR_HTC_eye_tracker
{
static XR_HTC_eye_tracker_defs m_Instance = null;
public static XR_HTC_eye_tracker_defs Interop
{
get
{
if (m_Instance == null)
{
m_Instance = new XR_HTC_eye_tracker_impls();
}
return m_Instance;
}
}
/// <summary>
/// An application can create an <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> handle using CreateEyeTracker.
/// </summary>
/// <param name="createInfo">The <see cref="XrEyeTrackerCreateInfoHTC">XrEyeTrackerCreateInfoHTC</see> used to specify the eye tracker.</param>
/// <param name="eyeTracker">The returned XrEyeTrackerHTC handle.</param>
/// <returns>XR_SUCCESS for success.</returns>
public static XrResult xrCreateEyeTrackerHTC(XrEyeTrackerCreateInfoHTC createInfo, out XrEyeTrackerHTC eyeTracker)
{
return Interop.xrCreateEyeTrackerHTC(createInfo,out eyeTracker);
}
/// <summary>
/// Releases the eye tracker and the underlying resources when the eye tracking experience is over.
/// </summary>
/// <param name="eyeTracker">An XrEyeTrackerHTC previously created by xrCreateEyeTrackerHTC.</param>
/// <returns>XR_SUCCESS for success.</returns>
public static XrResult xrDestroyEyeTrackerHTC(XrEyeTrackerHTC eyeTracker)
{
return Interop.xrDestroyEyeTrackerHTC(eyeTracker);
}
/// <summary>
/// Retrieves the <see cref="XrEyeGazeDataHTC">XrEyeGazeDataHTC</see> data of a <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see>.
/// </summary>
/// <param name="eyeTracker">An <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> previously created by <see cref="ViveEyeTrackerHelper.xrCreateEyeTrackerHTCDelegate">xrCreateEyeTrackerHTC</see>.</param>
/// <param name="gazeInfo">The information to get eye gaze.</param>
/// <param name="eyeGazes">Output parameter to retrieve a pointer to <see cref="XrEyeGazeDataHTC">XrEyeGazeDataHTC</see> receiving the returned eye poses.</param>
/// <returns>XR_SUCCESS for success.</returns>
public static XrResult xrGetEyeGazeDataHTC(XrEyeTrackerHTC eyeTracker, XrEyeGazeDataInfoHTC gazeInfo, out XrEyeGazeDataHTC eyeGazes)
{
return Interop.xrGetEyeGazeDataHTC(eyeTracker, gazeInfo, out eyeGazes);
}
/// <summary>
/// Retrieves the <see cref="XrEyePupilDataHTC">XrEyePupilDataHTC</see> data of a <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see>.
/// </summary>
/// <param name="eyeTracker">An <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> previously created by <see cref="ViveEyeTrackerHelper.xrCreateEyeTrackerHTCDelegate">xrCreateEyeTrackerHTC</see>.</param>
/// <param name="pupilDataInfo">The information to get pupil data.</param>
/// <param name="pupilData">A pointer to <see cref="XrEyePupilDataHTC">XrEyePupilDataHTC</see> returned by the runtime.</param>
/// <returns>XR_SUCCESS for success.</returns>
public static XrResult xrGetEyePupilDataHTC(XrEyeTrackerHTC eyeTracker, XrEyePupilDataInfoHTC pupilDataInfo, out XrEyePupilDataHTC pupilData)
{
return Interop.xrGetEyePupilDataHTC(eyeTracker, pupilDataInfo, out pupilData);
}
/// <param name="eyeTracker">An <see cref="XrEyeTrackerHTC">XrEyeTrackerHTC</see> previously created by <see cref="ViveEyeTrackerHelper.xrCreateEyeTrackerHTCDelegate">xrCreateEyeTrackerHTC</see>.</param>
/// <param name="info">A pointer to <see cref="XrEyeGeometricDataInfoHTC">XrEyeGeometricDataInfoHTC</see> structure.</param>
/// <param name="eyeGeometricData">A pointer to <see cref="XrEyeGeometricDataHTC">XrEyeGeometricDataHTC</see> returned by the runtime.</param>
/// <returns>XR_SUCCESS for success.</returns>
public static XrResult xrGetEyeGeometricDataHTC(XrEyeTrackerHTC eyeTracker,
XrEyeGeometricDataInfoHTC info,
out XrEyeGeometricDataHTC eyeGeometricData)
{
return Interop.xrGetEyeGeometricDataHTC(eyeTracker,info, out eyeGeometricData);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1fb607ec9f5f9a349841a128ef8b2725
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,132 @@
// ===================== 2022 HTC Corporation. All Rights Reserved. ===================
using UnityEngine;
using UnityEngine.XR.OpenXR;
using VIVE.OpenXR.EyeTracker;
namespace VIVE.OpenXR
{
public class XR_HTC_eye_tracker_impls : XR_HTC_eye_tracker_defs
{
const string LOG_TAG = "VIVE.OpenXR.XR_HTC_eye_tracker_impls";
void DEBUG(string msg) { Debug.Log(LOG_TAG + " " + msg); }
private ViveEyeTracker feature = null;
private void ASSERT_FEATURE()
{
if (feature == null) { feature = OpenXRSettings.Instance.GetFeature<ViveEyeTracker>(); }
}
public override XrResult xrCreateEyeTrackerHTC(XrEyeTrackerCreateInfoHTC createInfo, out XrEyeTrackerHTC eyeTracker)
{
DEBUG("xrCreateEyeTrackerHTC");
XrResult result = XrResult.XR_ERROR_VALIDATION_FAILURE;
eyeTracker = 0;
ASSERT_FEATURE();
if (feature)
{
result = (XrResult)feature.CreateEyeTracker(createInfo, out XrEyeTrackerHTC value);
if (result == XrResult.XR_SUCCESS) { eyeTracker = value; }
}
return result;
}
public override XrResult xrDestroyEyeTrackerHTC(XrEyeTrackerHTC eyeTracker)
{
DEBUG("xrDestroyEyeTrackerHTC");
ASSERT_FEATURE();
if (feature) { return (XrResult)feature.DestroyEyeTracker(eyeTracker); }
return XrResult.XR_ERROR_VALIDATION_FAILURE;
}
public override XrResult xrGetEyeGazeDataHTC(XrEyeTrackerHTC eyeTracker, XrEyeGazeDataInfoHTC gazeInfo, out XrEyeGazeDataHTC eyeGazes)
{
eyeGazes = m_eyeGazes;
XrResult result = XrResult.XR_ERROR_VALIDATION_FAILURE;
ASSERT_FEATURE();
if (feature)
{
result = (XrResult)feature.GetEyeGazeData(eyeTracker, gazeInfo, out XrEyeGazeDataHTC gazes);
if (result == XrResult.XR_SUCCESS) { eyeGazes = gazes; }
}
return result;
}
public override bool GetEyeGazeData(out XrSingleEyeGazeDataHTC[] out_gazes)
{
out_gazes = m_eyeGazes.gaze;
bool result = false;
ASSERT_FEATURE();
if (feature)
{
result = feature.GetEyeGazeData(out XrSingleEyeGazeDataHTC[] data);
if (result) out_gazes = data;
}
return result;
}
public override XrResult xrGetEyePupilDataHTC(XrEyeTrackerHTC eyeTracker, XrEyePupilDataInfoHTC pupilDataInfo, out XrEyePupilDataHTC pupilData)
{
pupilData = m_pupilData;
XrResult result = XrResult.XR_ERROR_VALIDATION_FAILURE;
ASSERT_FEATURE();
if (feature)
{
result = (XrResult)feature.GetEyePupilData(eyeTracker, pupilDataInfo, out XrEyePupilDataHTC data);
if (result == XrResult.XR_SUCCESS) { pupilData = data; }
}
return result;
}
public override bool GetEyePupilData(out XrSingleEyePupilDataHTC[] pupilData)
{
pupilData = m_pupilData.pupilData;
bool result = false;
ASSERT_FEATURE();
if (feature)
{
result = feature.GetEyePupilData(out XrSingleEyePupilDataHTC[] data);
if (result) pupilData = data;
}
return result;
}
public override XrResult xrGetEyeGeometricDataHTC(XrEyeTrackerHTC eyeTracker,
XrEyeGeometricDataInfoHTC info,
out XrEyeGeometricDataHTC eyeGeometricData)
{
eyeGeometricData = m_eyeGeometricData;
XrResult result = XrResult.XR_ERROR_VALIDATION_FAILURE;
ASSERT_FEATURE();
if (feature)
{
result = (XrResult)feature.GetEyeGeometricData(eyeTracker, info, out XrEyeGeometricDataHTC geometricData);
if (result == XrResult.XR_SUCCESS) { eyeGeometricData = geometricData; }
}
return result;
}
public override bool GetEyeGeometricData(out XrSingleEyeGeometricDataHTC[] geometricData)
{
geometricData = m_eyeGeometricData.eyeGeometricData;
bool result = false;
ASSERT_FEATURE();
if (feature)
{
result = feature.GetEyeGeometricData(out XrSingleEyeGeometricDataHTC[] data);
if (result) geometricData = data;
}
return result;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 166bae55cad9f9146a8c2ada64d74832
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6bf905bc26255a9438a252cd62d84c4b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2344ab9d663d25f4c95e72e96a84ad49
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,73 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using VIVE.OpenXR.EyeTracker;
namespace VIVE.OpenXR.Samples.OpenXRInput
{
public class EyeTrackerTest : MonoBehaviour
{
const string LOG_TAG = "VIVE.OpenXR.Samples.OpenXRInput.EyeTrackerText";
void DEBUG(string msg) { Debug.Log(LOG_TAG + " " + msg); }
public Transform leftGazeTransform = null;
public Transform rightGazeTransform = null;
private Text m_Text = null;
private void Awake()
{
m_Text = GetComponent<Text>();
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
m_Text.text = "[Eye Tracker]\n";
m_Text.text += "Left Gaze:\n";
XR_HTC_eye_tracker.Interop.GetEyeGazeData(out XrSingleEyeGazeDataHTC[] out_gazes);
XrSingleEyeGazeDataHTC leftGaze = out_gazes[(int)XrEyePositionHTC.XR_EYE_POSITION_LEFT_HTC];
m_Text.text += "isValid: " + leftGaze.isValid + "\n";
m_Text.text += "position ( " + leftGaze.gazePose.position.ToUnityVector().x.ToString("F4") + ", "+leftGaze.gazePose.position.ToUnityVector().y.ToString("F4") + ", " + leftGaze.gazePose.position.ToUnityVector().z.ToString("F4") + ")\n";
m_Text.text += "rotation ( " + leftGaze.gazePose.orientation.ToOpenXRQuaternion().x.ToString("F4") + ", "+leftGaze.gazePose.orientation.ToOpenXRQuaternion().y.ToString("F4") + ", " + leftGaze.gazePose.orientation.ToOpenXRQuaternion().z.ToString("F4") + ", " + leftGaze.gazePose.orientation.ToOpenXRQuaternion().w.ToString("F4") + ")\n";
leftGazeTransform.position = leftGaze.gazePose.position.ToUnityVector();
leftGazeTransform.rotation = leftGaze.gazePose.orientation.ToUnityQuaternion();
m_Text.text += "Right Gaze:\n";
XrSingleEyeGazeDataHTC rightGaze = out_gazes[(int)XrEyePositionHTC.XR_EYE_POSITION_RIGHT_HTC];
m_Text.text += "isValid: " + rightGaze.isValid + "\n";
m_Text.text += "position ( " + rightGaze.gazePose.position.ToUnityVector().x.ToString("F4") + ", " + rightGaze.gazePose.position.ToUnityVector().y.ToString("F4") + ", " + rightGaze.gazePose.position.ToUnityVector().z.ToString("F4") + ")\n";
m_Text.text += "rotation ( " + rightGaze.gazePose.orientation.ToOpenXRQuaternion().x.ToString("F4") + ", " +rightGaze.gazePose.orientation.ToOpenXRQuaternion().y.ToString("F4") + ", " + rightGaze.gazePose.orientation.ToOpenXRQuaternion().z.ToString("F4") + ", " + rightGaze.gazePose.orientation.ToOpenXRQuaternion().w.ToString("F4") + ")\n\n";
rightGazeTransform.position = rightGaze.gazePose.position.ToUnityVector();
rightGazeTransform.rotation = rightGaze.gazePose.orientation.ToUnityQuaternion();
m_Text.text += "Left Pupil:\n";
XR_HTC_eye_tracker.Interop.GetEyePupilData(out XrSingleEyePupilDataHTC[] out_pupils);
XrSingleEyePupilDataHTC leftPupil = out_pupils[(int)XrEyePositionHTC.XR_EYE_POSITION_LEFT_HTC];
m_Text.text += "isDiameterValid: " + leftPupil.isDiameterValid + "\tisPositionValid: " + leftPupil.isPositionValid+ "\n";
m_Text.text += "pupilDiameter: " + leftPupil.pupilDiameter + "\n";
m_Text.text += "position ( " + leftPupil.pupilPosition.x.ToString("F4") + ", " + leftPupil.pupilPosition.y.ToString("F4") + ")\n";
//m_Text.text += "tracked: " + tracked + "\n";
m_Text.text += "Right Pupil:\n";
XrSingleEyePupilDataHTC rightPupil = out_pupils[(int)XrEyePositionHTC.XR_EYE_POSITION_RIGHT_HTC];
m_Text.text += "isDiameterValid: " + rightPupil.isDiameterValid + "\tisPositionValid: " + rightPupil.isPositionValid + "\n";
m_Text.text += "pupilDiameter: " + rightPupil.pupilDiameter + "\n";
m_Text.text += "position ( " + rightPupil.pupilPosition.x.ToString("F4") + ", " + rightPupil.pupilPosition.y.ToString("F4") + ")\n\n";
m_Text.text += "Left eye geometric:\n";
XR_HTC_eye_tracker.Interop.GetEyeGeometricData(out XrSingleEyeGeometricDataHTC[] out_geometrics);
XrSingleEyeGeometricDataHTC leftGeometric = out_geometrics[(int)XrEyePositionHTC.XR_EYE_POSITION_LEFT_HTC];
m_Text.text += "isValid: " + leftGeometric.isValid + "\n";
m_Text.text += "Openness: " + leftGeometric.eyeOpenness.ToString("F3") + "\tSqueeze: " + leftGeometric.eyeSqueeze.ToString("F3") + "\tWide: " + leftGeometric.eyeWide.ToString("F3") + "\n";
m_Text.text += "Right eye geometric:\n";
XrSingleEyeGeometricDataHTC rightGeometric = out_geometrics[(int)XrEyePositionHTC.XR_EYE_POSITION_RIGHT_HTC];
m_Text.text += "isValid: " + rightGeometric.isValid + "\n";
m_Text.text += "Openness: " + rightGeometric.eyeOpenness.ToString("F3") + "\tSqueeze: " + rightGeometric.eyeSqueeze.ToString("F3") + "\tWide: " + rightGeometric.eyeWide.ToString("F3") + "\n";
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b27f3d0a0c3073b4c9a86bcd624fa797
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -348,6 +348,7 @@ MeshRenderer:
m_CastShadows: 1 m_CastShadows: 1
m_ReceiveShadows: 1 m_ReceiveShadows: 1
m_DynamicOccludee: 1 m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1 m_MotionVectors: 1
m_LightProbeUsage: 1 m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1 m_ReflectionProbeUsage: 1
@@ -396,6 +397,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 6.042} m_LocalPosition: {x: 0, y: 0, z: 6.042}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 5 m_RootOrder: 5
@@ -433,6 +435,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 1713029778} m_Father: {fileID: 1713029778}
m_RootOrder: 1 m_RootOrder: 1
@@ -477,7 +480,12 @@ MonoBehaviour:
m_LineSpacing: 1 m_LineSpacing: 1
m_Text: 'Press B to switch to Overlay. m_Text: 'Press B to switch to Overlay.
Press A to switch to Underlay.' Press A to switch to Underlay.
Press
GripR to create passthrough.
Press GripL to destroy passthrough.'
--- !u!222 &563979743 --- !u!222 &563979743
CanvasRenderer: CanvasRenderer:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -513,6 +521,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 3 m_RootOrder: 3
@@ -618,6 +627,7 @@ Transform:
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 4 m_RootOrder: 4
@@ -789,6 +799,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 3.05} m_LocalPosition: {x: 0, y: 0, z: 3.05}
m_LocalScale: {x: 0.001, y: 0.001, z: 0.001} m_LocalScale: {x: 0.001, y: 0.001, z: 0.001}
m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1792614228} - {fileID: 1792614228}
- {fileID: 563979741} - {fileID: 563979741}
@@ -828,6 +839,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 1713029778} m_Father: {fileID: 1713029778}
m_RootOrder: 0 m_RootOrder: 0
@@ -905,6 +917,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_MoveRepeatDelay: 0.5 m_MoveRepeatDelay: 0.5
m_MoveRepeatRate: 0.1 m_MoveRepeatRate: 0.1
m_XRTrackingOrigin: {fileID: 486770172} m_XRTrackingOrigin: {fileID: 486770172}
@@ -921,6 +934,7 @@ MonoBehaviour:
m_TrackedDeviceOrientationAction: {fileID: -8081773802841398021, guid: 699f4d2073ed2e34ea7f7944795b868c, type: 3} m_TrackedDeviceOrientationAction: {fileID: -8081773802841398021, guid: 699f4d2073ed2e34ea7f7944795b868c, type: 3}
m_DeselectOnBackgroundClick: 1 m_DeselectOnBackgroundClick: 1
m_PointerBehavior: 0 m_PointerBehavior: 0
m_CursorLockBehavior: 0
--- !u!114 &1934135425 --- !u!114 &1934135425
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -946,6 +960,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 2 m_RootOrder: 2

View File

@@ -150,6 +150,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 227549055} - {fileID: 227549055}
- {fileID: 1897936060} - {fileID: 1897936060}
@@ -159,7 +160,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 1000, y: 135} m_AnchoredPosition: {x: 1000, y: 75}
m_SizeDelta: {x: 2000, y: 120} m_SizeDelta: {x: 2000, y: 120}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &18497396 --- !u!114 &18497396
@@ -509,6 +510,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 18497395} m_Father: {fileID: 18497395}
m_RootOrder: 0 m_RootOrder: 0
@@ -586,6 +588,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.618, z: 2.226} m_LocalPosition: {x: 0, y: 0.618, z: 2.226}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 4 m_RootOrder: 4
@@ -618,6 +621,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 1561711923} m_Father: {fileID: 1561711923}
m_RootOrder: 0 m_RootOrder: 0
@@ -691,6 +695,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1623327190} - {fileID: 1623327190}
m_Father: {fileID: 1897936060} m_Father: {fileID: 1897936060}
@@ -734,6 +739,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 1713029778} m_Father: {fileID: 1713029778}
m_RootOrder: 1 m_RootOrder: 1
@@ -783,7 +789,12 @@ MonoBehaviour:
Press Press
X to switch to World Lock Pose. X to switch to World Lock Pose.
Press Y to switch to Head Lock Pose.' Press Y to switch to Head Lock Pose.
Press
GripR to create passthrough.
Press GripL to destroy passthrough.'
--- !u!222 &563979743 --- !u!222 &563979743
CanvasRenderer: CanvasRenderer:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -825,6 +836,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 18497395} m_Father: {fileID: 18497395}
m_RootOrder: 2 m_RootOrder: 2
@@ -903,6 +915,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 3 m_RootOrder: 3
@@ -1119,6 +1132,7 @@ Transform:
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 6 m_RootOrder: 6
@@ -1208,6 +1222,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 1897936060} m_Father: {fileID: 1897936060}
m_RootOrder: 0 m_RootOrder: 0
@@ -1281,6 +1296,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 255383794} - {fileID: 255383794}
m_Father: {fileID: 1897936060} m_Father: {fileID: 1897936060}
@@ -1319,6 +1335,7 @@ RectTransform:
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 461691196} m_Father: {fileID: 461691196}
m_RootOrder: 0 m_RootOrder: 0
@@ -1476,6 +1493,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 3.05} m_LocalPosition: {x: 0, y: 0, z: 3.05}
m_LocalScale: {x: 0.001, y: 0.001, z: 0.001} m_LocalScale: {x: 0.001, y: 0.001, z: 0.001}
m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1792614228} - {fileID: 1792614228}
- {fileID: 563979741} - {fileID: 563979741}
@@ -1516,6 +1534,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 1713029778} m_Father: {fileID: 1713029778}
m_RootOrder: 0 m_RootOrder: 0
@@ -1590,6 +1609,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 5, y: 5, z: 5} m_LocalScale: {x: 5, y: 5, z: 5}
m_ConstrainProportionsScale: 0
m_Children: m_Children:
- {fileID: 1315847422} - {fileID: 1315847422}
- {fileID: 1561711923} - {fileID: 1561711923}
@@ -1696,6 +1716,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_MoveRepeatDelay: 0.5 m_MoveRepeatDelay: 0.5
m_MoveRepeatRate: 0.1 m_MoveRepeatRate: 0.1
m_XRTrackingOrigin: {fileID: 486770172} m_XRTrackingOrigin: {fileID: 486770172}
@@ -1712,6 +1733,7 @@ MonoBehaviour:
m_TrackedDeviceOrientationAction: {fileID: -8081773802841398021, guid: 699f4d2073ed2e34ea7f7944795b868c, type: 3} m_TrackedDeviceOrientationAction: {fileID: -8081773802841398021, guid: 699f4d2073ed2e34ea7f7944795b868c, type: 3}
m_DeselectOnBackgroundClick: 1 m_DeselectOnBackgroundClick: 1
m_PointerBehavior: 0 m_PointerBehavior: 0
m_CursorLockBehavior: 0
--- !u!114 &1934135425 --- !u!114 &1934135425
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -1737,6 +1759,7 @@ Transform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 2 m_RootOrder: 2

View File

@@ -16,10 +16,7 @@ namespace VIVE.OpenXR.CompositionLayer.Samples.Passthrough
private void Update() private void Update()
{ {
if (activePassthroughID == 0)
{
StartPassthrough();
}
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.B)) //Set Passthrough as Overlay if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.B)) //Set Passthrough as Overlay
{ {
@@ -29,6 +26,21 @@ namespace VIVE.OpenXR.CompositionLayer.Samples.Passthrough
{ {
SetPassthroughToUnderlay(); SetPassthroughToUnderlay();
} }
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.GripR))
{
if (activePassthroughID == 0)
{
StartPassthrough();
}
}
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.GripL))
{
if(activePassthroughID != 0)
{
CompositionLayerPassthroughAPI.DestroyPassthrough(activePassthroughID);
activePassthroughID = 0;
}
}
} }
public void SetPassthroughToOverlay() public void SetPassthroughToOverlay()

View File

@@ -55,11 +55,22 @@ namespace VIVE.OpenXR.CompositionLayer.Samples.Passthrough
if (activePassthroughID != 0) SetPassthroughMesh(); if (activePassthroughID != 0) SetPassthroughMesh();
} }
if (passthroughMesh != null && passthroughMeshTransform != null) if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.GripR))
{ {
if (activePassthroughID == 0) if (passthroughMesh != null && passthroughMeshTransform != null)
{ {
StartPassthrough(); if (activePassthroughID == 0)
{
StartPassthrough();
}
}
}
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.GripL))
{
if (activePassthroughID != 0)
{
CompositionLayerPassthroughAPI.DestroyPassthrough(activePassthroughID);
activePassthroughID = 0;
} }
} }
} }

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5a26d428ba154534381ad1cb49980f27
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2c006ff37d2c37840b4aafecf69afb2a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9000000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 44250ae5896983747bdd3ea514ce6e0f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,401 @@
%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: 976e99d37c093ce4c9b249c81c2cbdd5, type: 3}
m_Name: AvatarDescription
m_EditorClassIdentifier:
armStretch: 0.05
legStretch: 0.05
upperArmTwist: 0.5
lowerArmTwist: 0.5
upperLegTwist: 0.5
lowerLegTwist: 0.5
feetSpacing: 0
hasTranslationDoF: 0
human:
- humanBone: 0
boneName: J_Bip_C_Hips
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 1
boneName: J_Bip_L_UpperLeg
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 2
boneName: J_Bip_R_UpperLeg
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 3
boneName: J_Bip_L_LowerLeg
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 4
boneName: J_Bip_R_LowerLeg
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 5
boneName: J_Bip_L_Foot
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 6
boneName: J_Bip_R_Foot
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 7
boneName: J_Bip_C_Spine
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 8
boneName: J_Bip_C_Chest
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 9
boneName: J_Bip_C_Neck
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 10
boneName: J_Bip_C_Head
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 11
boneName: J_Bip_L_Shoulder
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 12
boneName: J_Bip_R_Shoulder
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 13
boneName: J_Bip_L_UpperArm
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 14
boneName: J_Bip_R_UpperArm
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 15
boneName: J_Bip_L_LowerArm
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 16
boneName: J_Bip_R_LowerArm
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 17
boneName: J_Bip_L_Hand
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 18
boneName: J_Bip_R_Hand
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 19
boneName: J_Bip_L_ToeBase
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 20
boneName: J_Bip_R_ToeBase
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 21
boneName: J_Adj_L_FaceEye
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 22
boneName: J_Adj_R_FaceEye
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 24
boneName: J_Bip_L_Thumb1
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 25
boneName: J_Bip_L_Thumb2
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 26
boneName: J_Bip_L_Thumb3
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 27
boneName: J_Bip_L_Index1
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 28
boneName: J_Bip_L_Index2
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 29
boneName: J_Bip_L_Index3
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 30
boneName: J_Bip_L_Middle1
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 31
boneName: J_Bip_L_Middle2
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 32
boneName: J_Bip_L_Middle3
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 33
boneName: J_Bip_L_Ring1
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 34
boneName: J_Bip_L_Ring2
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 35
boneName: J_Bip_L_Ring3
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 36
boneName: J_Bip_L_Little1
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 37
boneName: J_Bip_L_Little2
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 38
boneName: J_Bip_L_Little3
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 39
boneName: J_Bip_R_Thumb1
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 40
boneName: J_Bip_R_Thumb2
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 41
boneName: J_Bip_R_Thumb3
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 42
boneName: J_Bip_R_Index1
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 43
boneName: J_Bip_R_Index2
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 44
boneName: J_Bip_R_Index3
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 45
boneName: J_Bip_R_Middle1
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 46
boneName: J_Bip_R_Middle2
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 47
boneName: J_Bip_R_Middle3
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 48
boneName: J_Bip_R_Ring1
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 49
boneName: J_Bip_R_Ring2
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 50
boneName: J_Bip_R_Ring3
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 51
boneName: J_Bip_R_Little1
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 52
boneName: J_Bip_R_Little2
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 53
boneName: J_Bip_R_Little3
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0
- humanBone: 54
boneName: J_Bip_C_UpperChest
useDefaultValues: 1
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
center: {x: 0, y: 0, z: 0}
axisLength: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a5bf90c2c77df5945833811969ae9b7f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0c485a52287f0ec42a6deba26ecada77
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.A
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: A
Preset: 2
Values:
- RelativePath: Face
Index: 39
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ab5f9d46c1bc285478033c10ad6eecc7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.Angry
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: Angry
Preset: 9
Values:
- RelativePath: Face
Index: 1
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1c4788811eb904041af9407ab3c8e942
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.Blink
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: Blink
Preset: 7
Values:
- RelativePath: Face
Index: 13
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bb794829910d46440bbc6648409f5c67
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.Blink_L
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: Blink_L
Preset: 16
Values:
- RelativePath: Face
Index: 15
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3bc730086f9f3be439b86f7f7a65608c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.Blink_R
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: Blink_R
Preset: 17
Values:
- RelativePath: Face
Index: 14
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1b1461287e216d14f82a8dc3084ea1da
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.E
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: E
Preset: 5
Values:
- RelativePath: Face
Index: 42
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ef0a624466fca9f44afc54a99046b4e9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.Fun
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: Fun
Preset: 11
Values:
- RelativePath: Face
Index: 2
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0d9fe17b64a0b194bb62c1ccc4e09cd9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.I
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: I
Preset: 3
Values:
- RelativePath: Face
Index: 40
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 31b04c29fd904544298eed36491c1bc1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.Joy
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: Joy
Preset: 8
Values:
- RelativePath: Face
Index: 3
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e22e6492180a60f44801c3a785e70db6
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.Neutral
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: Neutral
Preset: 1
Values:
- RelativePath: Face
Index: 0
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7667fe9100954d44fbef6a8902a2330e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.O
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: O
Preset: 6
Values:
- RelativePath: Face
Index: 43
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d59f216bd0a305d47b90f9483a21f47b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.Sorrow
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: Sorrow
Preset: 10
Values:
- RelativePath: Face
Index: 4
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d6e600e244aee1f41a19d8df4fe8105e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.Surprised
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: Surprised
Preset: 0
Values:
- RelativePath: Face
Index: 5
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 700271c57903adc40a9c8fe348a9f57c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: BlendShape.U
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: U
Preset: 4
Values:
- RelativePath: Face
Index: 41
Weight: 100
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a15f8161a9fac284a9280498d7ced15c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,33 @@
%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: 329dca3bf78fcdd42b2df941673db76f, type: 3}
m_Name: BlendShape
m_EditorClassIdentifier:
Clips:
- {fileID: 11400000, guid: 7667fe9100954d44fbef6a8902a2330e, type: 2}
- {fileID: 11400000, guid: ab5f9d46c1bc285478033c10ad6eecc7, type: 2}
- {fileID: 11400000, guid: 31b04c29fd904544298eed36491c1bc1, type: 2}
- {fileID: 11400000, guid: a15f8161a9fac284a9280498d7ced15c, type: 2}
- {fileID: 11400000, guid: ef0a624466fca9f44afc54a99046b4e9, type: 2}
- {fileID: 11400000, guid: d59f216bd0a305d47b90f9483a21f47b, type: 2}
- {fileID: 11400000, guid: bb794829910d46440bbc6648409f5c67, type: 2}
- {fileID: 11400000, guid: 3bc730086f9f3be439b86f7f7a65608c, type: 2}
- {fileID: 11400000, guid: 1b1461287e216d14f82a8dc3084ea1da, type: 2}
- {fileID: 11400000, guid: 1c4788811eb904041af9407ab3c8e942, type: 2}
- {fileID: 11400000, guid: 0d9fe17b64a0b194bb62c1ccc4e09cd9, type: 2}
- {fileID: 11400000, guid: e22e6492180a60f44801c3a785e70db6, type: 2}
- {fileID: 11400000, guid: d6e600e244aee1f41a19d8df4fe8105e, type: 2}
- {fileID: 11400000, guid: 700271c57903adc40a9c8fe348a9f57c, type: 2}
- {fileID: 11400000, guid: 725440a3d971e284c995a012e8120630, type: 2}
- {fileID: 11400000, guid: 87a85157593e4634fa9dff0675efa701, type: 2}
- {fileID: 11400000, guid: d98ff0e344fe9d64799e4149cefe16f2, type: 2}
- {fileID: 11400000, guid: 374efa830e4f47448abced6925685e8f, type: 2}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a331d4eb110c35241958eba78ee21821
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: LookDown
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: LookDown
Preset: 13
Values: []
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 87a85157593e4634fa9dff0675efa701
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: LookLeft
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: LookLeft
Preset: 14
Values: []
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d98ff0e344fe9d64799e4149cefe16f2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: LookRight
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: LookRight
Preset: 15
Values: []
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 374efa830e4f47448abced6925685e8f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
%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: 37562b39ff933b245ac2f35d87edbcd6, type: 3}
m_Name: LookUp
m_EditorClassIdentifier:
m_prefab: {fileID: 0}
BlendShapeName: LookUp
Preset: 12
Values: []
MaterialValues: []
IsBinary: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 725440a3d971e284c995a012e8120630
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3b036164831c9924e8cb4ee9b1ad6fb6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,104 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_000_00_Body_00_SKIN (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- MTOON_OUTLINE_COLOR_FIXED
- MTOON_OUTLINE_WIDTH_WORLD
- _ALPHATEST_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: d381a1d1cc371294e9499fb41010ba2c, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 158236e8016b54b4fb7002417060e027, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 158236e8016b54b4fb7002417060e027, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 5547de9e7ef01c34b9975cf613f5afcc, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 1
- _BlendMode: 1
- _BumpScale: 1
- _CullMode: 2
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 0
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 0
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 4.63
- _OutlineWidth: 0.08
- _OutlineWidthMode: 1
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: 0
- _ShadeToony: 0.9
- _ShadingGradeRate: 1
- _SrcBlend: 1
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0.25, g: 0.25, b: 0.25, a: 1}
- _ShadeColor: {r: 0.9686274, g: 0.8117647, b: 0.85882354, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fc0a13dc4b24657438545fbfeaf0ca74
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,102 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_000_00_EyeHighlight_00_EYE (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- _ALPHABLEND_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3500
stringTagMap:
RenderType: Transparent
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: a19d9a065953acc47b8a08eb2d1ac4b3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 51f707660cfe45d4e862621bcc724f93, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 51f707660cfe45d4e862621bcc724f93, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 0
- _BlendMode: 2
- _BumpScale: 1
- _CullMode: 0
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 10
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 1
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 1
- _OutlineWidth: 0.08020833
- _OutlineWidthMode: 0
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: -0.26666665
- _ShadeToony: 1
- _ShadingGradeRate: 1
- _SrcBlend: 5
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0, g: 0, b: 0, a: 1}
- _ShadeColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e05f8c047e81d784ab5aa3637f87409b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,102 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_000_00_EyeIris_00_EYE (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- _ALPHABLEND_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: a19d9a065953acc47b8a08eb2d1ac4b3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: d0de6f6e42c310645867487abe78c6ac, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: d0de6f6e42c310645867487abe78c6ac, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 0
- _BlendMode: 2
- _BumpScale: 1
- _CullMode: 2
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 10
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 1
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 1
- _OutlineWidth: 0.08020833
- _OutlineWidthMode: 0
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: -0.26666665
- _ShadeToony: 1
- _ShadingGradeRate: 1
- _SrcBlend: 5
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0, g: 0, b: 0, a: 1}
- _ShadeColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 444d43ea65307ea448b2339d182e1aba
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,102 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_000_00_EyeWhite_00_EYE (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- _ALPHATEST_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: a19d9a065953acc47b8a08eb2d1ac4b3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 9d762cc3cfaf803419992822ddfa5a19, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 9d762cc3cfaf803419992822ddfa5a19, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 1
- _BlendMode: 1
- _BumpScale: 1
- _CullMode: 2
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 0
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 1
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 1
- _OutlineWidth: 0.08020833
- _OutlineWidthMode: 0
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: -0.26666665
- _ShadeToony: 1
- _ShadingGradeRate: 1
- _SrcBlend: 1
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0, g: 0, b: 0, a: 1}
- _ShadeColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3c1d5c9dd9f01834392f4ba5656e478c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,102 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_000_00_FaceBrow_00_FACE (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- _ALPHABLEND_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 4000
stringTagMap:
RenderType: Transparent
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: a19d9a065953acc47b8a08eb2d1ac4b3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 1a9fb9c9c2c34df4f8fe5e3dee342e47, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 1a9fb9c9c2c34df4f8fe5e3dee342e47, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 5547de9e7ef01c34b9975cf613f5afcc, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 0
- _BlendMode: 2
- _BumpScale: 1
- _CullMode: 0
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 10
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 1
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 4.63
- _OutlineWidth: 0.08020833
- _OutlineWidthMode: 0
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: -0.26666665
- _ShadeToony: 1
- _ShadingGradeRate: 1
- _SrcBlend: 5
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0, g: 0, b: 0, a: 1}
- _ShadeColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5e45d2c629c9e2445b9a08a281180ec9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,102 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_000_00_FaceEyeline_00_FACE (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- _ALPHABLEND_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: a19d9a065953acc47b8a08eb2d1ac4b3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 55299f92850a70141b5290c767e7cd82, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 55299f92850a70141b5290c767e7cd82, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 5547de9e7ef01c34b9975cf613f5afcc, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 0
- _BlendMode: 2
- _BumpScale: 1
- _CullMode: 0
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 10
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 1
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 1
- _OutlineWidth: 0.08020833
- _OutlineWidthMode: 0
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: -0.26666665
- _ShadeToony: 1
- _ShadingGradeRate: 1
- _SrcBlend: 5
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0, g: 0, b: 0, a: 1}
- _ShadeColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ca719d987c08a4048b5401c81762d68d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,102 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_000_00_FaceMouth_00_FACE (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- _ALPHATEST_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: a19d9a065953acc47b8a08eb2d1ac4b3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 8ad1a7934c0532944a5527877b76561c, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 8ad1a7934c0532944a5527877b76561c, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 1
- _BlendMode: 1
- _BumpScale: 1
- _CullMode: 2
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 0
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 1
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 1
- _OutlineWidth: 0.08020833
- _OutlineWidthMode: 0
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: -0.26666665
- _ShadeToony: 1
- _ShadingGradeRate: 1
- _SrcBlend: 1
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0, g: 0, b: 0, a: 1}
- _ShadeColor: {r: 0.9686274, g: 0.8117647, b: 0.85882354, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 78ad933fe6baf5045971c59220625598
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,104 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_000_00_Face_00_SKIN (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- MTOON_OUTLINE_COLOR_FIXED
- MTOON_OUTLINE_WIDTH_WORLD
- _ALPHATEST_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: 573a1b0ffc313934480caf7fed3c0c30, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 7bc214a5aeaca394b82560131b9e2d10, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 2800000, guid: 82b79a5098728914486ac605c91d7170, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 7bc214a5aeaca394b82560131b9e2d10, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 5547de9e7ef01c34b9975cf613f5afcc, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 1
- _BlendMode: 1
- _BumpScale: 1
- _CullMode: 0
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 0
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 0
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 4.63
- _OutlineWidth: 0.08020833
- _OutlineWidthMode: 1
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: -0.26666665
- _ShadeToony: 1
- _ShadingGradeRate: 1
- _SrcBlend: 1
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0.25, g: 0.25, b: 0.25, a: 1}
- _ShadeColor: {r: 0.9686274, g: 0.8117647, b: 0.85882354, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ec2206e2367f3a040a405d39a21f3a02
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,102 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_000_00_HairBack_00_HAIR (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- _ALPHATEST_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: 303cac890e85b864a916d7c454bb727b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 22b189b1701cbb04ba7915602e5de4e9, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 22b189b1701cbb04ba7915602e5de4e9, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 1
- _BlendMode: 1
- _BumpScale: 1
- _CullMode: 2
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 0
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 1
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 1
- _OutlineWidth: 0
- _OutlineWidthMode: 0
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: 0.26666665
- _ShadeToony: 0.6
- _ShadingGradeRate: 1
- _SrcBlend: 1
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0.85882354, g: 0.69411767, b: 0.69411767, a: 1}
- _OutlineColor: {r: 0.47450978, g: 0.74509805, b: 0.737255, a: 1}
- _RimColor: {r: 0.25, g: 0.25, b: 0.25, a: 1}
- _ShadeColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 98ac2806c4c64ab428de3e4b2232e4ef
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,102 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_000_Hair_00_HAIR (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- _ALPHATEST_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: ad18afd8ca3712f49b1b5e0c830231ef, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 7875535f05a335b4e950f96ebf651317, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 453090f43d60bca419e569fde6d2f5c3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 453090f43d60bca419e569fde6d2f5c3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 98e0ea55ec74c3c439393acc1325e172, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 1
- _BlendMode: 1
- _BumpScale: 1
- _CullMode: 0
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 0
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 1
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 4.34
- _OutlineWidth: 0
- _OutlineWidthMode: 0
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: 0.26666665
- _ShadeToony: 0.6
- _ShadingGradeRate: 1
- _SrcBlend: 1
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0.85882354, g: 0.5411765, b: 0.23137255, a: 1}
- _OutlineColor: {r: 0.27450973, g: 0.09019599, b: 0.1254901, a: 1}
- _RimColor: {r: 0.25, g: 0.25, b: 0.25, a: 1}
- _ShadeColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 380506786ad864a4ab3e0c77b405614a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,104 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_001_03_Bottoms_01_CLOTH (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- MTOON_OUTLINE_COLOR_FIXED
- MTOON_OUTLINE_WIDTH_WORLD
- _ALPHATEST_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: a19d9a065953acc47b8a08eb2d1ac4b3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 5d32a8e4858af084190c4668c1767bc7, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 5d32a8e4858af084190c4668c1767bc7, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 5547de9e7ef01c34b9975cf613f5afcc, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 1
- _BlendMode: 1
- _BumpScale: 1
- _CullMode: 0
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 0
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 0
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 1
- _OutlineWidth: 0.08
- _OutlineWidthMode: 1
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: 0
- _ShadeToony: 0.9
- _ShadingGradeRate: 1
- _SrcBlend: 1
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0.25, g: 0.25, b: 0.25, a: 1}
- _ShadeColor: {r: 0.96999997, g: 0.81, b: 0.86, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 60ccfa3b15a46e2408bf2de3c833e69b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,104 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_002_01_Tops_01_CLOTH (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- MTOON_OUTLINE_COLOR_FIXED
- MTOON_OUTLINE_WIDTH_WORLD
- _ALPHATEST_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: a19d9a065953acc47b8a08eb2d1ac4b3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 4bffa7d0813008f4994c6a4f33fc1a95, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 4bffa7d0813008f4994c6a4f33fc1a95, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 5547de9e7ef01c34b9975cf613f5afcc, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 1
- _BlendMode: 1
- _BumpScale: 1
- _CullMode: 0
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 0
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 0
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 1
- _OutlineWidth: 0.08
- _OutlineWidthMode: 1
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: 0
- _ShadeToony: 0.9
- _ShadingGradeRate: 1
- _SrcBlend: 1
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0.25, g: 0.25, b: 0.25, a: 1}
- _ShadeColor: {r: 0.8117647, g: 0.8392157, b: 0.9686274, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fc3816470dc0c0e4bbc70bb2df30f82e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,104 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_006_01_Shoes_01_CLOTH (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- MTOON_OUTLINE_COLOR_FIXED
- MTOON_OUTLINE_WIDTH_WORLD
- _ALPHATEST_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: a19d9a065953acc47b8a08eb2d1ac4b3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 311ab6e8297edcd4b8ce8013b296c458, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 311ab6e8297edcd4b8ce8013b296c458, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 5547de9e7ef01c34b9975cf613f5afcc, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 1
- _BlendMode: 1
- _BumpScale: 1
- _CullMode: 0
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 0
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 0
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 1
- _OutlineWidth: 0.08
- _OutlineWidthMode: 1
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: 0
- _ShadeToony: 0.9
- _ShadingGradeRate: 1
- _SrcBlend: 1
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0.25, g: 0.25, b: 0.25, a: 1}
- _ShadeColor: {r: 0.8117647, g: 0.8392157, b: 0.9686274, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 04287126b5192cc4b8263f85c7e45ac8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,104 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_010_01_Onepiece_00_CLOTH_01 (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- MTOON_OUTLINE_COLOR_FIXED
- MTOON_OUTLINE_WIDTH_WORLD
- _ALPHATEST_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: a19d9a065953acc47b8a08eb2d1ac4b3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 6f4d12c56900bf2428f6d5abd2aa8f6e, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 6f4d12c56900bf2428f6d5abd2aa8f6e, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 5547de9e7ef01c34b9975cf613f5afcc, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 1
- _BlendMode: 1
- _BumpScale: 1
- _CullMode: 0
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 0
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 0
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 1
- _OutlineWidth: 0.08
- _OutlineWidthMode: 1
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: 0
- _ShadeToony: 0.9
- _ShadingGradeRate: 1
- _SrcBlend: 1
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0.25, g: 0.25, b: 0.25, a: 1}
- _ShadeColor: {r: 0.966989, g: 0.9646432, b: 0.97435874, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1cb8d04e3dbb6fa4a9c72ed69dd39f91
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,104 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: N00_010_01_Onepiece_00_CLOTH_02 (Instance)
m_Shader: {fileID: 4800000, guid: 1a97144e4ad27a04aafd70f7b915cedb, type: 3}
m_ValidKeywords:
- MTOON_OUTLINE_COLOR_FIXED
- MTOON_OUTLINE_WIDTH_WORLD
- _ALPHATEST_ON
- _NORMALMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: a19d9a065953acc47b8a08eb2d1ac4b3, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 2800000, guid: 37d485fb3c77dec4e97d02654d5d0634, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 6260676f62ad32845bd83a0adbf6fd05, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineWidthTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ReceiveShadowTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RimTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadeTexture:
m_Texture: {fileID: 2800000, guid: 6260676f62ad32845bd83a0adbf6fd05, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShadingGradeTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SphereAdd:
m_Texture: {fileID: 2800000, guid: 5547de9e7ef01c34b9975cf613f5afcc, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UvAnimMaskTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaToMask: 1
- _BlendMode: 1
- _BumpScale: 1
- _CullMode: 0
- _Cutoff: 0.5
- _DebugMode: 0
- _DstBlend: 0
- _IndirectLightIntensity: 0.1
- _LightColorAttenuation: 0
- _MToonVersion: 39
- _OutlineColorMode: 0
- _OutlineCullMode: 1
- _OutlineLightingMix: 1
- _OutlineScaledMaxDistance: 1
- _OutlineWidth: 0.08
- _OutlineWidthMode: 1
- _ReceiveShadowRate: 1
- _RimFresnelPower: 100
- _RimLift: 0.1
- _RimLightingMix: 0
- _ShadeShift: 0
- _ShadeToony: 0.9
- _ShadingGradeRate: 1
- _SrcBlend: 1
- _UvAnimRotation: 0
- _UvAnimScrollX: 0
- _UvAnimScrollY: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OutlineColor: {r: 0.2745098, g: 0.090196066, b: 0.12549016, a: 1}
- _RimColor: {r: 0.25, g: 0.25, b: 0.25, a: 1}
- _ShadeColor: {r: 0.966989, g: 0.9646432, b: 0.97435874, a: 1}
m_BuildTextureStacks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4dbe20acdfbf7194d9aaed97acc8f1a1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6312660392a74324d88e05208fbebaaf
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More