ready Library Method
Short Description: Return (download) Status
Signature: x.ready ()
Class: taccglOBJFile Class
ready returns "ready" if and when the associated OBJ
file has been downloaded, parsed, and is ready for use.
It returns "loading" while the file is being downloaded,
"error" if there was an error downloading, or "ddmode"
if the file is not downloaded because 3D canvas is not available.
Using ready or
alternatively taccglOBJFile.onload is required
if asynchroneously downloading the OBJ file
(using async=true) using OBJFile.
There is the general problem that OBJ files are downloaded
separately from the internet page and so may not yet be available when
an animation is started.
Also downloading may take a while, especially in case of big
3D models.
The first thing that needs to be decided is when to start
downloading the OBJ files. You can do so immediately after the
page has been loaded (e.g. in a script at the end of the page
or in the pages onload event handler) or you can start
the download only after the user clicked on a button (e.g. to
start the animation). The first option might download OBJ
files that later on are not needed and the second option
requires the user to wait longer.
The second problem one needs to deal with occurs when an
animation should be played but the required OBJ file is not yet
downloaded. The easiest solution is to
use async=false) in
OBJFile. Second solution is to show an alternative
simpler animation as replacement. This is what ready
is very useful for as shown in the example below. Third solution
is to wait until the file has been downloaded and is explained in
taccglOBJFile.onload.
If the OBJFile refers to an MTL file, then ready
becomes true if and when the mtl file has been
downloaded and parsed as well, or when it has been determined
that the MTL file is not present.
You can use other methods like taccglOBJFile.scene or taccglOBJFile.objs
only if an when ready became "ready".
The following example shows a simple replacement animation if and as long ready() does
not return "ready". This normally means that upon your first try, the download is
started and the replacement animation shown. Upon the second click usually the download
is finished and the real animation is shown. However, if there was an error downloading
or in ddmode always the replacement animation is shown.
Examples
if (!window.taccgldocfile) taccgldocfile=taccgl.objFile().read('/objtest/taccgldoc.obj',true); if (taccgldocfile.ready()=="ready") { taccgldocfile.mtl.ambientAdjust(0.4); var a=taccgl.a("Layout",taccgldocfile.objs("Torus")) .modFit(). rotateMiddle(0.7,0.7,0).dur(3).start(); } else { // show replacement animation var a=taccgl.actor("Layout"). rotateMiddle(0.7,0.7,0) .dur(3).start(); } | RUN |
WebGL™ is a trademark of the Khronos Group Inc.
|