BLUI Open Source HTML5/JS/CSS HUD/UI

[QUOTE=;391671]
Oh wow, that’s an interesting bug. I’ll be testing that now

EDIT: Are you using this on the HUD or as an Actor in the world?

Its an actor in the world.

I did notice that sometimes the windows appear when a website loads up new links. The most recent time it did it, it had loaded up the audio portion of YouTube interview clip in the background. I spent ages trying to find where the loud talking was coming from. Eventually had to reboot before it’d go away!

[QUOTE=Crow87;391713]
Its an actor in the world.

I did notice that sometimes the windows appear when a website loads up new links. The most recent time it did it, it had loaded up the audio portion of YouTube interview clip in the background. I spent ages trying to find where the loud talking was coming from. Eventually had to reboot before it’d go away!

If link targets are set to open in a new window, they will do just that. So any site that wants to open a new window Chromium will do just that.
The audio issue is something I’m trying to nail down. The reason the audio was still playing was because of the multi-process architecture of Chromium, when audio plays, it plays in another process. That process isn’t getting closed when you stop simulating in editor for some reason.

If that happens, use task manager to kill any blu_ue4_process.exe items you see.

Investigating possible fixes for this.

This plugin is great! Had a small time putting it together, but that was only because of my unfamiliarity of working with UE4 projects.
Ever since I added another class project of type C# to the solution and try to build the solution I get the following error

Error 1 error : Unable to instantiate instance of ‘Blu’ object type from compiled assembly ‘SKURGEModuleRules’. Unreal Build Tool creates an instance of your module’s ‘Rules’ object in order to find out about your module’s requirements. The CLR exception details may provide more information: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> UnrealBuildTool.BuildException: ERROR: BLUI: Platform not supported …\Documents\Unreal Projects\SKURGE\Intermediate\ProjectFiles\EXEC SKURGE

Does Blu plugin or does UE4 private plugins not support multiple project solutions? Is there a way I can tell the UE4 Build tool to what compile what first and last?

Thanks,

[QUOTE=coden4fun;391740]
This plugin is great! Had a small time putting it together, but that was only because of my unfamiliarity of working with UE4 projects.
Ever since I added another class project of type C# to the solution and try to build the solution I get the following error

Error 1 error : Unable to instantiate instance of ‘Blu’ object type from compiled assembly ‘SKURGEModuleRules’. Unreal Build Tool creates an instance of your module’s ‘Rules’ object in order to find out about your module’s requirements. The CLR exception details may provide more information: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> UnrealBuildTool.BuildException: ERROR: BLUI: Platform not supported …\Documents\Unreal Projects\SKURGE\Intermediate\ProjectFiles\EXEC SKURGE

Does Blu plugin or does UE4 private plugins not support multiple project solutions? Is there a way I can tell the UE4 Build tool to what compile what first and last?

Thanks,

Are you adding a project to the generated UE4 solution?

Yes, I am after I have generated and built it and have received a successful build message once. I’m adding a C# class project to the solution after 1 successful build.

[QUOTE=coden4fun;391897]
Yes, I am after I have generated and built it and have received a successful build message once. I’m adding a C# class project to the solution after 1 successful build.

I would advise not adding a project to the UE4 solution, regenerating will wipe out your custom project every time.

so you advice a separate solution for the C# library and just reference it without it being in the solution?

I separated my HTML5 and UE4 solutions. I suggest you do the same.

Well the time has come and I can publicly post. I know I’ve chatted with you in private but our team finally made the switch announcement that STExcalibur will be utilizing Unreal. , thank you so very much for this plugin, without it, I’d be up creek without a paddle or having to shell out lots of money.

So far working with BLUI I’ve been able to get the HUD to auto resize so the HUD acts like a normal responsive webview rendering the UI always at the same pixel resolution as the screen/window itself. Click events are about 80% complete, still working on a couple things. Have HUD and inworld UI being rendered so without much else, a couple quick questions. No mind everyone I’m rather new to Unreal, I’m mainly just a front end person and has said he is busy so if anyone is able to answer, please do!

  1. Does every render create another instance of CEF? As we build out internal views, a single star trek bridge has 20-30 different screen displays at one time so was wondering how the plugin handles a multitude of them

  2. Inworld UI, say just the display widget, transparent, etc…is jerky when walking around it. Now I’ve ready that this seems to be a part of the motion blur and is a global thing. Even disabled, there is still some light twitching of the hovering UI in the scene. Just wondering if there is something I’m missing in a setting with Unreal or if it something to do with how the UI is rendered.

  3. CSS Filters kill the system if used more than one render (using dropshadow). If just on the HUD, no lag. If just on a single view in the world, no lag. Add css filter to both, the whole thing just dies.

  4. Muddy inworld renders. This is probably a Unreal thing I don’t quite understand and not BLUI itself. I’ve looked at other Trek projects and their image textures for consoles and the images are big, much bigger than any normal UI would make with my LCARS SDK. I attempted to increase the drawsize of the display widget and use the resize function but anything over 1920x1080 for a draw size on the display widget and it lags the editor/game like to almost nothing.

  5. Single API blueprint. I do not know anything about C++ and i’m not having much luck with casting. I’m trying to create a single blueprint in which to keep the UI/Engine API communications layer that the HUD widget or the display widget could cast to so we don’t have to duplicate the API layer into both widget blueprints. Am I crazy, is this possible? Coming from Javascript/Python where one can simply import the file and use any of the variables/functions, this casting is driving me crazy.

I’ve attached some screenshots below for viewing.

Oh and last thing, this one is for . The blueprint below for the blu_event, would you be able to make a node that does the same thing as the timer, just minus the timer part? The passthrough works perfectly and the timer works fine for prototyping but hoping maybe we can have an official node. I’d try to do it myself but alas that C++ is above my coding grade.

,

I am using blueprints for the project. I also have the released version of 4.9 not the c++ build. No problem for the late reply I have been down for a little while any way. Thank you for any help you are able to provide.

Hello ! First - huge thanks for making this plugin!

But I am not exactly pro-master-scripter, so I have two questions:

  1. Is there a way to create custom mouse, or something, that can cast mouse action for 3D BLUI at the center of the screen? (well, if it is not too difficult, that is…)

  2. Can there be added compatability for three.js? It is a custom JavaScript 3D library.

Evening there!

Since I asked questions I thought it would be appropriate to negate them since I figured a couple of them out. lol Single blueprint so that our API can exist in a singular spot and the muddy renderings. It seems that because of my learning nature here with unreal, while the webview would be rendering at 1920x1080 and the UI would be there, the draw size, which I lowered to 96x54 so the inworld sizing would be in line with the main actor was causing the muddy. I had to scale down instead of lowering the draw size. lol

It isn’t as clear as using a screenshot of the same UI as a material for comparison but it is good enough and I’d wager will get better with time.

Closing Brower crash (again.)

Hi .

I haven’t replied and thank you to the last fix you posted on CloseBrowser(), doing other stuff.

However I’m still having trouble with it on another level, where it crashes with 4.9.2. in


void FSlateUTextureResource::UpdateRenderResource(FTexture* InFTexture)

For this example, I’m using your BLUI Demo room and I’ve added a simple browser closing procedure in the level Blueprint.

I believe "Unbinding All Events … " was the critical aspect that you suggested on another post to avoid problems with closing but I’m still experiencing those crashes.

There’s maybe something missing here. If you have any idea, feel free to suggest them.
Again, thanks.

,

What would be the quickest way for us to test console support? We have both dev kits here and are more than willing to help you port this to them depending on the workload.

[QUOTE=overlawled;399822]
,

What would be the quickest way for us to test console support? We have both dev kits here and are more than willing to help you port this to them depending on the workload.

Greetings!

That’s very kind of you to offer!

Unfortunately I think workload would be too much to handle (especially during my college terms), because I don’t think porting over CEF would be very realistic, as it would also require Chromium to be ported.
The solution would be to build a version of WebKit and write custom “glue” between that and the plugin. Basically replacing the CEF/Chromium backend in favor of WebKit.

Coherent UI already has a major jump on this market anyways.

Thanks again!

Hey , I want to thank you for your hard work put into this plugin, it’s going to and probably has already helped developers make some pretty fancy menus.

I have a small issue, well it’s not really an issue but more a user problem :stuck_out_tongue: The canvas that’s rendered to my screen is really stretched. I have tried to manually set the width and height of the canvas however that distorts (either stretches or squashes) the canvas. Is there any way we can have the canvas element allow a ‘responsive’ view?

Edit: A little more information: Even though my canvas is rendering at say 600x800, the mouse move event still thinks my cursor is on a 1920x1080 resolution. So buttons in the center of the screen work however the mouse’s virtual position gets more and more offset the further I go from the center.

@Aricwithana

Sorry for such a late reply. I’m deep in my college semester right now, it’s hard to be in many places at once.

I’ll try to answer your questions one by one:

  1. Each render is its own “browser.” It handles it the same way Chrome/Chromium handles multiple tabs. Each one have a render process, a browser process, any plugins have their own process etc.
    That is mostly for security, as everything is sandboxed. This is innate to chromium’s multiprocess architecture, and single process browsers are actually far less stable in CEF.

  2. BLUI only provides a pixel buffer which is translated onto a texture. You can adjust this texture any way you like, and even render it to a material instance. You don’t just need to use the built in WebUI blueprint. Or if you want even more access, the pixel buffer is freely available inside the C++ RenderHandler code.

  3. CSS filters are indeed a very heavy operation. Check inside BluManager.cpp and look for BluManager::CPURenderSettings; try switching that to false. You can also take a look at the switches in there to change performance etc.

  4. Again, this can relate to question 2 - Also the muddy renders tend to come from UE’s AA effect.

  5. Not sure what you’re trying to get at here, I may just be missing the obvious point. However, blueprints are like classes, each new instance is totally separate from each-other.

Lastly I will be looking into working on a better events system to avoid that timer hack.

Sorry for being missing for a while guys. Just been all over the place!

[QUOTE=Zinglish;400261]
Hey , I want to thank you for your hard work put into this plugin, it’s going to and probably has already helped developers make some pretty fancy menus.

I have a small issue, well it’s not really an issue but more a user problem :stuck_out_tongue: The canvas that’s rendered to my screen is really stretched. I have tried to manually set the width and height of the canvas however that distorts (either stretches or squashes) the canvas. Is there any way we can have the canvas element allow a ‘responsive’ view?

Hello, you also have to set the width and height of the actual browser. Take a look in the example HUD to find the Set Width and Set Height nodes. This is the actual “window” height of the rendering.
You can adjust your UMG canvas to match, and there should be no stretching. This is also a re-size function.

Take a look at the Blueprint nodes: https://github.com//BLUI/wiki/Documentation—BluEye-Nodes

[QUOTE=;400262]
@Aricwithana

Sorry for such a late reply. I’m deep in my college semester right now, it’s hard to be in many places at once.

I’ll try to answer your questions one by one:

  1. Each render is its own “browser.” It handles it the same way Chrome/Chromium handles multiple tabs. Each one have a render process, a browser process, any plugins have their own process etc.
    That is mostly for security, as everything is sandboxed. This is innate to chromium’s multiprocess architecture, and single process browsers are actually far less stable in CEF.

  2. BLUI only provides a pixel buffer which is translated onto a texture. You can adjust this texture any way you like, and even render it to a material instance. You don’t just need to use the built in WebUI blueprint. Or if you want even more access, the pixel buffer is freely available inside the C++ RenderHandler code.

  3. CSS filters are indeed a very heavy operation. Check inside BluManager.cpp and look for BluManager::CPURenderSettings; try switching that to false. You can also take a look at the switches in there to change performance etc.

  4. Again, this can relate to question 2 - Also the muddy renders tend to come from UE’s AA effect.

  5. Not sure what you’re trying to get at here, I may just be missing the obvious point. However, blueprints are like classes, each new instance is totally separate from each-other.

Lastly I will be looking into working on a better events system to avoid that timer hack.

Sorry for being missing for a while guys. Just been all over the place!

No worries at all! I’ve gotten pretty far at the moment and I know you are super busy. Single blueprint for HUD, display widget and texture/material rendering. Just working on finishing up the mouse and keyboard events and passthrough. Renders look and all is good on my end.

I did that trick in the BlueManager.cpp, I went a digging. That helped quite a bit but it is ok if I don’t have CSS filters and keeping in-scene ui renders from using lots of 3D transforms. The HUD works great!

Thanks for the info for the browser process. That is what I was thinking but I wanted to make sure. I’ll let our main engine guy know about how the UI textures are handled in the RenderHandler incase he’d like to play with it at all. Cool on the timer node replacement also. I’d write something myself If I could write any C++, lol.

Lookin forward to future releases as they are able! As I am filling in active LCARS screens on a bridge model I have, so geeky. lol

Alright, I solved the stretching part (it’s still not responsive though, it’s maintaining its aspect ratio, anyway) however I still get the mouse issue, any ideas?