jsc3d

    0.1.8 • Public • Published

    node-jsc3d

    Node wrapper for JSC3D, a cool little (unmaintained?) 3D model renderer originally written for the browser.

    Supports in-memory, software rendering of certain 3D Models with a simple interface, great for generating previews of STL or OBJ files.

    Usage

    Install locally with:

    npm install --save jsc3d

    NOTE: It (presently) relies on node-canvas for PNG rendering and canvas implementation. This requires Cairo and Pango to be installed on the host system. Read more here.

    As library

    Using render helper method

    Provides a few helper methods, notably render, for more easily interacting with JSC3D. See bin/jsc3d.js for full example of using render.

    const jsc3d = require('jsc3d');
    const canvas = jsc3d.makeCairoCanvas(500, 500);
    jsc3d.render({canvas}, () => {
        const buf = canvas.toBuffer(undefined, 3, canvas.PNG_FILTER_NONE);
        fs.writeFile(outputPath, buf, error => {
            if (error) {
                throw error;
            }
        });
    });

    Using JSC3D directly

    The original JSC3D API is also directly exposed.

    const jsc3d = require('jsc3d');
    const canvas = jsc3d.makeCairoCanvas(500, 500);
    const viewer = new jsc3d.Viewer(canvas);
    viewer.setParameter('SceneUrl', 'path/to/file.stl');
    viewer.setParameter('InitRotationX', -45);
    viewer.setParameter('RenderMode', 'smooth');
     
    jsc3d.onLoaded(() => {
        // Called when STL file has been read in
        viewer.doUpdate();
     
        // At this point the canvas has been written to
    });
    viewer.init();

    As stand-alone program

    Install globally with

    npm install -g jsc3d
    

    Solid render

    jsc3d examples/example.stl examples/example.png
    

    Example default render

    Example wireframe render

    This node wrapper exposes all arguments as CLI arguments, also.

    jsc3d \
        --ModelColor=#00ff00 \
        --RenderMode=wireframe \
        --BackgroundColor1=#000000 \
        --BackgroundColor2=#000000 \
        examples/example.stl \
        examples/example_wireframe.png
    

    Example wireframe render

    License

    To match JSC3D, this wrapper is also released under MIT License.

    TODO

    • Background images do not load: need to mock HTML Image interface

    • Implement new, simpler mock canvas using Buffer to avoid Cairo dependency

    • Monkey patch JSC3D's BinaryStream with a faster implementation using Buffer

    Install

    npm i jsc3d

    DownloadsWeekly Downloads

    2

    Version

    0.1.8

    License

    MIT

    Last publish

    Collaborators

    • michaelb