Axis engine version history

v1.3
Aug 10 2024
Release v1.3

Introducing the Axis Exchange Network Interface and Web Sockets
The Axis Exchange Network interface establishes a flow for quick and easy communication between Axis applications, providing a fast full-duplex channel, connecting multiple clients

With the Exchange client, Axis apps can define their own channel in the network and have all the clients that are on the same channel share data between them.

No need for writing servers, complex logic or convoluted technical code - just pick a name for a channel in your app and start sending and receiving data between all instances of that app, which use that same channel.

A standard WebSockets support is also provided, which allows Axis clients to connect to typical WebSockets servers on the web.
WebSockets is also used for the web implementation of the Exchange network.

New features
  • Exchange client for Axis web
  • WebSockets client for Axis web
  • Exchange server for Axis Desktop
  • WebSockets server for Axis Desktop

v1.2
Feb 16 2018
Release v1.2

Introducing
The 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, 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
  • 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