Giter VIP home page Giter VIP logo

chameleon.js's Introduction

chameleon.js

Screenshot

Chameleon.js is an HTML5 application for interactive 3D texture painting, built with three.js and TypeScript / JavaScript. You need NOT worry about providing UV texture mappings: they will be generated on the fly when you paint on the 3D model.

Our implementation is based on the paper by Takeo Igarashi and Dennis Cosgrove about their Chameleon system.

Usage

  • Drag and drop a local obj 3D model file into the browser window to paint on it.
    • You can find some obj models in the models folder of this repository.
  • Drag your mouse on the object to draw.
  • Hold ⇧Shift key to move the camera around:
    • Drag with mouse left button to rotate.
    • Drag with mouse right button to pan.
    • Scroll with mouse wheel to zoom.
  • Check Perspective Viewing to view the model using a perspective camera
  • Click Reset under Camera to reset camera position.
  • Select a color at Background Reset to repaint the texture with a single color
  • Click Export Textured Model to download a zip file, which contains the texture image and the model in obj format.

Known Issues

Some limitations of the system have been discussed in the original paper. Other issues include:

  • Sluggishness when trying to load relatively complex models with a lot of faces.
  • Incomplete implementation of "Smart Brush":
    • Doesn't prevent brush pill if the mouse moves across a sharp edge.
    • Brush doesn't try to remain on the surface being painted.
  • Cannot paint on a face that does not fully appear on the screen.

Contributors

This was our final project for course CSCI 580 - 3-D Graphics and Rendering. Team members include (in alphabetical order):

  • Jakapun @boong555
    • Implemented the canvas brushes.
    • Implemented the update of "viewing texture" from "drawing texture".
  • Wansui @wansuisu
    • Found out ways to import & export of meshes in obj format.
    • Implemented the update of "viewing texture" from "drawing texture".
  • Yanqing @VividLiu
    • Implemented the algorithm for generating "packed texture" for export from "viewing texture".
  • Yubing @tomtung
    • Designed & implemented the overall system in general.
    • Implemented the generation of "drawing texture" from "viewing texture".
    • Implemented synchronized control of both cameras based on THREE.TrackballControls and THREE.OrthographicTrackballControls
  • Zhenyu @memorybank
    • Implemented the algorithm for recursively finding affected faces in the drawing process.

Reference

chameleon.js's People

Contributors

tomtung avatar memorybank avatar vividliu avatar jakapuntachaiya avatar wansuisu avatar

Watchers

James Cloos avatar Sergei V. 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.