J has a number of ways to produce 3D graphics: the native OpenGL support is very nicely integrated with the system; the labs and demos showcase a higher-level cover API for frequently-used operations (begin, end, lists, colors, etc.); there is turtle graphics API (Brian Schott) for directional animation. These are powerful and interesting PROGRAMMATIC tools.
For those who prefer a DECLARATIVE way to describe things, clarity and expressiveness are more important than power or completeness. For 3D these have been languages that describe worlds, such as VRML (and Web3D's X3D). It is very easy, with very little tool-specific training, to both read and write the 3D definitions. Visual Python or VPython strikes a sweet spot by using an interpreted language Python, and a declarative API for 3D scenes and motion. Intro with many examples: see how you can start figuring it out instantly. http://www.vpython.org/VPython_Intro.pdf Curve documentation: an example of one primitive. http://vpython.org/contents/docs/visual/curve.html Contributed programs: many further examples in use (like Cherry Tree). http://vpython.org/contents/contributed.html The source for this intuitive success is probably the instructive origins of the toolkit for students with non-essential programming skills. A tool created by non-programmers for non-programmers. For experienced programmers or 3D creators, such intuitive API means productivity. It still allows focusing more on the 3D layout rather than the implementation details. For J proud of its notation and consistent design, it would be beneficial to continue to sharpen this tradition in frameworks. It seems the secret is in consistent use of small expressive paradigms. For VPython the ingredients are: Python constructs; objects and properties; named parameters; consistent simplified set of 3D API; no mixing of layers (OpenGL is inaccessible directly); all 3D objects are first-class (system primitives look the same as user-defined). Use of plain English words instead of abbreviations and prefixes is helpful too. ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
