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.
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.
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.
- 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/
- 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.
- Sign up to Nvidia's Omniverse programs https://www.nvidia.com/en-us/omniverse/download/
- install Omniverse Code through the Omniverse Launcher
- (In Omniverse Code) click on the extensions tab
- Click on the THIRD PARTY tab
- 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.
- Python3
- Pytorch
- Numpy
- Omniverse
- 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