New entity type: Web


#1

The latest release build contains a new entity type, Web based entities. These are 2D surfaces similar to text entities, but instead of displaying a string of text, they take a URL and will render the contents of that URL to the surface.

Bear in mind this feature is experimental (it’s on double secret probation). There are some bugs and caveats.

Currently, owing to my failing at SVG’s it’s not obvious how to add one. In the toolbar, when edit mode is on, there is now a mostly blank rectangle between Zone entities and Text entities. Click that blank ‘toolbar button’ and it will create a 1.6m x 0.9m Web entity in the scene (roughly equivalent to a 72 inch TV).

Right now the DPI of a web-entity is fixed at ~30, so the above size gives you almost exactly a 1920x1080 resolution for the web entity. Because the DPI is fixed, increasing or decreasing the size of the web entity will result in a corresponding change in the resolution. So don’t try to create the equivalent of an IMAX screen, or the app will try to create a rendering surface of billions of pixels and most likely fail.

You can modify the ‘source URL’ in the entity properties to change what the page displays. The source URL must be a fully qualified valid URL. google.com will not work, but http://google.com or https://google.com will.

The page is actually responsive to mouse clicks, but not to keyboard input, so no google searches, sorry. You could create a script that lets a user type something in and translates that into a URL and sets the entity property.

The mouse interaction is a little wonky, since mouse actions and up getting read by both the entity and the actual interface UI.

  • If the entity is locked, all mouse input is ignored
  • Clicking on links to navigate only modifies your local view of the web entity, not the entity properties and not anyone else’s view of the page.
  • Left clicking should act as expected allowing you to click on links and flick-scroll through content as if you were looking at a touchscreen device
  • Middle clicking on the page will tell it to go ‘home’, i.e. to whatever URL is associated with the entity via the properties
    Right clicking on the page will cause it to navigate backwards.
  • This will happen even if you’re just using the right mouse drag button to change your view and happen to have the cursor over the page when you release the button
  • If you right click when it’s on the starting URL, the page will navigate back to about:blank. Use the middle mouse button to get back ‘home’
  • Elements in the web page that would respond to dragging won’t work (most notably volume sliders)

Other known issues

  • We’ve identified some sort of race condition inside Qt that can sometimes cause the app to crash if you have a web entity in the scene, particularly if you are looking at one when you first load Interface.
  • Right now some pages seem to fail to load on OSX, such as Youtube video pages. They work correctly on Windows and anyone running a windows client will be able to see them, regardless of the platform on which they were created.
  • Any audio generated by the page is non-positional and non-attenuated. This is super annoying to me personally, but it’s not an easy thing to fix.
  • Shutting down the entity doesn’t always properly close the offscreen webpage. So if you delete an entity that’s playing audio it might continue to be audible.
  • Sites that depend on the user agent string to test if a given browser is compatible
  • Since there’s no keyboard input, any site requiring authentication will not function

#2

Awesome, this is so cool! Audio attenuation would be great. I guess a key issue would be regarding syncing if going through the audio mixer.


#3

Audio attenuation would be great.

I concur, but the audio is being handled strictly by the Qt browser subsystem. We don’t get a chance to intercept / modify it at all, hence no position / attenuation. Qt’s developers probably didn’t consider the need for positional 3D audio when designing their browser component. Supporting it would almost certainly mean digging deep into their codebase and making changes that wouldn’t be useful to Qt as a whole, meaning we’d need a custom build with a bunch of patches we’d have to maintain ourselves.

On the other hand there might be some sort of callback mechanism I’ve missed so I’ll keep looking into it.

I guess a key issue would be regarding syncing

Remember that the rendering of the window is purely local. There’s no attempt to sync the view of the web entity across clients. If you wanted some kind of synced display of content, you could in theory point the URL at a Twitch stream (or some other form of screencasting site) to which you could broadcast whatever content you wanted.

For instance, you could point the URL to a shared whiteboard style site, and then manipulate the whiteboard in a desktop browser or in the in-world local browser window.


#4

Web on a Prim! Much needed!
mc


#5

@Templar, I have never seen you here before. Although you have likely been around for ages!

So, have you come to Earth yet? :slight_smile:


#6

@Sterling​Wright
Hi Sorry for the hugely late reply… coming in the forum only once in a while to check things.
Yes been around some time in this field, so yes I have been one of the ones waiting for web on a prim back in the days… lol
take care
mc


#7

What is up with Web entities? Stuff that used to work for me no longer seems to work.

I can make a web entity and paste in a URL but clicking on stuff does not seem to function in the right way anymore. Sometimes it works… other times it doesn’t and when I try to zoom in it sometimes makes copy of the entity.

And the issue of audio persisting even when I leave the domain seems to be still an issue.

Am I missing something?


#9

This functionality seems to function for use on 2d monitors, but getting correct alignment in-HMD is tough.
Here is my results with 2d monitor and custom url:
https://alphas.highfidelity.io/t/random-picture-thread/244/3200


#10

There is a big bug in the interface app that fails to terminate URL connections from WEB entities when the avatar leaves the domain. There is another bug in interface that fails to spatialize the audio too, and yet another bug that fails to contain the audio inside audio zones. Big bugs need fixing soonest.