view3dscene 3.1, engine 1.5 release: Scripting, VRML browser components, and more
Scripting in KambiScript language. KambiScript is a simple scripting language, invented specially for our engine. It's powerful enough for many tasks, you can process all VRML data types with it (including vectors, matrices, arrays, images).
Screenshots on the right show example uses of KambiScript.
Endless possibilities are available now for VRML authors, you can
write complete interactive 3D games and run them with view3dscene
(or any other VRML browser using our engine).
Kambi VRML test suite 2.3.0 contains source VRML files with KambiScript tests (see
in there, like
you can simply open them in view3dscene.
Animating camera by animating Viewpoint position (or it's transformation) works.
Various navigation improvements for scripted worlds:
NavigationInfo.type = "NONE" and
NavigationInfo.speed = 0 cases are supported.
They are useful when you implement whole navigation yourself, by
Also view3dscene key shortcuts changed, to allow easily avoiding
collisions with keys that you handle through
KeySensor and scripting.
All menu shortcuts are now with Ctrl modifier
(for example, previously you switched collision detection with C,
now you have to press Ctrl+C).
For programmers using our engine, we have VRML browser
components. Two flavors:
TGLWindowVRMLBrowser (a descendant
TGLWindow) and, for Lazarus LCL,
(a descendant of
TOpenGLControl). Using them is trivial,
TKamVRMLBrowser on the form
and call it's
Load method — whole rendering and navigation
will automatically work. Other Lazarus packages
fixes were made, to make them more easily usable. Thanks to De-Panther for
pushing me to implement this :)
compiled:" is implemented, to easily link
VRML scripts with compiled-in (written in ObjectPascal) handlers.
Other improvements: using quaternions for
Plans for the next release: first of all octree updating problems
will be solved.
Right now they are a weak point of our engine — animating geometry
by VRML events is unnecessarily time-consuming when collision detection has to be up-to-date.
Also more rendering optimizations for animating by VRML events
will be done (optimize case when you often change
choice, automatically detect when roSeparateShapeStates /
...NoTransform / roNone is suitable).