Baskar2005's picture
Update app.py
adb2058 verified
import requests
import gradio as gr
import time
import os
class Model3d_generater:
def __init__(self,):
self.query=''
def _generate_3d_(self,query,api_key):
#api key from meshy website
try:
headers = {
"Authorization": f"Bearer {api_key}"
}
self.query = query
# print(f"query is {self.query}")
payload = {
"mode": "preview",
"prompt":query,
"art_style": "realistic",
"seed":1565957778,
"negative_prompt":"messy hands and feet, blurry mess, three eyes",
"texture_richness":"high"
}
generate_3d= requests.post(
"https://api.meshy.ai/v2/text-to-3d",
headers=headers,
json=payload,
)
task_id=generate_3d.json()["result"]
return task_id
except Exception as e:
print("Error:",e)
def _get_task_id_(self,query,api_key):
try:
headers = {
"Authorization": f"Bearer {api_key}"
}
task_id=self._generate_3d_(query,api_key)
time.sleep(50)
get_asset= requests.get(
f"https://api.meshy.ai/v2/text-to-3d/{task_id}",
headers=headers,
)
download_3d=get_asset.json()["model_urls"]["glb"]
return download_3d
except:
print("error on _get_task_id_")
def _download_3d(self,query,api_key):
try:
download_3d=self._get_task_id_(query,api_key)
response = requests.get(download_3d, allow_redirects=False)
short_filename = '3d_asset.glb' # Change 'my_file.ext' to whatever you prefer, with the correct extension
with open(short_filename, 'wb') as file:
file.write(response.content)
return short_filename
except:
print("error on _download_3d")
def interface(self):
with gr.Blocks(css=""".gradio-container {background: rgb(157,228,255);
background: radial-gradient(circle, rgba(157,228,255,1) 0%, rgba(18,115,106,1) 100%);}""") as demo:
gr.HTML("""
<center><h1 style="color:#fff">3d Model Generater</h1></center>""")
with gr.Row():
api_key=gr.Textbox(label="API key",placeholder="API key from meshy website")
with gr.Row():
prompt=gr.Textbox(label="Prompt",placeholder="Describe the 3d structure")
with gr.Row():
output=gr.Model3D()
with gr.Row():
button=gr.Button()
button.click(self._download_3d,[prompt,api_key],output)
demo.launch(debug=True)
if __name__=="__main__":
result=Model3d_generater()
result.interface()