Axis engine version history

v1.2
Feb 16 2018
Release v1.2

Introducing <axis-viewport>
The <axis-viewport> HTML element allows for using Axis and displaying 3D content on a web page purely by using HTML, without explicit need for scripting. It can be used just as any HTML element in the web page.

As of Feb 16 2018, <axis-viewport> is supported by Chrome, Opera and Safari 10.1 and above. It is expected to be supported in Firefox version 60/61 and soon in Edge.

Firefox can be manually tuned to display the Axis element. To do that, start Firefox, go to page address about:config, find dom.webcomponents.customelements.enabled and set it to true

For details, check out the HTMLAxisViewportElement page

See a live demo on the 3D page in under 10 lines

Attributes of <axis-viewport>
  • src - a string representing the 3d scene file which is to be rendered, for example src="Resources/My3DScene.axs".
    It can also represent an expression that returns an AxStream object which contains a scene, for example src="getMy3DScene();". This is useful when loading s scene in a .js format, see Axis JS serialization format.
  • oninitialize - An expression which gets evaluated once in the life time of the element, after it has initialized and ready to work.
  • onload - An expression which gets evaluated each time a scene is successfully loaded by the element.
  • onrender - An expression which gets evaluated each time a frame is rendered.
  • scrollingenabled - A Boolean which denotes whether to allow the page scrolling and the default browser actions when user interacts with the element.
  • contextmenuenabled - A Boolean which denotes whether to allow the browser's default context menu to be enabled for the element
  • defaultcontrols - A Boolean which denotes whether to allow the default scene control actions from user input
  • orbit - A Boolean which denotes whether to allow the default camera orbiting action from user input
  • rotate - A Boolean which denotes whether to allow the default camera rotation action from user input
  • pan - A Boolean which denotes whether to allow the default camera panning action from user input
  • zoom - A Boolean which denotes whether to allow the default camera zooming action from user input
*More attributes will be added in future versions.

New API and content
  • Added the HTMLAxisViewportElement
  • Added function QueryDocumentLoadedCallback in HTMLAxisViewportElement.js
  • Added method Axis.Reset
  • Constructor of AxAnimationElement can now accept for its canvas parameter either an ID of a canvas element or a canvas object
  • Function AxisInitialize is now invoked automatically and does not have to be manually handled any more

Fixes and improvements
  • AxAnimationElement touchScrollingEnabled constructor parameter and member variable of the same name now affect mouse input as well as touch input
  • AxAnimationElement now handles mouse wheel
  • AxHtmlCanvasInputDevice has increased number of maximum touch points from 4 to 5

Optimizations
  • Faster AxMemoryStream operations
  • Improved scene loading time
  • Quicker textures loading

v1.1
Jan 18 2018
Release v1.1

New features
  • Bend/morph animation support - in addition to Axis' skeletal animation, blending (a.k.a. morphing) animation is now also supported. This animation produces a mesh by blending together multiple different forms a mesh, each form with a given weight at specific time. Though it is an animation technique simpler than skeletal animation, it allows for animating organic, complex and unevenly expanding and contracting motions
  • Multi-channel texture coordinates support for files loaded by the AxModuleFbx - multiple texture coordinates per vertex are now supported for files loaded by this module
  • Touchscreen, multi-touch, touch gesture support and generic pointer and touch properties to the AxHtmlInputDevice - allows for using the touch sensors of touch devices such as phones and tables.
  • New NativeJS Scene Serializator and Deserializator - encodes the native scene format as a base64 string in a .js file. The contents of this file can be directly embedded in an .html file or any .js source file. This allows for both offline loading of the scene and keeping a full web page with 3D content in a single file.

Fixes
  • Fixed iOS texture loading
  • Fixed iOS mouse input
  • Various minor fixes and improvements in AxKeyFrameAnimationMechanism, AxPolynomialMechanism, AxTexture2D, AxDeviceMesh
  • Added .axs MIME to Axis Web server, so it can host web pages with Axis content by default

Refactorings
  • Changed method name Axis.ScreenCoordsPixelToUnit to Axis.PixelToScreenSpace
  • Changed method name Axis.ScreenCoordsUnitToPixel to Axis.ScreenToPixelSpace
  • Changed method name Axis.PickByScreenCoordsUnit to Axis.PickByScreenSpaceCoords
  • Changed method name Axis.PickByScreenCoordsPixel to Axis.PickByPixelSpaceCoords

New API and content
  • Added content Space and Phone scenes in resources
  • Added AxPropertyLinkInputModel
  • Added AxTimelineAnimationMechanism for morph/blending animations
  • Added the touchScrollingEnabled parameter and variable in AxAnimationElement (AxisWeb) to control page scrolling while touch-dragging on the Axis viewpoit
  • Added Billboard AxTransformOperation
  • Added a more convenient AxInput.GetInputControls method
  • Added method AxPlatformUtils.Base64ToArrayBuffer
  • Added method AxCamera.GetScreenSpaceCoords
  • Added method AxCamera.GetPixelSpaceCoords
  • Added method AxVector3.LerpAngles
  • Added method AxMatrix.Copy3x3
  • Added method AxMaths.LerpAngle
  • Added method AxMaths.GetIndexBlending
  • Added method AxMaths.VolumetricToScreenSpace
  • Added method AxMaths.ScreenSpaceToVolumetricRay
  • Added method AxMaths.ScreenToPixelSpace
  • Added method AxMaths.PixelToScreenSpace

Optimizations
  • Optimized method AxString::ToBase64
  • Optimized method AxString::FromBase64

Editor
  • Copy Shallow action in Structure panel context menu creates a new resource set and copies in it the references of a target one
  • Copy Deep creates a new resource set and recursively copies in it the references of a target one
  • Clone transform - copies a transform into a new one
  • Compute selected mesh normals - a tools menu item, which recomputes the normals of the selected mesh

Check out the new input properties at the input controls page.

v1.0.1
Aug 10 2017
Release v1.0.1

New features
  • Gamepad support for both Web and Desktop implementaions
  • Multi-channel texture coordinates support for files loaded by the AxModuleFbx - multiple texture coordinates per vertex are now supported for files loaded by this module
  • Touchscreen, multi-touch, touch gesture support and generic pointer and touch properties to the AxHtmlInputDevice - allows for using the touch sensors of touch devices such as phones and tables. Touch data includes is separated i
  • New NativeJS Scene Serializator and Deserializator - encodes the native scene format as a base64 string in a .js file. The contents of this file can be directly embedded in an .html file or any .js source file. This allows for both offline loading of the scene and keeping a full web page with 3D content in a single file.

New API and content
  • Added AxModuleDirectInput module
  • Added the AxInputControls class, used to hold multiple input properties associated with a single logical control
  • Added documentation deployment tools for producing documentation from the Web implementation with JSDoc. Includes a template, which is needed to be able to change the default "Home" link above the docs contents links
  • Fixed Web API summaries
  • Added engine dll files to repository

Editor
  • Fixed Editor control axes
  • Allowed Editor to display texture thumbnails in the Resources panel

Check out the new input properties at the input controls page.

v1.0
Jul 17 2017
Release v1.0

Published Axis Engine C++ implementation
Published C++ modules:
  • AxModuleDevIL
  • AxModuleDirect3D11
  • AxModuleFbx
  • AxModuleOGGVorbis
  • AxModuleOpenAL
  • AxModuleOpenGL
  • AxModuleAssimp (not used)
  • AxModuleOpenGL1_1 (not used)

Published C++ examples:
  • Hello Axis
  • Camera and Navigation
  • Web Server

Published Axis Editor

Added resources:
  • Flashdrive
  • Frog
  • Soldier
  • Terrain
  • TileGame

Code updates since v0.9
  • Added AxInput, which unifies and centralizes the input received from various devices, such as keyboard, mouse, gamepads and etc.
  • Added a new class of devices - the AxInputDevice, which bridges the hardware input devices with AxInput.
  • Added input devices in modules:
    • AxHtmlCanvasInputDevice for Axis Web
    • AxWindowsFormsInputDevice for Axis desktop
  • Added the Input model base class and the following input models for automated control over cameras and objects in the scene:
    • AxFlight
    • Walk
    • Orbit
    • Rotation
  • Added mechanisms for creating geometry:
    • AxPropertyChangeNotifiedMechanism
    • AxBoxGeometryMechanism
    • AxConeGeometryMechanism
    • AxGeosphereGeometryMechanism
    • AxHeightmapGeometryMechanism
    • AxSphereGeometryMechanism
    • AxTorusGeometryMechanism
  • Added new geometry utilities:
    • AxBoxGeometry
    • AxCopyGeometry
    • AxGeosphereGeometry
    • AxHeightMapGeometry
    • AxIcosahedronGeometry
    • AxMergeGeometry
    • AxPlaneGeometry
    • AxPrismGeometry
    • AxSphereGeometry
    • AxTorusGeometry
  • Added new texture coordinates utilities:
    • AxPlanarTexCoords
    • AxSphericalTexCoords
    • AxTransformTexCoords
  • Added the AxDeviceIndependentMesh
  • Added the AxSubStream
  • Added Windows thumbnail providers for .axs and .axi files

v0.9
Jun 06 2017
Beta release v0.9

Axis pre-release beta, web-only
  • Released most of the planned features of Axis Web and some examples.
  • Axis Web project and JavaScript files - full and minified available for use and download
  • C++ implementation, Editor and SDK to be released on 17.07.17