[page:Loader] →


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

Supported Conversions

[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.

Code Example

// 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' ); } );




Rhino3dmLoader( [param:LoadingManager manager] )

[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.

[method:null load]( [param:String url], [param:Function onLoad], [param:Function onProgress], [param:Function onError] )

[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.

[method:this setLibraryPath]( [param:String value] )

[page:String value] — Path to folder containing the JS and WASM libraries.

[method:this setWorkerLimit]( [param:Number workerLimit] )

[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.

[method:this dispose]()

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]