Ben Feicht

Making 3D Models with ChatGPT

January 16, 2024

I’ve found that ChatGPT is able to create very small, but very precise 3D models. It can output the text data that makes up an .obj file just as easily as it can write an essay - until it loses confidence. The major limitation of this method, at least for now, is that when writing data for a 3D file, after about 30 or so surfaces, it starts to give up on the task. With the right encouraging prompt, it performs a bit better, but is still limited to very basic shapes, and no textures.

The process involves entering a prompt similar to the one at the end of this post, after which ChatGPT will output code for the .obj file. Create a new .txt file, and paste the code into it. Then, rename the .txt file by replacing the last three letters “txt” with “obj”. Now, when you reopen the file, it will open as a 3D model. This process was done on Windows, so Mac systems may have a different method.

Use Cases For Quickly Making Precise Models:

  • I often need accurate models of touch screens, projectors, and other AV equipment, which involves searching through each product's website for dimensions and drawing those models in Rhino, a modeling software. It's honestly not that bad, and I will likely continue this way, but this ChatGPT-based method could be faster and doesn't require custom modeling software like Rhino. If I needed to model many different pieces of AV equipment at once, then I might use this method. The main downside of these simple .obj files is that they are not as editable as geometry created directly in Rhino.
  • I previously worked on a museum exhibit where I needed to create 3D models for over 100 artifact cases based on dimensions listed in a spreadsheet. In this situation, the models didn’t need to be edited once created. I tried writing a Grasshopper-based script to model these cases, but cleaning up the spreadsheet data to run in Grasshopper ended up taking about as long as modeling the cases by hand. Using the ChatGPT-to-.obj method, I could paste the messy data directly from the spreadsheet into ChatGPT, which could output an .obj file for each case to use in the exhibit.

  • I would also consider this if I were designing a building in Revit and needed basic models to represent real appliances throughout the building. ChatGPT could search online for kitchen appliances suitable for 1 or 2 bedroom apartments, or even some HVAC equipment sized to meet building requirements, and create .obj files based on dimensions listed on the product websites. This could give architects an idea of the space these appliances require during the design process. However, this method does not allow for metadata or parametric data that can add significant value to Revit models.
  • If I were not comfortable with modeling in 3D software, this method would be suitable for making custom, precise shapes. For example, I made a few simple shapes that could work as buttons for 3D websites, assets for video games, or models for 3D printing. See the house, star, Christmas tree, and robot head models above.

Keep in mind that anything produced by ChatGPT should be reviewed for accuracy. The AI's outputs are designed to appear correct, even when they are not, so one should spend more time reviewing work done by AI than that done by a human. During my experiments, I found that ChatGPT doesn’t always believe it can make these models, even though it can. Anthropomorphizing phrases like “give an approximation” or “try your best” actually yielded better results and reduced the number of times it would give up and suggest using a 3D modeling software.

Prompt:

Here is the prompt I used to make these models. Some fine-tuning may be needed. I think this is exciting as a proof of concept, and as these tools improve, we should be able to get more use out of them.​

I'd like you to create the code for an OBJ file model for me. I will create the OBJ file after the text is outputted. The model should represent a [describe the object or concept, e.g., '3D smiley face', 'simplified truss bridge', etc.]. Please ensure that the model:

  1. Uses complete faces for all elements, as my OBJ viewer does not support lines and points without faces.
  2. Simplifies complex shapes into basic geometric forms where necessary, but still retains the recognizable features of the object.
  3. Includes dimensions [provide specific dimensions if available or request for approximate sizes].
  4. [Any other specific requirements or constraints, like 'the model should fit within a specific size limit' or 'include specific components like a base, trunk, etc.'].

I understand that this will be a simplified representation and might not capture intricate details. A basic approximation is acceptable, as long as it conveys the general shape and structure of the object.