-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathREADME
More file actions
360 lines (318 loc) · 14.5 KB
/
README
File metadata and controls
360 lines (318 loc) · 14.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
# Copyright (C) 1998 Tuomas J. Lukka
# DISTRIBUTED WITH NO WARRANTY, EXPRESS OR IMPLIED.
# See the GNU Library General Public License (file COPYING in the distribution)
# for conditions of use and redistribution, EXCEPT on the files
# which belong under the mozilla public license.
Welcome to a developer-alpha release of VRML::Browser.
See below for what has changed.
For updates, see the FreeWRL homepage, currently at
http://www.fas.harvard.edu/~lukka/freewrl
DO NOT EXPECT YOUR COMPLICATED WORLD TO WORK!
If your world doesn't expect *much* more than the browser provides
right now, please send me a copy -- I'll make it work in the next
version.
Textures are probably the last thing I'm going to make really well --
if you want to change that, buy me a computer with Linux-supported
3D acceleration for textures and you'll find them working in the next
release (even lending a machine for some months would do) ;) ;)
-- or just fix the implementation yourself. Same applies to a multi-threaded
version and multi-CPU machines ;)
See the file INSTALL for how to compile this program.
After installation, try
./freewrl tests/1.wrl
(the file browse is the perl script which starts the browser -- if
there is a problem ("file not found"), try
perl browse tests/1.wrl
or change the first line of "browse" to find your perl binary).
This should open a new window with a view of the VRML world in question.
Use the first and third button of your mouse (while moving your mouse)
to move around.
To change viewers between walk and examine, press 'w' or 'e' or 'd' in
the browser window ('d' only works with the keyboard currently).
There are more tests in the bt/ and jt/ and pt/ directories, which
are, respectively, the browser API tests, java/javascript tests and
perl API tests.
E-mail any comments, questions & patches to me at lukka@fas.harvard.edu
Tuomas J. Lukka
P.s. I am available for employment after july 1999 - email me if your
university or company is interested. I would like to be able
at the same time to continue free software development and research.
-----------------
V0.14 DOCUMENTATION!!!!!!!!!
- manual pages, at last! Halleluyah!
- more extrusion fixes from Bernhard Reiter
- Viewer&Navigationinfo fixes from John Breen
- added "-lz" into vrml.conf for PNG
- new command line interface
NOTE NOTE NOTE!!!!!!!!!!!
YOU HAVE TO CHANGE YOUR XSWALLOW SETTINGS FOR THIS RELEASE
- warn if file doesn't start with the proper header
- moved many optional behaviours from environment variables
to command-line options.
- more verbosity cleanup
- added warning for missing proper header, corrected headers of
example files
- other, tiny things
V0.13 Java EAI, other tiny things.
AS OF THIS RELEASE, ALL "MAJOR" COMPONENTS HAVE FRAMEWORKS IN PLACE.
AFTER THIS, ENHANCING FREEWRL WILL CONSIST OF FILLING OUT
UNIMPLEMENTED BITS IN THE FRAMEWORK. I NEED HELP IN THIS; IF YOU
WANT TO GET TO FILL IN YOUR PIECE (and get mentioned in the CREDITS
file, the coolest place on the web ;), EMAIL ME!
- better way of doing trig stuff from Robin Williams
- make the 'v' and 'b' keys really *WORK* for changing viewpoints on fly
- make viewpoint orientation finally work (Thanks to John Breen
for telling me about it)
- make MFFloat and MFInt32 parsing handle the case "5 , 3 , 2"
correctly - thanks to Etienne Grossmann for noticing the bug
- new Extrusion code by Bernhard Reiter
- new option zpl=xx to set the farther z-buffer plane in case you
want to view extremely large worlds
- first shot at Java EAI!
Most things still do not work but it's a start. We are communicating.
See java/eai/test.java for an example (it uses the VRML in eai/test2.wrl).
This is my second Java program, and the first one that
uses threads (the first java program was the Script interface ;).
Please comment if I'm doing anything wrong.
The second example (java/eai/test2.java, eai/test3.wrl) demonstrates
how to both receive & send events.
- Inlines should work again (oops ;)
- complain if url is bad
- PNG/PNG.xs *should* now work with perlapio as well....
- first shot at working navigationinfo, but I didn't have time to
test it yet...
Continuing compliance tests:
- fixed lineset & pointset coloring behaviour
- fixed unlit behaviour when no Material node present
- fixed SFNode, MFNode PROTO fields (we need lots of really devious tests!)
V0.12
- EAI first attempt
- protocol only, no Java classes yet
- try it with "perl eai/t1.pl", which starts freewrl
and uses sockets to communicate the color change event.
- it works by giving a command-line argument "eai=host:port"
to connect into.
- sometimes the processes live after they should die -
kill them explicitly if this happens
- clean up the JS verbosity a little..
- allow "url=..." command-line argument to freewrl for setting
the base url separate from file name (to allow use of inlines
from inside Netscape).
- fix sensors so that transformations won't affect dragging
(NIST PlaneSensor test 2)
- fix examine viewer to take position given to it seriously
- make top-level sensors work
- fix x_changed and set_x names to work
- let images be scaled
- PNG support
- cache URLs when loading - same texture several times
- set next/previous viewpoint (use keys 'v', 'b')
- fixed texture mapping a bit
NOTE: v0.11 is NOT PUBLICALLY ANNOUNCED and contains a lot of
unstable new stuff. Be careful with it. I'll follow with 0.12 soon.
V0.11 - Onset of promiscuity -- we can plugin to netscape!!!
- lots of new, not-thoroughly-tested features
- set window name to FreeWRL
- final changes to make it possible to run freewrl from another
directory - e.g. fonts so that we specify the font at startup and
"use blib" conditionalized. Including
FREEWRL_FONTS=... perl -Mblib=... freewrl "$1"
into xswallow's dispatch-vrml did it! Yow! (remember to redirect
stdout and stderr to some file (e.g. /tmp/VRMLlog) to see what went
wrong - it's by no means foolproof and doesn't load even nearly all
files)
However, this is probably worth a screenshot!
If you try it, remember to Edit/Preferences/Netscape/Applications
in netscape to inform it that x-world/x-vrml is handled by the plugin.
(if you have problems, email me)
- plugging into netscape made me fix a variety of bugs because
I can browse worlds easier.
- rest of the Light nodes
- VisibilitySensor (very dumb but compliant - always visible)
- environment variable (I know, I should document them all in one place ;)
FREEWRL_SAVE to specify a directory to save all the files/urls in the
world (not the whole world, just the world you're looking at ;)
- fixed CoordinateInterpolator initial value
- fixed Interpolators initial state - no event to be sent.
- first try at ProximitySensor
- fixed SFInt32 parsing (oops)
- ElevationGrid: colors!
- TextureTransform (but not yet tested)
- render sky correctly when only one skycolor given
- Inlines work again
There is one big problem with the URLs: relative URLs don't work
from the
V0.10 - Yea!
- fixed YEQ, ZEQ tests for raycasting - sensors should be more
reliable now when the ray is parallel to some axis. Oops.
Thanks for Bernhard Reiter for the report.
- VRML::Field::Multi ISA VRML::Field -> MF* things in PROTOs now
work. Thanks to John Breen for the bug report and fix.
- actually included tests/10.wrl (oops ;)
- viewpoint fixes galore - jump=TRUE viewpoints should now work
completely. jump=FALSE is more difficult but luckily less used.
Thanks to several people for bugging me about it ;)
- box touchsensor now works properly even when looking on the xz plane
- make an environment variable FREEWRL_NO_COLORMAP to prevent
creation of window's own colormap - thanks to William R. Ward
- more documentations / organizations in the source
- new Walk viewer from John Breen
- Events.pm: ToQueue so you can send events TO a node instead of just
from
V0.09 - bugs & docs
- fixed a bad parser bug, reported by Bernhard Reiter.
now [1 1 1,2 2 2,3 3 3] works as it is supposed to.
- commented VRMLC.pm and VRMLRend.pm
- fixed prototypes & events -- now they should finally work
closer to the spec
- new demo: tests/10.wrl which was my challenge to myself to
improve the javascript api to include SFVec3f and SFRotation
functions.
- as a result, JavaScript api now has SFVec3f and SFRotation
methods ;)
- now viewers should get the shift / control status as extra
arguments - so the Descent mode is possible to do with mouse
(as requested by John Breen).
Didn't have time to improve the descent mode yet, though.
V0.08 - important details
- using libwww-perl for getting documents from over the web.
we can use general URLS, hurray!
Because of this, perl scripts are now disabled by default
because of security -- the code is completely trusted and
we don't want you to get http://evil.foo/rm-rf.wrl containing
a Perl script doing "system('rm -rf /'')".
- use gunzip to decompress gzipped content
- general ray code -- now IndexedFaceSet, ElevationGrid and even
Extrusions should work with TouchSensors
- "install" should now at least partially work.
Changed all "require 'foo.pm'" to "require VRML/foo.pm"
- get_scene for the browser object -- now it is possible to
create scenes in Perl scripts:
"
use VRML::Browser;
$b = new VRML::Browser;
$s = $b->get_scene;
$nod1 = $b->new_node(Shape, {
geometry => $b->new_node(Box, { ... } ),
...
});
...
$s->topnodes([$nod1,$nod2,...]);
$b->eventloop;
"
so you can use scripts to generate scenes.
- then, use $scene->as_string to actually generate the VRML code
in ASCII.
- $backend->snapshot. See pt/* for samples
- Documentation
- Make the browser accept some faulty VRML (commas after field values)
- Some portability fixes from John Breen and Lupe Christoph
- fix IndexedFaceSet core dump if coordIndex doesn't end in -1
- some event fixes.
V0.07 - quick bug fixes
- parse: make the optimization for MFFloat and MFTime correct when
there are commas :(
- fix FontStyle defaults
- stabler quadratic solution from Robin Williams
- background works again -- we can't displaylist something that moves ;)
- better viewpoint implementation -- it still doesn't quite work
like the spec.
V0.06 - solidification:
- input of SFColor etc. to javascript
- output of floats etc. from javascript
- numerous other bugfixes for javascript...
- beginnings of the browser object in Perl
- add OpenGL includes/defines for other makefiles as well..
- Text should possibly be compatible with FreeType-1.1 now...
- Fly mode, with key controls a la Descent(TM)!! Press 'D'
when browsing and then use a,z and 789uiojklp; (the keys
that are the numpad on my laptop ;) to move. If someone
wants to send a patch to make the keys configurable, I'd be
delighted ( I don't want to spend time on that right now, I
have more important matters in this to do.. )
- much faster MFFloat parsing -- similar speedups for other fields
are just a matter of doing it..
- various speed improvements
- fixed use of display lists to actually work (blush)..
V0.05 - details...
- Switch
- LOD
- face culling -> double speedup sometimes
- DirectionalLight
- PlaneSensor
- SphereSensor
- better support for bindable nodes
- dummy Anchor ( == group )
- add many missing fields (as dummies) to nodes
V0.04
Quick release, due to notification from Thomas Dudziak that
I had missed important files from the .tar.gz file. Oops...
- Text!!!!!!! With FreeType library
- Background basics (skyColor, skyAngle)
- VRMLC -> VRMLC+VRMLRend - split to smaller files
- Bindable nodes -- see nodes/Background2.wrl for what works now
V0.03 "filling in some blanks"
- MFColor and other field types for javascript -- now able
to run VRML97 spec example D.14!!
V0.02 "some things about *most* features work"
THIS RELEASE IS ESPECIALLY UNSTABLE - LOTS OF CODE HAS BEEN ADDED
AND LOTS OF NEW FEATURES ARE SEMI-IMPLEMENTED. THERE ARE PROOF-OF-PRINCIPLE
JAVA AND JAVASCRIPT SCRIPTS BUT MOST OF THOSE SCRIPTING INTERFACES
ARE STILL UNIMPLEMENTED. THE PROOF-OF-PRINCIPLE SCRIPTS CAN BE FOUND
IN THE DIRECTORY jt/.
THE BROWSER IS STILL FAR FROM SPEC COMPLIANCE -- A LOT NEEDS TO BE DONE.
IF YOU ARE NOT ABLE TO PROGRAM, DO NOT EXPECT TO BE ABLE TO USE THIS
BROWSER YET. THIS RELEASE IS PRIMARILY MADE TO ATTRACT POTENTIAL
DEVELOPERS TO HACK ON THE CODE.
WHAT EXTRA IS SUPPOSED TO WORK NOW
- simple scripting in complex languages (java,javascript)
(warning: this is very immature so far - it's my first ever java
program and I've only been at it for a couple of days. You have to
make a named pipes in the current directory with the name '.javapipep'
and '.javapipej', with the command "mknod .javapipep p" or the equivalent
on your system).
For javascript, you'll need to hack it to compile yourself - I'll
try to provide a better make system later.
- simple complex uses of simple sensor (touchsensor hitpoint,
although only for primitives yet (no indexedfaceset :(...))
This is by raycasting now, see VRMLC.pm
- simple textures: jpg only, and only 2**n * 2**n.
also, most texture mappings of nodes are not yet correct
- Extrusion, ElevationGrid
- Billboard
- Browser: die if file not openable
- Parser: accept ROUTE et al in more contexts
- CoordinateInterpolator
- IndexedLineSet and PointSet
- Shape with appearance==NULL
- Color, Normal
- more fields for supported nodes
- Inline (preliminary)
- beautify tests/ a little
WHAT STILL DOES NOT WORK
- more complicated things of any particular kind:
- sensors
- extrusions which are collinear
- ...
SPECIFICALLY: FOR SCRIPTS IN JAVA/JAVASCRIPT:
Eventin floats work and eventout colors work, not much else.
Of course, this will be very easy to expand later (next version I hope
to have MFthings and everything except Nodes.
These scripting implementations are to be considered very preliminary and
just proof-of-principles.
Especially the javascript interface is VERY UGLY. And contains
unfinished code.
V0.01 "some things work"
WHAT IS SUPPOSED TO WORK
- simple primitives (box, cone, cylinder, sphere, indexedfaceset*)
- simple sensors (touchsensor, timesensor)
- simple languages (perl)
- simple nodes (scalarinterpolator,...)
- simple structures (PROTO, USE/DEF)
WHAT IS NOT YET IMPLEMENTED
- complex geometries (elevationgrid, extrusion)
- complex sensors (cylindersensor etc)
- complex languages (java, javascript)
- complex nodes (switch, lod...)
- complex structures (anchor, externproto...)
(* indexedfaceset only partly implemented)