(self, context)
| 2494 | bl_category = 'BlenderMCP' |
| 2495 | |
| 2496 | def draw(self, context): |
| 2497 | layout = self.layout |
| 2498 | scene = context.scene |
| 2499 | prefs = get_blendermcp_addon_preferences(context) |
| 2500 | |
| 2501 | layout.prop(scene, "blendermcp_port") |
| 2502 | layout.prop(scene, "blendermcp_use_polyhaven", text="Use assets from Poly Haven") |
| 2503 | |
| 2504 | layout.prop(scene, "blendermcp_use_hyper3d", text="Use Hyper3D Rodin 3D model generation") |
| 2505 | if scene.blendermcp_use_hyper3d: |
| 2506 | layout.prop(scene, "blendermcp_hyper3d_mode", text="Rodin Mode") |
| 2507 | if prefs: |
| 2508 | layout.prop(prefs, "hyper3d_api_key", text="API Key") |
| 2509 | else: |
| 2510 | layout.prop(scene, "blendermcp_hyper3d_api_key", text="API Key") |
| 2511 | layout.operator("blendermcp.set_hyper3d_free_trial_api_key", text="Set Free Trial API Key") |
| 2512 | |
| 2513 | layout.prop(scene, "blendermcp_use_sketchfab", text="Use assets from Sketchfab") |
| 2514 | if scene.blendermcp_use_sketchfab: |
| 2515 | if prefs: |
| 2516 | layout.prop(prefs, "sketchfab_api_key", text="API Key") |
| 2517 | else: |
| 2518 | layout.prop(scene, "blendermcp_sketchfab_api_key", text="API Key") |
| 2519 | |
| 2520 | layout.prop(scene, "blendermcp_use_hunyuan3d", text="Use Tencent Hunyuan 3D model generation") |
| 2521 | if scene.blendermcp_use_hunyuan3d: |
| 2522 | layout.prop(scene, "blendermcp_hunyuan3d_mode", text="Hunyuan3D Mode") |
| 2523 | if scene.blendermcp_hunyuan3d_mode == 'OFFICIAL_API': |
| 2524 | if prefs: |
| 2525 | layout.prop(prefs, "hunyuan3d_secret_id", text="SecretId") |
| 2526 | layout.prop(prefs, "hunyuan3d_secret_key", text="SecretKey") |
| 2527 | else: |
| 2528 | layout.prop(scene, "blendermcp_hunyuan3d_secret_id", text="SecretId") |
| 2529 | layout.prop(scene, "blendermcp_hunyuan3d_secret_key", text="SecretKey") |
| 2530 | if scene.blendermcp_hunyuan3d_mode == 'LOCAL_API': |
| 2531 | if prefs: |
| 2532 | layout.prop(prefs, "hunyuan3d_api_url", text="API URL") |
| 2533 | else: |
| 2534 | layout.prop(scene, "blendermcp_hunyuan3d_api_url", text="API URL") |
| 2535 | layout.prop(scene, "blendermcp_hunyuan3d_octree_resolution", text="Octree Resolution") |
| 2536 | layout.prop(scene, "blendermcp_hunyuan3d_num_inference_steps", text="Number of Inference Steps") |
| 2537 | layout.prop(scene, "blendermcp_hunyuan3d_guidance_scale", text="Guidance Scale") |
| 2538 | layout.prop(scene, "blendermcp_hunyuan3d_texture", text="Generate Texture") |
| 2539 | |
| 2540 | if not scene.blendermcp_server_running: |
| 2541 | layout.operator("blendermcp.start_server", text="Connect to MCP server") |
| 2542 | else: |
| 2543 | layout.operator("blendermcp.stop_server", text="Disconnect from MCP server") |
| 2544 | layout.label(text=f"Running on port {scene.blendermcp_port}") |
| 2545 | |
| 2546 | # Operator to set Hyper3D API Key |
| 2547 | class BLENDERMCP_OT_SetFreeTrialHyper3DAPIKey(bpy.types.Operator): |
nothing calls this directly
no test coverage detected