Monster Mash: New Sketch-Based Modeling and Animation Tool

Overview

Monster Mash: New Sketch-Based Modeling and Animation Tool

Introduction

This is the open-source version of Monster Mash.

Monster Mash is a new sketch-based modeling and animation tool that allows you to quickly sketch a character, inflate it into 3D, and promptly animate it. You can perform all interactions in the sketching plane. No 3D manipulation is required.

The web demo (http://MonsterMash.zone) and its source code that is available here accompanies a paper Dvorožňák et al.: Monster Mash: A Single-View Approach to Casual 3D Modeling and Animation published in ACM Transactions on Graphics 39(6):214 and presented at SIGGRAPH Asia 2020 conference. (See the project page for more details.)

The demo uses a combination of web technologies (mainly for UI) and C++ code.

Disclaimer: This is not an officially supported Google product.

License

The source code in the "src" directory is licensed under Apache License, Version 2.0. See the LICENSE file for more details. Note that third party code located in the "third_party" directory may be licensed under more restrictive licenses.

Building

This project uses CMake (https://cmake.org) for building. Some third party libraries are not part of this repository and must be installed in advance:

You can build the complete web application using emscripten (https://emscripten.org/), or a simplified desktop version (i.e., only a canvas without a web-based UI) using clang (https://clang.llvm.org/) or gcc (https://gcc.gnu.org/).

Building on Linux

Instructions for building on Ubuntu 20.04

  • Download and install the necessary dependencies by running:
    sudo apt-get install build-essential cmake libsdl2-dev wget unzip git python3
    
    (You can remove python3 if you only want the desktop version.)
  • Clone this repository into your home directory and change directory to the repo:
    git clone https://github.com/google/monster-mash.git ~/monster-mash && cd ~/monster-mash
    
  • Download the Triangle library and unzip it into the appropriate directory:
    wget http://www.netlib.org/voronoi/triangle.zip && unzip triangle.zip -d third_party/triangle
    
  • (Skip if you only want the desktop version.) Download and install emscripten by following instructions on https://emscripten.org/docs/getting_started/downloads.html
  • Create a directory for building and change to it:
    mkdir -p ./build/Release && cd ./build/Release
    
  • Build the project:
    • For the complete web version, build the project using emscripten:
      cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=PATH_TO_EMSDK/upstream/emscripten/emcc -DCMAKE_CXX_COMPILER=PATH_TO_EMSDK/upstream/emscripten/em++ ../../src && make
      
      (Replace PATH_TO_EMSDK with the path to your emsdk directory.)
    • For the desktop version, build the project using clang/gcc:
      cmake -DCMAKE_BUILD_TYPE=Release ../../src && make
      
Issues
  • Export animation to glTF format

    Export animation to glTF format

    Implements animation export to glTF format. This implementation may be used as a template for other implementations aiming to provide export to other formats.

    opened by dvoromar 0
  • Is it possible to integrate to the draw tool, scissors smart selection alike capabilities?

    Is it possible to integrate to the draw tool, scissors smart selection alike capabilities?

    I'm not aware how much, or how easily or hard drawing tools are to integrate in a web based platform. But supposing there is the possibility of integrating this easily, or without much trouble, something that could help a lot it's if the drawing tool would have scissors smart selection alike capabilities, like many desktop softwares have like GIMP. In GIMP, when you select a shape with the scissors, the scissors smartly correct the mistakes you make when making the selection. In this tool, making mistakes in the selection is easy, and they lead to black areas/ spots in the 3d figures, which at least for newbies of 3D are hard to remove in Blender or other 3d softwares (and this tool with others is getting special attention among newbies of 3D)

    opened by pablodalma93 0
  • Finally got it compiled, but all it opens is a grey screen

    Finally got it compiled, but all it opens is a grey screen

    I finally I got it compiled, but all it opens is a grey screen which says: "Monster Mash: New Sketch-based Modeling and animation tool", and it hangs in there. Any ideas what could it be?

    opened by pablodalma93 0
  • Cmake error when installing.

    Cmake error when installing.

    I'm getting this error when installing. Not sure if it's an error in the steps of the installation or a result of my lack of knowledge in Linux. Installed Linux in Virtualbox to try the program.

    Cmake error at CmakeLists.txt

    The Cmake_C Compiler.

    Path_to_emsdk/upstream/emscripten/emcc

    is not a full path and was not found in path

    Tell Cmake where to find the compiler by setting either the enviroment variable "CC" or the Cmake cache entry CMAKE_C_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH.

    opened by pablodalma93 6
  • Record Stroke Pressure

    Record Stroke Pressure

    It would be nice to record the stroke pressure of the designer, currently every line has the same thickness.

    const int t = ceil(0.5 * thickness);

    https://github.com/google/monster-mash/blob/6467b2e4f183738128fea4d713c44f5de863f76e/src/mypainter.cpp#L109

    What would be the best way to approach this task? C++ or .js?

    opened by albertotono 0
Owner
Google
Google ❤️ Open Source
Google
Brand new engine with new and QoL features. Grafex is Psych engine with some additions and Better graphics

Friday Night Funkin' - Graphex Engine Credits: Grafex Mod aka Psych Graphic Rework: Xale - Lead Coding, Artist PurpleSnake - Second Coder Psych Engine

Xale 2 Jun 27, 2022
animation2gltf2 is a command line tool for generating animation glTF 2.0 content.

Generate animation glTF 2.0 content animation2gltf2 is a command line tool for generating animation glTF 2.0 content. A rotation and translation can b

UX3D GmbH 7 Jan 9, 2022
Procedural Mesh Modeling Toolkit for Unreal Engine Artists

OpenLand Mesh Procedural Mesh Modeling Toolkit for Unreal Engine Artists. Installation Get it via the marketplace ??️ For non-commercial projects, you

GameDev4K 22 Apr 22, 2022
Dust3D is a cross-platform open-source 3D modeling software

Dust3D is a cross-platform open-source 3D modeling software. Auto UV unwrapping, auto rigging with PBR Material support, pose and motion authoring all in one.

Jeremy HU 2.4k Jun 22, 2022
appleseed is an open source, physically-based global illumination rendering engine primarily designed for animation and visual effects.

appleseed is an open source, physically-based global illumination rendering engine primarily designed for animation and visual effects.

appleseedhq 1.9k Jul 1, 2022
Horde3D is a small 3D rendering and animation engine. It is written in an effort to create an engine being as lightweight and conceptually clean as possible.

Horde3D Horde3D is a 3D rendering engine written in C++ with an effort being as lightweight and conceptually clean as possible. Horde3D requires a ful

Volker Vogelhuber 1.2k Jul 3, 2022
Pencil2D is an animation/drawing software for Windows, macOS, Linux, and FreeBSD.

Pencil2D is an animation/drawing software for Windows, macOS, Linux, and FreeBSD. It lets you create traditional hand-drawn animation (cartoon) using both bitmap and vector graphics. Pencil2D is free and open source.

Pencil2D 1.1k Jul 1, 2022
C++ (with python bindings) library for easily reading/writing/manipulating common animation particle formats such as PDB, BGEO, PTC. See the discussion group @ http://groups.google.com/group/partio-discuss

Partio - A library for particle IO and manipulation This is the initial source code release of partio a tool we used for particle reading/writing. It

Walt Disney Animation Studios 401 Jun 22, 2022
SVG animation from multiple SVGs or single GIF using tracer

svgasm svgasm is a proof-of-concept SVG assembler to generate a self-contained animated SVG file from multiple still SVG files with CSS keyframes anim

Tom Kwok 156 Jun 28, 2022
A simple animation challenge made with Flutter

Slide Show - Flutter Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is your fi

Pedro Massango 24 Dec 2, 2021
Pathway is an Android library that provides new functionalities around the graphics Path API.

Pathway is an Android library that provides new functionalities around the graphics Path API.

Romain Guy 98 Jun 28, 2022
Ksnip is a Qt-based cross-platform screenshot tool that provides many annotation features for your screenshots.

Ksnip is a Qt-based cross-platform screenshot tool that provides many annotation features for your screenshots.

ksnip 1.4k Jun 26, 2022
physically based renderer written in DX12 with image-based lighting, classic deffered and tiled lighting approaches

Features Classical Deferred Renderer Physically Based shading Image Based Lighting BRDF Disney model (Burley + GGX) Tangent space normal mapping Reinh

Alena 35 Jun 2, 2022
Linux/X11 tool for intercepting mouse events and executing commands. Written in Kotlin Native.

XMG XMG (X11 Mouse Grabber) is a Linux/X11 tool for intercepting mouse button press events and triggering actions. It's a way of making use of the ext

Eduardo Fonseca 12 Sep 11, 2021
Simple console tool to get all the information from DXGI and Direct3D 12 on current system

D3d12info Simple console tool to get all the information from DXGI and Direct3D 12 (D3D12) on current system. Built and tested on Windows 10 64-bit us

Adam Sawicki 23 Jun 27, 2022
The DirectX Tool Kit (aka DirectXTK) is a collection of helper classes for writing DirectX 11.x code in C++

DirectX Tool Kit for DirectX 11 http://go.microsoft.com/fwlink/?LinkId=248929 Copyright (c) Microsoft Corporation. All rights reserved. January 9, 202

Microsoft 2.1k Jul 2, 2022
Binary visualization tool primarily aimed at videogame reverse engineering & research.

binviz Binary visualization tool. Allows you to load a binary and pan/zoom around its content. Each byte (or 4 bytes in 4-byte mode) is represented by

Nick Renieris 28 Apr 25, 2022
CatFrida is a macOS tool for inspecting a running iOS app.

CatFrida CatFrida is a macOS tool for inspecting a running iOS app. Building with frida-swift, CatFrida provide an awesome easy way to dive into an ap

neilwu 94 May 12, 2022
The open-source tool for creating of 3D models

The open-source tool for creating of 3D models

3D geoinformation research group at TU Delft 396 Jun 25, 2022