Development news: drag sensors, KambiScript rotations, mouse wheel, more

October 17, 2010
Fish and animals, by Elenka Besedova
Fz Quake2 player model, converted to VRML/X3D by Stephen H. France, originally by Phillip T. Wheeler
Animated projector with beam and shadow, by Victor Amat
Welcome to the weekly news :) As usual, remember you can try out all the improvements right now by using our nightly builds.
  • All X3D dragging sensors (PlaneSensor, SphereSensor, CylinderSensor) are implemented now. Very nice tools to allow user to edit portions of your 3D scenes — PlaneSensor allows moving, SphereSensor allows free rotation, CylinderSensor allows rotations constrained around an axis.

    I encourage you to try them — test e.g. X3D conformance models (PlaneSensor, SphereSensor, CylinderSensor) or VRML 97 annotated reference examples (PlaneSensor, SphereSensor, CylinderSensor) or our Kambi VRML test suite (see SVN, files x3d/xxx_sensor*.x3dv). They allow you to really easily add great interactivity to your VRML/X3D scenes.

    Also related to sensors: fixed behavior when multiple pointing-device sensors are siblings (and so should be simultaneously activated).

  • New functions for KambiScript to handle rotations.

  • Changing Transform node containing light sources is greatly optimized now.

    This also causes a regression: if you instantiate this light source (through DEF/USE), and then try to animate it by changing it's Transform node — too many light instances will be updated. This is a regression (something that used to work correctly, but now doesn't work), but I feel it's justified — while previous behavior was correct, it was also awfully slow (bringing even trivial scenes to a speed of a few FPS), so the new behavior is at least usable in common cases.

    Various fixes along the way. Including shadow map regeneration when light changes.

  • Mouse wheel is supported. It is used for zoom (in camera Examine mode), scrolling text (in various message boxes), it can also be used as a (configurable) shortcut for castle actions (default is to scroll through inventory). Developers: see TGLWindow.OnMouseWheel for using this in your own programs.

  • Warnings after loading a model are signaled by a "%d warnings" button by view3dscene. This way warnings are still clearly visible (the button only disappears after you use it on this model), but don't make an "obstacle" (modal box) to viewing the model.

  • I added to NURBS implementation status page notes about control points in homogeneous coordinates, thanks to Stephen H. France for noticing the problem and Joerg Scheurich (from White Dune) for offering an explanation.

  • Smooth camera transitions under Windows are fixed.

  • OrthoViewpoint improvements, to internally adjust fieldOfView to keep aspect ratio. (OrthoViewpoint.fieldOfView demo)