three-rwx-loader
v0.12.4
Published
three.js RWX (AW) loader
Downloads
140
Maintainers
Readme
RWXLoader
three.js loader to import Active Worlds RenderWare scripts (.rwx)
What's RenderWare?
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)
What's a RenderWare script?
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.
What's three.js?
It aims to be an easy to use, lightweight, cross-browser, general purpose 3D library. It's also a dependency of this package.
Installation
$ npm install three-rwx-loader
Usage
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
});
API documentation
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.
Testing
$ npm test
Linting
$ npm run lint
References:
- http://www.tnlc.com/rw/rwx.html
- http://wiki.activeworlds.com/index.php?title=Renderware
- http://www.aw-europe.com/help/