javascriptvrml

VRML run a script


I am playing around with VRML at the moment, not through choice to be honest but for a project on Web 3D.

I am trying to make a touch sensor in VRML that will show and hide a Div in a webpage. I have tried writing a wee script using

browser.loadURL('javascript:someFunction()');

to try and test this.

The javascript is never called, however I know my touch sensor is ok as certain functions I have tried to use (e.g. if i spell 'browser' wrong) it throws up an error.

Perhaps this is just not supported by modern browsers?

Any assistance and advice would be greatly appreciated.

    DEF alertScript Script {
    eventIn SFTime make_alert
    url [ "javascript:
    function make_alert (value) {
      Browser.loadURL('javascript:alert()');
    }
    " ]
}


ROUTE touchBack.touchTime TO alertScript.make_alert

Solution

  • Do they only want classic VRML or is X3D allowed ? (X3D is the name of the current version of VRML).

    If you are allowed to use X3D (I don't see why not), you could use X3DOM which is a WebGL engine, you may even get extra points on your assignment :)


    Here's an example that hides a div when you click on a 3D sphere:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Touchsensor in X3DOM</title>
    
        <link href="x3dom.css" rel="stylesheet" />
        <style>
        #myDiv {
            color: blue;
            margin: 20px 0;
        }
        x3d {
            display: block;
            width: 600px;
            height: 400px;
            background: #EEEEEE;
            border: none;
        }
        </style>
    </head>
    <body>
    
    
        <div id="myDiv">
            Click the sphere to hide this div
        </div>
    
        <x3d>
            <Scene>
                <Shape id="mySphere">
                    <Appearance>
                        <Material diffuseColor="0 1 0" />
                    </Appearance>
                    <Sphere/>
                </Shape>
            </Scene>
        </x3d>
    
    
        <script src="x3dom.js"></script>
        <script>
        (function() {
    
            document.getElementById('mySphere').onclick = function(){
                document.getElementById('myDiv').style.display = "none";
            };
    
        })();
        </script>
    
    
    </body>
    </html>
    

    And by the way, X3D is the recommended 3D technology by the HTML5 spec, it isn't dead at all :-)