THREEjs Asscifi 3d object

turn 3d object into ascii

by secretgspot

HTML

<script src="http://mrdoob.github.com/three.js/build/three.min.js"></script>
<script src="http://mrdoob.github.com/three.js/examples/js/libs/stats.min.js"></script>
<script src="http://mrdoob.github.com/three.js/examples/js/controls/TrackballControls.js"></script>
<div id="container"></div>

CSS

body {
    background-color: rgb(200,200,200);
    margin: 0px;
    overflow: hidden;
}

JavaScript

// ASCII GENERATION SCRIPT 
/*
 * @author zz85 / https://github.com/zz85
 *
 * Ascii generation is based on http://www.nihilogic.dk/labs/jsascii/
 * Maybe more about this later with a blog post at http://lab4games.net/zz85/blog
 *
 * 16 April 2012 - @blurspline
 */

THREE.AsciiEffect = function ( renderer, charSet, options ) {

    // its fun to create one your own!

    charSet = ( charSet === undefined ) ? ' .:-=+*#%@' : charSet;

    // ' .,:;=|iI+hHOE#`$';
    // darker bolder character set from https://github.com/saw/Canvas-ASCII-Art/
    // ' .\'`^",:;Il!i~+_-?][}{1)(|/tfjrxnuvczXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$'.split('');

    if ( !options ) options = {};

    // Some ASCII settings

    var bResolution = !options['resolution'] ? 0.15 : options['resolution']; // Higher for more details
    var iScale = !options['scale'] ? 1 : options['scale'];
    var bColor = !options['color'] ? false : options['color']; // nice but slows down rendering!
    var bAlpha = !options['alpha'] ? false : options['alpha']; // Transparency
    var bBlock = !options['block'] ? false : options['block']; // blocked characters. like good O dos
    var bInvert = !options['invert'] ? false : options['invert']; // black is white, white is black

    var strResolution = 'low';

    var width, height;

    var domElement = document.createElement('div');
    domElement.style.cursor = 'default';

    var oAscii = document.createElement("table");
    domElement.appendChild( oAscii );

    var iWidth, iHeight;
    var oImg;

    this.setSize = function ( w, h ) {

        width = w;
        height = h;

        renderer.setSize( w, h );

        initAsciiSize();

    };


    this.render = function ( scene, camera ) {

        renderer.render( scene, camera );
        asciifyImage( renderer, oAscii );

    };

    this.domElement = domElement;


    // Throw in ascii library from http://www.nihilogic.dk/labs/jsascii/jsascii.js

    /*
    * jsAscii 0.1
    * Copyright (c) 2008 Jacob Seidelin,...