three.js loader to import Active Worlds RenderWare scripts (.rwx)
RenderWare (RW), developed by Criterion Software Limited, is the name of the 3D API graphics rendering engine used in the on-line, 3D, virtual reality and interactive environment Active Worlds (AW)
A RenderWare script (RWX) file is an ASCII text file of an object/model's geometry. This geometry consists of vertices, polygons, and material information.
It aims to be an easy to use, lightweight, cross-browser, general purpose 3D library. It's also a dependency of this package.
$ npm install three-rwx-loader
import RWXLoader from 'RWXLoader';
// For optional (but strongly advised) fflate usage
import * as fflate from 'fflate';
let rwxLoader = new RWXLoader();
// Like other three.js loaders: this one supports chained commands
rwxLoader.setPath('some/path/rwx').setResourcePath('some/path/textures').setFflate(fflate).setWaitFullLoad(true).setFlatten(true);
rwxLoader.load('object.rwx', (rwx) => {
// Do something with 'rwx' there, it is guaranteed to be an Object3D from three.js
});
By virtue of inheriting from the three.js Loader
class: this loader comes with a set of expected setters such as setPath
and setResourcePath
.
However, it also brings its specific set of methods as described below:
-
setFflate( fflate: fflate ): this
- Provide fflate module to the loader, required for proper texture masks handling.
-
setTextureExtension( textureExtension: string ): this
- Set the expected texture files extension, '.jpg' by default.
-
setMaskExtension( maskExtension: string ): this
- Set the expected texture mask files extension, '.zip' by default.
-
setWaitFullLoad( waitFullLoad: boolean ): this
-
Whether or not to wait for full loading completion before returning the objet,
false
by default (meaning textures are loaded asynchronously). -
Set this to
true
for the loader to only return the object once it's fully loaded.
-
-
setFlatten( flatten: boolean ): this
-
Whether or not to flatten the objet,
false
by default (the object will consist of nestedGroup
s). Set this totrue
to get a singleMesh
holding everything. -
In both cases: the object will inherit from
Object3D
(which is a common parent of bothMesh
andGroup
).
-
-
setUseBasicMaterial( useBasicMaterial: boolean ): this
- Whether or not to use
MeshBasicMaterial
instead ofMeshPhongMaterial
,false
by default.
- Whether or not to use
-
setRWXMaterialManager( rwxMgr: RWXMaterialManager ): this
- Set a custom
RWXMaterialManager
to be used by the loader, one will be internally instanciated by default if none is provided.
- Set a custom
-
setTextureColorSpace( textureColorSpace: constant ): this
- Set the three.js texture color space used for textures loaded for materials (default is
SRGBColorSpace
).
- Set the three.js texture color space used for textures loaded for materials (default is
-
setEnableTextures( enableTextures: boolean ): this
- Enable textures (and masks) to be loaded,
true
by default.
- Enable textures (and masks) to be loaded,
-
setForceEarcut( forceEarcut: boolean ): this
- Always force Earcut to be used when doing polygon triangulation (instead of poly2tri/Delaunay) for faster (but uglier) results,
false
by default.
- Always force Earcut to be used when doing polygon triangulation (instead of poly2tri/Delaunay) for faster (but uglier) results,
-
setVerboseWarning( verboseWarning: boolean ): this
- Enable verbose warning logs for various non-critical mishaps, 'false' by default.
-
setAlphaTest( AlphaTest: float ): this
- Set the threshold value to use for texture transparency testing (between 0 and 1), 0.2 by default.
-
setForceTextureFiltering( forceTextureFiltering: boolean ): this
-
Whether or not to force texture filtering regardless of texture modes.
-
true
by default, meaning: all materials will display their textures in a "fancy" way.
-
-
setAllowURLs( allowURLs: boolean ): this
-
Whether or not to allow full URLs for texture and mask paths.
-
false
by default, meaning it's disabled.
-
$ npm test
$ npm run lint