In VRML, it is very easy to integrate someone else's objects into your world. Using the Inline node, you can specify a URL to another object located anywhere on the Internet. The following node will add a vase to your world:
Group { children [ Inline { url "http://www.vrml_lib.org/vase.wrl" } ] }
Fortunately, VRML provides a crude but serviceable way to interact with external objects and worlds. This entails use of PROTO and the EXTERNPROTO definitions. Basically, the PROTO statement defines variables that can be used to interface with the object. For instance, in my demo world, I used a PROTO statement to interact with my skylight object. The following code demonstrates use of the PROTO statement:
PROTO skylight [ EventIn SFBool set_transparency ] Group { ... }
This code specifies that the SFBool eventIn is an external variable than can be manipulated. Note that "skylight.wrl#skylight" tells VRML to find the set_transparency definition iin the skylight.wrl file inside the skylight PROTO statement. Using EXTERNPROTO and PROTO is clumsy compared to using #include statements in C or C++. However, as VRML worlds become more and more popular, it will become very important to be able to interact with objects created by a third party.EXTERNPROTO skylight [ eventIn SFBool set_transparency ] "skylight.wrl#skylight"