forked from cgvr/DeltaVR
add TrellisClient, use it for model generation
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user