Hi,
I’m experiencing an issue when placing new CameraActors in my scene when I have my SimpleHMD derived plugin enabled, basically after I have dragged the actor into the scene, I can no longer reposition/rotate it in the viewport, the camera mesh and the viewport preview remain locked, although the details panel transform values update correctly. I have checked this in 4.11 also with a blank project and this problem occurs without fail. Any idea what could be the issue?
Thanks,
Hello ,
I was unable to reproduce this issue on our end. I have a couple of questions for you that will help narrow down what issue it is that you are experiencing.
Quick questions:
- Could you provide a detailed list of steps to reproduce this issue on our end?
- Are there any other changes that you may have made to the project to get these results?
Hi Rudy,
There isn’t a lot to it, I create a new c++ project then add my overridden plugins folder to my project, refresh the project files then build and run the code.
After enabling my overridden plugin and disabling the built-in simpleHMD plugin and restarting, I get this issue, each time I reload the project as long as I have the CameraActor already in my scene it behaves okay, but if I delete it and then add a new Actor, it stops working.
I followed this tutorial to override the plugin.
I could send through my plugin code if necessary?
If you would like to provide your code so that I could take a closer look that could help narrow things down. Did you make any other changes to the code (other than what was stated in the tutorial)? If so, could you be sure to mention them if/when you provide the code for the plugin?
Hi Rudy,
I’ve attached my code to look at, I have modified the following from the example:
Customised the naming of the classes
Modified the GetStereoProjectionMatrix() function
Added some stereo manipulation functions (eye separation / focal length getters/setters)
Thankslink text.
Hi ,
I did some testing today with the plugin code that you provided. When I added your plugin to a new code project, I did see some strange behavior when adding a CameraActor to the scene. In my case, when I dropped a new CameraActor into the scene, I saw a momentary freeze in the Editor when an Ensure was triggered, and the visual camera model disappeared. The widget remained present though, and I was able to move and rotate the CameraActor. The preview window was also black except for when I was moving/rotating the camera.
Are you using a custom CameraActor in your project?
Hi ,
No, I get this issue with a blank project, not exactly the same issue as you see but I get issues with the camera preview also. A new CameraActor snaps to the floor when dragged in, I can see the camera widget mesh and axes fine, however if I then try to drag the CameraActor around, the axes move but the camera widget mesh doesn’t, the preview window flickers black whilst moving but shows the original viewpoint when I stop, no matter where I drag the actor to, rotation doesn’t work either.
Regards, Sticky.
Hi Sticky,
I have been trying to recreate your plugin from scratch, and I noticed a difference in your plugin code that, when I copied it over into my plugin, immediately caused the same behavior to start occurring again. When I removed the change from your plugin and reverted it to what the original plugin had, the odd Camera Actor behavior went away. Could you try doing this on your end and see if it clears up the behavior you are seeing as well?
This:
bool WB3DStereo::UpdatePlayerCamera(FQuat& CurrentOrientation, FVector& CurrentPosition)
{
return true;
}
should be changed to:
bool WB3DStereo::UpdatePlayerCamera(FQuat& CurrentOrientation, FVector& CurrentPosition)
{
return false;
}
Please let me know what results you see when you make that change.
Hi ,
Thanks for this, that does indeed seem to fix the problem!
Thanks, Sticky.
Hi Sticky,
Glad to hear that it seems to have helped resolve the issue for you. This function is apparently intended to have some functionality, and the sample plugin simply returns false here. It shouldn’t be necessary to provide an implementation here, but if you decide to do so I would recommend familiarizing yourself with where this is being called from to determine what is done with the results of the return value.