Development news: lights improvements, shadow volumes in demo_models, Hunter's Mark, more
Work on next view3dscene and engine release continues. I hope to release the next versions before the end of this month (it's already much delayed according to my plans, sorry :). Some highlights from this month's work:
All the lights, including headlight, are now correctly passed to the shader pipeline renderer. This means that using spot light as a headlight looks good now if you use View->Shader->Enable For Everything, the spot is calculated nicely.
You have much more options for customizing the headlight, by new NavigationInfo.headlightNode extension. You can put any X3D light (directional, spot, point) there, and it will work.
KambiHeadLight node is deprecated and ignored now. It was exposing headlight in a way that was a little alien to other VRML/X3D lights, and is no longer comfortable to implement.
SpotLight.beamWidth is handled perfectly and precisely with shader pipeline. See per-pixel lighting notes
Shadow volumes demos are moved to
demo_models/shadow_volumes/ (will be part of next release of demo models). Dragging with mouse moves/scales/rotates stuff (try dragging with Shift or Ctrl pressed), this uses standard VRML/X3D
SphereSensor features. So you can actually see that shadow volumes work perfectly on dynamic scenes.
Old and mostly useless demo
examples/shadow_volume_test/ is removed, all the fun can now be performed by opening the files from view3dscene (or any other 3D browser from engine examples).
Bartha Rolland (aka B42iso) has made a small game called Hunter's Mark using our engine :) The screenshots are visible on the side of this news post. An excerpt from the mail:
Our Blender X3D exporter was updated to set correct
creaseAngle in radians. This is also fixed in Blender (my patch here, although they fixed it differently, by changing Python value to be already in radians).
Developers: one large "internal" improvement (not directly visible to user) is that the light sources are now much more comfortable to dynamically assign. You can override
TKamSceneManager.InitializeLights to add dynamic lights to the scene (feel free to make their existence depend e.g. on time, or player position etc.). You also have
TVRMLGLScene.GlobalLights, and you can easily make all global lights shine on everything through
This works even for VRML 1.0 (because VRML 1.0 lights can also be global, this is another extension of our engine).
The old dirty idea of "light set" (load lights from special xxx_lights files into special
TVRMLGLLightSet class) is removed. This was ugly and complicated. Now, just place your lights inside normal scene (like a level), and use
UseGlobalLights to shine on everything. More elaborate scenarios are possible through InitializeLights.