News - LGPL, SSAO demos, White Dune, more (October 30, 2009) :
|
|
|
|
The core of our engine is now available under the GNU Lesser General Public License (with "static linking exception"). Basically, this allows using the engine in closed-source programs, as long as you keep open your improvements to the engine.
I had a long thought before this decision, always and still being a free software fanatic :) I wrote a short summary of my thoughts, click here to read it (hidden by default, as may be boring to most people).
Victor Amat implemented demos of Screen Space Ambient Occlusion using our GeneratedShadowMap. The complete examples, with shaders, are available inside our x3d/shadow_maps/ directory in kambi_vrml_test_suite (SVN only right now). Many thanks!
Be sure to test these examples with view3dscene from nightly builds, as various problems reported by Victor (related to generating shadow maps) were fixed along the way.
Some demo screenshots are on the right. They show the same view with/and without SSAO. (The comparison is somewhat unfair, as "without SSAO" versions just have GLSL shaders turned off. But the point is that they don't have smooth shadows (occlusion)).
New White Dune release supports all VRML/X3D extensions of our engine. Thanks go to Joerg "MUFTI" Scheurich.
Documentation of our "VRML / X3D implementation status" was refactored, each X3D component has now separate page with support details. This should make it easier to read and find needed things. See the SVN documentation here.
Also, I noticed today that our nightly builds were down for the last 3 weeks. Sorry about that, fixed now.
Development news - more NURBS: interpolators, VRML 97 compatibility (September 7, 2009) :
|
|
Implementation of NURBS is progressing very nicely. In addition to previously announced nodes (rendered curves and surfaces: NurbsPatchSurface and NurbsCurve), we now also handle X3D NURBS interpolators: NurbsPositionInterpolator, NurbsSurfaceInterpolator, NurbsOrientationInterpolator. Using them you can animate movement of objects and viewpoints along the NURBS curves and surfaces.
Also basic VRML 97 NURBS nodes are implemented, for compatibility.
Up-to-date documentation about supported NURBS nodes is here. Some demo scenes are inside kambi_vrml_test_suite in SVN, see e.g. nurbs_curve_interpolators.x3dv and nurbs_surface_interpolator.x3dv.
You can try the new features by using the nightly builds of view3dscene. Or, of course, you can wait for the next stable view3dscene 3.5 release — later this month.
Development news - NURBS basics (September 5, 2009) :
|
Basic support for X3D NURBS is implemented. NurbsPatchSurface and NurbsCurve nodes are handled following X3D specification.
As a background info: the core of our NURBS implementation (nurbs unit) is adapted from the White_dune source code. (Licensed on GPL >= 2, just like our engine, so no problem here.)
For the next engine release, this NURBS support will be extended. I would like to cover X3D NURBS component up to level 2 and also implement most important VRML 97 NURBS nodes for compatibility (they are similar but a little incompatible to X3D ones).
For now, you can try the new features by using the nightly builds of view3dscene.
view3dscene 3.4 release - advanced texturing (August 26, 2009) :
|
|
|
view3dscene 3.4 is released! The codename of this release should be "Everything you wanted to know about textures", as most of the new features deal with X3D advanced texturing nodes.
All X3D multi-texturing nodes implemented. See also clarifications how MultiTexture.mode/source fields work and how to separate them for rgb and alpha channel.
All X3D cube map nodes implemented. This includes GeneratedCubeMapTexture, very useful to make mirrors, especially with the help of WORLDSPACEREFLECTIONVECTOR extensions.
All X3D 3D texture nodes implemented.
DDS (DirectDraw Surface) format is supported, for all texture types (2D, 3D in ImageTexture3D, cube map in ImageCubeMapTexture). S3TC compression, explicit mipmaps are all supported, more details here. New glViewImage 1.3.0 supports reading, writing and even limited editing of DDS images.
RenderedTexture node is implemented: a texture rendered from a specified viewpoint.
Passing to GLSL shaders various uniform value types is implemented. This includes vectors, matrices and many more. Viewpoint.camera*Matrix may be very useful to feed to shaders. You can also pass texture nodes to GLSL shader uniforms, following X3D specification.
New extensions to easily make projective texturing and shadow maps within your VRML/X3D worlds.
Anisotropic texture filtering (by standard X3D TextureProperties.anisotropicDegree).
Hardware occlusion query may be activated for rendering, this can speed browsing large scenes enormously. Try it by menu options View -> ... Occlusion Query.
When using single texturing, you can set environment mode to replace (default is modulate).
KambiScript functions to operate on string characters: "character_from_code", overloaded "array_set", "array_get", "array_get_count", "array_set_count" for strings.
As usual, along with view3dscene release, we also release accompanying Kambi VRML engine (version 1.8.0) for developers. Released binaries are compiled with FPC 2.2.4, sources can also be compiled with FPC from trunk (tested on 2009-08-21). I also provide binaries for Linux/x86_64 (not only 32-bit Linux/i386), as I see a demand for it.
News from SVN - RenderedTexture node, Viewpoint.camera*Matrix events, and more (August 13, 2009) :
|
New features in SVN:
Still no official release, but view3dscene 3.4 should be released Really Soon :) For now you can try new features by using the nightly builds.
News from SVN - 3D textures, shadow maps, hardware occlusion query and more (May 5, 2009) :
|
|
|
|
|
New features implemented last month in our engine:
For the brave: you can test these features already by trying the nightly builds (or grabbing source code from SVN and compiling yourself, of course).
News from SVN — X3D multi-texturing, cube maps and more (April 10, 2009) :
|
Hi! I didn't post a message here since some time, but rest assured that the development of next engine version continues :) Things already implemented in the SVN include:
The plan for the next release (view3dscene 3.4, engine 1.8) is to polish implementation of all above (yes, there are some known problems, also GeneratedCubeMapTexture implementation is severely unoptimal now), and add related texturing and GLSL features:
For the impatient: nightly builds of vrmlengine binaries (including view3dscene) are available. They are build automatically every night using current SVN code. Use at your own risk, of course — they do contain some known bugs. For now, they are made for Linux and Windows (32-bit).
Dynamic Ambient Occlusion, Shadow Fields demos in the engine sources (January 24, 2009) :
|
|
|
|
|
|
This week I implemented a demo of Dynamic Ambient Occlusion using our engine.
In related news, last month I also implemented a demo of Shadow Fields. (I forgot to brag about it earlier, so I'm doing it now :) ).
An extremely short summary: both techniques strive to make low-frequency soft shadows (in other words, the kind of shadows you usually see in the Real World) in dynamic 3D environment.
For now, they are just implemented as demos, and are not easily available for non-programmers. You have to actually get the source and compile some example programs to try out this stuff. (Although I think I'll make at least dynamic ambient occlusion available as an easy option inside view3dscene in the future.) The full source code, and example models, are available in SVN, naturally. Simple instructions:
$ svn checkout https://vrmlengine.svn.sourceforge.net/svnroot/vrmlengine/trunk/kambi_vrml_game_engine/ $ cd kambi_vrml_game_engine/examples/vrml/shadow_fields $ ./shadow_fields_compile.sh $ ./shadow_fields $ cd ../dynamic_ambient_occlusion $ ./dynamic_ambient_occlusion_compile.sh $ ./dynamic_ambient_occlusion models/peach.wrl.gz
There are more sample models in the models subdirectories, and you can test both demos with your own models. Both techniques require highly-tesselated models to make shadows look nice. Shadow fields require preprocessing by included precompute_shadow_field program. Dynamic ambient occlusion doesn't require any preprocessing, but it requires really good GPU (it does ~thousands of texture fetches per pixel in GLSL fragment shader). You can find a lot of notes and links in the README files inside the source directories.
Have fun!
view3dscene 3.3, engine 1.7 release: LOD, Collision.proxy, and more (January 3, 2009) :
view3dscene 3.3 is released, just a mixture of various new features, optimizations and fixes. Traditionally, underlying Kambi VRML game engine 1.7.0 is released along. Changes:
|
Arch Linux users may now install view3dscene from SVN easily by view3dscene Arch Linux package. Thanks to Antonio Bonifati!
view3dscene 3.2, engine 1.6 release: collisions in dynamic worlds (December 18, 2008) :
view3dscene 3.2 is released, with a lot of improvements and optimizations for dynamic VRML/X3D worlds. As usual, this is accompanied by underlying Kambi VRML game engine 1.6.0 release. Major changes:
Our spatial data structure has undergone serious rework, which in English means that your whole scene can be now much more dynamic. Everything can move and transform, and things will work smoothly and fast. All collision detection routines will "see" the most current scene state, which means that you can e.g. click on moving targets, and you will fall down if a hole opens under your feet, and generally you can interact with every dynamic part of your scene without problems.
I prepared a video showing a simple dynamic world written in X3D and played with view3dscene, see it on the right. The video is only a poor substitute for actually running and playing with this yourself, feeling the smoothness of all editing (the poor framerate of the video is only because of the capturing process...). So after downloading view3dscene, you're welcome to also download this demo dynamic_world.x3dv (or just grab it along with the rest of Kambi VRML test suite) and open it. It shows how you can edit the world by KambiScript, how changing transformations works fast, and how it all cooperates with collision detection — whatever scene you will build, your avatar will move honoring collision detection.
Changing Switch.whichChoice is greatly optimized. Previously this was very costly operation, now it's instantaneous (almost no work is required). Many other optimizations were done for dynamic worlds, including faster Transform traversing, faster sensor's enabled switching, more reliable starting of time-dependent nodes and many more.
Thanks to De-Panther for pushing me to implement a lot of these features!
|
Dynamic shadows support is greatly improved, finally view3dscene can render with shadows, honoring our shadow's extensions. We also have new shadowCaster extension. Oh, and shadows rendering with transparent objects is fixed. Just try the file x3d/kambi_extensions/shadows_dynamic.x3dv from Kambi VRML test suite in new view3dscene.
view3dscene has now view mode Fill Mode -> Silhouette and Border Edges, this is very handy for checking whether your models are correctly manifold (this is important for shadow volumes).
ProximitySensor.orientation_changed, X3DSequencerNode, BooleanSequencer, IntegerSequencer implemented.
alphaChannel extension field added to all texture nodes.
Bugfix for open file dialog under GTK 2.14 (like Ubuntu 8.10). Thanks to Graham Seed for reporting.
Precomputed Radiance Transfer using our engine (November 9, 2008) :
|
|
|
I implemented a demo of Precomputed Radiance Transfer using our engine.
In a few words, this is a technique to make very cool self-shadowing by soft shadows under dynamic lighting. (Actually it's possible to go much further, see the papers about PRT linked from my README). You can see the screenshots on the right: 1st shows normal OpenGL lighting (without PRT), 2nd shows the simple ambient occlusion per-vertex (this is, in some sense, a special case of PRT), and the 3rd screenshot shows PRT technique in all it's glory.
The full source code is available, naturally. Simple instructions:
$ svn checkout https://vrmlengine.svn.sourceforge.net/svnroot/vrmlengine/trunk/kambi_vrml_game_engine/ $ cd kambi_vrml_game_engine/examples/vrml/radiance_transfer $ ./radiance_transfer_compile.sh $ ./radiance_transfer models/chinchilla_with_prt.wrl.gz
Inside that directory there are also other models ready to test with PRT. There's also precompute_radiance_transfer to process any 3D model (readable by my engine — VRML, X3D, 3DS, Wavefront, Collada...) into a VRML model that can be displayed using radiance_transfer with PRT effects. There's also show_sh program to view 25 first spherical harmonics (this will be useful if you'll want to understand how PRT works :) ).
view3dscene 3.1, engine 1.5 release: Scripting, VRML browser components, and more (October 15, 2008) :
view3dscene 3.1.0 release, along with underlying Kambi VRML game engine 1.5.0 release. Most notable improvements are:
|
|
|
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 x3d/kambi_extensions/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).
view3dscene 3.0 release: X3D, events, MovieTexture, and more (September 12, 2008) :
I'm pleased to present the new, shiny view3dscene 3.0 release, with a lot of new VRML/X3D features implemented. Also underlying Kambi VRML game engine 1.4.0 is released and some other programs here get minor updates.
New features of the engine and view3dscene:
|
|
X3D support (both XML and classic encoding). Our VRML implementation status page has detailed information about supported features.
Events mechanism (routes, exposed events, sensors, interpolators etc.) is implemented. This allows you to define interactions and animations of 3D world within a single VRML/X3D file, as envisioned in the specifications.
Four basic sensors are implemented now: TimeSensor, TouchSensor, KeySensor and ProximitySensor. Also Anchor is "clickable" now. For now you have to be in Walk mode with Collision Checking enabled to have picking (TouchSensor, Anchor) working.
Linear interpolators are also implemented. Some "event utilities" nodes are implemented (including useful Logger node from Avalon extensions). Events to work with bindable nodes (Background, Fog and such) work. Routing events to GLSL shaders uniform variables works perfectly.. Events to control behavior of Inline (and InlineLoadControl for VRML 97) work too. Prototypes and external prototypes also work 100% with events according to specification, so you can pass events to/from prototypes. New Kambi VRML test suite 2.2.0 has some simple demos of our events implementation.
MovieTexture is handled, with very useful extension to load movie from a sequence of images (with possible alpha channel), this is great for pre-rendered animations of flames, smoke etc. Normal movie formats are also handled if ffmpeg is installed and available on $PATH.
Recording movies from view3dscene is possible. This allows recording 3D animations to a movie file (with perfect quality, as opposed to using independent programs that capture OpenGL output).
GNOME users will be happy to
hear that view3dscene can be easily used as nautilus thumbnailer,
so you can see thumbnails of your VRML / X3D and other 3D model files.
Many other features, including
"The Castle" 0.8.2 release also deserves mention, as it fixes support for OpenAL Soft implementation (available on newer Linux distros). It also allows creators of future levels and creatures to use X3D, animating with standard VRML/X3D interpolators, defining level interactions by VRML events etc.
Have fun! You may also enjoy reading an interview with me about our VRML engine on Hiperia3D News (regards go to Jordi R. Cardona!).
VRML / X3D events and routes implemented (August 15, 2008) :
An extremely important feature of VRML / X3D is finally implemented:
routes and events mechanism works. This means that you can express animations and interactions
within single VRML / X3D file, like envisioned in the specifications.
We have 2 sensor nodes working already (TimeSensor and KeySensor), 7 linear interpolator nodes, and 5 event utilities nodes (including Avalon Logger node, a useful debugger for events). All exposed fields of other nodes also work, obviously. This is all available only in SVN for now. When I get back from vacation (at the end of August) this work will be continued (many other sensors are easy to implement now, and some existing code should be cleaned and optimized) and it will all be released as view3dscene 3.0.
As a demo, see the 6-second movie on the right. It shows animation in X3D done by routing TimeSensor to CoordinateInterpolator to IndexedFaceSet. The model is "Laetitia Sprints" from web3d.org examples.
News - white_dune, X3D, movie textures, engine icon (July 15, 2008) :
Various exciting news about development of our engine:White dune, free software VRML 97 modeler, can export normal VRML animations (expressed in terms of VRML interpolators) to our Kanim (Kambi animations) file format and it supports our extension nodes and fields (run with -kambi command-line option, or use "Start next time with kambi support" menu item). Thousand thanks for Joerg "MUFTI" Scheurich!
Among the many new features already implemented in SVN are:
Reading X3D files, with all 40 X3D components, in both XML and classic VRML encodings, is implemented.
Besides all features from VRML 2.0, many X3D-specific features are already supported, like geometric primitives [Indexed][Triangle/Quad][Fan/Strip]Set (8 nodes total). Rendering internals were reorganized into much smarter hierarchy, to handle these new X3D nodes as well as IndexedFaceSet and other VRML 97 and 1.0 nodes implemented since a long time.
Extrusion node handling.
New extensions, like BlendMode node (a subset of Avalon BlendMode node) and KambiInline (an Inline that can somewhat process the inlined content).
Flames movie above was not only played in our view3dscene, it was also recorded directly by view3dscene. That's right: Screenshot options were much improved, it's now possible to capture animation as a movie file (with perfect quality, as opposed to using independent programs that capture OpenGL output).
GNOME users will be happy to
hear that view3dscene can be easily used as nautilus thumbnailer,
so you can see thumbnails of your VRML / X3D and other 3D model files
(see the screenshot).
We have an icon for our engine and view3dscene. Next view3dscene release will be nicely integrated with GNOME (and other desktops that support relevant freedesktop specs). You can already appreciate engine icon at the top corner of our main page. Thanks to Kasia Obrycka for icon improvements!
Demo movies (May 9, 2008) :
I present three demo movies showing off my engine. Feast your eyes on!In related news, development of the engine goes on. Some of the latest improvements include
Engine 1.3.1 release (Lazarus packages fixed) (February 25, 2008) :
Released engine version 1.3.1: fixed Lazarus packages compilation, for developers that want to use our engine with Lazarus.Engine 1.3.0 release, view3dscene 2.4.0, castle 0.8.1, many other releases (February 19, 2008) :
Released engine version 1.3.0, view3dscene 2.4.0 and castle 0.8.1. Many long-awaited graphic features implemented:
Bump mapping: VRML renderer allows bump mapping. Various bump mapping methods are implemented (best method is auto-detected and used at runtime): dot by multitexturing (not normalized and normalized by cube map), dot by GLSL (optionally with parallax mapping, optionally with steep parallax mapping and self-shadowing).
view3dscene allows to easily
turn on bump mapping, assuming model specifies normal maps.
castle uses bump mapping, for now only
on the "fountain" level.
For programmers: see also kambi_vrml_game_engine/examples/vrml/bump_mapping demo in engine sources, it demonstrates emboss, dot and all other bump mapping methods built in VRML engine. Also my notes about emboss and dot (by multitexturing) bump mapping methods may be interesting: see bump_mapping/README.
GLSL shaders support: engine supports easily using ARB vertex / fragment programs (assembly shaders) and GLSL.
You can also directly specify GLSL shaders inside VRML file, which is a great feature for VRML authors. Syntax of shaders in VRML follows X3D specification.
view3dscene allows to control GLSL shaders and even simply assign GLSL shaders (check out Edit -> Simply assign GLSL shader to all objects menu item), so you can test your shaders with any 3D model.
For programmers: you may find useful my notes about shading languages in shading_langs_demo/README.
Anti-aliasing available (if multisampling is supported by graphic card). view3dscene has comfortable menu File -> Startup Preferences -> Anti aliasing and also a command-line option --anti-alias to control this, castle has comfortable menu item in Video options.
Collada model format basic support (1.3.x and 1.4.x) added to the engine (view3dscene and everything else open Collada files, just like any other model format; you can also convert Collada files to VRML 2.0).
Wavefront OBJ format handling improved (we handle normal vectors, materials, textures).
Examine mode allows to rotate and move the scene by mouse dragging. This is more intuitive and sometimes comfortable. This feature is mostly noticeable in view3dscene, although some example programs in engine demos also use such examine mode and also benefit from this.
Besides improvements above, some improvements specific to view3dscene:
Also our Blender VRML 97 exporter script improved: set solid / set smooth / autosmooth / autosmooth degrees settings from Blender are correctly exported to VRML file (as creasteAngle field).
Other most notable internal engine changes:
Other releases: Kambi VRML test suite 2.1.0 has many new tests/demos for new features (bump mapping, GLSL, Collada format). Also released: rayhunter 1.2.2, lets_take_a_walk 1.2.1, malfunction 1.2.4, kambi_lines 1.1.4, glplotter 1.2.1, glViewImage 1.2.2, bezier_curves 1.1.6, glcaps 1.1.2, mainly to bring them up-to-date with current engine state.
castle 0.8.0, view3dscene 2.3.0 released (November 17, 2007) :
"The Castle" 0.8.0 released:
New demo level: the fountain, done in pure VRML 2.0 format (no more VRML 1.0). Shadows for whole level are generated dynamically. In the next release, this level is supposed to be augmented with some eye candy graphical effects, for now enjoy VRML 2.0 and shadows :)
Shadows improvements (see also new chapter in documentation about shadows) :
Arrows are affected by gravity, and underwater "sick" projection effect, thanks to Grzegorz Hermanowicz (herrmannek).
Numerous memory and speed optimizations to load VRML models and animations faster and better (thanks to valgrind (callgrind, massif)). Also in "The Castle" there's new Conserve memory feature (this basically means that only creature animations needed for current level are kept in memory), turned on by default.
So "Loading creatures" is much less resource consuming. And finally pretty much all Radeon issues are fixed now.
view3dscene 2.3.0 released:
Kambi VRML game engine 1.2.0 released. Most features mentioned above for view3dscene and castle (shadows, optimizations, all VRML 2.0 features) are actually implemented in the engine, and other programs only use them. Additionally, some more internal features not mentioned above:
Engine is ported and works flawlessly on x86-64 on Linux. No more only 32-bit :) Also, it's partially ported to Windows x84-64 (tested compilation with cross compiler, no actual run tests).
This also results in the change of archive binary names: they all get i386 after their name, eventually I may release precompiled versions for x86-64 too.
GLWindow allows to change cursor shape.
Everything is compiled using new FPC 2.2.0.
Kambi VRML test suite 2.0.0 released: many new tests to test new features (protos, external protos, colors, light scope, running path to test NavigationInfo.speed, 3d text), some important VRML 1.0 tests ported to VRML 2.0 too (castle, relative_names, texture_test, house behind the glass).
Blender VRML stuff page added, with improved VRML 2.0 exporter and kanim exporter.
Updated version of VRML engine documentation is available, with a chapter about shadows implementation.
glplotter 1.2.0 and view3dscene 2.2.1 released (September 6, 2007) :
view3dscene 2.2.0 and related releases (August 25, 2007) :
Move to SourceForge finished (July 25, 2007) :
The move of Kambi VRML game engine project to SourceForge is finished ! In fact, if you're reading this text, then you already view our page as hosted on SourceForge.
Being on SourceForge gives us many new features, most important ones: file downloads use all the power and speed of SF mirrors, development is done inside publicly visible SVN repository, we have a public vrmlengine-main mailing list, we have trackers for bugs, feature requests, patches, there's RSS feed to monitor new releases.
Moving to SourceForge: using SF download system (July 23, 2007) :
Download links for most VRML stuff on this page direct to SourceForge file release system now. This is another step in moving to vrmlengine on SourceForge.
Also, some things now get version numbers: Kambi VRML game engine (1.0.0), Kambi VRML test suite (1.0.0).
July 19, 2007:
Just to let you know that my whole VRML stuff is on the move to SourceForge.net. See vrmlengine project page on SourceForge.
I already use their SVN repository to host my code. Most of my whole private repository was imported there, so even though the repository on SF exists for less than a week, it already has 1800+ commits :). If you look close enough, you'll notice two games visible in the repository that were not released yet on these pages. They are available only from SVN sources for now: sandbox (a demo of isometric rendering) and "The Rift" (my current small project — a demo in the style of adventure games, with still background and 3d players; just a start for now).
See sources and many other pages for detailed instructions how to get code out of SVN repository.
June 12, 2007:
Finally, the great update happens ! Most important are "The Castle" 0.7.0 and view3dscene 2.1.0 releases, and (for programmers) the underlying changes to Kambi VRML game engine. Actually almost all programs on these pages are updated too (packaged in a different way, ported to Mac OS X, minor fixes).
As for the question: why didn't you update anything on these pages within the last 6 months ?. My answer is: I was imprisoned in a cave. By a legion of elves. Really, hundreds of nasty bastards with pointy ears kidnapped me and threw me into a dark cave. Just today my cat managed to rescue me. :) Seriously, recently my life was just pretty occupied — I'm on the 1st year of Ph.D. Studies at the University of Wroc³aw (in case you didn't notice the link to "Teaching" stuff at the top of the main page). Besides, well, life has been really good lately — thanks to K.O. and the mountains. :)
"The Castle" user-visible features:
Most notable bugfixes:
Most notable engine internal improvements for programmers (of course not counting features and fixes that already got mentioned above... ) :
"The Castle" improvements for content (e.g. 3D level) designers. Many "The Castle" debug menu improvements and greatly improved game confugurability by editing game XML files:
Also packaging changes: units-src renamed to kambi_vrml_game_engine-src, kambi.cfg file is included inside, test_kambi_units is included inside. Most programs package names include their version numbers.
Minor programs releases: rayhunter 1.2.1, lets_take_a_walk 1.2.0, glViewImage 1.2.1, glplotter 1.1.6, glcaps 1.1.1, gen_funkcja 1.0.1, bezier_curves 1.1.5, malfunction 1.2.3, kambi_lines 1.1.2.
February 28, 2007:
Hello! It's been a while without any significant update on this page — so I thought that I just let you all know that the work on "The Castle" and Kambi VRML game engine was ongoing in these last months. 0.7.0 release of "The Castle", 2.1.0 release of view3dscene along with releases of most other programs on this page are scheduled within a week or two. A lot of internal features (usable for programmers wanting to use my engine, or 3D content designers for "The Castle") were done, along with a lot of bugfixes and many small feature additions.
October 7, 2006:
Good news for FreeBSD users: I finally upgraded my FreeBSD to 6.1, and got NVidia OpenGL working smoothly there, along with OpenAL. So I updated all FreeBSD binaries on these pages to their latest version. I also confirmed that "The Castle" compiles and works perfectly under FreeBSD (although the FreeBSD binary is not included in the game archive yet).
October 1, 2006:
A made a new page about my Kambi VRML game engine. Most of the content of this page was already said here and there, but now I want to say it more explicitly: I'm making a reusable game engine. Also the engine sources are updated now, three new example programs are added: images/examples/image_convert, opengl/examples/test_font_break and opengl/examples/multi_glwindow.
September 27, 2006:
Final version of my master's thesis about my VRML engine is available now.
September 21, 2006:
Newest version of my master's thesis about my VRML engine is available. Only the 7th chapter remains undone. Later update the same day: all chapters done!
Units sources updated: included is an example how to do fog culling (to the fog visibility range), see the file units/3dmodels.gl/examples/fog_culling.dpr. Also blending source and dest factors are now configurable. Also behavior on incorrect Background nodes is now better (reports warning and proceeds).
September 13, 2006:
First of all, a draft and unfinished version of my master's thesis about my VRML engine is available.
view3dscene 2.0.1 released — small updates and fixes. New menu items were added to display the whole octree and to change the point size of PointSet. The quadric stacks value (for the command-line option --detail-quadric-stacks and KambiTriangulation node) can be 1 now. The recently released FPC 2.0.4 is used to compile view3dscene now.
Also, view3dscene entry was added to freshmeat. You can use this e.g. to subscribe to new releases, so that you will be automatically notified about new releases of view3dscene.
In VRML test suite vrml_2/kambi_extensions/fog_linear_with_immune.wrl test fixed.
August 24, 2006:
First of all, I'm proud to announce that VRML 2.0 (aka VRML 97) support is implemented now. It's by no means complete yet, but it's definitely usable already — see VRML implementation status for details and results of various test suites. Almost all of my non-standard VRML extensions work in VRML 2.0 too, and actually you can even mix VRML 1.0 and 2.0 features in your files.
August 1, 2006:
New version of "The Castle" (0.6.5) released: whole documentation is in HTML (available both here online and offline inside documentation/ subdirectory, README file inside archive doesn't contain much now), --debug-log option will print lots of debug info, lifeloss when falling down lowered (to avoid getting hurt too easily when jumping), removed one scroll of flying from "Castle Hall" (to make the trick with flying over creatures harder), many other small changes and fixes.
My nearest development plans:
June 8, 2006:
New version of "The Castle" (0.6.4) released. Various small improvements and one important fix: open-source Radeon drivers under Linux are reported to work correctly right now. Unfortunately, issues with proprietary Radeon drivers (under Windows, and probably under Linux too) are not fixed yet — so stay tuned :)
In an unrelated news: For those of you who know my old alternative email address mkambi@poczta.onet.pl: don't use this address anymore. I will not receive mail send to this address. If you recently (in May 2006 or later) send a mail to this adress, then I probably didn't get it. My only vaild email address is now michalis.kambi AT gmail.com. Or you can send your mail to kambi AT users.sourceforge.net, this will always be aliased to some of my valid email addresses.
New version of "The Castle" (0.6.3) released. Various "cleaning" changes and fixes:
Comparison: Times and memory use below were measured on Linux with release build, with NVidia drivers. Note that the actual times and memory use may vary wildly from one graphic driver to the other, as the most time and memory consuming tasks are in preparing OpenGL things, like display lists and textures. For example, on Windows, memory consumption is slightly lower, which indicates that NVidia drivers are slightly better optimized for memory use on Windows. But hopefully the proportions will be around the same. Times below were measured for entering "New Game" -> "The Gate" level.
0.6.2 version times:
Loading level: 10 sec
Loading creatures: 41 sec
Loading items: ~ 4 sec
Memory use: 496 MB
0.6.3 version times:
Loading level: 10 sec (nothing optimized here for time)
Loading creatures: 24 sec
Loading items: ~ 2 sec
Memory use: 278 MB
A lot of improvements to how we store and generate TVRMLGLAnimation
instances was done for this.
Also view3dscene (version 1.2.4) released: mouse look available (use "m" key). Just like in "The Castle".
New version of "The Castle" (0.6.2) released. Changes from version 0.6.0 include: right mouse button now does jumping, sound of SpiderQueen hurt fixed, SpiderQueen adjusted — overall it's a little easier to defeat now, although some details make it also harder (life decreased, the trick with jumping/flying on SpiderQueen is now much harder), bow + arrows added, Werewolf has higher life now. This was all done for version 0.6.1, that was final version for PGD competition. Version 0.6.2 brings only minor corrections to README and "Credits" text.
New version of "The Castle" (0.6.0) released. This is final (or almost-final) version for the PGD competition. List of changes since 0.5.9 version is huge, among the most important features are: new level "Cages" with new creatures, much reworked level "The Gate" (thanks to Szymon Stoma and Ka¶ka Zaremba), new features making creatures harder to beat (homing missiles, knockback for player, now so easy to interrupt boss attack, aliens try to always stay away from you, most creatures are generally faster), life indicator for bosses, and an ending sequence is done.
Also view3dscene (version 1.2.3) released with some improvements:
New version of "The Castle" (0.5.9) released: creatures are now configurable by kinds.xml file, --debug-no-creatures command-line option, you can set color bit depth and display frequency (the last feature is actually honoured only on Windows for now — yeah, I'm under the pressure :) ). "Official" downloadable version is still 0.5.6, version 0.5.9 compiled only for Linux is here.
New version of "The Castle" (0.5.8) released: debug menu for lights improved (ambientIntensity for lights, "Edit headlight", "Global Ambient Light"), some other small things. There's also a new level, but it's hidden — don't look at it now, should be finished tomorrow. "Official" downloadable version is still 0.5.6, version 0.5.8 compiled only for Linux is here.
New version of "The Castle" (0.5.7) released: debug menu item to change jump properties, debug menu item to edit level lights, some other small fixes. "Official" downloadable version is still 0.5.6, version 0.5.7 compiled only for Linux is here.
New version of "The Castle" (0.5.6) released: trying to nail down display bugs on Radeon: checking display lists availability, "Creature animation smoothness" and "Restore to defaults" in "Video options".
New version of "The Castle" (0.5.5) released: many small pending features/bugfixes done: you can restart "New Game" from any level that you once managed to get to, when changing keys assignment and the conflict is found you can just clear the assignment of the old key (Eric Grange idea), fixes when floating just above the water, player moving speeds adjusted better, better navigation when flying/swimming (you can go up/down just by looking up/down), fixed walking down from slight hills, fixed accidentaly moving adjacent menu items sliders, left/right keys are by default assigned to left/right strafes now, some others.
New version of "The Castle" (0.5.4) released: mouse looking implemented. Also "The Castle" archives are now hosted on much faster server provided by Szymon (thanks!).
Updated view3dscene (ver 1.2.2):
VRML extensions:
Also head bobbing much better, and various other improvements.
Important updates to demo_animation (see units/3dmodels.gl/examples/) in the sources:
Updated glViewImage (ver 1.1.5) (various small fixes).
Updated many other programs sources to keep them compileable, because of many changes in units, and some other various small fixes.
Oh, and I put here my public GPG key.
See also screenshots of my game "The Castle" (link not available anymore). This is the main thing that I'm working on right now, it's for the PascalGameDevelopment competition.
Detailed changes log follows:
General updates:
malfunction (ver 1.2.0) specific updates:
view3dscene (ver 1.2.0) specific updates:
glViewImage (ver 1.1.4) small improvement (accepts dir name on command-line).
Other OpenGL programs updated: lets_take_a_walk (ver 1.1.3), glplotter (ver 1.1.3), bezier_curves (ver 1.1.3), kambi_lines (ver 1.1.1). Also sources docs page shortened, kambi_vrml_test_suite repackaged and fixed some links to www.web3d.org VRML specification.
Last-minute note about FreeBSD: compiled programs for FreeBSD will not be updated today. I'm sorry, but currently I have terrible problems with OpenGL on FreeBSD — current NVidia drivers (8178) cause kernel crashes (it seems that they didn't really update their drivers to FreeBSD 6 ?), and Mesa is terribly unstable. I checked various OpenGL programs, including Mesa demos, and they all just fail in various mysterious ways (segfaults, hangs, etc.). So it's not a problem specific to my programs — it's some problem with my FreeBSD setup, but I don't have time to fight with it now. Anyway, after compiling, I was unable to actually test my programs on FreeBSD, so I will not upload here completely untested binaries. If you use FreeBSD, feel free to just compile them yourself.
New unit VRMLGLAnimation was created, to easily produce animations from still scenes. See extensive demo in 3dmodels.gl/examples/demo_animation.dpr, with raptor and sphere sample models.
I'm also glad to add that I'm starting in Pascal Game Development game competition. This should result in a new game available on these pages around April 2006, and between February and April 2006 I will constantly update my units on these pages.
December 11, 2005
Documentation generated by pasdoc and units sources updated again:
much more impressive introduction page, old README_GLOBAL file removed,
many things translated to English. Some issues with compilation
with FPC 2.0.2 fixed.
November 27, 2005
Documentation generated by pasdoc and units sources updated
to reflect many new features and improvements in
PasDoc 0.10.0 released yesterday.
November 12, 2005
lets_take_a_walk 1.1.2 released (only for Linux) — fixed problem with linking to
current Debian-testing openal version.
October 2, 2005
A lot of content on these pages finally translated to English.
New versions of most programs released, with updated documentation
and often other improvements. Full list of changes:
Second update on the same day, October 2, 2005:
Third update on the same day, October 2, 2005:
(busy day, eh ? :)
September 12, 2005
June 07, 2005:
May 21, 2005:
All VRML loading code now loads using TPeekCharStream, you can always wrap any other TStream inside TSimplePeekCharStream or TBufferedReadStream. This means that loading VRML from file is both more flexible in source code and less memory-consuming at runtime.
Also all VRML reading code can read VRML files compressed by gzip.
view3dscene updated to version 1.1.2, rayhunter updated to version 1.0.1. Example VRMLs updated.
March 14, 2005:
This is implemented by new interface to TMatrixWalker.OnMoveAllowed and new method TVRMLOctree.MoveAllowed.
First part of optimizing OpenGL display using frustum culling done: frustum culling without the help of octree done.
User-visible changes: added --renderer-optimization parameter for view3dscene, see view3dscene page for docs of this parameter. New view3dscene menu commands "View|Show in Examine mode camera frustum", "Console|Print current camera frustum".
Sources changes: VRMLFlatSceneGL unit allows new optimization method: roSeparateShapeStates. VectorMath and MatrixNavigation: done routines to calculate frustum's planes, and calculate frustum's geometry, and check whether frustum collides with sphere and TBox3d. TVRMLFlatSceneGL.RenderFrustum done.
Second part of optimizing OpenGL display using frustum culling with the help of octree: done.
Done second octree based on scene ShapeStates. view3dscene creates it, and can display it's statistics. TOctree.ItemsInNonLeafNodes property added to allow octree nodes to store all cummulated items of their children. TOctree.EnumerateCollidingOctreeItems implemented and TVRMLFlatSceneGL.RenderFrustumOctree implemented.
Added to sources file units/3dmodels.gl/README.optimization_notes that describes how current optimization works, what are the possible drawbacks and what are the possible alternatives (and what drawbacks are hidden in those alternatives :). In case you're interested how it works but you don't want to download my whole sources, you can read this document online.
gprof rulez — small bug that was harmless but was causing a lot of slowdown in TVRMLFlatScene.ValidateFog (combined with roSeparateShapeStates) fixed. Also problem in VRMLFlatSceneGL with GL_COMPILE_AND_EXECUTE solved. Also problem with updating Caption too often (this caused some noticeable slowdown on XWindows on my system).
Example program units/3dmodels.gl/simpleViewModel_2.dpr added.
Mnemonics for GLWindow menus implemented. view3dscene (1.1.1), glViewImage (1.1.1), glplotter (1.1.1), bezier_curves (1.1.1) all updated with mnemonics.
February 28, 2005:
view3dscene, glViewImage, glplotter, bezier_curves are updated (minor version number++, to 1.1.0, Linux/FreeBSD users are encouraged to upgrade).
Inside sources, opengl/gtk/gtkglext/ directory is created with GdkGLExt and GtkGLExt units.
February 3, 2005:
Complete rework of Images unit interface. Now it has object-oriented interface, much safer and cleaner. Unfortunately compatibility with previous versions is broken.
Details: Records TImageRec, TRGBImageRec, TAlphaImageRec are now replaced with classes TImage, TRGBImage, TAlphaImage (and there's also TRGBEImage class).
No functionality is lost, but now using these classes is more straightforward, no longer need to maintain "dummy" conversion routines ImageRec(To|From)(RGB|Alpha). Also now you can use Images unit to define new TImage descendant. Also many things are now safer and checked by compiler at compile-time.
Also many docs updated and translated to English in Images unit.
Sources of most programs needed to be changed accordingly. Changed: view3dscene, glViewImage, rayhunter, malfunction, kulki, lets_take_a_walk, bezier_curves.
Improvement in KambiPng/KambiZlib units:
Details: Now programs using these units (e.g. indirectly by using Images unit) do not require libpng+zlib to be installed on user system.
GTK GLWindow: key shortcuts in menus are displayed and handled entirely by GTK, not by some hacks in GLWindow unit.
Also WinAPI key shortcuts to menus are now displayed as they should (justified to the right).
key shortcuts changed to conform to be more standard (I'm trying to follow GNOME HIG, although I know that my programs are pretty far from it right now), and also to not cause problems as GTK 1 or GTK 2 menu item shortcuts:
All my Pascal programs get a version number. Existing programs on these pages are initially marked as version 1.0.0. Added page describing my versioning scheme.
All programs with version number accept -v (or --version) command-line parameter to display version number. Page with some notes about parameters understood by my programs updated.
From now on, all FPC programs on these pages will be compiled with FPC 1.9.6. Compatibility with FPC 1.0.10 is dropped, and I will do not even guarantee that my programs compile with FPC 1.9.4. So all programs are recompiled and all sources updated, sources page is also updated.
Published imageToPas in units/images/tools/.
Small example of MathExprParser unit in units/base/examples/kambi_calc.dpr.
Polish version of page with some notes about parameters understood by my programs is removed. Only English version will be maintained from now on.
glViewImage has new Edit menu with some simple commands that change viewed image. This was done mainly to basically test that these functions work, but may be useful anyhow.
Fixed some problems with using --fullscreen-custom under Win32.
Removed from sources many files that were needed only for FPC 1.0.10: randomconf.inc, mtrand.pas, 10 files *_defpars.inc
UNIX (Linux, FreeBSD) versions of malfunction, kulki, lets_take_a_walk again have ability to change screen resolution (--fullscreen-custom parameter) that was not available due to bug in FPC 1.0.10.
Some usability problems with kulki solved.
January 12, 2005: Added to sources nice example programs that demonstrate some higher-level functionality of my units:
December 10, 2004: Sources of units and view3dscene updated: units and view3dscene compile with FPC 1.9.5 from CVS from 2004-12-07 (at least under Linux), units/base/examples/ subdirectory with two small example programs.
December 5, 2004: Sources of units updated to commit many improvements to docs (some translations to English and some preparations to generate nice docs with pasdoc). No big changes.
Note: Don't expect any new things to happen on these pages this month (I'm busy in some commercial project since some time, and I probably won't have time this month). However expect many work to happen here next year.
August 23, 2004:
(August 7: another update of units' sources, small changes)
August 2, 2004:
31 July 2004:
27 June 2004:
29 May 2004:
25 May 2004:
20 May 2004:
8th of May, 2004
26th of April, 2004
13th of April, 2004
Full English docs finally available. Maintenance of Polish docs dropped. Many general reorganizations in docs.
Many changes in user interface in view3dscene too: some rarely used key bindings removed (m, g, n), many parts of menu extended to something more comfortable, "lights kind" replaced with 3 separate settings: "light calculate", "head light", "use scene lights". --lights-kind parameter dropped, new --light-calculate (should be much more useful) parameter added.
Linux (GTK) version stabilized.
You need FreePascal Compiler to compile this. You also need to slightly modify sources of FPC. Here are diffs for FPC 1.0.10 and FPC 1.9.3 (link not available anymore). Note that FPC 1.9.3 (downloadable from FreePascal CVS server) requires considerably lesser amount of "hacking" to compile rayhunter. If you use FPC 1.9.3, you will only have to apply changes to packages/libc unit under Linux, and under Windows everything should compile with unmodified FPC 1.9.3 version. While with FPC 1.0.10 there are many more patches and you will have to add some additional units. So I strongly suggest you to use FPC 1.9.3.
18th of march, 2004: I updated view3dscene and glViewImage. Now both programs have a useful menu bar, under Windows and Linux. Under Linux this requires installation of GTK 1.x and gtkglarea libraries. This is some attempt to make user interface of those programs a little more friendly. I'm curious about your observations about this improvement — how do you like it, how does it work under various Linux and Windows versions etc.