using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Diagnostics; using System.Threading.Tasks; public class ModelGenerationPipelineStarter : MonoBehaviour { public Material activeMaterial; public Material inactiveMaterial; private MeshRenderer meshRenderer; // Start is called before the first frame update void Start() { meshRenderer = GetComponent(); } // Update is called once per frame void Update() { } void OnTriggerEnter(Collider other) { KbmController controller = other.GetComponent(); if (controller != null) { meshRenderer.material = activeMaterial; StartModeGenerationPipeline(); } } private void OnTriggerExit(Collider other) { KbmController controller = other.GetComponent(); if (controller != null) { meshRenderer.material = inactiveMaterial; } } private async void StartModeGenerationPipeline() { await Task.Run(() => { string inputPrompt = "Uhm I want I think an epic broadsword with a fancy golden pommel"; // Path to your virtual environment's python.exe string pythonExe = @"D:\users\henrisel\DeltaVR3DModelGeneration\3d-generation-pipeline\.venv\Scripts\python.exe"; // Path to your Python script string scriptPath = @"D:\users\henrisel\DeltaVR3DModelGeneration\3d-generation-pipeline\start_pipeline.py"; // Arguments to pass to the script string arguments = $"{scriptPath} --prompt \"{inputPrompt}\""; ProcessStartInfo psi = new ProcessStartInfo { FileName = pythonExe, Arguments = arguments, UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, CreateNoWindow = true }; using (Process process = new Process()) { process.StartInfo = psi; process.OutputDataReceived += (sender, e) => UnityEngine.Debug.Log(e.Data); process.ErrorDataReceived += (sender, e) => UnityEngine.Debug.LogError(e.Data); process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); } }); UnityEngine.Debug.Log("Python script finished!"); } }