1
0
forked from cgvr/DeltaVR

add TrellisClient, use it for model generation

This commit is contained in:
2025-12-22 15:07:23 +02:00
parent 1b3b3db1bf
commit 7bc58a48d0
8 changed files with 191 additions and 49 deletions

View File

@@ -25,6 +25,10 @@ public class PipelineManager : MonoBehaviour
}
/**
* Generate model by starting a new Python subprocess
* NOT USED ANYMORE
**/
public async Task<string> GenerateModelAsync(string inputPrompt)
{
return await Task.Run(() =>
@@ -76,6 +80,11 @@ public class PipelineManager : MonoBehaviour
});
}
/**
* Spawn model stored on disk
* NOT USED ANYMORE
*
**/
public async Task<GameObject> SpawnModel(string modelPath)
{
var gltf = new GltfImport();
@@ -83,23 +92,42 @@ public class PipelineManager : MonoBehaviour
if (loadSuccess)
{
string objectName = Path.GetFileName(modelPath);
GameObject spawningParent = new GameObject("Parent-" + objectName);
bool spawnSuccess = await gltf.InstantiateMainSceneAsync(spawningParent.transform);
if (spawnSuccess)
{
Transform spawnedObjectWorldTransform = spawningParent.transform.GetChild(0).transform;
GameObject spawnedObjectBody = spawnedObjectWorldTransform.GetChild(0).transform.gameObject;
MeshCollider collider = spawnedObjectBody.AddComponent<MeshCollider>();
collider.convex = true;
MeshRenderer renderer = spawnedObjectBody.GetComponent<MeshRenderer>();
renderer.material.SetFloat("metallicFactor", 0);
spawnedObjectBody.name = objectName;
return spawnedObjectBody;
}
return await SpawnModel(gltf, objectName);
}
throw new System.Exception("Failed to spawn GameObject from model" + modelPath);
throw new System.Exception("Failed to load GameObject from model" + modelPath);
}
public async Task<GameObject> SpawnModel(byte[] modelBinary)
{
var gltf = new GltfImport();
bool loadSuccess = await gltf.Load(modelBinary);
if (loadSuccess)
{
return await SpawnModel(gltf, "GeneratedModel");
}
throw new System.Exception("Failed to load GameObject from binary!");
}
public async Task<GameObject> SpawnModel(GltfImport gltfImport, string objectName)
{
GameObject spawningParent = new GameObject("Parent-" + objectName);
bool spawnSuccess = await gltfImport.InstantiateMainSceneAsync(spawningParent.transform);
if (spawnSuccess)
{
Transform spawnedObjectWorldTransform = spawningParent.transform.GetChild(0).transform;
GameObject spawnedObjectBody = spawnedObjectWorldTransform.GetChild(0).transform.gameObject;
MeshCollider collider = spawnedObjectBody.AddComponent<MeshCollider>();
collider.convex = true;
MeshRenderer renderer = spawnedObjectBody.GetComponent<MeshRenderer>();
renderer.material.SetFloat("metallicFactor", 0);
spawnedObjectBody.name = objectName;
return spawnedObjectBody;
}
throw new System.Exception("Failed to spawn GameObject " + objectName);
}
}