Guide To Protect Your VRML Content With ExitReality


This protection is not so easy. Seems you have to embed the proto in every file you make, unless you use robots.txt. This is a big disturbance for authors. In ER's website there's a form to submit content, what makes me think that the crawler no longer adds content without permission. I am in conversation with ER to know if this has changed, and what we must do.

You can decide if ExitReality will index your worlds in their search engine or not, and if you want to allow all people embed your works in their pages or not.
This way, ExitReality offers a good set of tools to decide and control the use of your VRML worlds.
The following tutorial is presented for educational purposes only, and no warranties are made as to its accuracy or reliability.


The first thing you must do is to fill the WorldInfo node of your files. For example:
WorldInfo {
title "Michael's World!"
info [ "Copyright (c) by Michael Myers",
"World is best viewed with the headlight turned on..."

Search Engine Rights

If you choose to not allow anything being indexed by ExitReality, then do the following.
Just create a file in your main url that is called robots.txt, with these contents (or if you already have that file, add these lines):
User-agent: ExitRealitySearchAgent
Disallow: /

Embedding (Distribution) Rights

Now, to avoid people from other websites to embed your worlds, add a VRML file named EmbeddingManager.wrl
#VRML V2.0 utf8

# EmbeddingManager
# Enables the content author to restrict embedding of or deep linking to their content
# (via Inline or createVrmlFromURL) to one or more allowed/authorised URLs.

PROTO EmbeddingManager [
field MFString allowedUrls []
field MFNode allowedContent []
field MFNode deniedContent []
DEF contentSwitch Switch {
whichChoice 0
choice [
Group {
children IS deniedContent
Group {
children IS allowedContent

Script {
field MFString allowedUrls IS allowedUrls
field SFNode contentSwitch USE contentSwitch

directOutput TRUE
mustEvaluate TRUE

url "javascript:

function initialize() {

var worldUrl = Browser.getWorldURL();

var allowed = false;
for (var i = 0; i < allowedUrls.length; i++) {
if (worldUrl == allowedUrls[i]) {
allowed = true;

contentSwitch.whichChoice = allowed ? 1 : 0;
And the best is that you don't have to allow everything to be embedded or not, you can allow only some files. Read:
For example, let's say that you want to allow embedding your main scene file, but not the models in inlined files. You can do that using this PROTO.

-Jordi R. Cardona-

© by Jordi R. Cardona. Link to this post without copying the text.

If you liked this post, get updates of Hiperia3D News for FREE

Be the first to comment!

Post a Comment