Fabric Engine 1.11.2 Release Notes¶
Table of Contents
Important Notes - Read Me First!¶
- Fabric Engine requires a video card and driver that support OpenGL 3.2 or later.
- We no longer support Ubuntu for Linux installs due to a lack of interest. The only officially supported Linux build of Fabric Engine is for CentOS 6.3.
- We no longer support 32-bit Windows due to a lack of interest. The supported Windows platforms are now 64-bit with either Python 2.7 or Python 2.6.
- These notes assume you either do not have Fabric Engine installed or have version 1.11.0 installed. If you have an older version installed, you should remove it first before installing 1.11.2; see Fabric Engine 1.11.0 Release Notes for more information on how to do this.
Downloads¶
All downloads for Fabric Engine 1.11.2 can be obtained at http://dist.fabric-engine.com/FabricEngine/1.11.2/. For information on downloads for specific platforms, see Installing Fabric Engine.
Major Changes in 1.11.2¶
Fabric Engine Scene Graph¶
- A collection of minor bug fixes were made to the SceneGraph.
- The AssetBrowser and FbxExplorer demos have been retired and will be re-introduced in a later version.
Fabric Engine Extensions¶
- The Alembic extension was overhauled for this release exposing the Alembic API directly. The C++ code for the Alembic Extension is now fully generated using kl2edk in conjunction with a codegen file. The KL API exposed by the Alembic extension is now a lower level API than the API provided in previous versions, and so another extension called the ‘AlembicWrapper’ was implemented to provide a higher level API that handles parsing data directly into the Fabric Engine data types. Users interested in working with Alembic data in the sCene graph or Splice, should reference the AlembicWrapper extension for methods to read and write alembic files.
- The Bullet Extension was overhauled for this release, exposing a large proportion of the Bullet API directly to KL. Bullet can now be used to rigid bodies, constraints, setup ragdolls, soft bodies, and constraints directly in splice. Examples of how to use the bullet API are provided in the form of a an extension called ‘BulletDemos’. Bullet demos provides examples on how to setup a range of example scenes highlighting rigid bodies, soft bodies and ragdolls.
- All Fabric Engine extensions are now built using the kl2edk tool, which you should also be using to build your extensions. See kl2edk ユーティリティ for details. kl2edk now provides automatic C++ code generation that greatly simplifies exposing APIs to KL using C++ extensions.
- New Synchronization extension containing SimpleLock, a simple KL mutex (active wait, non-reentrant).
- New Statistics extension, when enabled, will collect custom information for any registered object. Through a simple interface, objects can submit information, statistics and parent-child relations with minimal runtime overhead. A KL function can then produce a hierarchical report, which has been hooked to a menu item for some sample demos (eg: BasicDemos/Primitives.py). Statistics support have been added to various KL objects, with memory and GPU memory information, including Images, Geometries, Octree, OpenGL and RTR objects.
- Geometry extension improvements:
- A new Geometry interface was added, enabling base functionality such as getting the bounding volume. A BaseGeometry helper struct is used to implement some of this base functionality.
- Raycast / getClosest:
- A new SpatialQueryable interface was added for exposing methods such as raycast() or getClosest(). These were implemented on the Points, Lines (formerly LinesList) and PolygonMesh objects.
- The PolygonMeshLocation structure has been renamed to GeometryLocation and is used by all Geometry types supporting the SpatialQueryable interface.
- A new GeometryInstancesSpatialQueries helper object was added, enabling to efficiently perform spatial queries (eg: raycast) on multiple geometry instances supporting the SpatialQueryable interface. The Geometry/SpatialQueries.py demo was added to show spatial queries on a scene containing a mix of Points, Lines and PolygonMesh objects using GeometryInstancesSpatialQueries.
- The Octree (formerly named HierarchicalGrid) was improved to lower memory consumption by 6X while maintaining its speed. Its raycast() and getClosest() traversers were abstracted, allowing reuse by any Geometry type.
- The new Points object supports Geometry and SpatialQueryable (raycast, getClosest) interfaces. The Points support a ‘size’ attribute, which is taken into account for raycast and bounding volume.
- Primitive construction methods (eg: build PolygonMesh cone) have been moved from SceneGraph operators to methods of Geometry extension
- PolygonMesh and GeometryAttributes now properly support the .clone() method (which can now be specialized)
- Documentation was improved for Octree and various Geometry types.
Fabric Engine Realtime Renderer¶
- Skinning rendering speed improvements
- A new SphericalPoints shader was implemented, supporting generic parameters for color and size (constant, per vertex or textured). This shader is demonstrated in the new Geometry/SpatialQueries.py demo.
Fabric Core Changes¶
- KL2EDK now supports fpm.json files as input
- Many KL2EDK enhancements and improvements, including:
- Separate, nested C++ header files instead of one continuos header
- C++ CPP stub generation
- Parameter conversion code generation between KL + C++
- Method invocation code generation based on rule system
- Significant reductions in overall memory usage
- Core unit tests are now included in installers for reference
- RTVals: allow more than 16 parameters in RTVal calls
- EDK: object constructors and destructors can now be implemented in extensions
- EDK: new objects can now be created from extensions
- EDK: queueStatusMessage() can now be called from extensions
- EDK: added support for KL::Type
- Installers: environment.sh now also included on Windows
- Debugger: Now supports attaching to an existing process
- Linux: Removed external dependency on libstdc++ in Core library
- Linux: Splice plugins now compiled and linked with gcc 4.1.2
- Linux: Compiling against dynamic Core (.so) can be done with any gcc version
- Linux: Compiling against static Core (.a) requires gcc 4.8
- The .clone() method can now be specialized by structs and objects
Installing Fabric Engine¶
Fabric Engine runs on Windows 7 SP1 64-bit, CentOS 6.3 64-bit, and Mac OS X 10.7 “Lion” or later.
Install Python¶
If you don’t already have Python on your system, you need to install it first.
For Windows, you can get the latest version of Python 2.7 directly from http://python.org. You will also need to add the Python folders, usually C:\Python27, and C:\Python27\Scripts, to your PATH environment variable.
- On 64-bit Windows, we also provide a build of Fabric Engine that works with Python 2.6.
For CentOS 6.3, your system already came with the right version of Python installed.
For OS X, Python 2.7 is automatically installed on your system as part of the base OS install.
注釈
On Mac OS X you must use the system-installed version of Python found in
/usr/bin/python
. Using a different version of Python (installed via MacPorts or Homebrew, for example) will result on a crash when trying to run any Fabric Engine application.
Once the install is finished, make sure that you are able to open a command prompt and run python. Windows users will probably have to add the directory in which Python was installed (usually c:\Python27
) to their PATH
environment variable.
注釈
On previous Windows versions of Fabric Engine, it was possible
to disable the installation of PySide in the Fabric Engine
installer in order to use another version. It is not longer possible
to do this: instead, if you need to use another version of PySide simply
follow the steps for installing from an archive and then simply remove (or rename) the FabricEngine/Python/<PYTHON_VERSION>/PySide
directory.
There are two ways of installing Fabric Engine: from an installer package or from an archive.
Installing from an Installer Package¶
Installing from an installer package is generally easier but is less flexible. We recommend this approach if you are evaluating Fabric Engine for a single user, you are fine with using the version of PySide that is bundled with Fabric Engine, and you only need to have a single version of Fabric Engine installed.
From http://dist.fabric-engine.com/FabricEngine/1.11.2/, download and install Fabric Engine for your platform.
On Windows 7 using 64-bit Python, the installer is
FabricEngine-1.11.2-InstallerPackage-Windows-64Bit-Python2.7.msi
(for Python 2.7) orFabricEngine-1.11.2-InstallerPackage-Windows-64Bit-Python2.6.msi
(for Python 2.6). It is a .MSI file that can be run directly. Note that the installer is unsigned, so your browser may tell you it’s not safe to run it.On CentOS 6.3, the installer is
FabricEngine-1.11.2-InstallerPackage-CentOS-x86_64-Python2.6.rpm
. It is a .rpm package that can be installed using ‘rpm -i’ or using a GUI tool.注釈
you must log out and log back in in order to get the environment variables set that Fabric Engine needs to run!
On Mac OS X Lion or later, the installer is
FabricEngine-1.11.2-InstallerPackage-MacOSX-64Bit-Python2.7.dmg
. It is an executable on a .dmg file that can be run directly from the mounted disk image.注釈
you must log out and log back in in order to get the environment variables set that Fabric Engine needs to run!
Installing from an Archive¶
Installing from an archive provides the most flexibility. You can control the location of the install, use a custom version of PySide, and even install and use multiple versions of Fabric Engine on the same machine.
From http://dist.fabric-engine.com/FabricEngine/1.11.2/, download and install a Fabric Engine installer archive.
- The filename begins with
FabricEngine-1.11.2-InstallerArchive-
- For Windows, the archive filename ends with
.zip
.- For Linux and Mac OS X, the archive filename ends with
.tar.bz2
.
Be sure to pick the archive that matches the characteristics of your system (eg. Python 2.7 vs. Python 2.6).
Unpack the archive in a location of your choosing, then edit the file environment.bat
(Windows) or environment.sh
(Mac OS X and Linux), changing BASEDIR
to the directory into which you unpacked the archive.
Whenever you want to use Fabric Engine, open up a console/terminal window and then execute the environment script:
- Under Windows, run
PATH_TO_UNPACKED_ARCHIVE\environment.bat
- Under Mac OS X and Linux, run
source PATH_TO_UNPACKED_ARCHIVE/environment.sh
Test Fabric Engine¶
The Fabric Engine installer ships with a simple application, HelloSceneGraph, that can be used to test the installation. To run HelloSceneGraph:
- On Windows:
- Open a command prompt (cmd.exe)
- Change to the Fabric Engine install directory (usually
C:\\Program Files\\Fabric Engine
for per-machine installs andC:\\Users\\<USERNAME>\\AppData\\Local\\Apps\\Fabric Engine
for per-user installs)- Run
python Python\HelloFabric.py
- On CentOS, open a shell and run
python /usr/lib64/FabricEngine/Python/HelloFabric.py
- On Mac OS X, open Terminal and run
python /Library/FabricEngine/FABRIC_VERSION/Python/HelloFabric.py
Install Sample Applications (“Demos”)¶
From http://dist.fabric-engine.com/FabricEngine/1.11.2/, download the FabricEngine-1.11.2-Demos.zip
file, which you can extract to a location of your choosing. The demos are located below the Apps subfolder of the created FabricEngine-Demos-1.11.2
folder, and are identical for all platforms. These demos can be run using the python command; for example, python Apps/GeometryDeformation.py
.
Optional: Installing Fabric Splice¶
Once Fabric Engine has been installed, you can install Fabric Splice. Splice downloads are available at http://dist.fabric-engine.com/FabricSplice/1.11.2/.
Documentation¶
Complete documentation for Fabric Engine can be found here.
After installing Fabric Engine, you can also find the documentation in the Start menu in Windows, the Applications menu in CentOS, and through a link in the ‘/Applications/FabricEngine/1.11.2’ folder in Mac OS X. The documentation can also be accessed from the “Help” menu of Fabric Engine applications.
Upgrading Applications to Version 1.11.2¶
- LinesList object was renamed to Lines
- PolygonMeshLocation was renamed to GeometryLocation
- PolygonMesh.getReadOnlyAttributes() was renamed to PolygonMesh.getAttributes() to conform to the new Geometry interface. Some PolygonMesh members, such as the GeometryAttributes container or debugName, are now part of the .base (BaseGeometry) member.
- PolygonMesh.deletePolygon() takes an additional parameter to optionally reorder points.
- HierarchicalGrid was renamed to Octree