Un client RESTful de Generative Meshy non officiel pour le moteur Unity Game.
Tous les droits d'auteur, marques, logos et actifs sont la propriété de leurs propriétaires respectifs.
Ce référentiel est disponible pour transférer à l'organisation Meshy s'ils choisissent de l'accepter.
Nécessite Unity 2021.3 LTS ou plus.
La méthode d'installation recommandée est celle du gestionnaire de package Unity et OpenUpM.
Package Manager 
OpenUPMhttps://package.openupm.comcom.rest.meshyMy RegistriesMeshyhttps://github.com/RageAgainstThePixel/com.rest.meshy.git#upmRemarque: ce dépôt a des dépendances sur d'autres référentiels! Vous êtes responsable de les ajouter par vous-même.
Il existe 4 façons de fournir vos clés API, par ordre de priorité:
Vous utilisez le MeshyAuthentication lorsque vous initialisez l'API comme indiqué:
var api = new MeshyClient ( " msy_apikey123 " ) ; Ou créez manuellement un objet MeshyAuthentication
var api = new MeshyClient ( new MeshyAuthentication ( " msy_apikey123 " ) ) ; Vous pouvez enregistrer la clé directement dans un objet scriptable situé dans le dossier Assets/Resources .
Vous pouvez en créer un nouveau en utilisant le menu contextuel du volet Project et en créant un nouvel objet scriptable de MeshyConfiguration .

Tente de charger des clés d'API à partir d'un fichier de configuration, par défaut .meshy dans le répertoire actuel, en train de traverser éventuellement l'arborescence du répertoire ou dans le répertoire domestique de l'utilisateur.
Pour créer un fichier de configuration, créez un nouveau fichier texte nommé .meshy et contenant la ligne:
L'entrée de l'organisation est facultative.
{
"apiKey" : " msy_apikey123 "
} Vous pouvez également charger le fichier de configuration directement avec le chemin connu en appelant des méthodes statiques dans MeshyAuthentication :
.meshy dans le répertoire spécifié: var api = new MeshyClient ( new MeshyAuthentication ( ) . LoadFromDirectory ( " path/to/your/directory " ) ) ;.meshy tant qu'il est conforme au format JSON: var api = new MeshyClient ( new MeshyAuthentication ( ) . LoadFromPath ( " path/to/your/file.json " ) ) ; Utilisez les variables d'environnement de votre système Spécifiez une clé API et une organisation à utiliser.
MESHY_API_KEY pour votre clé API. var api = new MeshyClient ( new MeshyAuthentication ( ) . LoadFromEnvironment ( ) ) ;Vous pouvez effectuer les mêmes tâches dans le tableau de bord que dans le WebApp.
Pro-Tip: Vous pouvez également utiliser la fenêtre de contexte pour accéder rapidement aux options d'éditeur pour les préfabriques et les objets de scène!
Accéder au tableau de bord via Window/Dashboards/Meshy




Générez rapidement des textures de haute qualité pour vos modèles 3D existants à l'aide d'invites de texte et d'art conceptuel.
var api = new MeshyClient ( ) ;
var textToTextureTasks = await api . TextToTextureEndpoint . ListTasksAsync ( 1 , 12 , SortOrder . Descending ) ;
foreach ( var meshyTask in textToTextureTasks )
{
Debug . Log ( $" { meshyTask . Id } | created_at: { meshyTask . CreatedAt } " ) ;
} Crée un nouveau texte à la tâche de texture et rapporte les progrès jusqu'à la fin de la tâche.
Passez dans un préfabriqué ou un jeu de scène à ré-voler:
var api = new MeshyClient ( ) ;
var sphere = GameObject . CreatePrimitive ( PrimitiveType . Sphere ) ;
var request = new TextToTextureRequest ( sphere , " Basketball " , " game assets " , enableOriginalUV : false , resolution : Resolutions . X1024 , artStyle : ArtStyles . Realistic ) ;
var taskResult = await MeshyClient . TextToTextureEndpoint . CreateTextToTextureTaskAsync ( request , new Progress < TaskProgress > ( progress => Debug . Log ( $" [ { progress . Id } ] { progress . Status } : { progress . PrecedingTasks ?? progress . Progress } " ) ) ) ;
Assert . IsNotNull ( taskResult ) ;
Debug . Log ( $" { taskResult . Id } | created_at: { taskResult . FinishedAt } | expires_at: { taskResult . ExpiresAt } " ) ; Si vous avez besoin de plus de contrôle sur le processus d'exportation GLB, vous pouvez également transmettre dans votre propre objet GLTFast.Export.GameObjectExport :
var api = new MeshyClient ( ) ;
var sphere = GameObject . CreatePrimitive ( PrimitiveType . Sphere ) ;
var exportSettings = new ExportSettings
{
Format = GltfFormat . Binary ,
FileConflictResolution = FileConflictResolution . Overwrite ,
ComponentMask = ~ ( ComponentType . Camera | ComponentType . Animation | ComponentType . Light ) ,
} ;
var gameObjectExportSettings = new GameObjectExportSettings
{
OnlyActiveInHierarchy = false ,
DisabledComponents = true ,
} ;
var glbExport = new GameObjectExport ( exportSettings , gameObjectExportSettings ) ;
glbExport . AddScene ( new [ ] { sphere } ) ;
var request = new TextToTextureRequest ( glbExport , " Planet " , " game asset, space, vibrant, highly detailed " , enableOriginalUV : false , resolution : Resolutions . X1024 , artStyle : ArtStyles . Realistic ) ;
var taskResult = await MeshyClient . TextToTextureEndpoint . CreateTextToTextureTaskAsync ( request , new Progress < TaskProgress > ( progress => Debug . Log ( $" [ { progress . Id } ] { progress . Status } : { progress . PrecedingTasks ?? progress . Progress } " ) ) ) ;
Assert . IsNotNull ( taskResult ) ;
Debug . Log ( $" { taskResult . Id } | created_at: { taskResult . FinishedAt } | expires_at: { taskResult . ExpiresAt } " ) ;Vous pouvez également utiliser une URL publique:
var api = new MeshyClient ( ) ;
var modelUrl = " https://github.com/KhronosGroup/UnityGLTF/raw/master/UnityGLTF/Assets/StreamingAssets/Lantern/glTF-Binary/Lantern.glb "
var request = new TextToTextureRequest ( modelUrl , " Lantern " , " game assets " , resolution : Resolutions . X1024 , artStyle : ArtStyles . Realistic ) ;
var taskResult = await api . TextToTextureEndpoint . CreateTextToTextureTaskAsync ( request , new Progress < TaskProgress > ( progress => Debug . Log ( $" [ { progress . Id } ] { progress . Status } : { progress . PrecedingTasks ?? progress . Progress } " ) ) ) ;
Debug . Log ( $" { taskResult . Id } | created_at: { taskResult . FinishedAt } | expires_at: { taskResult . ExpiresAt } " ) ;Générez rapidement des modèles 3D impressionnants à l'aide d'invites de texte.
var api = new MeshyClient ( ) ;
var textTo3DTasks = await MeshyClient . TextTo3DEndpoint . ListTasksAsync ( 1 , 12 , SortOrder . Descending ) ;
foreach ( var meshyTask in textTo3DTasks )
{
Debug . Log ( $" { meshyTask . Id } | created_at: { meshyTask . CreatedAt } " ) ;
} var request = new TextTo3DRequest ( " a treasure chest " , " realistic, wooden, carved, highest quality " , resolution : Resolutions . X1024 , artStyle : ArtStyles . Realistic ) ;
var taskResult = await MeshyClient . TextTo3DEndpoint . CreateTextTo3DTaskAsync ( request , new Progress < TaskProgress > ( progress => Debug . Log ( $" [ { progress . Id } ] { progress . Status } : { progress . PrecedingTasks ?? progress . Progress } " ) ) ) ;
Debug . Log ( $" { taskResult . Id } | created_at: { taskResult . FinishedAt } | expires_at: { taskResult . ExpiresAt } " ) ;Transformez rapidement vos images 2D en superbes modèles 3D et donnez vie à vos visuels.
️ Actuellement, ne fonctionne pas avec la version actuelle de l'API.
var api = new MeshyClient ( ) ;
var imageTo3dTasks = await api . ImageTo3DEndpoint . ListTasksAsync ( 1 , 12 , SortOrder . Descending ) ;
foreach ( var meshyTask in imageTo3dTasks )
{
Debug . Log ( $" { meshyTask . Id } | created_at: { meshyTask . CreatedAt } " ) ;
} var api = new MeshyClient ( ) ;
var imageUrl = " https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Assets/main/Models/Fox/screenshot/screenshot-x150.jpg " ;
var request = new ImageTo3DRequest ( imageUrl ) ;
var taskResult = await api . ImageTo3DEndpoint . CreateImageTo3DTaskAsync ( request , new Progress < TaskProgress > ( progress => Debug . Log ( $" [ { progress . Id } ] { progress . Status } : { progress . PrecedingTasks ?? progress . Progress } " ) ) ) ;
Assert . IsNotNull ( taskResult ) ;
Debug . Log ( $" { taskResult . Id } | created_at: { taskResult . FinishedAt } | expires_at: { taskResult . ExpiresAt } " ) ;