GithubHelp home page GithubHelp logo

isabella232 / three-png-stream Goto Github PK

View Code? Open in Web Editor NEW

This project forked from experience-monks/three-png-stream

0.0 0.0 0.0 775 KB

streams ThreeJS render target pixel data

License: MIT License

JavaScript 100.00%

three-png-stream's Introduction

three-png-stream

experimental

Streams a PNG encoded pixels from a ThreeJS WebGLRenderTarget. This is done in chunks of gl.readPixels, using gl-pixel-stream, and works with render targets upwards of 10000x10000 pixels in Chrome (or more, depending on your GPU).

The following transparent PNG image was generated with ThreeJS on the client side using the example/ code. See Running from Source for details.

Note: This only works on Three r69-71 and 74+.

Install

npm install three-png-stream --save

Example

var pngStream = require('three-png-stream')

// this will decide the output image size
var target = new THREE.WebGLRenderTarget(512, 512)

// draw your scene into the target
renderer.render(scene, camera, target)

// now you can write it to a new PNG file
var output = fs.createWriteStream('image.png')
pngStream(renderer, target)
  .pipe(output)

Usage

NPM

stream = pngStream(renderer, target, [opt])

Creates a new stream which reads pixel data from target in chunks, writing PNG encoded data.

  • renderer is the WebGLRenderer of ThreeJS
  • target is the WebGLRenderTarget; you must render to it first!
  • opt are some optional settings:
    • chunkSize number of rows of pixels to read per chunk, default 128
    • flipY whether to flip the output on the Y axis, default true
    • format a THREE texture format to use, defaults to the format in target
    • stride the number of channels per pixel, guessed from the format (default 4)
    • onProgress the progress function for gl-pixel-stream, which has an event parameter with current, total and bounds for the current readPixel boudns

Running From Source

Clone and install:

git clone https://github.com/Jam3/three-png-stream.git
cd three-png-stream
npm install

Now run the following:

npm run start

And open the development server at http://localhost:9966/. Once the model appears, click anywhere to save a new snowden.png to the example folder. You can also change the outputWidth and outputHeight, the max size is generally GPU-dependent. This is best used in Chrome.

License

MIT, see LICENSE.md for details.

three-png-stream's People

Contributors

mattdesl avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.