Okay, so basically, you need to programmatically control whether the window that houses the Unity application is visible on screen or not based on some event, and it should pop up automatically when this event occurs, i.e. the camera movement.
It’s possible to control the visibility of a window by accessing the OS-level window id (the HWND) of the Unity App and then setting its visibility depending on this event. This means you’re simply determining on the OS level whether to paint the window or not, including everything within it (Unity). The way this is done is with the Win32 API and some functions in User32.Dll which you access with the extern keyword. The functions you need are GetActiveWindow and ShowWindow, respectively:
HWND WINAPI GetActiveWindow(void);
BOOL WINAPI ShowWindow(In HWND hWnd, In int nCmdShow);
Don’t be alarmed by the weird data types. Those are just Win32 API versions of integers. A HWND is a handle to a window which is implemented in C# as a pointer to an integer, i.e. an IntPtr. Make a class to house these functions called “WindowControlNative.cs” or something like that, and declare that you wish to use the functions like this:
[DllImport("user32.dll")]
static extern IntPtr GetActiveWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
You call GetActiveWIndow first to obtain the handle to Unity’s OS window. You then pass the returned IntPtr to ShowWindow along with an integer that represents the command you wish to give it. See the list in the MSDN documentation I linked to for a thorough explanation. In short, though, hide and show would be 0 and 5, respectively, while maximize and minimize are 3 and 6. Experiment at your leisure.
The next task is to hook it up to this camera-hand-wave code you’ve got going on. I’m assuming you have a framework that triggers some kind of callback or event from this camera? In a handler for that event, you’d just call ShowWindow with your window handle and give it the integer command for Show or Maximize, depending on what behavior you want. I’m hoping this all makes sense? Let me know if you have more questions.
Edit:
I forgot mentioning that if your webcam code runs in sync with the Unity API and depends on its continuous updating to run, then you need to set Application.runInBackGround to true to make sure Unity is still invisibly rendering frames while the window is hidden.