diff --git a/app.py b/app.py index 74b882bd..5ac9b8f3 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,5 @@ import gradio as gr +import argparse import os os.environ['OPENCV_IO_ENABLE_OPENEXR'] = '1' @@ -616,6 +617,36 @@ def extract_glb( # Launch the Gradio app if __name__ == "__main__": + # Parse command line arguments for server configuration + parser = argparse.ArgumentParser(description='TRELLIS.2 Image to 3D Demo') + parser.add_argument('--server-name', type=str, default=None, + help='Server name/IP to bind to. Use "0.0.0.0" for WSL2 or Docker environments.') + parser.add_argument('--server-port', type=int, default=7860, + help='Port to run the server on (default: 7860)') + parser.add_argument('--share', action='store_true', + help='Create a public Gradio share link') + args = parser.parse_args() + + # Auto-detect WSL2 environment and set appropriate server_name + server_name = args.server_name + if server_name is None: + # Check if running in WSL2 + is_wsl = False + try: + with open('/proc/version', 'r') as f: + is_wsl = 'microsoft' in f.read().lower() or 'wsl' in f.read().lower() + except: + pass + + # Also check WSL_DISTRO_NAME environment variable + if os.environ.get('WSL_DISTRO_NAME') or os.environ.get('WSL_INTEROP'): + is_wsl = True + + if is_wsl: + server_name = "0.0.0.0" + print("WSL2 environment detected. Using server_name='0.0.0.0' for better compatibility.") + print("Access the app at http://localhost:{} from your Windows browser.".format(args.server_port)) + os.makedirs(TMP_DIR, exist_ok=True) # Construct ui components @@ -642,4 +673,10 @@ def extract_glb( )), } - demo.launch(css=css, head=head) + demo.launch( + css=css, + head=head, + server_name=server_name, + server_port=args.server_port, + share=args.share, + ) diff --git a/app_texturing.py b/app_texturing.py index 50b28739..2ec97ca2 100644 --- a/app_texturing.py +++ b/app_texturing.py @@ -1,4 +1,5 @@ import gradio as gr +import argparse import os os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "expandable_segments:True" @@ -143,9 +144,43 @@ def shapeimage_to_tex( # Launch the Gradio app if __name__ == "__main__": + # Parse command line arguments for server configuration + parser = argparse.ArgumentParser(description='TRELLIS.2 Texturing Demo') + parser.add_argument('--server-name', type=str, default=None, + help='Server name/IP to bind to. Use "0.0.0.0" for WSL2 or Docker environments.') + parser.add_argument('--server-port', type=int, default=7860, + help='Port to run the server on (default: 7860)') + parser.add_argument('--share', action='store_true', + help='Create a public Gradio share link') + args = parser.parse_args() + + # Auto-detect WSL2 environment and set appropriate server_name + server_name = args.server_name + if server_name is None: + # Check if running in WSL2 + is_wsl = False + try: + with open('/proc/version', 'r') as f: + is_wsl = 'microsoft' in f.read().lower() or 'wsl' in f.read().lower() + except: + pass + + # Also check WSL_DISTRO_NAME environment variable + if os.environ.get('WSL_DISTRO_NAME') or os.environ.get('WSL_INTEROP'): + is_wsl = True + + if is_wsl: + server_name = "0.0.0.0" + print("WSL2 environment detected. Using server_name='0.0.0.0' for better compatibility.") + print("Access the app at http://localhost:{} from your Windows browser.".format(args.server_port)) + os.makedirs(TMP_DIR, exist_ok=True) pipeline = Trellis2TexturingPipeline.from_pretrained('microsoft/TRELLIS.2-4B', config_file="texturing_pipeline.json") pipeline.cuda() - demo.launch() + demo.launch( + server_name=server_name, + server_port=args.server_port, + share=args.share, + )