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 kambi_script/
in there, like
kambi_script_ball_game.x3dv
or
kambi_script_particles.x3dv),
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 KeySensor
and scripting.
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
of our TGLWindow
) and, for Lazarus LCL, TKamVRMLBrowser
(a descendant of TOpenGLControl
). Using them is trivial,
just drop 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 :)
Script
protocol "compiled:
" is implemented, to easily link
VRML scripts with compiled-in (written in ObjectPascal) handlers.
Other improvements: using quaternions for EXAMINE
navigation,
simple nodes Circle2D
, TextureTransformMatrix3D
,
TextureTransform3D
, MultiTextureTransform
.
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 Switch
choice, automatically detect when roSeparateShapeStates /
...NoTransform / roNone is suitable).