Skip to content

An easy-to-use web application for 3D content creation based on a user-given text prompt.

License

Notifications You must be signed in to change notification settings

steven-mathew/articulat3-mirror

Repository files navigation

articulat3

PlanningContributingDeploymentVideo PresentationFinal DemoPresentation SlidesWiki


Warning

As of Late december, our deployment's generation is not working since we no longer have access to the GPUs.

What is articulat3?

articulate is an easy-to-use web application for 3D content creation based on a user-given text prompt. It features a "Gallery" page of existing 3D creations that can be browsed for inspiration and a "Create" page to easily generate a 3D graphic from text input. The product is a convenient, open-source solution for content creators, video game developers, and designers to quickly grab customized 3D graphics for their products.

Partner Intro

Primary Contact

Ashkan Mirzaei ([email protected]), PhD student

Partner Organization

Toronto Intelligent Systems Lab is a collaborative space for computer scientists and creative thinkers to envision the future of algorithms for robotic intelligence. The lab is located at the University of Toronto, where teams work on broad applications related to intelligent systems, led by Igor Gilitschenski. Ashkan Mirzaei is specifically interested in content creation with 3D objects. In collaboration with Toronto Intelligent Systems Lab and Ashkan, articulat3 contributes to the shared goal of making 3D object generation as accessible as possible to the general public.

Key Features and Use Cases

📢 An input bar to enter a prompt and generate new 3D content

Users can type a prompt that describes the 3D graphic they desire. Entering the prompt immediately starts the generation process and presents the user with the finalized 3D graphic once the process is complete.

Generating 3D objects is perfect for content creators who want to save time, as opposed to the alternative of having to learn complex 3D programs. See User Story #1

Currently, we show the object generation progress by updating the thumbnail in step intervals. In the future, a suggested extension is to include a progress bar for more continuous progress updates. See User Story #2.

🖼️ A searchable gallery featuring previously generated objects

Users can browse through all previously generated 3D objects by any user on articulat3. This gallery is also searchable, allowing users to filter their browsing to their immediate needs and only display items similar to their search query.

Content creators can benefit from other users' creations for inspiration when making their own content. See User Story #3

📁 An interactable panel of 3D objects and an option to export the image and object​ files

Users can click on 3D objects (their own, or other users' objects) and engage with them in an interactive panel. They can export the object's thumbnail image (.png), model file (.obj), material file (.mtl), and texture file (.jpg) depending on their needs.

Video game designers will benefit from the interactive object canvas, allowing them to effortlessly inspect an asset from various angles and zoom levels. See User Story #4

Hardware creators can also use their 3D object immediately with the ability to quickly export the object as various file types. See User Story #5

How to Use articulat3

Creating a New 3D Graphic

If you are looking to create a new 3D object, follow these steps:

  1. Go to articulat3. Please note that the certificate is invalid so you must click to the Advanced section and proceed, to enter the web app.
  2. You’ll be welcomed to the Create page. Here, enter a description of the 3D graphic you desire in the input bar. For example, if you need a 3D graphic of a hamburger, type “A juicy hamburger”. Be as descriptive as you'd like.
Screenshot 2023-11-19 at 5 41 34 PM
  1. Once you’re ready, press Enter or click the Create button.
Screenshot 2023-11-19 at 5 41 59 PM
  1. You’ll need to wait a couple of minutes (~12 minutes for our current model) to completely generate your 3D graphic. While we're hard at work, you’ll see a loading animation.
Screenshot 2023-11-19 at 5 44 02 PM
  1. Once the object is finished generating, your custom 3D object will appear in the interactive panel. Now you have your 3D object!
Screenshot 2023-11-19 at 5 46 16 PM

Searching for 3D Inspiration

If you are looking to gather inspiration or search for existing 3D graphics, follow these steps:

  1. Go to articulat3 if you haven’t already.
  2. Click on the Gallery tab in the top navigation bar. This will take you to the Gallery page.
Screenshot 2023-11-19 at 5 41 34 PM copy
  1. Looking for something specific? Use the Search bar to narrow down the objects. Or just scroll through Gallery page for any kind of inspiration, by browsing all the previously generated 3D objects imagined by other users.
Screenshot 2023-11-19 at 6 08 51 PM Screenshot 2023-11-19 at 6 08 57 PM

Interacting with a 3D Object and Exporting

After generating a 3D object, if you are looking to interact with the object or export the object files, follow these steps:

  1. Continuing from Step 4 in Creating a New 3D Graphic, click the download icon on the top right of the object card.
Screenshot 2023-11-19 at 5 46 51 PM
  1. This opens a dropdown menu revealing options to export the 3D object's files.
Screenshot 2023-11-19 at 6 02 47 PM
  1. You can rotate or zoom in/out of your generated object inside the object card.
Screenshot 2023-11-19 at 6 03 56 PM


Development Requirements

Installation

In order to set up your local environment, follow these steps:

  1. Clone the repo
git clone [email protected]:csc301-2023-fall/project-44-toronto-intelligence-m.git
  1. Install Nix
sh <(curl -L https://nixos.org/nix/install) --daemon
mkdir -p ~/.config/nix && echo "experimental-features = nix-command flakes" >> ~/.config/nix/nix.conf
  1. Run Nix
nix develop

Usage

The following environment variables need to be exported. Ensure that you are in the staging workspace for both gcloud and digitalocean.

cd terraform/digitalocean
export TEMPORAL_SERVER_HOST_PORT="$(terraform output -raw public_ip_address):7233"
cd terraform/gcloud
terraform output -raw cs_creds > ../../secrets/credentials.json
export GOOGLE_APPLICATION_CREDENTIALS=secrets/credentials.json
export GCS_BUCKET_NAME=articulate-store-staging

Starting the server:

PORT=8080 go run cmd/main.go

Testing

When running tests, ensure you are running Nix (as shown above).

Frontend testing:

# pnpm run test will ask you to install jsdom. Install and re-run the tests
pnpm run test

Backend testing:

go test ./...

Deployment and Github Workflow

Pull Requests

We tracked our progress on issues and feature stories on Github Projects. Please make sure to read the Contributing Guide before making a pull request!

Deployment Tools

Please see our wiki for detailed instructions on deployment.

This application is composed of a frontend, backend, and task cluster. Both the frontend and backend are hosted on DigitalOcean while the task workers are hosted on UofT GPU nodes. We use terraform to provision the resources we need on Google Cloud and DigitalOcean.

Our Gitflow

Please see our wiki on Gitflow.

Coding Standards and Guidelines

For our Typescript code, we used ESLint and Prettier rules similar to those of Shopify’s.

For our Go code, we followed the standards from Mattermost.

A pre-commit hook lints all parts of the project. We also use CI/CD to build, test, and deploy.

Licenses

​Licensed under MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) because it is permissive and allows anyone to distribute and use the code for any purpose. Our TISL partner’s future plans for this product are to be determined, making the MIT license the most suitable license to use as of now.

About

An easy-to-use web application for 3D content creation based on a user-given text prompt.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published