Engine * Add support for LWJGL3
* Renderer : fix shadow, use default shader when not assigned, BatchProfile refactor
* Shader : add ShaderParam.colored, enable clipping with SURFACE_NO_MATERIAL surface
* Shape / Drawing api merge into com.bonzaiengine.shape (replaces old Shapes utility too)
* Reader : add support for STL and OSGJS, performance improvements
* IO : faster IO
* UI : fix ScrollPane/MenuPopup layout, improve focus & event dispatch, improve ComboBox/TabPanel/TreeWidget widgets, add SelectButton, fix ui rendering clipping, add WidgetXml to link a Widget to an xml (or json)
* Upgrade to Java 8, various refactor
Tutorials & Tools * Tutorials clean-up
* Tools : Improve UI, new tool framework, internal heavy rewrite (using injection / events)
* New tool :
https://patreon.bonzaiengine.com/ Engine
* Renderer: add LoaderContext to easily asynchronously load texture from a separate OpenGL shared context (non blocking), use DisplayCapabilities.setCreateLoaderContext and ISceneTarget.getLoaderContext, add RenderOptions.clipPlanes
* Shader: tesselation support, add ShaderGeneratorConfig.maxNumClipPlanes, add ShaderGeneratorConfig.noLightingColorSource, fix shadow map shader compatibility
* Drawing: support for points, fix line strip loop, various DXF fixes (color, elevation)
* Procedural noise and filter api to generate 2d/3d images and arrays
* Model: support properly FBX double position with ModelReaderSettigns.options.setReaderFbxHighAccuracyDoubleConversion, added Optimizer.optimizeVertexRange to avoid loosing floating point due to small vertex position compared to the model position
* Widget: add Widget.bindTo and BindToName annotation, update List layout on element visibility change, fix size change event notification when hidden, dispatch mouse and key events to menu item, add MenuPopup.getCurrentMenuPopup, action on mouse press (and repeat) on Button, named command, add panel insert, added Fader.invert
* Math: compatibility fix for Occulus Rift projection matrix
* Visibility: octree, fix Box.intersectTest with Frustum, add IVolume.intersectTest with Plane
* Texture: option for CMYK jpg TextureIO.JPG_CMYK_SUPPORT
* Util: added RandomAccessInputStream, BufferPool is thread safe
* App: removed ApplicationGui
Tools
* The tools now uses the Widget BindToName annotation to automatically bind widget from xml/json to java objects.
Major features introduced in the 1.3.3 branch:
+ pipeline api to customize rendering pipeline, and gamekit integration
+ light api more flexible
+ number of lights dynamically adjusted
+ render and sampler state to easily swap state
+ drawing api for rendering line based shapes
Engine
* Pipeline: new api to customize the engine rendering pipeline targeting GL2+ config defining 'stages' and 'commands' (savable/loadable from xml/json, hot swappable)
* Drawing: new api for rendering line based shapes, support for AutoCAD DXF
* Renderer: added RenderState (easily swap state), added SamplerState (bind TextureID to shader sampler name), VAO usage improvements, refactor RendererPipeline to Renderer, Batch enhancements, Shapes api changes
* Framebuffer: added enums, GBuffer changes
* Shader: number of lights dynamically adjusted, replaced mrt option of the shader generator by SURFACE_MRT/SURFACE_MRT_WT_DERIVATIVES surface types, auto-bind custom sampler to free texture unit, better exception handling when required MaterialLibrary is missing in shader generator (required since 1.3.2)
* Material/Surface: refactor ISurfaceCreator into ISurfaceType, added SURFACE_MRT and SURFACE_MRT_WT_DERIVATIVES in DefaultSurfaceTypes
* Light: api re-write to separate light param from model
* Visibility: added OrientedVolume and re-write IVolume api
* GameKit: integrate pipeline api in RendererConfigComponent, added OmniLightComponent, added RequireComponent annotation to specify hard dependency between component (the GameObject will try to create them if not exist), AnimationComponent enhancements
* Serialize: refactor and merge features from editor tool (format is forward compatible)
* Math: x/y/z/w members are now public, moved to bonzaiengine package
* Lwjgl: fix F2 key
* Physic: updated to bullet physics 2.83.5 and V-HACD to latest
* Migration to Java 7
Plugins
* SkyX/HydraX: support for new pipeline api
Tools
* Editor: integration of the new pipeline api (OasisAtNight and OasisAtSun demos are runnable in editor)
* Editor: gamekit light integration
* Editor: F5/F7 keys to simulate/run, F2 to show collisions
* Editor: in run mode, the game object transform show is the realtime transform (vs. the initial value for the other mode)
* Editor: fix collision panel, add option to convert game object to asset
* AssetRepository: fix ModelInRepo actions not waiting for import to complete, fix cleanAssetsDir may block indefinitely
Demos
* OasisAtNight, OasisAtSun and SkyX/HydraX demos uses the new pipeline api
Distrib
* Upgraded to Jogamp 2.3.1 and LWJGL 2.9.4 #172
* Jars not signed anymore
This build is identical to Stable 1.3.2 2014-01-23
Engine
* Material graph: fix regression with mathFunction.multiply node
* Shader: fix non default surface not generated for MaterialStandard
Tool
* Editor: collision shape is properly scaled with game object scaling, save collision shape 'sync with model' property, fix exception when projet git repo has remote branches, minor ui fixes
This build is identical to Stable 1.3.2 2014-01-16
Engine
* AnimGraph: extend api with params (sharable between nodes), TransitionNode (node transition with conditional), StateNode (sub graph with its own Timeline)
* Threading: TaskQueue regression (Task queued twice)
* Texture: fix 3D texture support, add wrap r TextureParam
* MaterialGraph: ColorToNormal and multiply node fixes
* Material : minor fixes on features introduced in last dev build
Tool
* Editor: anim graph editor enhancements, model material editor fix
Plugin
* Hydrax: port fixes (underwater line artefact, ati driver workaround)
Distrib
* Upgrade to lwjgl 2.9.2 #133, jogamp 2.1.4-rc-20140109
Engine * Material: shaders are now managed by material/surface instead of GeometryData, material surface can now be explicitly set (introducing Material/Surface and MaterialStandard/SurfaceStandard)
* Shader: added modelMatrix uniform
* Model: added VertexData.customAnimated
* Texture: fix read not resetting load failures
* Assets: MaterialLibrary api changes, added AssetManager.create for typical usage setup
* Optimizer: improve skeleton optimization
* Threading: reduce queuing overhead
* GameKit: support user components
* Camera: refactor (ICamera -> ICameraController, IView -> ICamera, split SceneView in SceneView + View)
* Math: support Lengyel projection matrix, added Mat4x4.obliqueClipPlane
Plugins *
HydraX plugin "Hydrax is a complete ocean simulation and rendering plugin"
* SkyX: fix moon, vcloud perf opti
Distrib * Demo:
SkyX / HydraX plugin editor Engine * Texture: added texture 3D support
* Renderer: Batch integrated in rendering pipeline
* Material: added additive blend
* Shader: added ShaderState (stores uniform values), Shader/ShaderUniform api changes
* Task: added priority, AssetManager uses default priority for model/anim/texture/shader
* Stream: fix zip/jar support
* Widget: focus on mouse right button
* Api changes: AlphaChannelMode/RgbChannelMode to AlphaMode/RgbMode, math
Plugin *
SkyX plugin and editor (see bin/plugin) "SkyX is a photorealistic, fast and easy to use sky and clouds plugin"
Distrib * Build: fix compatibility with java 7u45 security changes
* Demo:
SkyX plugin editor * Jogamp: upgraded to 2.1.3#jogl_1160
Engine
* Physic: fix library loading on mac, protect against crash when using constraint, added RigidBody.getConstraints, added setFrames/setPivots to dof6/p2p constraints
* GameKit: fix active state misused, fix some component init (npe/crash)
* Camera: volume manipulator fix/changes for orthographic projection
* Ui: support relative class in xml/json (can use .TextField instead of com.bonzaiengine.ui.widget.TextField), disable depth test on ui rendering
* Input: fix inputs on mac with lwjgl
* Shapes: changes lighting/color behavior
Tools
* Editor: huge amount of bug fixes, manipulator enhancements, added game object active state, added game object bank editor
Distrib
* Upgrade to LWJGL 2.9.1 #114 and JOGAMP 2.1.2
Engine
* Renderer: fix reflection
* GameKit: support adding script component after game object was initialized
Tool
* Editor: fixes to game object edition
Distrib
* Fix installer overriding linux by solaris libraries (lwjgl/jogl)
Engine * Shader: compute shader support, support for uniform matrix array
* Deferred: preliminary shadow map support, added support for multisampling, support two sided material, gbuffer normal compression
* OpenGL: support new extensions
* Animation: fix Motion not loading MorphMotion
* ModelInstance: fix OnLoadListener support
* Engine: added ISurface and RenderOptions.get/setSurface, fix concurrent access
* Io: TextureParam now ignores default parameters, replaced Stream(InputStream) by Stream(InputStream,String)
* Task: add getDependencies
* Widget: add Menu.remove, fix MenuPopup.remove
* Api moved to com.bonzaiengine package, Worker/Task moved in threading package, shader refactor
Tool * Editor: browse texture from model, improve material editor and manipulator, minor fixes
* AssetRepo: fix ModelInRepo.export thread blocking, fix building too many times, import additional texture references (normal/spec maps)
Distrib * Added
Shadow Map demo 'Oasis At Sun' Engine * Shader: shader generator can ouput shader version #130 (for OpenGL 3.x core), added ShaderGeneratorConfig.mrt to output shader for deferred shading (see below)
* Renderer: added renderer.deferred package with framebuffer w/ multiple render target and deferred shading support, Batch supports intancing, don't touch alpha test state anymore when using shader with fixed pipeline
* MaterialGraph: added screenSpace, fix typo worldSpace to eyeSpace
* Ui: support multiple font bmf/sd selection, added eventsOnExternalDrag
* Api change in Shapes, SceneView, BonzaiEngine
* Fixes: fix RuntimeException regression when reading some model with skin info (since recent Tree api changes)
Tools * Editor: added game object asset to easily instanciated similar game object, asset dialog with preview
Distrib * Jar signed with trusted certificat
* Added
Deferred shading demo 'Oasis at Night' This build focuses on the integration of the gamekit api in the editor with hot code reloading and debugging support.
Engine
* Physic: added bullet library for mac (libraries are now available for all platforms)
* Tree: api changes to provide non-recursive tree traversal and lazy Iterable using continuation
* Workaround for bug introduced in Java 7 Update 25 (CachedJarUrlConnection.getLastModified throwing NullPointerException)
* World: removed (src available in tutorials src)
* Misc: UI fixes, Stream improvements
Tool
* Editor: gamekit integration, project automatic upgrade
* Editor: simulate/run mode to play the project directly in the editor
* Editor: script hot reload and debugging/breakpoint support using any IDE
* Editor: script exception logged in the editor
* Editor: changes on spline/collision editors, fix model import
* Editor/Viewer: ui changes and performance improvements
Tool
* Upgrade to JOGL 2.0.2 #1042 and jgit 3.0.0
Engine* Physic: updated bullet to r2643, added linux and android libraries
* GameKit: fixes and changes
* Shader: fix shader list potentially unloading shader generated in a different thread
* Reader: IExtraAsset and ModelReaderSettings.extraAssets to access camera/light/spline from model reader
* Ui: added MenuPopup.is/setAdjustLocationAndAnchor, added TreeWidget single selection
* Refactor: Scene.getMainSceneView()->getSceneView()
Tool * Editor: gamekit integration in progress
Distrib* Added
gamekit demo online applet* Sign certificate changed
This build introduce a scene graph with a component-based system (with scriptable game objects).
GameKit will be progressively integrated in the editor, to replace the *old* (and soon deprecated) World design.Engine *
GameKit: scene graph with a component-based system (with scriptable game objects), see gamekit-demo
* Physics: added step listener, added soft body joint, fix contact callback
* Renderer: shapes changes and uses uniform color, fix exception when ISceneTarget is null
* Android: workaround to dalvik bug
rejecting opcode 0x11 * Refactor: World moved to model.util and will be soon deprecated (gamekit api offer better functionnalities/flexibilities), IInputListener interface changes
Distrib * Tutorial: added gamekit-demo, fix applet-jogl, assets extracted, androit tutorial package changed, updated
tutorial download link * Updated to LWJGL 2.9.1#65
This build adds support for
bullet physics library, using a jni binding integrated in the engine. It only contains win32/64 libraries, linux/mac/android libraries will be provided in some next dev build.
EDIT: linux/android libraries available since 1.3.1 build 2013-05-29Engine * Physics:
bullet physics integration (bullet 2.81 r2636) for collision, rigid body dynamics, soft body and constraints.
* Visibility: added bounding cylinder/capsule, fix bounding sphere when skinned model have multiple lods
* Visibility: parametrize bounding volume precomputation in ModelReaderSettings/Optimizer
* Model: fix static mesh not updating transform when modified
* Renderer: fix TBN color, fix tbn on Model.childs, added render joint bv
* SceneView: added getRayFromMouse
* IInput: add button index support for getPointerDrag
* JOGL: improve compatibility
* Refactor: bounding volume refactor, Vec* refactor, Transform: setRotationMatrix -> setMatrixTRS, Shapes changes and enhancements, scene.picking moved to opengl.helper, Faces.numFaces replaced with getter
Tools * Editor: added model collision editor
Distrib * Tutorial: added PhysicTutorial, updated
tutorial download link * Maven: fix maven repository missing jars
* JOGL: updated to jogl 957
Engine
* Animation: BlendPerJointNode implemented, added AnimationTrack.loopPause
* Shader: picking (no material shader) now uses material's alpha test transparency (ShaderGeneratorConfig.alphaTestNoMaterial)
* Material: fix GeometryData.setMaterialKey not overriding old shader
* Texture: fix ref count when using a ModelReaderSettings with multiple lod
* Optimizer: fix sometimes normal removed and tangent not generated with MaterialAdvanced material
* Io: better input stream reading compatibility with android
* Ui: fix TextField clipping when autoPack used, added TextField prepender
* Refactor: ModelLibrary.getOrAdd renamed to use, TextField.getTextWithAppender()->getFullText()
Tool
* Editor: added model material editor (edit materials or assign material asset to a model), material preview per platform, model rename
Engine
* AsyncModel/Texture: reference counter
* Model: fix lwo texture reading, added ModelReaderSettings.animationSplitIndex and expose split method
* Instance: fix shader sometimes not generated when using tangent space
* Animation: fix AnimationContext.setTracks missing Animation[] argument
* Worker: fix IWorder.stop not terminating threads
* Io: now write ModelReaderSettings.animationSplit/animationSplitIndex, ignore default graph node name
* Refactor: ShaderList and TextureList refactor
AsyncModel reference count usage:
Texture reference count usage:
Asset destruction:
Tool
* Viewer/Editor: animationSplit integration and ui enhancements
Distrib
* Tutorial: add AssetRefCount
This is an important update to provide new features (
Material graph, lod bias support, shader reference counter) and performance improvements and better compatibility with Android devices.
Engine *
Material: MaterialGraph and MaterialShader integration * Shader: fix two sided lighting, fix spotlight with tangent space, fix parallax shaders, performance improvements, ShaderGenerator implementation replaced by MaterialGraph,
ShaderList now uses reference counter, added ShaderUniform.projPlanes, GlslShader log compilation warnings
* Texture:
lod bias support added to TextureLoader and TextureParam
* Model: fix bounding volume when model only have a skeleton
* Asset: fix ModelLibrary/MotionLibrary allowing to add duplicate id
* Renderer: better RenderLoop implementation, improve UI performance on Adreno/Mali chips, static mesh can be rendered with a skinning shader (not recommended performance wise)
* Io: support hierarchical ITagParser with TagAttributes.set/getSubTagParser(), AnimGraphLibraryIO ignore default values of graph node by default, fix Stream.relativize
* Mat4x4: added getPerspectiveNear/Far
* Ui: fix exit/release event sometimes not called, fix Panel size when not in layout, fix GridLayout max width/height support, fix Menu item selection with key, fix TextField selection, fix RadioBox.setSelected(null), fix Table sometimes not rendering, fix ComboBox not updating element after setElements being called, TabPanel auto unselect disabled tabs, fix TreeWidget.setExpanded with level argument 0, fix CheckBox insets
* Bindings: improve JOGL2 support, fix cursor lock with native component
* Refactor: added IMaterial.getMapList, Material moved to material.MaterialStandard, added ITransformable.setTransform/transform, ModelInstance moved in model package, vbo_map renamed to vboMap, AssetManager fields renamed, ShaderList refactor (use/release/destroy), fields made private with access methods (Material.maps, Model.childs, Mesh.childs/geometries)
Tool * AssetRepository: MaterialGraph/Shader integration
* Editor: MaterialGraph/Shader integration, bug fixes and ui enhancements
Distrib *
Material graph video added
* Update to LWJGL 2.9.0 and JOGL 2.0 RC11
* Tutorials: added ShaderGraphTutorial
This is a maintenance build to fix minor bugs and prepare the integration of new features (for next builds).
Engine * Shader: added ShaderUniform timer, fix LightMaterial uniform detection, shader generator opti
* Model: fix lwo reader of normal map
* TextureList: added textureIterable
* AnimGraph: fix input name written twice in rare cases
* Io: parseInt/parseLong/parseFloat/parseDouble opti
* Ui: fix ComboBox.setElements always firing ChangeListener, UiR opti, MenuPopup fixes, fix Menu action not closing MenuPopup
* Font: fixed exception when not created with ui theme
* Timer: added timeSinceStart, moved from Scene to RenderLoop
* App: ApplicationSettings.initApp, refactor on ApplicationGui
* Lwjgl binding: fix rare exception when string containing characters with accent
Tools * Editor: fix motion retarget edit, fix slow open/close of anim graph editor, fix anim graph exit exception, fix new asset panel
* Viewer: shader preview with teapot/sphere/cube/plane models
* Shader editor: added LightManager tab
Distrib * Maven:
maven deployment of the engine, tools, third partiesEngine * Ui: improve update convergence (widget resize was kind of 'laggy'), can be disabled with the flag UI.bestUpdateConvergence=false; (flag will be removed in future)
* AssetManager: added remove parameter to unload methods, add model/motion unload
* TextureList: added TextureList.isPendingLoading, fix texture possibly reading/loading twice in rare case (ui theme reload, font reload)
* Cache: fix rarely blocking worker thread
* Changes: IWorker.queue, IShader.addAndLoad removed
Tool * Editor: minor ui enhancements, new screenshots
* Gallery3d:
new screenshots and updated the
online shader demo, new build sended to newsletter
Engine * Transform: concat renamed to add
* Model/Mesh: added transform(Transform,boolean) and transform(Transform) (uses Transform.multiply internaly), changed old implementation of transform by transformAdd (uses Transform.add internaly)
* *IO: added method to sort entries
ToolEditor:
git integration (
jgit) to track project and assets versions (committer, tagging, ...).
Project upgrade is automatic and does not requires third party software. After the project upgrade, the history will be empty (asset history not available)Editor: project stored in json format, ui changes (inspectors, versioning, SplitPane, menu popup over 3d), Instance: center view popup item, fixes
All feedbacks are appreciated and welcome !Distribution * Added jgit third party
Engine
* Collada/dae: fix missing mesh with some dae model (including sketchup 8)
* Kmz: kml is now parsed to find reference to dae model, textures are properly located using relative path inside kmz archive
* Texture: mipmap support to ITexture (read/write from dds/tex, upload to opengl, TextureUtils), force clamp filter for cubemap texture; added TextureUtils.generateMipmap
* Dds: support of DDS_PIXELFORMAT bit masks, fix header writting
* Tex: format enhancements to improve read/write speed
* AssetManager: fix shader not generated for model with Model.childs (such as md2/md3)
* Batch: added support for cubemap texture (fix Shapes.drawSkydome)
* Visibility: created from SortByDepth and FrustumCulling (both removed), added lodLevel (to adjust model lod by distance from the view)
* Model/ModelInstance: implements ILod, fix bounding volume caching, fix ModelUtil.listMeshes
* World: visibility integration (culling, sorting, lodLevel), transparent objects rendered last (sorted back to front), refactor/cleanup
* Spline: fix bounding volume when spline have no control points
* VolumeManipulator: improve fitToFrustum; PerspectiveProjection.adjust changes
* Widget/UI: fix ActionListener sometimes not called, fix TextField key inputs (page up/down, ctrl left/right)
* Binding: fix lwjgl binding sending twice mouse click event with native display
* Android: better support of hardware (shader) skinning
* Various cpu optimizations
* Changes: MatrixStack moved in opengl.helper package
Tools
* Editor: save anim graph edition changes and node positions
* Viewer: fix mesh uv preview, added auto lod
* Editor/AssetRepository: added texture import/reimport, fix mipmap not generated by builders
* Viewer/Editor: cubemap preview
Engine
* Mesh lod: added support for multiple mesh lod levels, added ModelReaderSettings.lodi (serialized in xml/json)
* Material: automatically fix black material during reading (was done before during rendering, which was removed in last build), behavior can be disabled in ModelReaderSettings.options.setIgnoreBlackMaterialFix
* Shader: support for object space normal map (ShaderGeneratorConfig.objectSpaceNormalMap)
* Texture: fix support of mipmap with cubemap and compressed texture
* GeometryData: can now reference material by index (Integer) and name (String)
* SortByDepth: performance improvements of sort algorithm
* AnimGraph: fix xml/json reading exception
* Fbx: enhancement to material color parsing; Dae: material name enhancement; JMF: fix reader
* UI: fix TextField mouse/key inputs, added TextField.is/setLowerCase, Key/MouseListener returns boolean (usually false, or true to stop further propagation), fix TabPane.removeTab not updating rendering
* Changes: Material.name and Model.meshes/materials are private, Geometry.materialId to materialKey, SortByDepth interface changed, MathFunc.signum->sign, Mat4x4.set*Rotation->setRotation*, [Model]WritterSettings.useLzmaCompression->lzmaCompression, AssetRepository.unloadAll->unloadTexturesAndShaders
Tool
* AssetRepository: fix asset build/rebuild, re-design of builder dependencies (improves when textures are shared by multiple models), build now relies on timestamp (last modified) to automatically detect external asset modification (and automatic rebuild in that case)
* Editor: project upgrade to last AssetRepository, improve 'Viewer' camera, expose Model/Motion/Texture builder options per platform, fix asset popup
Website
* Updated online tutorials and shader demo applet
LWJGL nightly build provided with distribution may not work on linux. If you encounter any trouble, use official lwjgl 2.8.3Engine * Added ModelWriterSettings.texturesOut (similar to motionsOut)
* Texture: added TextureID.getFormat/SizeInBytes, added support for ATI2 normal texture in shader, improve performance for writting TEX format, fix TextureWriter when alpha channel is removed (bug in TextureUtils.reduce), fix ATI1 texture sometimes rendered red (depending on extension supported)
* Renderer: fix alpha test with fixed pipeline, added RenderOptions.setTransparentAlpha, added RenderOptions.SurfaceTransparent
* Shader: material transparency is now used independently of lighting (dynamic lighting was needed before, it's not now)
* Added SortByDepth to sort IBoundable (model, instance, ...) by depth for proper rendering order
* Jmf: fix material forceAlphaTest reading since last build
* Widget: added "textArea-default" (Theme.styleTextArea) style for multiple line TextField, fix TextField not receiving some keys, add support for tab (TextField and BmfFont), IFont.getTextSize signature changed, Menu/MenuPopup now pop on left/right/top/bot depending on available space
* Android: added support for csaa antialisas (nvidia tegra ships). Make sure to use the code when requesting antialiasing on your android app (csaa is the default antialiasing technique in nvidia tegra ships).
Tool * Editor: enhancements to texture edition, project upgrade, fix jws
* AssetRepository: added TextureInRepo
* ShaderEditor: ui entirelly rewritten using ui/widget
Distrib * Upgraded to lwjgl 2.8.4#1649
* Upgraded to jogamp rc8
* Tutorial:
added Sorting Engine
* Model format: support second uv set (dae/lwo), support vertex color (dae/ase/fbx/lwo), fix some texture map not detected (fbx), fix static mesh not properly attach to skeleton (fbx), added ModelReaderSettings.options.setReaderFbxFixSkeleton to fix rare skeleton broken (fbx), fix rare error "Uncomplete array" (dae), fix normal inverted (lwo)
* Shader: added ShaderGeneratorConfig.emissionMap/lightmap, added MapType.Emission/Lightmap, removed MapType.Glossiness/Shininess
* Moved lighting and two sided state from Model to Material, some of Material fields has been made private
* Renderer: fix material uv tile/offset misued
* Removed ShaderUniform.Predefined.mixMode
* Widget: added set/getTooltip (and xml support), fix Tablet/TreeTable rendering, fix TabPane forcing constraint on contents, improve UI update stability
Tool
* Editor: asset browser enhancements, fix spline editor
* Viewer: added prompt command (F2)
Engine * Dae: fixes exceptions with animation and morph target
* Renderer: fix exception with morph target
* Font/UI: performance improvement for widget and font rendering, fix UI.SCALE with font
* Dds/Tex: add support for ETC1 compression (opengl es texture compression format)
Note: ETC1 textures must be flipped vertically when converted with external tool such as AMD's The Compressonator (but should not be flipped when converted by the engine). * Added TextureWriter.openGLEsCompression (and same parameter in ModelWriterSettings.setTextureWriterOptions) to compress dds/tex textures with use ETC1.
* Android: improve single/double tap detection, fix sprite scale9 rendering with UI.SCALE
* Refactor: model reader configuration moved from BonzaiEngine to ModelReaderSettings.options
Tool * Editor: added anim graph preview
* AssetRepository: fixes
Engine
* Math: cpu optimization (important speed-up in skeleton retarget)
* Asset: added AnimGraphLibrary, Model now single sided by default
* Animation: fix AnimGraph active state when a node have multiple parent, fix animation retarget with only one (or no) joint mapped, added reorientLastJoint parameter to skeleton retarget
* Widget: added List.is/setElementEnabled, added TextField.get/setAppender, added setLocationAndAnchorInViewport (auto adjust anchor if widget exceed viewport, see javadoc), added IScrollable to define step when widget is inside a ScrollPane (implemented by Label,List,Table;TreeTable,TreeWidget), TreeWidget: select on mouse down (instead of click), TreeWidget: fix onSelectionChanged not called when a selected node is removed
* UI/Event: fix double click event (when click was on different button), fix wrong id of MouseEvent in mouseExited, keyTyped event now called for key pressed and released event inside (UI event), TreeListener.onNodeClicked->onNodeMouseEvent, Fix TextField capturing all key events
* Fixes: fix offscreen rendering with jogl, potential exception in SceneView picking events and protect opengl state when exception occures inside Picker.renderObjects
* Refactor: ***Library.assetIterable()->assets(), model.io.***IO classes
Tool
* Editor: added preview in asset tree when mouse stops over an item, added anim graph in asset tree and edition/preview panel, ability to import/export model/motion/spline/anim graph, hierarchical spline/anim tree similarly to model motion (when name have '/' separator), integration of motion retarget and improvements in retarget editor
* AssetRepository: added support for motion retarget, better asynchronous builders/loaders
Engine
* Picker: fix picking with PickingEvent.Drag
* Shader: improve light compatibility with android
* Events: improve touch (tap and double tap) detection/compatibility with android
* Widget: fixes events on Menu/MenuPopup, improve Table row selection performance, fix TreeTable 'hole' in first column, fix TreeWidget.updatef modifying expanded state of existing nodes, minor fix in ScrollPane
Tool
* Huge amount of fixes in viewer and editor tools
Distribution
* Font: added missing characters in sd font
* Fix php page of world editor applet
Full changelog from 1.2.2 is available in 'Stable' tab.Engine * UI: added label/TextField font size get/set, added TabPanel.is/setTabEnabled, added UiListener which notifies when widget (TextField) request text input (usefull to show/hide virtual keyboard on keyboardless devices), Menu/MenuPopup is scrollable when exceed viewport, added UI.SCALE to easily scale UI theme, fix focus
* SdFont: fix support, added antialising, improvement font magnification
* BmfFont: fix rendering when font resized
* Tga/Psd: improve rle compression
* Theme: changes on font (slightly bigger, sdfont added)
* Android: fix key input, ability to show shoft keyboard using UI.UiListener
Tutorial * Update UiWidgetTutorial with a label with dynamic font size
Distribution * Added World Editor apk, better Model Viewer apk
* Added SDFont tool to generate SdFont fonts assets,
modified version of lonesock SDFont 1.2.3 branch is now stable and at feature freezed (until next 1.2.5 branch). This build is release candidate for 1.2.4 stable build, planned to be available in following days.
Engine * Fix compressed texture loading with mipmap levels and rectangular size
* IWorker: added pause(boolean) to pause/resume task processing
* AssetManager: added onContextLost(Model) to free rendering data and reload texture/shader if automatic asynchronous loading is used with the AssetManager)
* Widget: improve ui event propagation to support widget occlusion; ScrollPane: added drag/touch to scroll, improve behavior of ensureValueVisible; TextField: added support for more characters, fix ctrl+x; Added TreeTable widget; fix rendering compatibility with osx lion
* Changes: InlineMath->MathFunc
Tool * Editor: history panel now uses widget api (no more dependency to awt/swing !)
Website/Distribution * New forum, new
tutorial section, new
documentation section, fix website for ie9
* Fix last tutorials (was using two AssetManager)
* Remove third party org-netbeans-swing-outline (not used anymore by the editor)
* Updated
LWJGL to 2.8.3 and
JOGL b627 * Added Model Viewer apk ! (for android 2.3 and above)
* Build tested fine with nvidia and ati cards, windows/mac and our android phones/tablets.
Engine * AssetManager: added setShaderGenerator for automatic and asynchronous shader generation, added loadModel/MotionAsyncWithCache to use Cache for downloading and loading model asynchronously (both only active if a ModelLibrary is set).
* Improvements to use less runtime memory when using an opengl context with no fixed pipeline (gles 2 / gl 3 fc) with optimized jmf models.
* Optimizer: improved size of jmf (filesystem and memory), more efficient geometry merger for skin model, ensure bounding volume is precomputed
* JMF/JMA: fix writing models with empty meshes
* Shader renderer: fix using wrong material color
* Batch: fix ui flickering in rare condition (could occures when a big batch was rendering after batch with an odd number of indices)
* Api changes: Optimizer.Param.setAnimationCompressionLevel (replace destructive and non destructive old methods), obsolete AssetLoader removed (use AssetManager instead), jouvieje.model.async->jouvieje.model.asset, ModelReaderSettigns.modelId->id, last parameter of AssetManager.loadModel* is now ReaderSettigns.id.
Tool * Editor: now usable with a GL 3 fc context
Distrib * Tutorials: simplified tutorials, added missing LightManager on some tutorial
* Check our
logo study Engine * Added GLc.syncFromContext and syncFromMatrix (which synchronizes engine matrix stack with respectively opengl context matrix stack or specified matrix) to easily integrate with third party code.
OpenGL matrix stack is deprecated by OpenGL spec, therefore the engine does not use it anymore. * GLc: fix sometimes not updating color (which breaks picking with non shader rendering)
* JMF: file reading speed up (some improvements only available with new jmf)
* Memory improvements to reduce gc
* ShaderGenerator: now multi-thread safe, added support for alpha test
* Widget: reduce cpu usage and stability of UI.update, improve performance of Table, improved SpriteManager.setOptimizeFontAllowResort, fix layout positioning when parent is at location (0,0), fix ComboBox popup height on first show, ScrollPane add page scroll (mouse wheel + control), Table mouse wheel scroll by row step
* Android: fix picking not working
* Android ICS 4.x: fix es20 compatibility, workaround for
new nio bug * API changes: Model/Mesh.transforms->get/setTransforms
Distrib * bonzaiengine-bindings: drop support for gl4java
* Updated to
LWJGL to 2.8.3 #1467 and
JOGL #565 * Updated
KMLColladaWW for 1.2.3 Engine * Support of opengl >=3.x now respect the spec (various fixes)
* Texture: added support for anisotropic filtering (TextureParam)
* Renderer: improve animation rendering with OpenGL Es 1.x
* Shader generator: fix morph shader, improve glsl es compatibility, added ShaderGeneratoConfig.fast to simplify algorithm and run faster on mobile device, fix regression introduced in previous dev build (out of bounds exception)
* SceneTarget_android: improve compatibility with devices
* Fix fullscreen support, DisplaySettings.screenResolution behavior changed: null = keep current resolution and a non null value will change screen resolution
* Added IScene.onContextLost: could currently only happens when switching to fullscreen with non native component (by default native component are used, except if you set ApplicationSettings.setUseMultipleContext to true)
* Api Changes: added DisplayCapabilities.setDefaultOpenGLEs, DisplayCapabilities.g/setNumSampleBuffers->g/setNumSamples, DisplaySettings.g/setGLComponentSize move to ApplicationSettings.g/setSceneSize, ApplicationSettings.setFullscreen->DisplaySettings.apply(...), ApplicationSettings.getDisplaySettings is null by default, IApplication.setFullscreen->IApplication.setDisplayMode
Distrib * Updated to
LWJGL 2.8.2 #1434 and
JOGL b544Website * New
video of the viewer running on an android phone with skinned and morphed models using OpenGL Es 2.0
Engine
* Lwjgl: fix OpenGL context sharing, fix when setGLApiVersion(30) was used
* Renderer: fix exception when LightManager assign to RenderOptions has less than 4 lights
* Batch: fix color not used with programmable pipeline
* Widget: fix wrong position when using location anchor
* Tangent space: fix async computation result to random black rendering, speed improvements, fix potentially loosing gpu memory
* Shader generation: tangent space if needed by shader are processed at the end so in case of async generation the shader will be available faster
* Renderer: improve (reduce) cpu memory usage when using vbo
Engine *
Engine now fully compatibility with OpenGL Es 2 and OpenGL >=3 * GeometryData: added shaderNoMaterial, used to improve rendering when material is not needed (usefull for picking/shadow algorithms)
* Picking: performance improvements and portable on all OpenGL [Es] versions.
* Widget: TreeWidget selection with shift/key, ComboBox popup shown on mouse down event, mouse pressed event is no more dispatched when a popup is visible
* Workaround for
Android 3.0/3.1 Honeycomb nio bug * JOGL: fix Android OpenGL Es 1.1/2.0 emulation
* Mat4x4: fix multiplyProjectionModelview with orthographic matrix
* Shader generator: remove usage of build-in attributes/uniforms and added precision (as required by GLSL Es), faster generation when GeometryData have same properties
* Fix: async tangent space computation potentially break Model rendering (exception)
* Changes: refactor on glsl code, ModelEngine->BonzaiEngine, simplified renderer (remove IModelRender, picking options now in RenderOptions, see new RendererPipeline api), RenderMode->RenderOptions, PredefinedRenderMode->RenderMode, Bounding*.Bounding*Type->Bounding*, AbstractPicking->Picker.
Distrib * Atomic jar: merged bonzaiengine-renderer/shader.jar in bonzaiengine-model jar
* Javadoc: added required extensions to IGL fields and methods
* Android light jars size reduced
Api changesDue to the new OpenGL Es 2 and OpenGL >=3 support, there are some api changes detailled underneath:
* Select a specific OpenGL [Es] Api version:
* Shader does not used anymore fixed pipeline built-in uniform, therefore light properties must be specified to the renderer. If you're using your owns shaders with built in uniform, they will still works but not with GL Es / GL3fc:
* IModelRenderer removed, new way to render model:
* Matrix stacks: the engine does not use anymore OpenGL matrix stack, use instead
* Picking: Abstract picking is now Picker, and IPickable is removed. The method signature changes is straightforward. If you have custom picking rendering code here's how to upgrade (also see Selection tutorial):
1.2.3 is a major branch with many new feature (morph target, advanced animation system/tree, optimizations, improvements, fixes...).
Engine *
Morph target animation is now supported by the engine with DAE/FBX formats ! See the
new videos - Shader generator support morph target on gpu.
*
Multiple track animation and
animation blending is now supported ! See the
new videos - AnimationContext has been heavily modified to support animation graph (AnimGraph) and track (AnimationTrack), xml support to read/write
- Xml read/write support (editor in the tools)
* Animation: changes for better flexibility/compatibility with new features. Skeleton bind pose (Skeleton.getBindPose) is now separated to the other motions (Skeleton.getMotion and Skeleton.getNumMotions return the number of motion not including bind pose). Animation.skeletonMotion/morphMotions added to specifies which motions are played by the Animation.
* Better bouding volume pre-computation for skinned model: now with a very low/unsignificant memory usage (both runtime and in file system) and very flexible (compatible with the new animation system).
boudingBox/SphereGeneration are therefore removed from ModelReaderSettings. * Added support to
LWJGL's Display for better compatibility, better fullscreen support (only compatible with lwjgl 2.8.0).
* Android: minimum api support is now
android 1.6 / OpenGL Es 1.1, a renderer for OpenGL Es 2.0 for android >= 2.3 in progress.
* FBX: better support of skinning (lot of fixes and format support enhancement to fix bad mesh position and bad fit with bind pose), fix rare exception "unknow format"
* DAE: better support of VERTEX semantic, fix html character codes not replaced in texture name
* OBJ/MTL: support for texture with space
* Model Reader: improve polygon triangulation to handle more cases (used by fbx, lwo, obj, ac3d)
* TGA: support for horizontal and vertical flip token
* Texture Writer: added renameFile parameter to setTextureWriterOptions to rename the texture files
* Json: added JsonReader/JsonTagParser which implements ITagParser/ITagWriter like XmlWriter/XmlTagParser (both format are compatible and can be easily converted from one to the other).
- Added model.json, world.json, ... formats
Json low level parsing depends on lightweight json-simple (optional) * Widget: added widget
Tree and
Table, added
Widget.get/setOpacity (which allow fade-in/out of widgets), added WidgetAnimator for easier animation of widget states, added
set/getPopupMenu for easy popup menu integration + xml support (popup automatically shown with right click), fix layout bugs, better support of mouse click events, huge memory improvements and stability slightly improved
* ScrollPane: fix ScrollPane flickering and improve min size
* ComboBox: focused after popup is hiden, up/down arrow select prev/next item, fix rendering last element selected after list has beencleared (setElements with null)
* Theme: update with tree and pin button styles
* Shader: toon shading support light spot dir/cutoff and ambient
* Added GLCapabilities.is/setOpaque for transparent window background (only compatible with jogl2 with native window), setUseMultipleContext to specify if the application will use multiple OpenGL context (native canvas/display not yet compatible with multiple context)
* Fixes: fix KeyFrame.insert potentially inserting KeyData in wrong order, potential GeometryData bug when bounding volume are not pre-computed, Stream.copy(File,File)
* JOGL2: better support and various fixes (GLCapabilities was not used, added missing mouse wheel events, fix TextField keys not working)
* Changes: rendering loop is starten by default in init(GLApi,SceneView)
* Cg: drop support
* Launcher dialog entirely rewritten (removed all crappy stuff) and now startable with ApplicationSettings.showDialog
* Various api and internal code clean-up, refactors (jouvieje.model.animation splitted in jouvieje.model and jouvieje.animation, light related code is now in jouvieje.light, animationUpdated->onAnimationChanged, hierarchyUpdated->onHierarchyUpdated, geometryUpdated->onVerticesChanged), JointData->JointMotion, Launcher and LauncherSettings merged into ApplicationSettings, IGLApplication->IApplication, GLSLShader/CGShader -> GlslShader/CgShader, IModelRenderer implementation is now ModelRenderer, IGL interface simplified
Viewer * All ui now uses 3d ui api, new panels for animation graph/track and morph target, async file browsing, loading indicator and other various misc changes
*
Now running on android ! (phone but best on tablets devices). User experience is to be improved with bigger widgets for big fingers ...
Editor * All ui now uses 3d ui api except history which is still using swing (but not for long !)
* Automatic project upgrade to new version, compatibility xml reader for older version (and basic tool ConvertXmlTo1_3_3 to convert them)
Website/Distrib * Web site is now running on a new host, fix forum register, now on twitter
* New youtube channel, new videos (listed in screenshot section)
* Applets now works on mac (some still need to be updated on the website)
* Distrib: fix possible files corrupted/wrong size (bug in Stream.copy), upgraded to JOGL 2.0 RC-3 and LWJGL 2.8.1
Engine
* Retarget: huge enhancements !
* DAE: fixes very rare cases when node with animation was not added
* FBX: fix rare exception with fbx, better support for animation
* Skeleton: fix sharing animation state with multiple instance
* Shader generator: support up to 4 lights (lighting replaced by light0), various fix to lighting algo, toon shading constants exposed (uniforms: toonTresholds, toonFactors)
* Optimizer: improvements to skeleton keyframe optimization
* Widget: fix rendering with multiple hierarchical clipping/scissoring, Menu triggering two times events, added MenuPopup
* VolumeManipulator: now support orthographic manipulation, slight api refactor (Projection instead of PespectiveProjection)
Viewer
* Add ScrollPane on right panels, new options in menu, shader generator panel updated
Editor
* Fix asset dir rename, fix asset move result in bad instances, fix history freezing editor, fix new project creation issues, fix picking when using clip plane
* Object manipulator: new shortcuts G/R/S to translate/rotate/scale [X/Y/Z to limit on an axis], enhanced
* Improved start-up time, reduce flickering of asset tree
* Add ScrollPane on right panels, log panel is now on left panel, fix menu radio button, added popup to rotation to edit value with euler angles and instance name, added popup in asset preview, moved some dialog window to ui api
* Camera: orthographic view supported, camera keys changed
* Retarget: added preview
Website
* Fix java web start apps
* Forum account recovery now possible
Engine
* JointNameRenderer: change api, improve text rendering quality (pixel perfect)
* Widget: added ScrollPane.ensureVisible
Editor
* Fix: esc key asking for exiting when manipulator is editing, world combobox selecting wrong world on project open, fix model import dialog sometimes not closing
* Motion retarget tool in progress (editor working but not saved within the project yet)
Engine * DAE/FBX: fix bone connection which result to bad animation, occures when the skeleton is described in multiple parts, fix root skeleton node not animated
* DAE: fix sometimes wrong scaling, fix mesh naming, fix exception when geometry has multiple uv, transparency support upgraded to lastest collada spec (1.5.0), "multiple skin controller with multiple matrix" is now properly implemented, fix other issues for good stability
* FBX: fix texture extraction not assigned to model (regression), fix exception with motion with one key with latest fbx version
* BoundingVolume: model with skeleton only now return the skeleton bounding volume instead of null, first wrong bounding volume at first animation frame
* Optimizer: some improvements
* Renderer: fix not automatically updating tangent space if computed after rendering, picking renderer invisible material are no more rendered/pickable, fix shader not used is model.asset.shaders was null
* SkeletonRenderer moved in RenderMode.Bone,Joints,JointsOrient
* SkeletonRenderer2 renamed to JointNameRenderer, fix joint name size on screen not constant/identical with all projection
* Volume manipulator: fitToFrustum new parameters
* Widget: changes with autoPack to allow widget size reduction (can only grow before), autoPack is now autoPackWidth/autoPackHeight, CheckBox: regression click on additional widget not changing the state of the CheckButton, ComboBox: fix (popup) sizing
Viewer * Default look and feel now uses system theme (use command line option to use old look and feel)
* Added heightmap and other options in model import
Editor * Default look and feel now uses system theme (use command line option to use old look and feel)
* Fix asset re-import, fix preview/gallery (events and not showing on model/motion import), enhancement import of missing texture, fix problem with import fbx with embedded texture
* Preview: fix ESC key not working, gallery key/mouse events, menu items, clip plane panel not enabled
* Fix world create: instance not rendered
Distribution/Website * Fix "SHA1 digest error for" due to the use of
pack200 * New screenshots of latest
viewer and
editor tools
Engine
* Motion retarget: improved bone twist retarget, retarget algorithm is faster, computation can be dispatch on multiple thread (if ModelEngine.setInternalThread is set)
* Optimizer: compression of animation keys is faster
* Fix WorkerDispatcher slowly dispatching tasks
* PSD: fix exception with non compressed psd
* MD3: fix weapon not loading
* Writer: fix 'remove unload map' optimizer param removing all maps
* Updated to jogl/jogamp 2.0-RC2
* Ui: fix Menu listeners and enable/visible state; minor fix to events and other layout issues; improve rendering performance; auto-unfocus; fix TextField drag selection with mouse; fix ScrollPane sometimes not updated
* Font: interface changes for rendering multiple text in single batch
Viewer
* Shader generator dialog, light editor and menu ported to ui/widgets
* Re-design of the viewer ui
* Fix model export not reloading animations when separated
Editor
* Menu ported to ui/widgets, fix project open
* Re-design of the editor ui
Tutorials
* Updated AnimationRetarget tutorial with a Slider
* Fix android demo and renamed to BonzaiEngineActivity[2], edited forum tutorial
* Fix online tutorials not loading assets
Engine:
* Collada: fix instance positioning with multiple instances
* Added ModelEngine.is/setReaderDaeFixBadsidedNormals (default false) to solve the orientation of the normal when pointing to wrong side of the face
(this could eventually be applied to other format)
* Font: uniformization with ui sprite (will be possible to add the font texture in the ui packed texture)
* ScrollPane: fix regression scroll bars sometimes not hidden; RadioButton: fix regression not packed; ComboBox: fix popup bad size and enhanced with setFitToContents; TextField: auto-scroll if all text is outside; Slider: enhancements; CheckButton: click now allowed only with button 1
* UI: added addDialog, usage is to manage more easily blocking dialog over ui (non blocking can easily be added in ui contents), added ColorArea and Slider2 (Slider with a TextField)
* Layout: fix resolution which cause widgets going over background border
* ScrollPane: fix layout contents fill area width or height, fix contents with anchor on top, better caching
Viewer/Editor:
* Popups (JOptionPane) and material dialog are new using new ui api
Distribution:
* Font moved in the jar bonzaiengine-widget.jar
* Added bonzaiengine-bindings which contains support for old opengl api: gl4java, jogl 1 and jogl jsr231
Engine
* kmz: google earth kmz model support added
* Optimizer: fix a serious bug which can break the model (mostly occure with dae and kmz models)
* Fix regression to BufferPool which could result to exception in loading or rendering related code
* ScrollPane: allow to fit the contents to the width and/or height of the ScrollPane using contents constraint fillWidth / fillHeight
* Ui: Menu enhancement, layout fixes, small rendering performance improvements
* Jogl2 support: fix exception in SpriteRenderer.glScale9, fix when using jogl2 and ApplicationGui
* Offscreen: added Launcher.createOffscreen
* 3ds: optionally read light and camera properties
Engine:
* Panel: fix/improved location/size when panel has no layout
* Menu: navigation with keys, enhancements
* Slightly reduce number of classes
* Added Offscreen_lwjgl and Offscreen_jogl2 for offscreen rendering (see associate tutorial)
Viewer:
* Model importer dialog, texture editor panel and animation slider now implemented with ui/widget (instead of swing)
Editor:
* Fix possible exception when saving
* Model importer dialog and texture editor panel now implemented with ui/widget (instead of swing)
Tutorial:
* Added OffscreenRendering tutorial
EDIT(2011-04-08): The link to tutorial download is fixed
Engine
* Renderer: fix loosing normal/lighting if picking renderer was used before the regulard rendering of a mesh with no texture.
* Noticeable memory optimization to reduce gc (mainly focused on widgets)
* UI: first optimizations to reduce number of batches (more to come next)
* Widget: focus support added, Menu added, better caching of states, minor fixes
* Theme updated
* Font: improve caching and renamed to BmfFont / SdFont
* Viewport: remove collideWith, added intersectWith
Tool
* ThemePacker: now available in bonzaiengine-tool.jar
Tutorials
* UiWidgetTutorial updated
Website
* New bullet proof newsletter mail sender to ensure previous newsletter problem never occure again
This is a major release for the UI/Widget api, new initialization usage is (see tutorials for more):
Engine * Widget: api changes to support widget theme and xml support for theme description
two themes available with optimized textures packed and description in xml (one theme is a third party theme based on http://nifty-gui.lessvoid.com/) * Widget: added ScrollPane, List and CheckButton; removed Choice, PictureBox and SelectButton; renamed ListSelection to ComboBox
* Widget: Layout orientation is now an enum, misc fixes and enhancements (events, popup ...)
* Slider: added button to scroll with auto-hide if scroll area is too small, allow to always hide button with setUseAdjustableButton, support for vertical or horizontal orientation
* ComboBox: popup menu to select and browse more easily options
* UI: update is now controled with UI.update (event processing and time based 'animation'), mouse event have same coordinate than widget (y flip no more needed)
* Anchor: added LineLeft, LineCenter and LineRight to align text on bottom of the line
* Font: asynchronous loading and integration with AssetManager, allow to force font alpha transparency, depth test state is no more changed
Viewer/Editor * Uses the latest widgets and theme for a better ui.
Website * Fix jnlp broken recently due to a server side problem
* Update forum documentation section and sticky topics with latest api
Distrib * Added missing shader generation to the javadoc
* Added missing asset to tutorial binaries distrib, fix/update script
AssetManager.textures is now required to set before loading the model.
Engine
* AssetManager.assign* removed (no more needed)
* MaterialUtil and TransformUtil merged to ModelUtil, Analyser removed, ITimer removed/replaced with TimerSystem
* Fix bounding volume computation not thread safe
* Texture writer: fix when cubemap is saved to dds / tex.
* Ase: fix regression not reading some texture
* AsyncLoader: fix shader sometimes not sync'ed
* Shader: changes on the refraction shader
* TimerSystem: support for very high framerate
Viewer
* Fix shader editor not opening
Editor
* Fix tree collapsing
* Number of background worker function of available cpus
Tutorials
* Lot of code clean-up, improved skeletal animation tutorials (retarget and builder), updated online tutorial applet
Retarget is still in early development, it will be improved in quality and speed.
Distrib
* Reduce bonzaiengine-graphic.jar by removing gl4java and jogl 1.x (old libraries) support.
The engine still support them, contact me if you need binary including them.
Engine
* AssetManager: fix null pointer when no model/motion library was set
* AssetManager: api extended mostly for easier async loading (readTexturesAsync, setReadTextureAsync)
* Texture: fix texture loading broken
* Stream: copy maintains src timestamp (last modified)
* GLApplet is no more final
* Xml: fix loading not restoring instance duplication
* ModelInstance: fix bounding box not updated for instance duplicated
* Texture writer: fix temporary file not deleted
Editor
* Fix instance stop loading when animation was pause (with shortcut key A)
* Fix saving not working after restoring a version (from history and on start-up)
* Fix black screen with undo/redo when editing spline
Tutorials
* Fix some tutorial not working
* Tutorial: simplification and asynchronous loading to various tutorial
Distrib
* New java based build system (multithread/faster, strong error check/safer)
* Remove shared-datas.jar, reduce tool (viewer/editor) jar size
* Better tutorial distrib (installer and jogl included, fixes, added missing assets
Engine
* Added bounding volume option to request non culled object volume
* Picking: fix very close element not pickable
* Picking: added pick*** helpers to World and Model to automatically analyse the name stack (and simply picking events code).
* Widget: fix enable state propagation, TextField added delayEvents (default false), TabPane fix implementation resulting to duplicating events
* ModelInstance: moved in jouvieje.model package (in bonzaiengine-model.jar)
* Spline related: moved to jouvieje.spline package (in bonzaiengine-model.jar)
* Spline now implements IBoundable, ControlPoint remove duplicated storage of position (position is in the Transform)
* Xml: added XmlWorlds, world.xml now contains a list of XmlWorld (instead of only one before)
Editor
* Multiple world per project now supported (sharing the same assets). Project version upgrade with automatic upgrade.
* Various spline preview enhancements (hide selection, key auto-slide, ) and fixes (edit with instance, time edition)
* Auto adjust edition tool size to keep constant size on screen
* Added clip plane panel (for easier edition of closed level)
* Fix repository indexation bug, fix undo not applied to spline, fix history panel current/previous highlights, clear history button added
* Misc ui changes, auto hide panel if not use, various fixes
Tutorial
* Fix tutorial not working regression and update ModelSelection using pick helpers
Engine
* Scene: refactor with introduction of SceneView (and SceneMultiView).
Requiered changes (see tutorials)
extends Scene implements ISceneViewRenderable
Override reshape (see tutorial)
init: getMainSceneView().setRenderable(this);
render: render(IGLApi,SceneView) and remove super.render(glApi) call
before glClear: sceneView.setViewportAndPerspective (or equivalent)
* Picking: really fix now picking ordering (previous fix was bad)
* Widget: added TabbedPane, RadioButton, Layout fixes
* Widget: new exposes getViewport to easily synchronized a SceneView over the widget viewport (it can be handy to use widget layout to layout multiple viewport or handle automatic resize), theme can now be applied after check box creation
Editor
* Instance panel moved to new ui api.
* Gallery browsing mode to preview multiple model on screen
* Spline preview with camera
* Misc ui improvements
Gallery3D
* Updated the distribution to fix build script
Tutorials
* Upgrated to the latest api changes
Engine
* Optimizer: huge memory reduction of skeletal animation
* Task: added dependency to ensure the task is processed after all of its dependend tasks.
* Async: fix volatile field inadvertly using transient instead.
* Fix key/mouse input when focus lost/gained
* Model.set/isAutoNormalize removed (this is now handled by the engine).
* Widget: TextField mouse scroll fix, added focus listenener, location is relative to parent, added location anchor, enable state is now propagated, added GridLayout (similar/simplified version of awt's GridBagLayout) and LinearLayout (vertical or horizontal), simplification of ListSelection/Choice/CheckBox using layout, added Label anchor and textAnchor, added Widget constraint and insets, Widget.set/getSize is the preferred size of the widget, Widget.set/getAreaSize is the actual size for the rendering (size after layout resolution) ...
* Xml: added support for reading ui/widget from an xml file (ui.xml), see tutorials.
* SpriteTexture: now allow asynchronous loading, similarly to Model Map.
* ModelTextureList merged with TextureList and AssetManager.
* Picking: Fix picking depth ordering, ViewHelper.beginOrtho now support picking
Tutorials
* UI/Widget: tutorial using layouts and ui construction from xml
Viewer
* Fix Open not working
Editor
* Huge improvement to object manipulator !
* Fix project not saved to version 8, misc ui enhancements
* Fix spline not loaded, fix spline tangent edition
* Fix jws missing jar
* Ui: portion of the swing ui is porting using the new ui api of the engine.
Gallery3D
* Now integrated in the build: is distributed from now.
Distrib
* Installer now preserve timestamp for extraction
Engine
* Worker refactor: Worker->IWorker, RunnableQueue->WorkerQueue, RunnalbeDispatcher->WorkerDispatcher
* Task: Task.getResult->Task.get, added Task.peek
* Added TaskQueue: easily control the completion of a specific set of tasks
* Added ModelWriterSettings.addStreamOpenListener to track file written, IStreamOpenListener->IStreamAccessListener
* Added ModelEngine.setInternalWorker.
This is currently used by TextureWriter to dispatch all asynchronous work (asynchronous texture writing) to existing Worker.
This avoid new Thread creation and exponentiel number of thread running at the same time when multiple models are written.
* Moved AsyncModel/AsyncLoader in jouvieje.model.async, added AsyncMotion (which is similar to AsyncModel)
* Readers: uniformisation of animation name
* ModelReaderSettings now extends ReaderSettings (so modelStream is now stream), added optional modelId
* JMF/JMA: fix parsing when Model.childs is not empty (no need for rebuild), fix possible exception writing morphing
* Optimizer: rare bug loosing texture
* Widget: added Slider, added focus listener
* World: small clean in the api
* Xml: fix write/parse model.xml (XmlModelLibrary)
Asset Repository
* New functionalities: rename asset directory, async export and clean
* Model/Motion id are now without extension
* Fixes motions import
Editor
* Automatic project upgrade to version 8
* More options in asset tree
* Added motion preview
* Small ui improvements, fixes in world tree
Tutorials
* Added basic AssetRepository tutorials, updated Android tutorial
Engine
* TEX: improved for faster loading (rebuild your tex file to get advantage of this)
* Added TaskState.Queued, Worker.queue is now specialized to Task
* AnimationSkeleton renamed to Motion
* FBX: fix not using ModelReaderSettings.prependTexturePath
* Android: added support for png, bmp, gif and jpg
* Skinning: skeletal animation retarget huge improvements (usefull to retarget bvh animation).
* Fixes for the stable release
Tutorial
* AnimationRetarget tutorial
Asset Repository
* All operations are asynchronous
* Added support for motion asset
Editor
* Use new features of asset repository
* Improve asset tree for faster importation (+ fixes)
Note: this changes are available in stable 1.2.0 release
Engine * JMF/JAF/JLF/JMA: the format has been updated to be forward compatible. This means any files created from this build will be compatible with any newer version.
* LZMA: fix input stream available bug
* BVH: Fixes
* Support for concave polygons (all format using polygons), but not concave polygon with internal hole or self intersection edges.
* Fix normal computation for smooth group mode when smoothing is off (obj).
* Optimizer: reduce pre-computed bounding volume memory usage (used with skinned models).
* Skinning: improve Skeleton.merge
* Skinning: improve caching of bounding volumes and fix SkinData.computeBoundingVolume when called after loading
* Fix AnimationCutter
* Fix ModelReaderSettings javadoc of octree fields. octreeMaxSubdivisions must be specified.
Tutorals * Added
AnimationBuilder tutorial
Distribution * New self installer and jar renaming, see
faq Engine
* BVH: Added support for bvh format !
* Model.animations and Skeleton.jointDatas are private for safer manipulation.
* jouvieje.math classes are serializable
* Increase reader smooth group limit to 64, instead of 32.
* JMF/JAF/JMA: Fix writing corrupted KeyFrame datas (occures if model is not optimized or with keyframe or morph animation)
* JMF/JAF/JMA: Fix writing Transform
* Texture writer: fix writing bad format/extension if texture is referenced by a different extension.
Engine
!* Fix rendering artifacts with skinning
* FBX: compatibility for old fbx version 5 (static model only)
* FBX: lot of fixes and on fbx version 6/7 animation support
* FBX: support for embed texture in the fbx file: extraction and read from memory. By default, embed texture are read from memory, they can be extracted using ModelEngine.get().setFbxExtractTexture.
* FBX: support for fbx with only a skeleton and animation (usually from mocap)
Engine
* FBX: fix hierarchy
* FBX: support rotation (orientation)
* FBX: support skeleton and skeleton animation
* FBX: smooth group support
Engine * FBX parser in progress: support for static geometry, material and lighting (!)
(support for animation and skinning in good progress)
* JMA/JMF/JAF/JLF: the formats are now controlled by the api (don't rely on java serialization) and loads faster. The format will possibly ensure forward/backward compatibility in the future (not yet available).
* Introduction of AsyncModel for easiest asynchroneous loading management with multiple models
* ModelLibrary now contains a map of <ModelReaderSettings,AsyncModel>
* Added Mesh.linkToJoint to link a static mesh to a skeleton joint
* Optimizer: meshes using only joint are optimized to use Mesh.linkToJoint (to avoid unecessary skin), optimize transform
* Shader: fix per pixel lighting with directional/spot lights
* Light: added LightManager and LightRenderer
* Skinning: added Biped utility
* Improvements on the polar decomposition
* Added Billboard utility
* DebugOutput replaced by Log
*
JOGL binding updated to build 242Asset Repository * A tool to manage and build model/texture/animation assets.
It is now used internally by the World Editor.Viewer * Show joint names (still work to do to adjust font size depending on the model)
* Fix shader viewer regressions
* Changes on the UI: model import panel and light panel
Editor * Now uses the Asset Repository tool to manage models
* All loading are now asynchroneous (Important internal changes to use the latest api changes)
* Automatic project update to new version
* Huge loading speed improvements
Gallery3D * UI in preparation
Tutorials * Updated to lastest api
Refactor * org.jouvieje => jouvieje to shorten packages
* org.jouvieje.view => jouvieje.camera
* org.jouvieje.application*** -> jouvieje.app
* org.jouvieje.widget -> jouvieje.ui.widget
* org.jouvieje.widget.Container -> jouvieje.ui.widget.Panel
* lookAt -> getLookAt
Engine * JMF/JMA format changed
* DAE: support for library_nodes/instance_node tag, support for dae with bad vertex data count
* Added ability to split skeleton animation (usefull for MS3D/DAE/Collada models, see forum tutorials 15).
* Fix AnimationCutter.removeAnimation(s)
* Added JAF format to store skeleton animation separately of the model
* Fix optimizer exception when internal bone are not used.
* Reader: Fix smooth angle not used with smoothing groups (BTW smooth angle is in radians).
* ModelReaderSettings: now uses Stream instead of String (modelFolder and modelName are now modelStream, ...)
* Fix reverse animation: support for negative speed / times
* Huge rework on UI/Widget: events are now process inside the gl thread, easier way to managed component events with multiple screen using UI.setContents, first step for optimizing widget rendering, added TexturePacker
* Rework on the app package for better application/applet abstraction (viewer/editor are now available as applet)
* Update to build b187 of JOGL2 from
jogamp.org (CG support removed, package refactor)
Tutorials *
Added tutorial 15 to show how to split MS3D/DAE animations. This can be used to split any other model format with a single skeleton animation.
* Fixed move a camera
Viewer * Added smooth angle option in importer panel (angle in degree in the input field)
Editor * Fix repository index corruption (+ auto-fix when it has been corrupted)
* Project updated to version 5 to update model.xml file format
Other * Huge change to the build system for an better distribution and uniformity between offical and dev-releases.
* New web site: will keep me busy, I'll hire a company for the logo but if someone has a great design I would love to buy him.
Model Engine
* LWO: Added support for normal smooth angle treshold (to conserve sharp edges with smoothing normals).
* Height map to normal map: fix Y inversion (?)
* DAE: support for multiple skin controller
* Skeleton: added joint name info
JMF/JMA format is compatible with previous build.
* Optimizer: remove unused joint (some exported export too many joints).
* Added ModelReaderSettings.lightingSmoothAngle (angle in radians) used with LightingModel.Default,SmoothAngle,SmoothGroupAndAngle
* LightingMode: added SmoothAngle, SmoothGroupAndAngle and Default.
It is recommended to use LightingMode.Default, the proper mode will be choosed be the model reader.
* Fix texture writer with possible null pointer exception (when a Map has a null name).
* New texture format (TEX extension) which is a DDS like format with optional LZMA and encryption support (read/write support).
Format design is final and independent of runtime classes with full forward and backward compatibility.
* TEX encrypted loading: temporary way to provide the encryption key with a callback registered in ModelEngine instance
Graphic Engine
* Fix regression texture loaded as a 1x1 texture, disable texture size check
* DDS: support for writing uncompressed byte textures and better support for reading non-compressed DDS
* DDS: fix compression for texture size not multiple of 4
* DDS: fix saved flipped in some cases
Android
* More control on the GLSurfaceView
Model Viewer
* Fix bad init in very rare cases
* Update export and skeleton panels
* On save: close current model and load saved model
Gallery 3D
* GUI in progress !
Third Party
* Fix LZMA input stream support
Model Engine * Performance regression since last build when texture was not found
* Animation: format changed for a
HUGE cpu memory usage improvement for skinning informations.
* Optimizer: added animation compression (non-destructive enabled by default, and destructive compression not enabled by default).
* Renderer: improve hardware skinning data sharing (instanciation use a very low amount of extra memory now)
* GeometryData are now cullable, api clean up
* Renderer: improvements to reduce gc
* Regression: fix bad TBN vectors
* Shader: added hardware skinning support for tangent/binormal vectors, fix normal mapping with hw skin
* Shader: fix when using cube map
* Added ModelWriterSettings.optimizeParam to optimize the model with Optimizer.optimize
* Heightmap: added embed octree partitioning. heightmapOctreeMaxFaces will split the heightmap in sectors containing the maximum number of faces specified (more efficient in term of temporary memory than usual octree partitioning).
* Heightmap: reduce temporary memory while reading
* Texture: improve loading
* Writer: optional texture analysis to improve storage and convert to a specified format (dds,tga,psd,png,...). Use ModelWriterSettings.setTextureWriterOptions to enable texturing optimization.
* Xml: save texture compression swizzling
Graphic Engine * TextureReader has now a pluggable API to add remove texture format.
* TextureReader refactored to TextureIO with write support (pluggable), with by default awt/tga/psd/dds writers
* TextureLoader: 2D and cubemap textures are now abstracted
* Support for floating point texture, with fallback to byte if not supported by the gpu.
* Refactor on ITexture implementation with now TextureByte and TextureFloat, with an extended interface to be able to hold a cubemap in a single ITexture.
* Various fixes on Tga/Psd/Dds support
* DDS swizzling (DXT5/ATI2) support: auto detected and support for compression and decompression.
* DDS cubemap compressed/uncompressed and 16/32 bits float uncompresed texture support
* Fix 3Dc read and load (with better extension check)
* Speed improvements to DDS converter
* Importent speed improvements to TGA writer compression
* TextureUtilsAwt new convert in grayscale if only one non alpha channel.
* Fix hardware mipmap generation
* No more dependency to GLU: mipmap was generally poorly supported OpenGL api (not efficient, high memory usage) or not supported at all. Mipmap generation on CPU (used if GPU don't support it) are now efficient and also now supported on Android.
* Texture loading: now check maximum size supported by hardware
* Better ICullableNode interface
* Transform: internal implementation changed for smaller memory usage inside the JVM
* Math: reduce source code size by refactoring: VectorXf->VecX, VectorXi->VecXi, Quaternion4f->Quat, Matrix16f->Mat4x4
Android * Added smaller distribution (520ko instead of 740ko) without model readers/writers, JMF/JMA readers are included.
This is great if you convert your models to JMFModel Viewer * Now uses the same texture editor than the World Editor
* Fix UV preview not showing
* Fix LZMA button not working on export panel
* Added texture options to export panels
World Editor * Fix opening when no project was passed to command line
* Fix history undo/redo not updated in the gui
* Auto switch to editor after instanciation
* Sort tree by name
* Model preview: navigation interface (and key shortcuts)
* Added swizzling in texture editor
* Other fix and improvements
Forum * Better documentation
*
Tutorial 14 added
Model Engine
* JMF/JMA: fix skin bounding box not updated
* JMF/JMA: fix bad loading of serialized md3 models
* JMA: fix not writing texture
* Fixes and improvements to the Heightmap reader (was quite bad):
* Fix exception loading from greyscale images
* Reduce highly memory usage during heightmap loading (less out of memory for big heightmap)
* heightmapScale is now heightmapGridWidth/Depth for rectangular grid
World Engine
* Fix ModelInstance.update not working
Graphic Engine
* Fix reading image with short data
Model Viewer
* Fix reload window location/size
* Misc gui fixes
Model Engine
* Renderer now automatically updates when new textures are loaded (so hack removed from async tutorial)
* Fix ModelReaderSettings.equals
* Remove DisplayListRenderer, use VertexArrayRenderer or VBORenderer instead
* Collada/Dae: huge regression from last build
* Collada/Dae: fix "No face" exception when collada models are exported with some empty meshes.
* Fixed HW skinning
Graphic Engine
* Fix TextureList.loadTextures infinite loop
* Stream: implements closeable (open/closeStream renamed to open/close)
* Stream: added openOut for opening OutputStream (ie writting). Protocol available are same than for reading, except classpath/http/https/ftp writting is not supported.
* Tree: more functionalities
* Removed ErrorOutput/ErrorLevel
* Added ComponentWrapper equals/hashCode (was breaking so events)
World Editor
* Automatic tool to fix version control.
* New xml project format (automatic project update), which reduce size and number of files on disc.
* Repository now support tree: work on multiple versions (branch) of the project and new history view (tree)
* Improve start-up
* Fix snapshots not moved into commit dir (automatic project update)
* Fix sometimes not loading history, and bad undo/redo menu state
* Fix texture not used when undo/redo
* Fix model import exception and model re-import not importing textures.
* Fix some synchro with the transform editor of the instance
* Fix restoration not loading models if not instanced
* Fix focus over 3D
Model Engine
* LWO: fix of bad uv finished (was starten in 22-08-2010 build)
* MS3D: Fix skeleton due to bad joint orientation
* Improve async texture loading by sorting texture with priority (diffuse highest priority)
* CPU skinning: tangents are now skinned.
* Renderer: Fix tangents not used.
* Renderer/Shader: fix always using blending when an opacity map was specified but not used by the shader.
* Material: transparency is now private, use set/get
Model Viewer
* Shader config: fix Specular/Reflection/Refraction buttons inverted
* Minor gui improvements
Model Engine
* Collada: fix possible array index out of bounds exception with some models and xml parser.
* LWO: fix UV with some models (other fix in progress)
* OBJ/MTL: support for duplicated materials in mtl file
* MS3D: fix when model is partially skinned
* MS3D: skeleton ignored if only one bone and zero or one keys.
* Regression: exception while rendering transparent.
* ModelReaderSettings: 'boolean appendTexturePath' change to 'String prependTexturePath'
Graphic Engine
* Finder.find: fix lossing location during search
Model Viewer
* Fix editing vertex data
* Minor gui/diaglo improvements
World Editor
* Now support missing/removed assets from the project, the tool will ask you to re-import or to delete them at next project open.
* Added re-import model, which allow to change or re-import an upgraded version of the model
* Safe rename model/instance
* Fix asset relative path no used for textures. An automatic project updater will fix that for you !
* Fix version control info inadvertly refering instance instead of model
* Model import faster (using menu/popup): texture are now loaded asynchroneously after import.
* Key 0-7 (camera control) are now global (was only active in the 3D component before)
* Fix bad synchronization between manipulator and instance box after moving the instance
Tutorials
* Updated tutorials header and provide LoadAModel that runs outside the tutorial selector (LoadAModelStandalone)
Model Engine * Shader generator: added specular map support
* Renderer: now count number of indices instead of faces
* Noticeable memory improvements to reduce GC
* Possibly some slight perf improvement due too small improvements
* JMF/JMA format changed due to the new features underneath
* JMA: ModelWriterSettings.'compressed' field added (default is true) to specify JmaWriter zip compression (smaller vs highest compression).
* JMA: removed support for author/email/site in JMA format (no real use).
* JMF/JMA: encryption support (specified with ModelWriterSettings.encryptionKey)
* JMF/JMA: lzma compression support (specified with ModelWriterSettings.useLzmaCompression).
LZMA compression is done thanks to Christopher League and LZMA SDK, you must include the thrid party jar named lzma-out.jar in your classpath to use this feature LZMA is decompressed thanks to pzip, you must include lzma.jar to use this feature. This is an identical jar than LWJGL distribution.Graphic Engine * Better compatibility with xerces (all XML reader)
* Widgets: Fix mouseEnter/mouseExit called to many times when a widget is added to a Container (more thing to clean-up when I got time to review/continue the widget code)
Model Viewer * Updated export dialog with new options
Shader Editor * Fix not opening
World Editor * Model preview with double click on model tree
* Embed model viewer: fix not opening
* Instance dialog: fix modifying the new instance with the previous instance properties
* Instance dialog integrate in the left panel
* History: fixes undo/redo
* Manipulator: rotation pivot is now the center of the selection
* Manipulator: improved zoom in/out
* Top right: cube shows front/right/back/left/top/bot orientation. Key 1 to 6 are respective shorcuts to select the faces. Key 0 is for perspective and 7 is to adjust the view to the window.
Misc * Fix tutorial source not exported
* Added script to extract jar.pack.lzma in jar
* Updated online tutorial (sources available on the forum)
* Some update the the web pages of the project
Model Engine
!* Material format changed: rebuild your JMF/JMA models
* GLSL Shader: fix on attribute/uniform, which could break shader rendering on some gpu/os (hw skinning was broken on a mac, potentially fix other issue too)
* Shader rendering: fix alpha test that was considered as blend (lost of z sorting)
* ASE: fix when ASE contains wrong material association (result was an exception while rendering)
* MD5: fix when no animation (md5anim) is loaded but animated was specified (exception while updating the model)
* DAE/Collada: fix exception when polygons has more than 3 edges (ie quad and above)
* DAE/Collada: add support for specular maps
* LWO: fix specular and normal map assigned to diffuse (copy/paste bug ...)
* LWO: misc fices
* LWO: first support for planar and cylindrical texture coordinates generation
* OBJ: add support for specular maps
* XML: now read/write TextureParam.alphaTestThreshold and new/missing ModelReaderSettings fields
* Added ModelReaderSettings.useDiffuseAlpha,forceAlphaTest
Graphic Engine
* TextField: caret selection support (with mouse and keyboard)
* TextField: ctrl+c/v/x/a support
* QuestionYesNo refactored to Choice
Model Viewer
* Added a file system browser (Ctrl+Shift+O) to open quickly models, with the ability to filter with pattern like *.3ds
* Lang support, included default french and english translation. You can now translate the tool in your own langage !
* Settings are now save/loaded
* Shortcut changed with more usual keys
* New options on some dialogs/panels
* Texture/Uv preview improved
* Map panel improved
* Internal design changed to follows World Editor tool.
Shader Editor
* Lang support
Tutorials
* All tutorials are 'merged' in a tutorial selector
* Old tutorial applets has been upgraded with the new tutorial selector and a better applet launcher
There was a huge changes and fixes on the math lib. Please check this changelog and the javadoc.
Model Engine
!* Model format changed due to math lib refactor and animation improvements.
Rebuild your JMF/JMA models.
* Added X3D reader
* DAE: better support of animation due to math lib and skinning improvements
* MS3D: fix normal not generated on some meshes, fix no face exception
* LWO: multiple fixes (but still some work to do, if people need better support just ask)
* Skinning: better interpolation which make animations with a small number of keys usable (and recommended to decrease memory usage)
* Skinning: remove storage of absolute Transform for each key to reduce memory usage (you can still request them if needed).
Absolute matrices are available/exposed for the current interpolated skeleton.
* Transform: moved to graphic engine
* Fix MemoryUtil.memoryUsage counting twice vertex and face informations !
Graphic Engine
* XML parsing: fix on Android device
* Finder: fix set adding duplicate folders
* Fix GZ/LZMA protocols
* Matrix16f: equals/hashCode/toString
* Matrix16f.gluLookAt: better precision and less temporary allocation
* Matrix16f: fix setGLRotate, setXRotate, setZRotate
* Matrix16f: refactor and clean-up
* Quaternion4f: fix fromMatrix, createMatrix, fromLookAtMatrix, createLookAtMatrix, fromEulerAngles
* Quaternion4f: improve rotate (vector)
* Quaternion4f: add createSpherical/fromSpherical, [set/get]AnglesZYX
* Quaternion4f: rename from/create to set/get, getLookAt[Left,Up,Forward] by getAxis[X,Y,Z], rename EulerAngles to AnglesXYZ
* Transform: removed storage of backed matrix to reduce runtime memory
* Transform: extended for compatibility with polar decomposition (to convert any general matrices in a transform object without any conversion loose).
* Transform: from/create rename to set/get
* PitchYawRoll: removed due to poor implementation. Quaternion or Matrix offer proper way.
* ViewHelper: added gluUnProject
Model Viewer
* Better time synchronization between slide and animation
* Slight update to follow the new math improvements
Model Engine
* JMF/JMA: now in ModelEngineCore.jar
Now you don't need ModelReader.jar if you're only uses this format (in the case for example you export all your models)
* Collada/DAE: now parse polygons tag
* Collada/DAE: fix missing texture association
* Collada/DAE: fix exception when mesh has no material
* Collada/DAE: fix node instanciation
* Collada/DAE: lot of fixes to animation and skinning code
* Collada/DAE: more skinning fix
* Skinning: bad caching, which could either compute too much cpu skinning computation (ie everytime) or not at all (if animation is empty)
Forum
* Forum moderation: move most topic in solved state.
When a topic is solved, only user who have already posted could add more replies. New poster should start a new topic.
If you experience some troubles, please tell me.
Model Engine * Fix ModelReaderSettings.clone (not copying streamOpenListeners, ...) and equals (not comparing streamOpenListeners, ...)
* MD5: internal change to parser
Graphic Engine * TextureLoader/DDS: can now load compressed texture (dds) even if gpu does no support it
(texture will be uncompressed) * Stream: protocols are externalized in Protocols with the ability to register/unregister any default protocol and implement your own protocols.
* Stream: ability to asynchronously control byte reading progression.
Input stream size is known most of the time (getInputStreamSize), but it could returns -1 ik not known. * More featured FileTokenizer
World Editor * Integrate an auto project updater to smoothly use the new xml format.
* Grid and axis display
* Improved spline selection
* Remove deprecated menu items (duplicated with the tree) and update the GUI
* Add history panel
* Lang: now reloaded from the settings xml, by default uses the locale (or english if not available). You can translate the editor in your own tongue by submitting traduction of the properties file (WorldEditor_xx.properties).
* Add always yes/no to dialog, and save/load to xml
* Object manipulator: press shift while scaling to do a uniform scale along the axis selected
Documentation * All documentation updated
* All tutorial updated, with code preview (my first line of AJAX !)
* New forum features: code formater with
SyntaxHighlighter, see the new java tag available
! Fix bad jars (last dev-release)
! Fix missing javadoc
Model Engine
* Fix SplineRenderer exception (mostly occures with a spline with one point)
World Engine
* XmlWorld: fix not reloading animation information in some cases
Model Viewer
* Distribution now uses LWJGL
World Editor
* Distribution now uses LWJGL
* Fix not saving/erasing spline.xml
* Spline editor: tangent edition, fix crash
* Instance editor: change instanciation (from a different Model or ModelInstance) and select animation parameters
* Split divider location is now saved/reloaded
Model Engine
* MD5: now support multiple contiguous spaces
* Texture/Shader: Better (efficient) way to manage texture/shader not found (or not loaded) and avoiding to load them too many times.
* BoundableManipulator move to GraphicEngine (and renamed to VolumeManipulator)
* Spline: implementation finished (see MoveAnInstance,MoveACamera)
* AssetManager: added SplineLibrary
* Added XmlSplineLibrary to read/write Spline in an xml format
* Uniformization of the api of ModelLibrary/TextureLibrary/SplineLibrary
Graphic Engine
* DDS: Fix DDS having too many mipmap levels resulting to an exception while loading to GPU
* DDS: Fix DDS block color extraction which could sometimes showing reg, green or blue pixel artifacts when converting to an ITexture or BufferedImage (bad understanding of the s3tc extension spec).
* XML: fix possible issue with xml
* Matrix16f: rename methods related to lookAt matrices to avoid confusion (ie getPosition to getLookAtPosition, ...)
* Matrix16f: add getLookAt(Quaternion4f q, Vector3f pos) to easily convert from lookAt matrice to Transform, and vice versa
* Added Shapes.drawSkybox
World Engine
* World: remove trajectory storage (now Spline stored in AssetManager)
* Added CameraSplineFollower (see MoveACamera tutorial)
* New SplineAnimator implementation (see MoveAnInstance tutorial)
* XmlWorld: instance animator write/read support
Model Viewer
* Light editor finished
* Fix sliders, improve color editor, ...
World Editor
* Update with the new Spline api
* Fix popup not showing on mac
* Lot of fixes, ...
Tutorials
* Added MoveACamera tutorial
Model Engine
* Regression: bad TBN vector (fixed)
* Renderer: Fix material rendering with opacity map when using fixed pipeline.
* Renderer: Fix shader compilation when using the shader generator and an opacity map
* 3DS: fix exception when object don't have faces
* OBJ: added support for multiple smooth group. Must be enable with ModelEngine.get().readerObjMultiSmoothGroups
(could be the default in the future)
* Fix BoundableManipulator 'strafe'
* BoundableManipulator: ability to choose mouse combination to zoom,rotate,strafe
* Optimizer: added "Merge duplicated materials" (on by default) and "Remove unloaded texture" (off by default: usually texture are loaded after)
* MaterialUtil: added removeMapsNotLoaded, mergeDuplicatedMaterials
* ModelUtil: added splitByMeshes
* ModelReaderSettings: added addPathInTextureFinder which register model folder in AssetManager.TextureFinder (on by default, actual behavior)
* ModelReaderSettings: added appendTexturePath which will append texturePath to texture name (off by default).
* ShaderList rewritten. ShaderUtil remove (moved in ShaderList or Model/Mesh)
* TetureList and ShaderList new uses concurrent map (thread safe).
Graphic Engine
* DDS: Fix bugs and regressions (and possible crash)
* Optimization on Stream
Model Viewer
* Optimizer menu new options
* Light editor
World Editor
* Asset Popup: fix missing text
* Asset Popup: added export model library
* Repository: Fix project commit
* Project: Fix export producing wrong model.xml file
Model Engine
* MD5: support for space in string
Graphic Engine
* Font: fix possible crash with LWJGL
* Font: draw function with clip area parameter
* Widget: origin (0,0) is now bottom left.
* Widget: TextField horizontal text scroll with caret.
* Finder: changes in the interface
Model Engine
* LWO: fix null pointer (some texture feature was not supported)
* LWO: fix color out of [0,1] range
* Collada: fix transparency
* Collada: support for multiple input in vertices tag
Graphic Engine
* Font: API redesign (TextAlign renamed to Anchor)
* Font: fix text anchor and character espacement
* Widget: code clean up
* Widget: TextField improvements
* Widget: added QuestionYesNo widget
* Fix TextureUtils.flipHeight doing nothing
* Fix coloring badly restored with drawAxisSystem
Model Viewer
* Minor gui changes
Model Engine
* Important memory improvement
* Optimize to improve load time
* Fix MemoryUtil
* API change on xml (see tutorials)
* API change on IModelRenderer: IGLApi is now specific in each function that requieres an OpenGL context, and it is now allowed to create the IModelRenderer object outside the OpenGL context (usefull if you load model/texture asynchroneously).
* UnifiedReader removed (use ModelEngine.get().read instead)
* MediaManager -> AssetManager, and externalized from Model class
* PostProcess merged with ModelReaderSettings
* Fix TBN renderer
Graphic Engine
* Fix xml writer
* Import clean-up on model.xml and world.xml packages.
* TextureList (api changed): texture reading and loading (to gpu) are now separated for asynchroneous model loading.
* TextureList: added texture reload
* Fix mouse drag which breaks picking
* Fix VSync with LWJGL
* Font: force pixel alignement (better quality) + remove duplicated code (BM / SD fonts)
* Widget label: can now specify font alignment
* Now compatible with last release of LWJGL (which uses exclusively direct ByteBuffer)
Tutorials
* Added AsyncModelLoading: asynchroneous model and texture loading.
* Fix widget color
* Update to API changes
Model Viewer
* Uses asynchroneous texture loading
World Editor
* Project oriented edition + internal data storage independent of the project location (and even to the os !, the project created under windows will run under linux and mac)
* World importer/exporter
* Undo History fixes: all modification can be atomically undo / redo
* Save History: all version of the project saved can be restored
* Save/Load project configuration: camera view, selection, gui, ...
* Local repository with versioning (will be used for team work features)
* Lang support by java property system. You can now translate the app by just translating a text file. Contact me if you're interested.
* Improve object manipulator
* Uses asynchroneous texture loading
* Huge internal code revamp
Model Engine
* Collada: better compatibility with the different format of transparency (especially from Google Sketchup models).
* All xml reader uses io.XmlTagParser
* All xml writer uses io.XmlWriter (avoid dependency on DOM for platform compatibility purpose)
World Editor
* Remove due to some work in progress (see next changelog)
Model Engine
* Moved SkeletonRenderer to renderer package
* Collada: better support of transparent modes, and bad exporters (like Google Sketchup which store transparency inverted).
* Collada: refactor to use XmlTagParser
* Fix bounding volume not updating properly for morph animation, improve its computation
* Fix transparent render mode when no material
* PickingRenderer: now possible to pick material
Graphic Engine
* Regression: fixed jogl2 newt window
* IGL: removed and deprecate some fields and methods (for better compatibility with OpenGL Es)
* Fix on projection matrice send (ProjectionPerspective / ProjectionOrthographic)
* Moved math.spline to math package
* Fix event modifier (which fix picking drag)
Graphic/Model Engine
* No more use of direct rendering (glBegin/glEnd). Only remaining reference to it is DirectModeRenderer, which may be deprecated in the future.
Model Viewer
* Improve rendering quality of huge models (move near plane).
Hide previous changelogs
Major features in 1.3.4 release:
+ pipeline api to customize rendering pipeline, and gamekit integration
+ light api more flexible
+ number of lights dynamically adjusted
+ render and sampler state to easily swap state
+ drawing api for rendering line based shapes
Engine
* Pipeline: new api to customize the engine rendering pipeline targeting GL2+ config defining 'stages' and 'commands' (savable/loadable from xml/json, hot swappable)
* Drawing: new api for rendering line based shapes, support for AutoCAD DXF
* Renderer: added RenderState (easily swap state), added SamplerState (bind TextureID to shader sampler name), VAO usage improvements, refactor RendererPipeline to Renderer, Batch enhancements, Shapes api changes
* Framebuffer: added enums, GBuffer changes
* Shader: number of lights dynamically adjusted, replaced mrt option of the shader generator by SURFACE_MRT/SURFACE_MRT_WT_DERIVATIVES surface types, auto-bind custom sampler to free texture unit, better exception handling when required MaterialLibrary is missing in shader generator (required since 1.3.2)
* Material/Surface: refactor ISurfaceCreator into ISurfaceType, added SURFACE_MRT and SURFACE_MRT_WT_DERIVATIVES in DefaultSurfaceTypes
* Light: api re-write to separate light param from model
* Texture: add clip and copyRegion helpers
* Visibility: added OrientedVolume and re-write IVolume api
* GameKit: integrate pipeline api in RendererConfigComponent, added OmniLightComponent, added RequireComponent annotation to specify hard dependency between component (the GameObject will try to create them if not exist), RequireService annotation to access and share service registered (getGameObject().getGameScreen().getGame().registerService), AnimationComponent enhancements, RenderableComponent interface, fovY added to CameraComponent
* Widget: List with customizable element's widget, default text added to TextField, discard from rendering element out of screen
* Serialize: refactor and merge features from editor tool (format is forward compatible), add support for json array
* Math: moved to bonzaiengine package, vector and color fields public
* Lwjgl: fix F2 key
* Physic: updated to bullet physics 2.83.5 and V-HACD to latest
* Migration to Java 7 (next builds will target Java 8)
Plugins
* SkyX/HydraX: support for new pipeline api
Tools
* Editor: integration of the new pipeline api (OasisAtNight and OasisAtSun demos are runnable in editor)
* Editor: gamekit light integration
* Editor: F5/F7 keys to simulate/run, F2 to show collisions
* Editor: in run mode, the game object transform show is the realtime transform (vs. the initial value for the other mode)
* Editor: fix collision panel, add option to convert game object to asset
* AssetRepository: fix ModelInRepo actions not waiting for import to complete, fix cleanAssetsDir may block indefinitely
Demos
* OasisAtNight, OasisAtSun and SkyX/HydraX demos uses the new pipeline api
Distrib
* Upgraded to Jogamp 2.3.1 and LWJGL 2.9.4 #172
* Jars not signed anymore
1.3.2 is a major release with a huge set of new features and many improvements. Major features:
+ scene graph with a component-based system and scriptable game objects
+ bullet physics library integration
+ fully customizable material
+ deferred rendering support
+ asset reference counter
Engine * Physic:
bullet physics integration (bullet r2643) for collision, rigid body dynamics, soft body and constraints.
* GameKit:
scene graph with a component-based system and scriptable game objects * AnimGraph: api extended with parameters (sharable between nodes), TransitionNode (node transition with conditional), StateNode (sub graph with its own Timeline), implemented BlendPerJointNode
* Asset:
reference counter (AsyncModel/Texture/Shader/MaterialShader) with use/realease to increment/decrement counter
* Renderer:
deferred rendering support (framebuffer w/ multiple render target and multisampling support, deferred shading)
* Renderer: Batch integrated in rendering pipeline, Batch intancing support
* Renderer: picking now uses by default material's alpha test transparency (can be disabled with ShaderGeneratorConfig.alphaTestNoMaterial)
* Renderer: static mesh can be rendered with a skinning shader (not recommended performance wise)
* Texture: added
texture 3D support,
lod bias support added to TextureLoader and TextureParam
* Material: explicit control of material surfaces (see Material/Surface, MaterialStandard/SurfaceStandard). A surface is usefull in deferred, multiple pass, picking, debug ... rendering context where the material is represented differently.
* Material: shaders managed by material/surface (previously by GeometryData), added additive blend
* MaterialGraph:
material graph node system to define custom material/shader (output can be used with MaterialShader)
* Shader: added ShaderState (contains uniform values), shader generator can ouput shader version #130 (for OpenGL 3.x core),
compute shader support, added ShaderGeneratorConfig.mrt to output shader for deferred shading, support for uniform matrix array, added modelMatrix/projPlanes/timer uniform
* Shader: fix two sided lighting, fix spotlight with tangent space, fix parallax shaders, ShaderGenerator implementation backed by MaterialGraph, log compilation warnings
* Visibility: added bounding cylinder/capsule
* Camera: refactor (ICamera -> ICameraController, IView -> ICamera, View extracted from SceneView), added View.getRayFromMouse
* Ui: improve layout convergence (resize was 'laggy'), support relative class in xml/json (.TextField for com.bonzaiengine.ui.widget.TextField), lot of fixes/enhancements, improve performance on Adreno/Mali chips
* Threading: reduce queuing overhead, add Task priority
* Io: support hierarchical ITagParser with TagAttributes.set/getSubTagParser, fix zip/jar Stream support, fix Stream.relativize
* Tree: api changes to provide non-recursive tree traversal and lazy Iterable using continuation
* Math: added Mat4x4.obliqueClipPlane, support Lengyel projection matrix
* Bindings: improve jogamp and android support
* Workaround for bug introduced in Java 7 Update 25 (CachedJarUrlConnection.getLastModified throwing NullPointerException)
* Refactor: uses com.bonzaiengine package, World moved in tutorials src
Tool * Editor: git integration to track project and assets versions, project automatic upgrade (format changed)
* Editor: gamekit integration including simulate/run mode to play the project in the editor, script hot reload and debugging/breakpoint support using any external IDE
* Editor: added model collision/material editor, material graph
* Editor: heavy bug fixes and enhancements
Plugin *
SkyX plugin "SkyX is a photorealistic, fast and easy to use sky and clouds plugin"
*
HydraX plugin "Hydrax is a complete ocean simulation and rendering plugin"
Distrib * Jar signed with trusted certificate
* Fix compatibility with java 7u45 security changes
* Maven:
maven deployment of the engine, tools, third parties * Demo: gamekit demo applet
* Demo:
'Oasis at Night' (OpenGL 3.x deferred shading) +
video * Demo:
'Oasis At Sun' (OpenGL 4.x shadow map) +
video * Demo:
SkyX / HydraX plugin +
video * Tutorial: Bonzai Engine Editor tutorial (see <distrib>/editor/tutorial01) +
video * Upgrade to lwjgl 2.9.2 #133, jogamp 2.1.4-rc-20140109
1.2.8 is a maintenance release to provide several fixes and Ui memory optimizations.
Engine * MD5: support for standalone reading of MD5Anim
* Texture: fix compressed texture getColor implementation with mipmap levels
* Shader: fix shader generation (multiple lights, toon shading light)
* Json: fix writer not escaping control characters
* *IO: fix json detection
* AssetManager: add loadShaders
* Ui: heavy memory opti, add tooltip for Table/TreeTable, fix exception in TextField keyPressed, fix Button/Label ActionListener not called for all fast clicks, fix Slider2 theme, Constraint.weightX/Y now float and gridHeight/Width short, fixes in layout
* Changes: removed Widget getPreferred** and forceLayoutResize, Widget.getInsets, Plane.projectAlongDirection
Website * Updated
viewer and
editor screenshots
1.2.6 is a major release which many new features and several fixes.
Engine * LOD:
added support for mesh lod levels, added ModelReaderSettings.lodi (serialized in xml/json), Model/ModelInstance implements ILod
* Visibility: added IBoundable sorting (front to back or back to front), added lodLevel (to adjust mesh lod by distance from the view), added culling from removed FrustumCulling
* World:
visibility integration (culling, sorting, lodLevel) and transparent objects rendered last (sorted back to front), refactor/cleanup
* Model:
support second uv set (dae/lwo),
support vertex color (dae/ase/fbx/lwo), fix bounding volume caching
* Material:
GeometryData can now reference material by index (Integer) and name (String), moved lighting and two sided states (single sided by default) from Model, automatically fix black material during model reading (was done before during rendering which was removed) which can be disabled with ModelReaderSettings.options.setIgnoreBlackMaterialFix, some fields are now private
* Texture:
added support for ETC1 compression (opengl es compression) in Dds/Tex
Note: ETC1 textures must be flipped vertically when converted with external tool such as AMD's The Compressonator * Texture:
full mipmap support (ITexture, read/write dds/tex, TextureLoader/TextureUtils, added TextureUtils.generateMipmap), added TextureID.getFormat/SizeInBytes, force clamp filter for cubemap texture, added TextureWriter.openGLEsCompression to use ETC1 compression, fix TextureWriter when alpha channel is removed (bug in TextureUtils.reduce), added ModelWriterSettings.texturesOut
* Animation: fix AnimGraph active state when a node have multiple parent, fix animation retarget with only one (or no) joint mapped, added reorientLastJoint parameter to skeleton retarget, added AnimGraphLibrary, fix xml/json AnimGraph reading exception
* Shader: added support for
ATI2 normal texture in shader,
added ShaderGeneratorConfig.emissionMap/lightmap, added MapType.Emission/Lightmap, material transparency is now used independently of lighting (dynamic lighting is no more needed to use material's transparency), support for
object space normal map (ShaderGeneratorConfig.objectSpaceNormalMap), removed MapType.Glossiness/Shininess, removed ShaderUniform.Predefined.mixMode, fix AssetManager not generating shaders for Model.childs (such as md2/md3)
* Spline: fix bounding volume when spline have no control points
* Camera: improve VolumeManipulator fitToFrustum and changes to PerspectiveProjection.adjust
* Math: optimizations when used in multi-threaded context
* Renderer: added RenderOptions.setTransparentAlpha, added RenderMode.SurfaceTransparent, fix alpha test with fixed pipeline, fix material uv tile/offset misued, fix exception with morph target, fix Shapes.drawSkydome
* Binding: fix offscreen rendering with jogl, fix lwjgl binding sending twice mouse click event with native display
* Fbx: enhancement to material color parsing, fix some texture map not detected, fix static mesh not properly attach to skeleton, added ModelReaderSettings.options.setReaderFbxFixSkeleton to fix rare skeleton broken
* Collada/dae: material name enhancement, fixes exceptions with animation and morph target, fix missing mesh with some dae model (including sketchup 8), fix rare error "Uncomplete array"
* Lwo: fix normal inverted
* Kmz: kml is now parsed to find reference to dae model, textures are properly located using relative path inside kmz archive
* Dds: support of DDS_PIXELFORMAT bit masks, fix header writting
* Tex: format enhancements to improve read/write speed
* Ui/Event: fix ActionListener sometimes not called, fix double click event, fix wrong id of MouseEvent in mouseExited, keyTyped event now called for key pressed and released event inside, fix TextField capturing all key events
* Ui/Widget: fix TextField key inputs (page up/down, ctrl left/right), added List.is/setElementEnabled, added TextField.get/setAppender, added setLocationAndAnchorInViewport (auto adjust anchor if widget exceed viewport, see javadoc), added IScrollable to define step when widget is inside a ScrollPane (implemented by Label,List,Table;TreeTable,TreeWidget), TreeWidget: select on mouse down (instead of click), TreeWidget: fix onSelectionChanged not called when a selected node is removed, added set/getTooltip (and xml support), fix Tablet/TreeTable rendering, fix TabPane forcing constraint on contents, improve UI update stability, added "textArea-default" (Theme.styleTextArea) style for multiple line TextField, fix TextField not receiving some keys, add support for tab (TextField and BmfFont), IFont.getTextSize signature changed, Menu/MenuPopup now pop on left/right/top/bot depending on available space, fix TextField mouse/key inputs, added TextField.is/setLowerCase, Key/MouseListener returns boolean (usually false, or true to stop further propagation), fix TabPane.removeTab not updating rendering
* Ui/Font: performance improvements for widget and font rendering, fix rendering with UI.SCALE
* Android: improve single/double tap detection, better support of hardware (shader) skinning
* Android: added support for
csaa antialisas (nvidia tegra ships).
The code below is required when requesting antialiasing on your android app: * Fixes: potential exception in SceneView picking events and protect opengl state when exception occures inside Picker.renderObjects
* Changes: model reader configuration moved from BonzaiEngine to ModelReaderSettings.options, MatrixStack moved in opengl.helper package
* Changes: Material.name and Model.meshes/materials now private, Geometry.materialId to materialKey, MathFunc.signum->sign, Mat4x4.set*Rotation->setRotation*, [Model]WritterSettings.useLzmaCompression->lzmaCompression, AssetRepository.unloadAll->unloadTexturesAndShaders, TreeListener.onNodeClicked->onNodeMouseEvent, ***Library.assetIterable()->assets()
Tool * AssetRepository: re-design of builder dependencies (improvements when textures are shared, relies on timestamp for automatic rebuild on asset update, per platform build options
* AssetRepository: added TextureInRepo, added support for motion retarget
* Editor: added anim graph support, motion retarget integration, added texture import/reimport, asset tree popover preview, asset browser enhancements, more texture builder options, enhancements to 'Viewer' camera
* Viewer: cubemap preview, added lod support, added prompt command (F2), fix mesh uv preview,
* ShaderEditor: ui entirelly rewritten using ui/widget
Distrib * Upgraded to
lwjgl 2.8.5#1744,
jogl/jogamp rc9 * Updated online tutorials and shader demo applet
* Tutorial:
added SortingLWJGL nightly build provided with distribution may not work on linux. If you encounter any trouble, use official lwjgl 2.8.3Bonzai Engine 1.2.4 is a major release with many features and improvements. Biggest new features are support for all OpenGL and OpenGL Es version, support for advanced animation, morph target, better support for android, and much more !
Engine * Engine now compatibility with
OpenGL Es 2 and
OpenGL >=3. Added GLc for compatibility layer with deprecated function, such as matrix stack and color, which are now implemented efficiently by the engine. syncFromContext and syncFromMatrix are utilities to synchronizes external matrix stack which engine matrix stack, usefull to integrated engine with third party code which does opengl rendering.
* Support for
morph target (dae and fbx)
*
Advanced animation system with multiple track and animation graph (with support for xml read/write), see documentation section for more details
* Optimization and performance improvements (cpu, memory, gc)
* Android: added support for
android 4.x, added support for
Android/OpenGL Es 2.0 requires android 2.3 and above, Android/OpenGL Es 1.1 requires android 1.6 and above
* Asset: added AssetManager.setShaderGenerator for
automatic/asynchronous shader generation, added loadModel/MotionAsyncWithCache to use Cache for downloading and loading model asynchronously (requires ModelLibrary to be set), added onContextLost(Model) to free rendering data and also reload texture/shader if when automatic/asynchronous loading is used
* Reader:
improve new JMF reading speed (only for jmf created with 1.2.4), various fix to improve support of fbx/dae/obj/mtl, improve polygon triangulation used with fbx/lwo/obj/ac3d
* Texture: added support for
anisotropic filtering (TextureParam), support for tga flip token, fix compressed texture loading with mipmap levels and rectangular size, added renameFile parameter to setTextureWriterOptions which rename texture file name at export, Tga: improve compression
* Shader: toon shading support light spot dir/cutoff and ambient, added ShaderGeneratoConfig.fast to simplify algorithm and run faster on mobile device, ShaderGenerator multi-thread safe, ShaderGenerator added support for alpha test
* GeometryData: added shaderNoMaterial to improve rendering when material is not needed (picking/shadow ...), better bouding volume pre-computation
* Async: added IWorker.pause(boolean) to pause/resume task processing
* Json: added support which can be used as an alternative to xml writting (ie model.json instead of model.xml ...)
* Widget: heavy bug fix and performance improvement, added new widgets (Tree, Table, Treetable), added get/setOpacity, added set/getPopupMenu, added set/getFontSize, added TabPanel.is/setTabEnabled, added UiListener which notifies when widget (TextField) request text input (usefull to show/hide virtual keyboard on keyboardless devices), added UI.SCALE to easily scale UI theme
* Font: SDFont: support and added third party SDFont.exe tool to generate font; BmfFont: improve scaling
* Scene: added IScene.onContextLost which could happens after fullscreen switch with non native component, or when on android destroy context
* Added support to lwjgl native display (better compatibility and efficiency).
* Misc: improve support of lwjgl and latest jogl, drop support of Cg, new launcher dialog (ApplicationSettings.showDialog), added GLCapabilities.is/setOpaque for transparent window background (jogl2 only), setUseMultipleContext to notify multiple OpenGL context will be used
* Fixes: fix fullscreen support, bug in KeyFrame.insert, bug in GeometryData when box was not precomputed, bug in Stream.copy(File,File), fix Mat4x4.multiplyProjectionModelview with orthographic matrix, async tangent space computation potentially break Model rendering
Changes/Refactors * Rendering loop is starten by default in init(GLApi,SceneView)
* TextureList/ShaderList.hasPendingLoading parameter removed
* ModelReaderSettings.boudingBox/SphereGeneration removed
* Select a specific OpenGL [Es] Api version:
* Shader does not used anymore fixed pipeline built-in uniform, therefore light properties must be specified to the renderer. If you're using your owns shaders with built in uniform, they will still works but not with GL Es / GL3fc:
* AssetManager: last parameter of load method is moved in ModelReaderSettings.id
* IModelRenderer and implentations replaced by RendererPipeline:
* Matrix stacks: the engine does not use anymore OpenGL matrix stack (deprecated by OpenGL Api), use instead
* IGLApplication renamed to IApplication and Launcher/LauncherSettings merged into ApplicationSettings:
* Animation: changes for better flexibility/compatibility with new features. Skeleton bind pose (Skeleton.getBindPose) is now separated to the other motions (Skeleton.getMotion and Skeleton.getNumMotions return the number of motion not including bind pose). Animation.skeletonMotion/morphMotions added to specifies which motions are played by the Animation.
Model.animContext is now Model.getAnimationContext()
* ShaderUniform is now generic. For ShaderType.Int/Float types, use respectively jouvieje.math.Int/Percent. GlslShader.addParameter changed to addUniform. GLSLShaderGenerator renamed to ShaderGenerator.
* Picking: Abstract picking is now Picker (IPickable is removed). Method signature changes are straightforward and getNameStackSize is removed. Use Picker.getColorId and GLc.setColor as follow before rendering custom picking objects (see Selection tutorial):
* Refactors: jouvieje.model.animation splitted in jouvieje.model and jouvieje.animation, light code moved in jouvieje.light, animationUpdated->onAnimationChanged, hierarchyUpdated->onHierarchyUpdated, geometryUpdated->onVerticesChanged, JointData->JointMotion, ModelEngine->BonzaiEngine, PredefinedRenderMode->RenderMode, Bounding*.Bounding*Type->Bounding*, Model/Mesh.transforms->get/setTransforms, Optimizer.Param.setAnimationCompressionLevel (replace destructive and non destructive old methods), AssetLoader removed (use AssetManager instead), jouvieje.model.async->jouvieje.model.asset, ModelReaderSettings.modelId->id, ***Xml/Xml***->***Io (ie ThemeXml to ThemeIo etc), InlineMath->MathFunc
Viewer/Editor * Now use UI api (no dependency to swing), compatible with all version of opengl
* Huge amount of fixes in viewer and editor
Tutorial * Clean up of tutorials
* Use
ModelLoadingStandalone instead of the source provided in distribution (projection stack was using modelview stack)
Website * New host, all new support section,
new youtube channel, now on
twitterDistrib * Updated LWJGL to 2.8.3 and JOGL b661, remove dependency to third party org-netbeans-swing-outline
* Clean up and simplification of tutorials
* Changes on atomic jar naming (prefered is to use bonzaiengine.jar)
* Added Model Viewer and World Editor apk
* Added SDFont tool to generate SdFont fonts assets,
modified version of lonesock SDFont This new stable release contains many fixes, enhancements and new features, here's the complete changelog:
2011-06-30: better compatibility with whader and ATI drivers, changes to the tools (viewer and editor)
Engine * New Widget api: set (Label, Button, List, ComboBox, CheckBox, RadioButton, Panel, ScrollPane, Slider, TextField, TabPane, Menu), layouts (horizontal, vertical, grid with constraint), support for theme and layout/theme reading from xml
* Model format: google earth kmz model support added, DAE/FBX better support, JMF/JMA fixes (writing morph data and parsing Model.childs), added ModelEngine.is/setReaderDaeFixBadsidedNormals (default false) to solve the orientation of the normal when pointing to wrong side of the face
* PSD: fix support for non compressed psd
* Motion/Mocap retarget: new motion retarget algorithm much more powerfull and faster (dispatched to multiple thread, if ModelEngine.setInternalThread is set)
* Skeleton: fix sharing non sharable data between instance, model with no geometry but skeleton now return the skeleton bounding volume
* Shader generator: support for up to 4 lights, many fix to lighting algorithm
* Worker/Task: added Task.peek, Task.addDependency (ensure task is computed when all dependency are computed) and TaskQueue (control completion of a set of tasks)
* Font: asynchronous loading and integration with AssetManager, allow to force font alpha transparency, depth test state is no more changed, interface changed for rendering multiple text in single batch
* Xml: XmlWorlds added, world.xml format now contains a list of World
* ModelWriterSettings.addStreamOpenListener to track file written
* Offscreen rendering added (see tutorial OffscreenRenderingStandalone)
* VolumeManipulator: support for orthographic manipulation, slight api changes
* Fixes and enhancements to Optimizer, Picking (fix close picking), Spline (implement IBoundable), AssetManager (async loader helpers), Stream (copy maintanis timestamp), TextureWriter (temporary file deleted, fix dds cubemap writting), Renderer, GC, and many other ... (more details in 1.2.1 dev changelog)
Changes/Refactors * Scene: changes due to the introduction of SceneView, here's a template
* ModelTextureList merged with TextureList and AssetManager, AssetManager/TextureList.assign* removed (automatically done) but now TextureList must be assigned before model loading
* ReaderSettings: uniformization:
* Worker/Task: Worker->IWorker, RunnableQueue->WorkerQueue, RunnableDispatcher->WorkerDispatcher, Task.getResult->Task.get, AsyncModel/AsyncLoader moved in jouvieje.model.async
* Model.set/isAutoNormalize removed and now handled automatically
* ModelInstance moved in jouvieje.model, Spline moved in jouvieje.spline
* ITimer renamed to TimerSystem
* SkeletonRenderer removed, now use: RenderMode.Bone,Joints,JointsOrient
Viewer * Ui redisigned with new widget api
* Some fixes and enhancements
Editor * Ui redisigned with new widget api
* Huge amount of fixes and some enhancement (orthographic view, better manipulator, motion retarget editor in beta, asset preview, asset tree options, spline camera preview, multiple world per project, ...)
* Project version upgraded (automatic)
Asset Repository * Enhancements (rename dir, async export, clean) and fixes
Distribution * Old bindings (gl4java and old version of jogl) are distributed in separate jar /bin/bindings/bonzaiengine-bindings.jar
* Fix "SHA1 digest error for" due to the use of
pack200This is a major release, the project has now been moved to
bonzaiengine.com and has been renamed to Bonzai Engine.
Here are the major features and improvements compared to 1.1.2.
Distribution * Installer and ready to run
tutorials,
viewer and
editor (application and applet)
* Binary jars has been renamed and also distributed as a single bundled jar, see
faqEngine * Huge API refactoring/clean-up, please read
Upgrading from 1.1.2 to 1.2.0 * Added support to Android 2.1 and later
* New 3D models support: FBX, BVH, X3D, MDL7, stable support of DAE
* JMF/JMA: high compression, encryption, forward compatibility (require a rebuild)
* JAF/JLF: for saving skeletal animation (jaf) and light (jlf)
* PSD: support added
* DDS: support for float texture, mipmap, compression swizzling, cubemap, and fixes (read/write)
* TEX: engine texture format derived from DDS with in addition higher file compression, encryption and faster loading.
* Texture: abstraction of cubemap textures
* Memory optimization: the memory usage has been highly reduced and the Optimizer utility can helps to reduce it even more !
* Fully oriented for asynchronous loading: ModelLibrary holds AsyncModel, ModelInstance instances AsyncModel, TextureLibrary for async CPU/GPU loading, Worker/Task for efficient/easy parallel work, ...
* Pluggable system: register/unregister model/texture format and io protocols
* Skinning: skeletal animation retarget (usefull to retarget bvh animation), skinning improvements
* Shader: compatibility fixes
* ...
* Widget: events are now triggered within GPU thread
* OpenGL bindings: updated to latest JOGL2 and LWJGL releases.
Tutorials * New
tutorials and existing updated to new api.
Viewer * Lot of UI improvements
* Text are now localized and can be translated to any language
Editor * Tool is now a project oriented with version history and uses internaly asset repository tool
* Lot of optimizations, UI improvements and bug fixes (more to come)
Asset Repository * 'Dev' Tool available in bonzaiengine-tool.jar, to be documented on request.
And much more !
Initial version tracked in the changelog.
Contact support for previous changelogs.