private void UpdateDepthCues() { //List<GameObject> cuedObjs = m_sDM.SceneObjects; List <GameObject> cuedObjs = m_sDM.FocusedObjects; int numIter = cuedObjs.Count; //Vector3 visPos = m_FirstPersonCamera.transform.position; Vector3 visPos = m_focusCylinderCenterPos_noOffset; for (int i = 0; i < numIter; i++) { GameObject curr = cuedObjs[i]; Renderer currRenderer = curr.GetComponent <Renderer>(); float objVisDis = Vector3.Distance(curr.transform.position, visPos); if (objVisDis > m_sDM.FarDis) // far from far dis { FocusUtils.UpdateMaterialAlpha(currRenderer, FocusUtils.FarAlpha); } else if (objVisDis < m_sDM.FarDis && objVisDis > m_sDM.NearDis) // in between far and near dis { float alpha = FocusUtils.LinearMapReverse(objVisDis, m_sDM.NearDis, m_sDM.FarDis, FocusUtils.FarAlpha, FocusUtils.NearAlpha); // mapping from m_sDM.NearDis - m_sDM.FarDis to m_sDM.FarAlpha - 1.0f to // hand distance from obj is usually from 0.09 to 0.20 alpha += AddHandDistanceAlpha(curr, alpha); FocusUtils.UpdateMaterialAlpha(currRenderer, alpha); } else { FocusUtils.UpdateMaterialAlpha(currRenderer, FocusUtils.NearAlpha); } } }
private float AddHandDistanceAlpha(GameObject curr, float alpha) { float objHandDis = FocusUtils.FarHandDis; if (ActiveHandManager) { objHandDis = Vector3.Distance(ActiveHandTransform.position, curr.transform.position); } if (objHandDis > FocusUtils.FarHandDis) { objHandDis = FocusUtils.FarHandDis; } return(FocusUtils.LinearMapReverse(objHandDis, FocusUtils.NearHandDis, FocusUtils.FarHandDis, 0.0f, FocusUtils.NearAlpha - alpha)); // add hand distance into consideration }