|

Cosmo Player 2.1 (and 2.0) FAQ for Windows 95 and NT
Last updated May 29, 1998
This is the Frequently Asked Questions list for Cosmo
Player 2.x.
General Information
What is Cosmo Player?
Cosmo Player is the VRML browser from Cosmo Software. Cosmo
Player runs in your web browser as a plug-in, and lets you navigate and
manipulate 3D worlds and objects created using the VRML97 language.
VRML stands for "Virtual Reality Modeling Language," and is a file
format for describing interactive 3D objects and worlds. It's used for
a wide variety of applications such as engineering and scientific visualization,
multimedia presentations, entertainment and educational titles, web pages,
and shared virtual worlds.
The current revision of the VRML standard is called
VRML97 (its official name is "International Standard
ISO/IEC 14772-1:1997"). The full specification is available at
http://www.vrml.org/Specifications/VRML97.
VRML97 was known as "VRML 2.0" while
it was a draft international standard; "VRML 1.0" is
a much older version of the standard, which could only
describe static, non-interactive worlds. Cosmo Player displays
VRML 1.0 worlds by internally converting them to VRML97 format.
What is Cosmo Player 2.1?
NEW: Cosmo Player 2.1 is the latest release of
Cosmo Player. Highlights of the 2.1 release are:
- The Macintosh version is available! (in prerelease; see below)
- Support for Direct3D hardware acceleration (based on
DirectX 5), on 16-bit-color systems running
Windows 95 (details below)
- Cosmo Player is now fully compliant with the VRML97 event
model, and now preloads scripts and EXTERNPROTOs to ensure
predictable behavior.
- Improved documentation
- Improved support for 8-bit displays
- Improved performance (especially startup speed, and
Javascript parsing and execution)
- New "Graphics" preferences panel for renderer selection
(see below; also, see the Cosmo
Player console for info about the current renderer.)
- Many bugs fixed (see below)
If you're currently running a beta version of Cosmo Player
2.1 (or 2.0 beta, for that matter), we STRONGLY encourage you to
update to the final 2.1 release. This FAQ does not contain
information about problems that were specific to certain beta
releases (but fixed in the final release.)
Where can I get it?
Download Cosmo Player 2.1 for free from www.cosmosoftware.com.
Where can I find the Release Notes?
Release Notes for the current versions of Cosmo Player
(for each supported platform) can be found on the Support Resources
page.
Or, if already have Cosmo Player 2.0 or 2.1 installed on
your machine, just click the dashboard
Help button ("?") and select "Release Notes" in the
upper or upper-left
frame of the Help page.
What platforms are supported?
Cosmo Player 2.0 and 2.1 run on PCs running Windows 95 or
Windows NT 4.0, with
either Netscape Navigator 3.01 or Communicator 4.0x, or Microsoft Internet
Explorer 4.0.
Hardware requirements are: 75 MHz Pentium or better processor; at least
16MB RAM (32MB recommended) and 14MB free hard disk space; SVGA/256 color
or better display (16-bit color is strongly recommended).
A SoundBlaster or compatible sound card is strongly recommended.
In preliminary testing, Cosmo Player 2.1 seems to work fine with
Windows 98 (but hasn't been fully tested on that platform yet.)
NEW: Cosmo Player 2.1 for the Macintosh is now available in a
pre-release version, and requires a PowerMac running MacOS
v7.6.1, 8.0, or 8.1, Netscape Navigator 4.04, at least 40 MB
DRAM (this release only), 15 MB allocated to Netscape, and at
least 20 MB disk space.
Where can I report bugs?
If you're running Cosmo Player 2.1 and are connected
to the web, just click the "Submit Feedback..." button on the
"Advanced" preferences panel. This button will bring up a web
page with information about your version of Cosmo Player
already filled in, ready for you to type in your feedback.
Where can I find cool VRML content?
All over the web! But a good place to start is in our 3D Gallery.
Can I redistribute Cosmo Player 2.x with/from my
not-for-profit/educational CD-ROM/web site?
We are very happy to have additional distribution channels of Cosmo
Player. All you need to do is fill out a simple redistribution license.
Please see the Cosmo Player License and Distribution Program for more information.
Can I redistribute Cosmo Player 2.x with my for-profit
VRML application/magazine
CD-ROM/ OEM graphics card/computer system?
Yes, with the appropriate software licensing agreement. Please see the Cosmo Player License and Distribution Program for more information.
Supported Platforms
When will the Mac version of Cosmo
Player be available?
NEWS FLASH: Cosmo Player 2.1 for the Macintosh is
now available in a pre-release version! System requirements
are a PowerMac running MacOS
v7.6.1, 8.0, or 8.1, Netscape Navigator 4.04, at least 40 MB
DRAM (this release only), 15 MB allocated to Netscape, and at
least 20 MB disk space.
Download it from www.cosmosoftware.com. See the release notes for more info.
How about IRIX?
The 1.1 release will be out "soon" as part of IRIX 6.5; this
release has some minor improvements and bug fixes over version
1.0.2 (which is currently shipping). We don't have any concrete
information yet on the status of Cosmo Player 2.x for IRIX.
We've also gotten lots of requests for a Linux player; there are no
plans for this in the immediate future, but it may become more
of a possibility as we get closer to releasing the IRIX version.
How about Windows 3.1?
Cosmo Player 2.x does not support Windows 3.1. However, the previous
release of Cosmo Player (version 1.0 Beta 5) is available for Windows
3.1; see www.cosmosoftware.com.
Can I run Cosmo Player 2.x with Internet Explorer 3.x?
IE3.x isn't officially supported, but Cosmo Player 2.0 and 2.1
are known to work with IE3.02, at least. You'll need to install
some extra software on your system before installing Cosmo Player,
though, including DCOM (for Windows 95) and the updated
Microsoft Java Virtual Machine. Both of these can be found on the Support Resources page.
Can I run Cosmo Player 2.x on a 16 bit version of Netscape?
16 bit browsers such as Netscape for AOL will not be able to run Cosmo
Player. You need a 32 bit browser.
Which video cards work best with Cosmo Player?
Most graphics cards which provide 3D acceleration and which have
either OpenGL or Direct3D drivers will increase the rendering
performance of Cosmo Player 2.1 on your system. (Cosmo Player
2.0 only supports OpenGL rendering, so your card must provide
OpenGL drivers in order to get hardware acceleration.)
See the section on Rendering and Graphics
Cards for more information, including a list of specific
cards known to work with Cosmo Player.
Installing/Uninstalling
How do I install Cosmo Player?
Download the software from www.cosmosoftware.com,
double-click on the downloaded file and follow the instructions given
by InstallShield. The installation will then proceed automatically. See
the Release Notes for installation
instructions with Netscape 4.5.
How do I uninstall Cosmo Player?
Use the "Add/Remove Programs" Control Panel to uninstall Cosmo Player.
To get to the Control Panel, hit the Start button on the taskbar, select
"Settings" -> "Control Panel" and double-click on "Add/Remove Programs". This
is the usual way to uninstall software under Windows 95 or Windows NT.
I get an error when installing Cosmo Player!
Here are a couple of problems people have run into during the installation
process:
- It says I'm out of disk space, but I have plenty of space free.
We've heard of this problem happening when there was an environment
variable set called "tmp". Try removing this variable (either in autoexec.bat
or in the System control panel) and reinstalling.
Or, if you're trying to install Cosmo Player 1.0, there was a known
"bogus disk space error" installation bug with that version. Please
update to Cosmo Player 2.1!
- I get an error like "An error occured during moving data process
: -115"
This usually means that one of the files that the installer is trying
to update is in use. This can happen if you try to install Cosmo Player
while your web browser is running! Make sure you quit your web browser
(and any other Windows applications) and then re-run the installer.
- I can't install Cosmo Player 2.x because it says I already have Cosmo
Player 1.0 installed.
This is true you can't have both versions installed on your system
at once. Just use the "Add/Remove Programs" Control Panel to uninstall
Cosmo Player 1.0. (Or, see the next question if you have problems removing
Cosmo Player 1.0.)
I get an error when UNinstalling Cosmo Player!
This can happen if your installation of Cosmo Player was accidentally
corrupted somehow. For example, you won't be able to uninstall if you
manually deleted the "uninstall logs" created during the installation process.
The easiest way to fix things is to reinstall the same version
of Cosmo Player that's already installed on your system. This will re-create
the "uninstall logs" and then you'll be able to safely uninstall the software.
If all else fails and you need to uninstall Cosmo Player 1.0 without
just reinstalling it first, here's how to manually remove it:
(WARNING: Manually editing the registry is dangerous! You should only
do this if you're comfortable using regedit.)
- Remove the file "npcosmop.dll" from your netscape plugins folder
(select "About Plugins" in Netscape to see the path to the plugins folder).
- Use "regedit" to delete the following key from your registry:
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CosmoV1
This will manually remove the Cosmo Player 1.0 entry from the "Add/Remove
Programs" Control Panel.)
More notes on uninstalling: Make sure you don't have any .wrl files
on your WinNT or Win95 desktop when uninstalling Cosmo Player! (The reason:
if .wrl files exist on the desktop, some of Cosmo Player's .dll's will be
kept open by Windows and will not be removed properly during the deinstall.
This causes failure of the deinstallation, and an error when a new version
of Cosmo Player is installed.)
And finally, on some systems with Internet Explorer 4.x, if you
try to uninstall Cosmo Player 2.1 (via the "Add/Remove Programs"
Control Panel) you can get an error saying "cp21_main.dll is in
use" even if you've already shut down IE. This happens because
closing all your IE windows doesn't really shut down IE;
there's still a process remaining which has Cosmo Player's DLL
open and which stays around as long as you're logged in! The solution
is to log out and log back in (or just reboot), and then immediately
uninstall Cosmo Player.
How can I tell which version of Cosmo Player 2.x I have installed?
Bring up the "Add/Remove Programs" Control panel, and find the entry
for Cosmo Player:
| If Add/Remove Programs says: |
You have: |
| "Cosmo Player 2.1 (38675)" |
Cosmo Player 2.1 (5/5/98) |
| "Cosmo Player 2.1b (35761)" |
Cosmo Player 2.1 beta (4/7/98) |
| "Cosmo Player 2.0 (27191)" |
Cosmo Player 2.0 (12/14/97) |
| "Cosmo Player 2.0 (26723)" |
Cosmo Player 2.0 "first MR" (12/9/97) |
| "Cosmo Player 2.0 Beta 2 (25626)" |
Cosmo Player 2.0 beta 2 (11/24/97) |
| Just "Cosmo Player 2.0" (with no build
number) |
Cosmo Player 2.0 beta 1, or an earlier
alpha! |
If you're using any version earlier than Cosmo Player 2.0
(27191), or any beta version, you should definitely upgrade
to Cosmo Player 2.1!
Where does the Netscape plugin get installed?
Note that all of this is transparent to the user during a typical
installation InstallShield automatically handles the plugin installation.
(In other words, you don't need to know any of this.)
The plugin is named npcosmop.dll. In Netscape Navigator 3.x,
this file is installed in the \Program Files\Netscape\Navigator\Program\Plugins
directory. In Netscape Communicator, it is installed in the \Program Files\Netscape\Communicator\Program\Plugins
directory. Removing the npcosmop.dll file will disable Cosmo
Player (however it will not uninstall the plugin see Installing/Uninstalling.)
You see your list of installed plugins by selecting "About Plugins"
from the Netscape Help menu. If you have Cosmo Player installed you'll
see the exact location of the npcosmop.dll file, and you should
also see the following MIME type information:
| Mime Type |
Description |
Suffixes |
Enabled |
| model/vrml |
VRML World |
wrl, wrz |
Yes |
| x-world/x-vrml |
VRML World |
wrl, wrz |
Yes |
You do not need to manually specify a "Helper Application" for
any of these MIME types.
I get a message that says I need to install "Microsoft DCOM for
Windows 95."
On some Windows 95 systems, you need to install DCOM (from
Microsoft) in order to use Cosmo Player with Internet Explorer or
with the Cosmo authoring tools. The Support Resources page
contains a link to the DCOM installer on Microsoft's web site;
please install it, and then reinstall Cosmo Player.
If you're using Cosmo Player only with Netscape, DCOM is not
really necessary (so you can ignore this warning, and continue
installing Cosmo Player.)
What additional software components can I install to improve the
Cosmo Player 2.x experience?
Here are some related software programs and packages that might be useful.
You can find links to these components and more info on the Support Resources page.
But note that none of these are required for Cosmo Player 2.x!
They're just recommended enhancements. (For example, DirectX 5.0 will
enable audio hardware acceleration on some platforms and better 3D audio
spatialization, and ActiveMovie will enable some extra audio/video
formats.) See the following table for more details.
DirectX 5.0
(Windows 95) |
provides realistic, spatialized
3D sound as well as hardware acceleration of sound via DirectSound3D .
Note that the link on the Utilities page points to an
ENGLISH version; international users need to go to
Microsoft's
DirectX download page for international versions of DirectX.
|
ActiveMovie 1.0
(Windows 95) |
provides additional support
for AVI, AIFF, and QuickTime. NOTE: If you already have Cosmo
Player 2.0 and you install ActiveMovie on your system, you'll
need to reinstall Cosmo Player (or, better, upgrade to Cosmo
Player 2.1!) |
DCOM 1.1
(Windows 95) |
On some Win95 systems,
you'll need to install DCOM in order to use Cosmo Player with
Internet Explorer or with the Cosmo authoring tools. |
Service Pack 3
(Windows NT 4.0) |
provides realistic, spatialized
3D sound as well as hardware acceleration of sound via DirectSound3D.
Provides additional support for AVI, AIFF, and QuickTime. |
Patch for Service Pack 3
(Windows NT 4.0) |
MSIE or Netscape Communicator
may lock up when loading a Web page that contains a Java applet
or a VRML world, on systems where the Display
Color Palette is set to "True Color".
See below for more information. |
OglPanel
(Windows 95/NT) |
If you have Cosmo
Player 2.0, this program allows you to enable or disable
hardware OpenGL acceleration. (If you have Cosmo Player 2.1,
you don't need OglPanel! Just use the "Graphics" preferences
panel instead.) |
Rendering and Graphics Cards
General info
The renderer is the software module that Cosmo Player uses to
display the 3D image of a VRML scene on your screen. Cosmo Player
2.1 is able to use two different rendering APIs: either OpenGL (an
industry standard), or Direct3D (a Microsoft standard, available
under Win95 with DirectX 5 or greater installed.) Also, graphics
cards on some systems may provide 3D hardware acceleration (for
OpenGL, D3D, or both) which can greatly increase rendering
performance.
In most cases, Cosmo Player will automatically pick the renderer
providing the best possible performance on your system. In some
cases, though, you may wish to manually control the renderer
selection. With Cosmo Player 2.1, you can use the "Graphics"
preferences panel to choose between OpenGL and D3D (on systems which
support both), and you can also choose between hardware-accelerated
rendering (if your system supports it) and software-only rendering.
If you're using Cosmo Player 2.1, please see the OpenGL, Direct3D, and hardware graphics acceleration
section of the Release Notes. That section contains information on:
- Differences between OpenGL and Direct3D
- Notes on hardware graphics acceleration
- Lists of supported graphics cards for both OpenGL and D3D
- How to force software-only rendering, and why you might want to
- Notes on the OglPanel program
- Some known problems with specific graphics cards
With Cosmo Player 2.1, if you have a graphics accelerator with
OpenGL drivers, then Cosmo Player will use the hardware for OpenGL
acceleration. If you are using Windows 95, have DirectX 5 or later
installed, and have a graphics card which supports all the D3D
features needed by Cosmo Player, then Cosmo Player will use Direct3D
hardware acceleration. To see which renderer you're using, just bring
up the Cosmo Player Console (press \ [backslash]) and
check the info under "Current Graphics Renderer":
| "Current Graphics Renderer" info from the
Console |
| Name |
Description |
Renderer |
| "SGI" |
"Generic 1.1.2 SGI" |
SGI software-only OpenGL |
| "Microsoft Corporation" |
"GDI Generic 1.1.0" |
Microsoft software-only OpenGL, or hardware acceleration
using MCD driver |
| (your graphics card manufacturer) |
(card-specific info) |
Hardware-accelerated OpenGL using ICD driver |
| ... "Direct3D Renderer" |
... "Software Emulation" |
Software-only Direct3D |
| ... "Direct3D Renderer" |
... "Hardware acceleration through Direct3D HAL" |
Hardware-accelerated Direct3D |
Cosmo Player 2.0 supports only the OpenGL renderer. You can
enable and disable hardware acceleration by using the
OglPanel program, found on the support resources page.
OpenGL-specific issues
Some OpenGL cards which are known to work with Cosmo Player 2.0 and
2.1 are:
- Cards based on the 3DLabs Permedia 2 chipset
(eg. the FireGL 1000 Pro from Diamond Multimedia, which has OpenGL
drivers for both Win95 and NT; make sure you have the latest drivers!)
- Cards based on the ATI Rage Pro chipset
(eg. the ATI Rage Pro, which has OpenGL drivers for NT.)
- Cards based on the Nvidia Riva 128 chipset
(eg. the Diamond Multimedia Viper V330, which has
OpenGL drivers for Win95.)
- Cards based on Mitsubishi's 3DPro/2mp chipset
(eg. the Diamond Multimedia Fire GL 4000, which has OpenGL
drivers for NT; make sure you have the very latest drivers!)
- Cards based on the Intel 740 chipset
Direct3D-specific issues
The Direct3D renderer is only available with Cosmo
Player 2.1, on Win95 systems with DirectX 5 or greater installed.
The officially supported Direct3D cards are:
- Diamond Viper 330 (nVidia RIVA128 chipset)
- Diamond FireGL 1000 Pro (3DLabs Permedia 2 chipset)
- ATI 3D Rage Pro (ATI Rage Pro chipset)
- Real3D StarFighter (Intel 740 chipset)
Some D3D issues to watch out for are:
- WARNING: If you're using the D3D renderer and do not
have a graphics card from the above list, be aware that you
may encounter rendering problems (since not all D3D cards
support the full set of features needed to render a VRML
scene!) If you see any problems, such as no performance
increase between CP2.0's software rendering and your current
D3D card, or any obvious rendering problems (like no
transparency), the best fix is to bring up the "Graphics"
preferences panel and switch your renderer to "OpenGL".
- With the Direct3D renderer, Cosmo Player 2.1 supports
16-bit color, Direct3D hardware acceleration (based on DirectX
5); 8-bit color is not officially supported. We have
successfully done some preliminary testing with D3D and 8-bit
color (using certain cards) but this is not a supported
configuration.
- With some D3D cards, you can still sometimes
fall back to software-only rendering if the Cosmo Player
window is too large; this can happen if the card doesn't have
enough video memory to display the window at the size you
asked for. The maximum window size is different for each card
(depending on how much memory the card has), and also depends
on the resolution and color depth of your screen (eg. running
in 24-bit color uses 50% more memory for the front and back
buffers as 16-bit color). So, if you know your card can do
D3D hardware acceleration but the console says you're using
software rendering, try making your window smaller. (This can
also happen with some OpenGL cards!)
Some known problems with specific graphics cards
- The Matrox Millenium II card has several
known problems, including generally bad 3D performance as well
as problems on some systems with worlds using
navigation type NONE (you just get a black screen). You
can switch to software rendering to work around these problems.
- The Diamond Multimedia Stealth 3D 2000 card has also been
reported to have problems with navigation type NONE.
- Several cards (including cards based on the 3DLabs Permedia
2 chipset, like the FireGL 1000 Pro) can't correctly display
specular and emissive colors on textured objects with Cosmo
Player 2.1. The best workaround is to disable the "specular
and emissive color shine-through" preference item
(see below), which will
give reasonable (but not completely spec-compliant) results.
- Cards based on the S3 Virge VX chipset (eg. the STB Velocity
3D card) have been reported to have texturing problems on some
systems (textures appear but look bad.) Changing the
"Image/Texture Quality" setting on the "Performance"
preferences panel might help; otherwise, switch to software
rendering to work around this problem.
- Some 3D cards which advertise OpenGL support can only do
OpenGL acceleration in full-screen mode, not in a window. This
works great for games like GL Quake, but doesn't help an
application like Cosmo Player (which needs to coexist with
everything else running under Windows). For cards like this
(such as cards based on the 3Dfx Voodoo Graphics chipset, like
the Diamond "Monster 3D" card) try switching to software
rendering and see if you get a performance improvement.
My scene looks wrong or different in Cosmo Player 2.1
although it looked fine in 2.0 (especially lighting or
materials).
First of all, if you're using the D3D renderer and your
graphics card is not one of the cards we support (see above), you could easily be running into
driver bugs or simply have a card that doesn't have the
capabilities to render a VRML scene correctly. The D3D renderer
tries to emulate the OpenGL renderer as closely as possible.
However, problems can still happen, especially when using an
unsupported graphics card (there are no standard "conformance
tests" for D3D hardware, and some cards might not correctly
support all the rendering features needed by Cosmo Player).
If you're using OpenGL: There were very few changes in the
OpenGL renderer between CP2.0 and CP2.1; the only noticeable one
was a fix involving specular and emissive colors on textured
objects (see below). If you find any
other cases where a scene looks different between CP2.0 and CP2.1
using the OpenGL renderer, please submit a bug report via the
"Submit Feedback..." button on the "Advanced" preferences panel.
You can report rendering problems via the "Submit Feedback..."
button>.
Be sure to mention which card you're using, along with all version
numbers of the drivers you're running (click "Display Type" on the
"Settings" page of the Display Properties panel). Also, if you're
reporting a rendering problem that used to work right, be
sure to say whether you're comparing OpenGL with Cosmo Player 2.0
versus OpenGL on 2.1 (see above), or if you're comparing OpenGL on
2.0 (or 2.1) versus D3D on 2.1!
If you're having problems with the D3D renderer and you're
running in 8-bit mode, please try 16-bit mode and see if the
problem still happens (but let us know in any case.) 8-bit mode
isn't officially supported by the D3D renderer.
Textures look wrong, or lower-resolution than they should be.
Be sure to check the setting of the "Image/Texture Quality"
item on the "Performance" preferences panel. This allows you to
control how the renderer samples textures (the renderer can either
do point sampling, or linear filtering); the tradeoff is rendering
speed versus texture quality.
Note that the beta release of Cosmo Player 2.1 artificially
limited textures to a size of 256x256. The final release allows
whatever maximum texture size is supported by your hardware and
renderer (just like CP2.0 did.)
I changed my renderer setting, and now Cosmo Player can't run!
If you accidentally change your Renderer Selection
(in the "Graphics" preferences panel) to a setting that prevents
Cosmo Player 2.1 from working at all, it will display an
error message, re-initialize itself (with no active renderer),
and automatically bring up the "Graphics" preferences panel in
order to let you choose a different renderer.
It's possible in some rare cases, though, to select a
renderer setting that crashes the browser (or your whole system)
before Cosmo Player can recognize there's a problem; this
might be caused by bugs in your graphics card's OpenGL or Direct3D
drivers. If this happens, and you're comfortable editing the
registry, you can manually reset Cosmo Player's renderer
preferences by running regedit and looking in:
HKEY_CURRENT_USER/Software/CosmoSoftware/CosmoPlayer/2.1
The renderer preference keys are:
- "forceSoftwareRendering"
- either 0 (use HW if available) or 1 (force SW rendering)
- "renderer"
- "AUTO" or "OpenGL" or "D3D"
Spec Compliance Issues
Cosmo Player 2.x supports all of the VRML97 specification. It is compliant
with the syntax and semantics of the final version of the specification,
which is officially called "International Standard ISO/IEC 14772-1:1997"
and is available at http://www.vrml.org/Specifications/VRML97/ .
Here are some frequently-asked questions dealing with fine points of
VRML Spec compliance:
I can't see my IndexedLineSet!
According to the VRML spec, IndexedLineSets are not lit they only
pay attention to the emissive component of their Material node (ie. you
should be using emissiveColor instead of diffuseColor.) Many earlier browsers
interpreted this incorrectly.
Why is my geometry only visible from one side?
If you're using an ElevationGrid, Extrusion, or IndexedFaceSet node,
you must set the solid field to FALSE to tell the browser
that all polygons should be visible regardless of the viewing direction.
When using "solid TRUE" (the default), polygons are invisible (backface
culled) when viewed from the back.
Also, note that with the primitive shape nodes (Box, Cone, Cylinder
and Sphere) the spec requires outside faces only! When one of these shapes
is viewed from the inside the results are undefined. (So if you need to
put the camera inside a sphere, you'll need to manually build one using
an IndexedFaceSet.)
In an IndexedFaceSet or Extrusion with caps, why is my L-shaped,
T-shaped, arrow-shaped, other concave polygon drawn incorrectly?
If the polygon (or extrusion cross section) is not convex, be sure to
specify convex FALSE. If the "convex" field is TRUE (the default),
the browser uses a faster triangulation algorithm which is only guaranteed
to be correct within the convex hull of a concave polygon.
Navigation speed is slower than other browsers.
Cosmo Player 2.x strictly interprets the NavigationInfo
node's "speed" field; this is covered in the Release Notes
under "Navigation Speed". Also, see below under
User Interface Issues for more info.
Using a PlaneSensor I get a jump in the z direction.
This was a bug in the beta 1 release of Cosmo Player 2.0.
It's fixed in the final version of 2.0, and in Cosmo Player 2.1.
My HTML link (or VRML Anchor) to a URL like "filename.wrl#ViewpointName"
doesn't take me to the specified Viewpoint!
This was a known bug in Cosmo Player 2.0, but it's fixed in
Cosmo Player 2.1. (According to the VRML spec,
this URL syntax is supposed to cause the specified Viewpoint to be bound
initially when the world loads, although Cosmo Player 2.0 always
binds the first Viewpoint found in the file regardless of the Viewpoint
name specified after the "#" character.)
Both Cosmo Player 2.0 and 2.1 do correctly handle Anchors
like "#ViewpointName" within
the current file (you can use an Anchor like this to take the user to
a named Viewpoint within the current world.)
Cosmo Player 2.x (or some other VRML browser) gives me
parse errors on nodes like "CoKeyframeAnimation" or "CoTextGraph" or
"CoRouteDebugger", even though my world works fine in the IRIX version
of Cosmo Player!
This happens when you create a world using Cosmo Worlds
on an SGI machine, but forget to "package" it before using it
with other browsers!
It's a necessary step to run the packager when using
the IRIX version of Cosmo Worlds (version 1.0.x).
This is because CosmoWorlds's intermediate files (ie. the VRML
files it saves before you run the packager) contain some
special nodes (like CoKeyframeAnimation, CoTextGraph and
CoRouteDebugger) which are used internally by CosmoWorlds, but
are not legal VRML97 nodes.
You run the packager from Cosmo Worlds using the "File ->
Package..." menu item.
In Cosmo Player 2.1, textured objects
appear too bright or "washed out"!
This can happen if your content uses a bright emissiveColor on
the material underneath the textured objects. According to the
spec, the object's specular and emissive colors should shine
through the textures, and not just modulate the texture
values. (Cosmo Player 2.0 did not correctly shine the
emissive and specular colors through!)
The real solution is to fix the content: reduce the
emissiveColor or specularColor until the object looks correct. Or,
as an end user, you can go to the "Performance" preferences
panel and un-check the "Enable specular and emissive
color shine-through on textured objects" item; this will force
the same non-spec-compliant behavior as Cosmo Player 2.0.
User Interface Issues
Please see the Online Help for general information on
Cosmo Player's user interface. (Click the "?" button on
the right side of the Cosmo Player control panel to display the
Help pages.)
What are the keyboard shortcuts?
For the full story, see the "Going Further" section of the Cosmo
Player 2.1 Help pages. Here's a summary of the keyboard keys:
Modifier Keys
| SHIFT |
Turbo Speed |
| CTRL |
Tilt (GO mode)
Zoom (EXAMINE mode) |
| ALT |
Slide (GO mode)
Pan (EXAMINE mode) |
Action Keys
| Arrow Keys |
Move in Direction
of key. Keys on the numeric pad also work. |
| Page Up/Page Down |
Previous/Next Viewpoint |
| Home |
Entry Viewpoint |
| End |
Straighten |
| Delete or Backspace |
Undo |
| Insert or SHIFT-Backspace |
Redo |
| TAB or Keypad +
|
Gravity/Float toggle |
| '/~
or Keypad - |
Walk/Examine toggle |
| Keypad * |
Headlight toggle |
Developer Action Keys
| = |
Toggle frame rate display |
| SHIFT = |
Adds display of last frame time |
| \ or
Keypad / |
Display Cosmo Player Console |
Why is my navigation speed so slow?
(This is also mentioned under "Navigation Speed" in the Spec Compliance
section.)
The current behavior is spec-compliant. In earlier versions of the browser,
the default navigation speed was much faster than the value specified
by the author.
If you're viewing a world where navigation really is too slow to be
usable, that's an authoring error. However, you can work around this problem
by setting the Navigation Speed to "Faster" or "Much Faster" on
the "World" preferences panel. (Click the check-mark icon on the
control panel to display the preferences panel.)
Authors should especially be aware that the default "speed" value (from
the VRML97 spec) is 1 meter/sec, which is a very slow walking speed
in a life-size world! (In other words, if you're building a VRML world
using real-world scaling, you should probably use a NavigationInfo node
with "speed" set to somewhere between 3 and 5.)
How can I make the dashboard disappear?
As a user: You can always minimize or maximize the dashboard by clicking
on the little triangle at the upper-left of the dashboard.
As an author: The only way the VRML spec provides for this is to use
a NavigationInfo node with type "NONE". This will give you a world without
a dashboard, but it will also disable all navigation by the user!
Or, you can disable the dashboard without disabling navigation,
by using the VRML-DASHBOARD=FALSE embed tag. See the "VRML Developer Information"
section of the Release Notes
for the full story. Some other browsers (including WorldView)
support this tag too, although it's not part of the VRML spec.
There's no way for an author to make the dashboard initially come up
minimized.
Help! I've navigated to a point where the cursor is stuck in the
"starburst" shape, and I can't move around any more using the mouse!
This is a typical problem when a world is full of sensors and anchors
or if there is one big sensor or anchor that fills up the screen. There
are several ways to navigate in this situation:
- Drag on the dashboard controls. You can always navigate this way even
if there's a sensor covering the whole screen.
- Use the keyboard: press the arrow keys to navigate.
- Use seeking click the "Seek" button on the dash and then click
on an object in the world (even one with a sensor on it) to get closer
to it.
- Use "Continuous seek mode" either double-click on the Seek button,
or use the "Mouse" preferences panel to assign it to the SHIFT
key or put it on a mouse
button. In continuous seek mode, you can always navigate in-scene because
VRML sensors are turned off.
International/Localization Issues and Info
How do I use International Text in CosmoPlayer?
NOTE: This information is valid for Cosmo Player 2.0 running on
WinNT, and Cosmo Player 2.1 on both Win95 and WinNT.
International text in the Text node is not available in Cosmo Player
2.0 on Win95.
First you want to make sure you have a font installed that will support
the characters you want to display. To do this use the 'Character Map'
program, which you can find by going to
"Start->Programs->Accessories->Character Map".
The NT version of this program is helpful and the W95 version is not very
helpful. From this program you can find out the language subsets that are
supported for each installed font.
Pick a font and a language subset, for example "Times New Roman"
and "Cyrillic", and then you can see the characters and the Unicode
values of each character. Not all fonts support all language subsets
so it is important that this is correct. This font will be needed for
the family field of the VRML FontStyle node.
If you do not have a font installed that will support the characters
you want to display you can install any TrueType font into the
system fonts directory. Many TrueType fonts can be found on the web.
Another thing that is required is the 'language' field of the
VRML FontStyle node. This is a two letter abbreviation based on ISO639.
Here is a list of the supported languages; be aware that the default is
for Latin1 language support which is most Western European languages.
This list is dependent on the languages supported in NT and W95 O/S:
- EN - English, US (not required, default will work)
- JA - Japanese
- RU - Russian
- TR - Turkish
- EL - Greek
- KO - Korean
- LV - Baltic
- LT - Baltic
- TH - Thai
- IW - Hebrew
- AR - Arabic
- ZH - Chinese (Big5)
- SX - used to define Windows Symbol Character set (wingdings)
The trickiest part is then to convert the characters you want to display
into utf8 format. This can be handled by a variety of text editors and some authoring tools. CosmoWorlds will convert data to utf8. There are also small programs available that will take Unicode data and convert to utf8. Once this is done you can build a VRML Text node.
Here is a simple example:
#VRML V2.0 utf8
Transform {
translation -5 -3 0
children [
Shape {
appearance
Appearance {
material Material { diffuseColor 0.8 0.0 0.0 }
}
geometry
Text {
string [ "РУССКИЙ"
fontStyle FontStyle {
language "RU"
family "Times New Roman"
}
}
}
]
}
Bugs on some Specific Platforms
IMPORTANT: Please check the Release Notes
for your version of Cosmo Player for lists of specific known bugs!
Known Cosmo Player 2.0 bugs fixed in
2.1
Bugs in Cosmo Player 2.0 which are known to be fixed in the
2.1 release (several of which are also mentioned above)
include:
- Many problems fixed with Script and EXTERNPROTO
initialization; Scripts and EXTERNPROTOs are now pre-loaded to
ensure predictable behavior
- Multiple events to Group add/remove children nodes in one
event cascade now behave properly
- Several memory leaks (especially in the EAI) fixed
- Vastly improved the look of the Cosmo Player dashboard in
8-bit display mode
- Links or Anchors to URLs of the form
"myWorld.wrl#ViewpointName" now correctly take you to the
specified Viewpoint
- Anchor descriptions are now displayed in Internet
Explorer
- You can now animate the camera's Field of View by routing
directly to the fieldOfView of the currently bound
Viewpoint (previously you had to re-bind the Viewpoint to
make the FOV change take effect.)
- Viewpoints are now removed correctly from the
Viewpoint popup list when they get removed from the
scene, or after a replaceWorld() call.
- Absolute time reported by event timestamps is now correct
(was shifted)
- You can now access a browser in a different frame using
the EAI "getBrowser(applet, frameName, index)" call
Some other known problems are:
I get a black screen when trying to view a world that uses navigation
type NONE.
Some systems have a bug in their MCD driver for OpenGL; we've especially
seen this on Pentium II (MMX) machines with the Matrox Millennium II card
with Matrox's MCD driver, and have also heard of this happening
with the Diamond Multimedia Stealth 3D 2000 card. With Cosmo
Player 2.1, you can work around this by forcing software rendering
in the "Graphics" preferences panel.
I get a crash when I hit the "Preferences" button!
This only happens with certain OEM-specific versions of Windows 95;
it's caused by a bug in a system library (COMCTL32.DLL) that comes with
Windows.
Several Microsoft programs (such as IE4, IE3.02, Word97, and DevStudio
5) include an upgraded version of COMCTL32.DLL; installing any of these
programs will fix this problem. Or, you may be able to get an OS upgrade
from your system manufacturer. (Because of Microsoft licensing restrictions,
we can't distribute just the updated DLL without shipping all of IE4!)
The full story:
To run Cosmo Player, you need COMCTL32.DLL Version 4.70
or higher. All NT 4.0 and most Windows 95 systems have this version.
To install a new version of this dll, install Internet
Explorer 3.0.2 (MSIE302MIN.EXE), which contains this dll, from the Microsoft
site. Once Internet Explorer and this dll are installed, you may safely
uninstall Internet Explorer if you wish (the updated COMCTL32.DLL will
remain on your system).
Microsoft does not permit packaging of COMCTL32.DLL
with the Cosmo Player Installation images.
I can't bring up the Cosmo Player console!
There's a known bug in Cosmo Player 2.0 (fixed in 2.1) where
the Cosmo Player Console may get "lost" if you shut down Cosmo
Player while the console is minimized. Then, the next time you
try to display the Console, it will appear in the Windows Taskbar
but you won't ever be able to see the actual window.
The easiest way to fix this is to right-click on the Console icon
on the task bar, and select "Move". Then, use the uparrow key to
move the window into view; once you can see some of it, then you
can move or resize it as usual using the mouse.
Or, if your console somehow gets its size or position set to
ridiculous values, you can fix this by running "regedit", looking
under "HKEY_CURRENT_USER\Software\CosmoSoftware\CosmoPlayer" and
deleting any keys there beginning with the name "console".
This will reset the console to its default position and size, which is
guaranteed to be visible on the screen.
Problems with MIDI sounds
We've heard a small number of reports of problems involving
MIDI on some systems; symptoms can be either MIDI sounds in your
world not playing correctly, MIDI sounds crashing the browser, or
a crash in Cosmo Player if you try to bring up a VRML world while
some other MIDI sound is playing (eg. a MIDI sound on a
different web page).
These problems are caused by bugs in your specific sound card or
MIDI drivers. Please try downloading newer versions of the
drivers from your system or sound card manufacturer.
Specifically, SB16 audio drivers can cause an exception when
we attempt to initialize MIDI while Netscape is also playing MIDI
with its built-in support. This doesn't happen with later versions
(SB32/SB64), so one conclusion is that the earlier drivers were
not thread-safe. Usually this exception is caught by WINMM, the
original Windows multimedia library, but apparently in some cases
it is not.
You're likely to notice this problem with Chomp, because the
first "Chomp" page includes a direct embed of MIDI content, which
is usually still playing when you click the "Let's Eat" button.
Browser-specific Issues
IMPORTANT: Please check the Release Notes
for your version of Cosmo Player for the full list of known
Browser-specific problems!
Why can't I get Cosmo Player to work in Internet Explorer?
Make sure IE is configured to enable ActiveX controls and plug-ins.
In IE3, make sure the "Enable ActiveX controls and plug-ins" item on the
View -> Options -> Security page is checked. In IE4, if you're configured
for a "Custom" security level, make sure the "Run ActiveX controls and
plugins" item is set to "Enable".
Using IE4, Cosmo Player can't load .wrl files that have spaces in
the pathname! (Or: I can't load Chomp from my local disk!)
This is a known bug in certain versions of IE4: Cosmo Player
can't load a local VRML file if there is a space in the pathname
to the .wrl file. This works fine with Netscape, though.
You're likely to see this problem with Chomp because the local Chomp
files are installed under \Program Files\CosmoSoftware\CosmoPlayer\examples
(note the space character in "Program Files".)
In general, when you can load a certain world from a web server with
no problems, but can't get the same world to work from your local disk,
this might be what's happening. Try copying the file(s) in question to
a path with no space characters. Or, another workaround is to set up your
machine as a web server, and access the files via the web server instead
of the file system.
This problem is reportedly fixed in IE4 version 4.72.2106 or
later.
Why can't I see Anchor descriptions in IE?
This was a bug in Cosmo Player 2.0 when used as a plug-in
for Internet Explorer. When you move the mouse over a VRML Anchor, that
Anchor's "description" string is supposed to be displayed somewhere in
the web browser's UI. With CP2.0, this feature worked under
Netscape (the string is displayed in the "status message area")
but not under IE.
This problem is fixed in Cosmo Player 2.1; Anchor descriptions
are displayed properly in both Netscape and IE.
Note, by the way, that in both Netscape and IE the displayed
string is the Anchor node's "description" field, not its URL!
That means that as an author, you must specify a description
in your Anchor node in order to see anything in the status
message area (since the default "description" value is an
empty string.)
Cosmo Player can't run; it just locks
up while displaying "Starting Java..."
This bug can happen with certain versions of Netscape, running
under Windows NT 4.0 with a TrueColor (24-bit) display. If this
is your configuration, this problem isn't specific to Cosmo
Player; Netscape isn't ever able to start Java! (Just try
to display the Java Console: select Communicator -> Java Console.
If that hangs, you have the Java/TrueColor bug.)
More information on this bug is available from Netscape at
http://help.netscape.com/kb/client/971009-22.html,
and a fix is available
on Microsoft's ftp site
(the file you need is "admnfixi.exe", which is an
auto-installing executable).
Also, there's a similar problem which is specific to the
Matrox Millennium graphics card (when using outdated drivers);
more information is available from Netscape at
http://help.netscape.com/kb/client/970805-1.html.
Embedded VRML works in Netscape and IE 4.0 but not in IE 3.x.
If your web page with an embedded VRML world works on all
browsers except IE3.x, make sure that you are using double
quotes (not single quotes) in the EMBED tag in your
HTML. The SRC attribute should look like SRC="coolVRML.wrl",
not SRC='coolVRML.wrl'.
Some browsers can't load VRML files with a .wrl.gz
extension.
Using the file extension ".wrl.gz" for
gzip-compressed VRML files is a deprecated feature, and will
not be supported by releases of Cosmo Player after 2.1.
(In other words, this release of Cosmo Player does
support the same file extensions - including .wrl.gz - as
Cosmo Player 2.0. But don't use .wrl.gz
filenames in the future!)
The problem happens because some HTML browsers don't work well with
multiple file extensions on a single file (such as
"foo.wrl.gz"). Specifically, IE4.01 will not deliver
.wrl.gz files to Cosmo Player at all,
even when Cosmo Player is fetching an Inlined file! (So in any
version of Cosmo Player, content using .wrl.gz files will be
broken in IE 4.01).
Until this is clarified by the VRML consortium in a
"Recommended Practices" document, the safest thing for authors
to do is to rename files that end in ".wrl.gz" to ".wrl".
The ".wrz" extension is an acceptable, but less correct,
alternative.
In IE4, clearing the cache doesn't affect cached files used by Cosmo
Player!
If you're using IE 4.0, Cosmo Player uses the system-wide
"Temporary Internet Files" directory as its cache. However,
by default IE4 itself does not use this same directory;
it uses a directory under
windows-system-directory/Profiles/user-name.
For best results, be sure to set your
cache directory to the system "Temporary Internet Files"
directory (either \WINNT\Temporary Internet Files or
\WINDOWS\Temporary Internet Files); this setting
is found under "General" on the IE Internet Options page.
This will make sure that any cache-related actions you do in
IE (such as clearing the cache) will also affect files
cached by Cosmo Player.
Installing Netscape 4.05 after having installed Cosmo Player
Netscape Communicator 4.05 includes Cosmo Player 2.0.
If you attempt to install it on a system that already
has Cosmo Player 2.1, though, the result will be
a broken installation of Cosmo Player 2.0 (which won't be able
to display textures, among other problems). To avoid this
problem, be sure to reinstall Cosmo Player 2.1 after
installing Netscape 4.05 on your system.
If you already have Cosmo Player 2.0 and you install Communicator
4.05 this should work fine, although we've heard reports of
audio breaking after doing this. If you have this problem, just
reinstall CP2.0 (or better, upgrade to CP2.1!)
Java / EAI / JSAI
- "EAI" is the External Authoring Interface, which allows a
Java Applet to communicate with a VRML browser on the same web page.
- "JSAI" is the Java Script Authoring Interface, which allows
you to use Java to write Script nodes within a VRML scene.
- There's a helpful EAI FAQ at http://www.tomco.net/~raf/faqs/eaifaq.html.
Why can't I run any EAI applets?
The most common configuration problem is if you've installed some other
VRML browser, which added references to its own VRML classes in your CLASSPATH.
The CLASSPATH is set in the autoexec.bat file in Windows 95, or in Control
Panel -> System -> Environment in Windows NT 4.0. Make sure no VRML
class files from other browsers appear in your CLASSPATH.
If you're running under Internet Explorer, you should make sure that
the file \Program Files\CosmoSoftware\CosmoPlayer\npcosmop.zip
exists, and that this filename appears in the registry entry
\HKEY_LOCAL_MACHINE\Software\Microsoft\Java VM\ClassPath .
The npcosmop.zip file must appear before any other VRML browser
packages you might have installed before Cosmo Player! For
more information, see the "Install and Classpath" section of the
EAI FAQ.
Where are the Java class files? (Or: I can't compile Browser.getBrowser()!)
They're all packaged up in a ZIP (or JAR) file:
Navigator:
\Program Files\Netscape\Navigator\Program\Plugins\npcosmop.zip
Communicator:
\Program Files\Netscape\Communicator\Program\Plugins\npcosmop.jar
IE:
\Program Files\CosmoSoftware\CosmoPlayer\npcosmop.zip
To compile EAI or JSAI Java programs on your system, you need to make
sure the appropriate zip file (or jar file) is in your CLASSPATH
(ie. not just the directory where the zip file lives). For example:
CLASSPATH=C:\Program Files\Netscape\Navigator\Program\Plugins\npcosmop.zip
Why do I get the message about "security exception: cpmsjava.dll"
when using Java with Cosmo Player 2.0 beta 1?
This was a bogus message ignore it. It's gone in the final
release. Please update to Cosmo Player 2.1!
I keep getting security exceptions in Netscape when opening a socket
through Java back to the server that's serving the .class file.
This should work. We are currently enabling 3 privileges in the
Netscape PrivilegeManager:
- UniversalConnect (for connecting to and opening sockets)
- UniversalFileRead
- UniversalThreadAccess
So it should be possible to access sockets through the JSAI. However,
there still may be socket problems in the Java implementations of certain
releases of Netscape.
Specifically, there's apparently a bug in Netscape that's erroneously
throwing a security exception when trying to open sockets from Java using
the JSAI (inside a Script node). We're not sure which version of Netscape
this started happening in, but it's definitely a problem in 4.04. We're
waiting for a work-around from Netscape.
Note that this is not a problem when using sockets through the
EAI. Overall, in fact, we've found sockets in Java to be very reliable
using the EAI.
I sometimes get null pointer exceptions
when calling vrml.external.Browser methods under Netscape when
using the EAI. (Or: Browser.getBrowser() sometimes returns null!)
This only happens in certain releases of the Netscape
browser. This seems to be caused by a bug in Netscape's
LiveConnect interface (which is very sensitive to the timing of
the Reload sequence). Cosmo Player 2.1 automatically works around
this problem, so you're only likely to see this happen with CP2.0.
If you can't upgrade to 2.1, though, the workaround for Cosmo
Player 2.0 is to put your getBrowser() call inside a loop, like
this:
Browser browser = null;
for (int count = 0; count < 10; count++) {
try {
try { Thread.sleep(200); } catch (InterruptedException ignored) { }
browser = Browser.getBrowser(this);
}
catch (Exception e) { } // getBrowser() can throw NullBrowserException
if (browser != null) break;
Browser.print("browser was null, trying again...");
}
if (browser == null) {
throw new Error("Failed to get the browser after 10 tries!");
}
Browser.print("Got browser!");
How can I use getBrowser() to access an embedded browser in a specified
frame name?
According to the EAI Spec,
you can specify a frame name by using the call "getBrowser(Applet
pApplet, String frameName, int index)" instead of the usual "getBrowser(Applet
pApplet)" which assumes the current frame.
This works correctly in Cosmo Player 2.1. Unfortunately,
though, it's broken in CP2.0 (so there's no way to access an
embedded Cosmo Player instance from another frame.)
How can I print out debugging info?
From Java, there are two ways of printing messages. You can use the
standard Java System.out.println() method, which prints to the Java console.
Or, you can use Cosmo Player's Browser.print() method, which prints to
the Cosmo Player console (also called the "VRML console".) Browser.print()
is available in both JSAI scripts and EAI applets.
Or, from Javascript in a Script node, you can use use the print()
function to print to the Cosmo Player console.
To bring up the Cosmo Player console, just use the "\" key (or
the keypad "/" key). Or, you can also bring up the console from the
"Advanced" preferences panel, as well as set the console to
automatically pop up any time there's a VRML error or warning, or
to just always appear any time you load a world.
One console feature to watch out for: with the default value of
the "Automatic Muting" preference (on the "Audio" preferences
panel), any sound produced by the VRML scene will be muted
when the console is the active window! So if you're heavily using
the VRML console and need to hear your scene's audio, you
should probably set this preference to "Never mute".
Where can I find the
'netscape.javascript.JSObject' class? (Or: why do EAI
applets need to use a Netscape-specific mechanism to get a
handle to the Browser?)
You shouldn't need the 'netscape.javascript.JSObject' class!
Instead, you should be using the Browser.getBrowser() method to
get a handle to the browser, not the old-style JSObject
calls! The JSObject classes use the Netscape-specific "LiveConnect"
interface, which is included only with Netscape's JVM. It's
very important to use Browser.getBrowser() instead of the
JSObject calls, since this will let your applet work under IE as
well as Netscape, and will also let Cosmo Player work around
LiveConnect bugs in certain versions of Netscape.
My EAI applet works great the first time, but then crashes if I try
to use it after hitting "Reload" (or after going to another page and
then hitting "Back")!
This is a very common content bug: The usual reason is that
your EAI applet is getting its handle to the VRML Browser in the
init() method, not the start() method. It's vitally important do
to all VRML EAI setup in start(), to avoid having stale Browser
and Node pointers when the user leaves and then revisits (or
reloads) the web page containing your applet. ("VRML EAI Setup"
refers to the Browser.getBrowser() call itself, and any calls to
the Browser object to look up Nodes or EventIn/Outs.)
The init()/start() distinction is important because a new instance of
Cosmo Player is created every time the user revisits a web page,
but only one instance of the EAI applet is ever created. If you do
the EAI setup in init() (which only ever runs once) and then hang
on to the Browser object, after the user goes to another web page
and then returns to your EAI page you'll have stale pointers to
the Browser object and any nodes you looked up! This won't happen
if you do your EAI setup in start(), since that method is run each
time the applet is revisited in a Web page (so you'll get a handle
to a new valid Browser object every time the page is visited.)
Some applet initialization does belong in init(), of course, such
as building any Java AWT UI in the applet (which needs to be done only
once, when the applet is first initialized.)
Some final notes on crashes when Reloading:
- Be sure you're using the Browser.getBrowser() call instead of
the old LiveConnect JSObject calls! (see
above for why.)
- If you're still running Cosmo Player 2.0, try updating to
2.1. We've updated our internal implementation of
Browser.getBrowser() to work around some LiveConnect bugs;
reloading in CP2.1 under all versions of Netscape should
now be very reliable.
- Make sure you don't hold onto any Nodes (or EventOuts
or any VRML objects) ACROSS calls to the start()
method! (For example, say your applet creates a new Node and
keeps a pointer to it. Make sure you don't try to access that
Node after a Reload cycle, since it won't exist in the
VRML scene any more!) In general, to be safe, any
of your applet's instance variables which have anything
to do with the VRML scene should be re-initialized in the
start() method.
- The "loop while doing the getBrowser() call" trick
(mentioned above) is no longer
necessary in Cosmo Player 2.1, since we now do it internally.
- Even with a correctly-written EAI applet, it's still possible
to get the LiveConnect interface into a broken state by hitting
Reload while the VRML scene or the applet are in the middle of
loading or shutting down. To avoid this, try to only hit Reload
when your applet and the VRML scene are fully loaded.
- In Netscape, using SHIFT-Reload (instead of Reload) is less
likely to cause these problems with EAI applets (since it forces
the applet as well as the VRML browser to be completely
reloaded.)
One final note: This whole issue (EAI setup in init()
vs. start()) doesn't matter in Internet Explorer. IE always calls
init() and start() every time an applet is revisited in a
Web page, rather than only calling init() before the first time
that the start() method is called. This behavior is a bug in IE,
though, and you shouldn't count on future releases of IE behaving
the same way.
What base URL is used from a Java Script or EAI applet?
When calling loadUrl(), createVrmlFromUrl() or
createVrmlFromString() from a Java Script or EAI applet, those
calls now use the location of the running Java class as the base
URL for relative URLs. So say the Java class is
http://foo.com/a.class and the current VRML world is
http://bar.com/b.wrl; if the Java class calls
loadUrl("other.wrl"), "other.wrl" will be loaded from
http://foo.com.
This is the correct, spec-compliant behavior. See section 4.5.3
of the
VRML97 spec
for more details.
I see memory leaks with my EAI applet (or: When I create
large VRML objects using the EAI, they never seem to get
garbage collected.)
You might be running into a known problem with Cosmo Player 2.0
and 2.1, having to do with the EAI EventOut.advise() method. When
you use EventOut.advise(), the 2nd parameter is a Java
Object ("userData") that's passed back to you as the 3rd argument
to your "callback()" function. The problem is that objects you
pass in as "userData" to EventOut.advise() will NEVER be garbage
collected!
The workaround: don't pass large objects (like VRML
nodes) as "user data" into advise(), especially if you're
repeatedly adding new objects to the scene and calling advise() on
them!
Some final notes on other possible problems affecting
Java (JSAI or EAI) with Cosmo Player:
- Make sure to compile your Java files into .class files!
- Make sure to remove anything from your CLASSPATH (such as Worldview
Java classes) that might conflict with Cosmo Player. (In fact, Cosmo
Player 2.0 and 2.1 do not require a CLASSPATH to be set! )
- For IE, lower the security level for "local intranet" to None.
- If going through a proxy server, try bypassing the proxy when accessing
fines on your local network (or local machine!)
- Make sure Java classes are declared public.
|