Skip to content

A feed forward neural network that learns to produce boxes.

License

Notifications You must be signed in to change notification settings

Generlate/model_generator

Repository files navigation

The idea for this program came from interest in generative machine learning models. Human beating results have been generated by computers in chess, images and text. Naturally, I wonder if these results can be produced in another mode, 3d models. Not only will generative 3d models allow greater creative expression but also save massive amounts of time. So, I made this project as a first step.

Group 1

I prioritized simplicity. This lead to the choices of python, a feed forward neural network and .off boxes. The program is composed of the datasets, a data loader, a data formatter, a neural network and the main file. Data is often a limiting factor for machine learning models. I didn't want the dataset to be another variable. So, I made a super simple dataset of randomly generated boxes. This was synthetically made from an algorithm.

Screencast from 2023-07-17 08-29-57

Example boxes are loaded from a directory, formatted into coordinate values, used to train the neural network and a .off box is exported. Given machine learning models' superior results, it's important to create generative systems for virtually everything that humans produce. This is the path to automating the economy. My focus is architecture. So, I'd like to develop these projects until they can generate entire cities.

Directions

For the Model Generator

  • Create a virtual environment with the dependencies installed
  • Download the repository (unzip if you downloaded the zipped file)
  • navigate to model_generator/machine_learning_model/machine_learning_model.py
  • open in zsh/bash and run python3 main.py
  • this should generate a box in /model_generator/generated_boxes/ titled "generated_box.off"
  • this box can be viewed on websites like https://3dviewer.net/

Screencast from 2023-07-17 06-24-45

  • in model_generator/Datasets/AustensBoxes/ you can find the training and testing datasets. These are filled with boxes, generated from a simpler, box generating algorithm.

For the Omniverse Plugin

Screenshot 2023-07-17 053003

  • (In Omniverse Code) click on the extensions tab

Screenshot 2023-07-17 053111

  • Click on the THIRD PARTY tab

Screenshot 2023-07-17 053140

  • Find MAKE A RANDOM CUBE by me (Austen Cabret) and toggle the grey switch that activates the plugin.
  • a moveable window should pop up that has two buttons.
  • click the add button to add random cubes and the delete button the remove them.

Recording 2023-07-17-050924

Dependencies

  • Python3
  • Pytorch
  • Numpy
  • Omniverse

Features To Come

  • More supported file types (.obj, .usd, .fbx)
  • Faster generation speeds
  • Plugin to Omniverse UI
  • Generate more than just boxes
  • Text as input
  • Neural network improvements
  • Easier execution