Release Notes for
Cosmo Player 1.0 Beta3a
for Windows95 and WindowsNT

These Release Notes describe the 1.0 Beta3a Release of Cosmo Player for Windows95 and WindowsNT. The following sections are included:

  1. Legal Notices
  2. Differences Between Beta3 and Beta3a
  3. Differences Between Beta2a and Beta3
  4. What's Included in This Release
  5. Recommended Hardware Configuration
  6. Online Help
  7. VRML 2.0 Support
  8. Known Bugs and Limitations
  9. Reporting Bugs
  10. Software Updates

For the latest version of the Cosmo Player 1.0 Beta3a Release Notes, see the vrml.sgi.com web site.


1. Legal Notices

Software License Agreement

1. Grant Of Limited License; Software Use Restrictions. In consideration for your acceptance of the terms and conditions of this Agreement, SGI will grant to you a personal, non-transferable and non-exclusive right to use and execute the Software on a single personal computer (a “"PC"”), without right to sublicense or distribute the Software (except as provided in Section 3 below). Under no circumstance may you store, use or allow the use of the Software in any manner on more than one PC at one time. You agree that you will not modify, reverse engineer, decompile or disassemble any portion of the Software.

2. Duplication Restrictions. In order to effect your license rights hereunder, you may install the Software by duplicating it onto the hard disk drive or into the CPU memory of a PC for use thereon, and you may make full or partial copies of the Software, but only as necessary for backup or archival purposes or for purposes of distribution pursuant to Section 3 below. You agree that (i) your use and possession of such copies shall be solely under the terms and conditions of this Agreement, and (ii) you shall place the same proprietary and copyright notices and legends on all such copies as included by SGI on any media containing an authorized copy of the Software originally provided by SGI.

3. Distribution of the Software to Others. You may duplicate and distribute copies of the Software to others, or allow copies of the Software to be made by someone else, provided that all of such copies include (i) the entire installation package as originally provided for the Software by SGI, and (ii) a copy of this License Agreement.

4. Ownership of Software. You agree and acknowledge that SGI transfers no ownership interest in the Software, in the intellectual property in any Software or in any Software copy, to you under this Agreement or otherwise, and that SGI and its licensors reserve all rights not expressly granted to you hereunder.

5. Transfer Restrictions. This license is personal to you. Except as expressly provided in Section 3 above, you may not transfer the Software and/or assign this License to any third party. If you attempt to transfer or assign this License, such transfer or assignment will be void and without effect.

6. Export Restrictions. You may not export or reexport any Software or other technology received under this Agreement except in full compliance with all United States and other applicable laws and regulations. In particular, none of such Software or technology may be exported or reexported into (or to a national or resident of) any country to which the U.S. embargoes goods, or to anyone on the U.S. Treasury Department's list of Specially Designated Nationals or the U.S. Commerce Department's Table of Denial Orders.

7. Term; Termination. The term of this Agreement shall commence when you electronically download or receive (if SGI delivers the Software to you by email or alternative means) and shall continue thereafter. If you fail to fulfill any of your material obligations under this Agreement, SGI and/or its licensors may pursue all available legal remedies to enforce this Agreement, and SGI may, at any time after your default of this Agreement, terminate this Agreement and all licenses and rights granted to you under this Agreement. You agree that SGI’'s licensors referenced in the Software are third-party beneficiaries of this Agreement, and may enforce this Agreement as it relates to their intellectual property. You further agree that, if SGI terminates this Agreement for your default, you will, within thirty (30) days after any such termination, deliver to SGI or render unusable all Software originally provided to you hereunder and any copies thereof embodied in any medium.

8. Governing Law. This Agreement shall be governed by and interpreted in accordance with the laws of the State of California, excluding its choice of law rules.

U. S. GOVERNMENT USERS. If the Software is acquired by or on behalf of an entity of government of the United States of America, the following provision applies: U. S. GOVERNMENT RESTRICTED RIGHTS LEGEND Use, duplication or disclosure of Software by the Government is subject to restrictions as set forth in FAR 52.227-19(c)(2) or subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or in similar or successor clauses in the FAR, or the DOD or NASA FAR Supplement. Unpublished- rights reserved under the Copyright Laws of the United States. Contractor/manufacturer is SILICON GRAPHICS, INC., 2011 N. Shoreline Blvd., Mountain View, CA 94039- 7311.

9. Disclaimer Of Software Warranty. SGI PROVIDES THE SOFTWARE TO YOU “"AS IS"” AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, STATUTORY, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR INFRINGEMENT. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN TO YOU BY ANY SGI EMPLOYEE, REPRESENTATIVE OR DISTRIBUTOR WILL CREATE A WARRANTY FOR THE SOFTWARE, AND YOU MAY NOT RELY ON ANY SUCH INFORMATION OR ADVICE.

10. Limitation Of Liability. IN NO EVENT SHALL SGI OR IT LICENSORS BE LIABLE TO YOU FOR ANY SPECIAL, CONSEQUENTIAL, INCIDENTAL OR INDIRECT DAMAGES OF ANY KIND (INCLUDING WITHOUT LIMITATION THE COST OF COVER, DAMAGES ARISING FROM LOSS OF DATA, USE, PROFITS OR GOODWILL, OR PROPERTY DAMAGE), WHETHER OR NOT SGI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY ARISING OUT OF THIS AGREEMENT. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY. 05/31/96

Other Copyright Notices


2. Differences Between Beta3 and Beta3a

New features and bug fixes in Cosmo Player 1.0 Beta3a include the following:

3. Differences Between Beta2a and Beta3

Features and bug fixes in Cosmo Player 1.0 Beta3 include the following:


3. What's Included in This Release

The 1.0 Beta3a release of Cosmo Player includes:


4. Recommended Hardware Configuration

To run Cosmo Player, the following configuration is recommended (but not required):


5. Online Help

The Help menu in Cosmo Player (Right Mouse->Help->Help Topics) will take you to the online help pages on the SGI Cosmo Player web site. You can also view the Help pages without using Cosmo Player by going straight to http://www.sgi.com/Products/SGIHelp_Hub/CosmoPlayer .


6. VRML 2.0 Support

The 1.0 Beta3a release of Cosmo Player supports most, but not all, of the Moving Worlds VRML 2.0 specification. It is compliant with the syntax and semantics of the final version of the spec (as posted on 8/4/96).

VRML 2.0 nodes supported:

VRML 2.0 nodes not yet supported:

The following nodes will be read in by Cosmo Player, but will not have any affect on the rendered scene.

More details on the Script Node:

The Script node supports Java and the VrmlScript scripting language (http://vrml.sgi.com/moving-worlds/spec/vrmlscript.html).

The Script node will use the first recognized string in the url MFString field. Currently the following url string types are recognized by Cosmo Player :

Example (VrmlScript) :

#VRML V2.0 utf8

Viewpoint {
    description "Entry View"
    position 0 0 1.0 
}

Transform { 
    children [
        DEF TIME1 TimeSensor { cycleInterval 2 }
        DEF INTERP1 PositionInterpolator {
            key [ 0.0 0.5 1.0 ]
            keyValue [ .15 .15 0 .15 -.15 0 .15 .15 0]
        }
        DEF T1 Transform { # First dropper:
            translation .15 .15 0
            children [
                Shape {
                    appearance 
                        Appearance { 
                            material 
                                Material { diffuseColor 1 1 0 } }
                    geometry 
                        DEF SQ IndexedFaceSet {
                            coord 
                                Coordinate { point [ .05  .05 0,
                                                    -.05  .05 0,
                                                    -.05 -.05 0,
                                                     .05 -.05 0 ] 
                                }
                            coordIndex [ 0 1 2 3 -1 ]
                        }
                }
            ]
        }
        DEF TIME2 TimeSensor { cycleInterval 2 }
        DEF INTERP2 PositionInterpolator {
            key [ 0.0 0.5 1.0 ]
            keyValue [ 0 .15 0 0 -.15 0 0 .15 0]
        }
        DEF T2 Transform { # Second dropper
            translation 0 .15 0
            children [
                Shape {
                    appearance 
                        Appearance { 
                            material 
                                Material { diffuseColor 0 1 1 } 
                        }
                    geometry USE SQ
                } 
            ]
        }
        Transform { # "Go" button
            translation -.15 -.15 0
            children [
                DEF GO TouchSensor { }
                Shape {
                    appearance 
                        Appearance { 
                            material 
                                Material { diffuseColor 0 0 1 } 
                        }
                    geometry USE SQ
                }
            ]
        }
        Transform { # Enabler
            translation -.15 .15 0
            children [
                DEF ONOFF TouchSensor { }
                DEF SWITCH Switch {
                    whichChoice 0
                    choice [
                        Shape {
                            appearance 
                                Appearance { 
                                    material 
                                        Material { diffuseColor 0 1 0 } 
                                }
                            geometry USE SQ
                        }
                        Shape {
                            appearance 
                                Appearance { 
                                    material 
                                        Material { diffuseColor 1 0 0 } 
                                }
                            geometry 
                                IndexedFaceSet {
                                    coord 
                                        Coordinate { point [ .05  0  0,
                                                              0  .05 0,
                                                            -.05  0  0,
                                                              0 -.05 0 ] 
                                    }
                                    coordIndex [ 0 1 2 3 -1 ]
                                }
                        }
                    ]
                }
            ]
        }
    ]
}

DEF JUMPY Script {
    eventIn SFFloat smooth_in
    eventOut SFFloat jumpy_out

    url "vrmlscript:
            function smooth_in(t) {
                step = (t*10) % 10;
                jumpy_out = step/10.0;
            }"
}

DEF SCRIPT Script {
    eventIn SFTime toggleActive
    eventIn SFTime clicked
    eventOut SFTime start1
    eventOut SFTime start2
    eventOut SFInt32 isActive
    field SFBool on FALSE

    url "vrmlscript:
            function initialize() {
                start1 = 0;
                start2 = 0;
                isActive = FALSE;
            }

            function toggleActive() {
                if (on) on = 0;
                else on = 1;
                isActive = on;
            }

            function clicked(time) {
                if (on == 0) return;
                start1 = time+.5;
                start2 = time+1.1;
            }"
}

ROUTE TIME1.fraction_changed TO JUMPY.smooth_in
ROUTE JUMPY.jumpy_out TO INTERP1.set_fraction
ROUTE INTERP1.value_changed TO T1.translation
ROUTE TIME2.fraction_changed TO INTERP2.set_fraction
ROUTE INTERP2.value_changed TO T2.translation
ROUTE ONOFF.touchTime TO SCRIPT.toggleActive
ROUTE SCRIPT.isActive TO SWITCH.set_whichChoice
ROUTE GO.touchTime TO SCRIPT.clicked
ROUTE SCRIPT.start1 TO TIME1.startTime
ROUTE SCRIPT.start2 TO TIME2.startTime

Example (Java)

(sample.wrl)

#VRML V2.0 utf8
WorldInfo{
    title "script test world, click to start/stop"
}
DEF LightSwitch Script{
    url "OnOffSwitch.class"
    eventIn SFTime touchTime
    eventOut SFTime startTime
    eventOut SFTime stopTime
    field SFBool onoffstate FALSE
}
DEF Timer TimeSensor{
    cycleInterval 2
    loop TRUE
}
DEF Roll OrientationInterpolator{
    key [0, .25, .50, 0.75, 1.0]
    keyValue [0 1 1 0, 0 1 1 1.570795, 0 1 1 3.14159, 0 1 1 4.712385, 0 1 1 6.28318]
}

DEF CubeSpin Transform{
    children[
       DEF Clickit TouchSensor{}
       DEF CubeShape
       Shape{
           geometry Box {}
       }
    ]
    rotation 0 0 0 0 
}

ROUTE Clickit.touchTime TO LightSwitch.touchTime
ROUTE Timer.fraction_changed TO Roll.set_fraction
ROUTE Roll.value_changed TO CubeSpin.set_rotation
ROUTE LightSwitch.startTime TO Timer.startTime
ROUTE LightSwitch.stopTime TO Timer.stopTime

(OnOffSwitch.java)


import vrml.*;
import vrml.node.*;
import vrml.field.*;


public class OnOffSwitch extends Script{
    public SFTime touchTime;
    public SFTime startTime;
    public SFTime stopTime;
    public SFBool onoffstate = new SFBool(false);

    public void initialize(){
        onoffstate = (SFBool) getField("onoffstate");
        startTime= (SFTime) getEventOut("startTime");
        stopTime=(SFTime) getEventOut("stopTime");
    }

    public void processEvent(Event e) {
        ConstSFTime tTime=(ConstSFTime) e.getValue();
        if (onoffstate.getValue()==false) {
            startTime.setValue(tTime);
        }
        else {
            stopTime.setValue(tTime);
        }
        if (onoffstate.getValue()==true) {
            onoffstate.setValue(false);
        }
        else{
            onoffstate.setValue(true);
        }
    }
}

7. Known Bugs and Limitations


8. Reporting Bugs

Cosmo Player 1.0 is free, unsupported software. However, if you find bugs, or have other comments about the software, you can report them to the Cosmo Player development team by using the feedback form on the SGI Cosmo Player web site or by sending mail to cosmoplayerbugs@sgi.com.

The newsgroup news://vrml.sgi.com/sgi.cosmoplayer is also available for general questions and discussions on Cosmo Player. Note, this newsgroup is not a general Usenet group. Use Netscape Navigator or the MS newsreader to read and post to this newsgroup.


9. Software Updates

You can download the latest version of the software from the SGI Cosmo Player web site. If you already have the latest software, you can also register to be notified the next time a new version is released.