Xlinka / NeosPlus

NeosVR Plugin Extra Logix nodes and features
https://discord.gg/9QAaMtXwke
Other
29 stars 18 forks source link

Web Surfaces #6

Open sirkitree opened 2 years ago

sirkitree commented 2 years ago

https://github.com/Neos-Metaverse/NeosPublic/issues/60

Xlinka commented 2 years ago

https://github.com/CefNet/CefNet maybe the use of this cross platform implementation might work. For a chromium embedded browser.

hazre commented 1 year ago

Probably should use the available WebView on the OS.

Xlinka commented 1 year ago

Probably should use the available WebView on the OS.

does Linux Support it plus to add onto this issue

only the simulating user on the component should be running the sandboxed browser and be able to interact with it. so this makes it just a texture for other users where they can see the website that is currently being shown. (maybe a bool to allow other users to interact)

hazre commented 1 year ago

Yes every OS has it's own WebView.

On Win 10/11 it's WebView2 (Chromium) On most Linux distro's it's WebKitGTK On MacOS it's just WebKit.

There is libraries like this can automatically find the suitable WebView depending on OS: https://github.com/tauri-apps/wry

About that other issue, yeah that could work depending how you're going to turn it into a texture and send it over.

Alternatively you can just sync the WebViews together with just a simple WebRTC data channel. You just send the updates. Like on clicks, on scroll, on page update and so on. And you can hook into media API if something like video is playing on the screen and sync that automatically too.

Xlinka commented 1 year ago

i keep coming back and looking at this issue as if its a challenge but the problem would be interaction and security so requisites

hazre commented 1 year ago

I've thought of about this more and the easiest way to do this is by streaming. The thing is syncing two or more webviews is too close to impossible, with weird artifacts, connection differences and etc. I think we should just do webrtc streaming and add a extra touch coordinates on top of it. So basically like a remote desktop and it would basically work like Neo's built-in desktop duplication. Only difference being that it's remote.

I guess this needs to something closer to audio streams than let's a video player technically speaking. But idk how webrtc and neos streams would work. Maybe the plugin adds a webrtc client and that can pipe into Neo's stream (like audio stream) to display it in world space.