Hidden layer that's not meant to show per culling mask... still shows inverted ghost in headset
In our SteamVR/ Unity 5.4/ Vive app, we have heads people can put on. In order to let them see through the head (but still have it react to physics, and be viewed in a special mirror) these head objects change to the layer mask "invisibleToOurPerson" when put on. That layer "invisibleToOurPerson" now is not ticked for the camera. All works seemingly fine, except in one place in the scene, if viewed from a specific direction, one can now see a "3d inverted" type of ghost of the supposedly invisible head appear (like its inside out). That head is not showing in the PC mirror display. The gameTree objects and cameras all show the right layers and culling masks.
Can anyone help? Thanks!!
Answer by JPhilipp · Feb 14, 2017 at 10:39 AM
We found the issue now. It was the SteamVR [Status] prefab, which for some reason also had its camera set to a wrong culling mask, and we removed that prefab now altogether.
In case it's of use to anyone, we started the debugging process by listing all cameras anywhere in the scene using this:
void ListAllCameras() {
GameObject[] allObjects = UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects();
foreach (GameObject thisObject in allObjects) {
Component[] components = thisObject.GetComponentsInChildren( typeof(Camera), true );
if (components.Length >= 1) {
Log.Debug("found " + components.Length + " camera(s) in " + thisObject.name + ":");
foreach (Component component in components) {
Log.Debug(component);
}
}
}
}