A loader for Rhinoceros 3d files and objects.
Rhinoceros is a 3D modeler used to create, edit, analyze, document, render, animate, and translate NURBS curves, surfaces, solids, point clouds, as well as polygon meshes and SubD objects.
[link:https://github.com/mcneel/rhino3dm rhino3dm.js] is compiled to WebAssembly from the open source geometry library [link:https://github.com/mcneel/opennurbs openNURBS].
Currently uses rhino3dm.js 0.13.0
[name] loads the following objects to a respective three.js type:
3dm type | three.js type |
---|---|
Point | [page:Points Points] |
PointSet | [page:Points Points] |
TextDot | [page:Sprite Sprite] |
Curve | [page:Line Line] 1 |
Mesh | [page:Mesh Mesh] |
Extrusion | [page:Mesh Mesh] 2 |
BREP | [page:Object3D Object3D] 2, 3 |
SubD | [page:Mesh Mesh] 4 |
InstanceReferences | [page:Object3D Object3D] |
DirectionalLight | [page:DirectionalLight DirectionalLight] |
PointLight | [page:PointLight PointLight] |
RectangularLight | [page:RectAreaLight RectAreaLight] |
SpotLight | [page:SpotLight SpotLight] |
1 NURBS curves are discretized to a hardcoded resolution.
2 Types which are based on BREPs and NURBS surfaces are represented with their "Render Mesh".
3 BREPS are converted to an Object3D with it's children array populated with BREP Faces
4 SubD objects are represented by subdividing their control net.
// Instantiate a loader
const loader = new Rhino3dmLoader();
// Specify path to a folder containing WASM/JS libraries.
loader.setLibraryPath( '/examples/jsm/libs/rhino3dm/' );
// Load a 3DM file
loader.load(
// resource URL
'model.3dm',
// called when the resource is loaded
function ( object ) {
scene.add( object );
},
// called as loading progresses
function ( xhr ) {
console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
},
// called when loading has errors
function ( error ) {
console.log( 'An error happened' );
}
);
[example:webgl_loader_3dm]
[page:LoadingManager manager] — The [page:LoadingManager loadingManager] for the loader to use. Default is [page:LoadingManager THREE.DefaultLoadingManager].
Creates a new Rhino3dmLoader.
See the base [page:Loader] class for common properties.
See the base [page:Loader] class for common methods.
[page:String url] — A string containing the path/URL of the .3dm file.
[page:Function onLoad] — A function to be called after the loading is successfully completed.
[page:Function onProgress] — (optional) A function to be called while the loading is in progress. The argument will be the XMLHttpRequest instance, that contains .[page:Integer total] and .[page:Integer loaded] bytes.
[page:Function onError] — (optional) A function to be called if an error occurs during loading. The function receives error as an argument.
Begin loading from url and call the onLoad function with the geometry.
[page:String value] — Path to folder containing the JS and WASM libraries.
[page:Number workerLimit] - Maximum number of workers to be allocated. Default is 4.
Sets the maximum number of [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers Web Workers] to be used during decoding. A lower limit may be preferable if workers are also for other tasks in the application.
Disposes of the loader resources and deallocates memory.
[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/3DMLoader.js examples/jsm/loaders/3DMLoader.js]