Um cliente repouso de AI generativo de malha não oficial para o mecanismo de jogo da unidade.
Todos os direitos autorais, marcas comerciais, logotipos e ativos são propriedade de seus respectivos proprietários.
Este repositório está disponível para transferência para a organização malha, se eles optarem por aceitá -lo.
Requer unidade 2021.3 LTS ou superior.
O método de instalação recomendado é embora o Unity Package Manager e o OpenUPM.
Package Manager 
OpenUPMhttps://package.openupm.comcom.rest.meshyMy RegistriesMeshyhttps://github.com/RageAgainstThePixel/com.rest.meshy.git#upmNota: Este repositório tem dependências de outros repositórios! Você é responsável por adicioná -los por conta própria.
Existem 4 maneiras de fornecer suas chaves da API, em ordem de precedência:
Você usa a MeshyAuthentication quando inicializa a API como mostrado:
var api = new MeshyClient ( " msy_apikey123 " ) ; Ou crie um objeto MeshyAuthentication manualmente
var api = new MeshyClient ( new MeshyAuthentication ( " msy_apikey123 " ) ) ; Você pode salvar a chave diretamente em um objeto scriptable localizado na pasta de Assets/Resources .
Você pode criar um novo usando o menu de contexto do painel do projeto e criando um novo objeto Scriptable MeshyConfiguration .

Tentativas de carregar as teclas da API de um arquivo de configuração, por padrão .meshy no diretório atual, opcionalmente, atravessando a árvore do diretório ou no diretório inicial do usuário.
Para criar um arquivo de configuração, crie um novo arquivo de texto chamado .meshy e contendo a linha:
A entrada da organização é opcional.
{
"apiKey" : " msy_apikey123 "
} Você também pode carregar o arquivo de configuração diretamente com o caminho conhecido chamando métodos estáticos na MeshyAuthentication :
.meshy padrão no diretório especificado: var api = new MeshyClient ( new MeshyAuthentication ( ) . LoadFromDirectory ( " path/to/your/directory " ) ) ;.meshy desde que esteja em conformidade com o formato JSON: var api = new MeshyClient ( new MeshyAuthentication ( ) . LoadFromPath ( " path/to/your/file.json " ) ) ; Use as variáveis de ambiente do seu sistema especificam uma chave e organização da API para usar.
MESHY_API_KEY para sua chave da API. var api = new MeshyClient ( new MeshyAuthentication ( ) . LoadFromEnvironment ( ) ) ;Você pode executar as mesmas tarefas no painel que faria no WebApp.
PRO-TIP: Você também pode usar a janela de contexto para acessar rapidamente as opções do editor para pré-fabricados e objetos de cena!
Acesse o painel via Window/Dashboards/Meshy




Gerar rapidamente texturas de alta qualidade para os seus modelos 3D existentes usando solicitações de texto e arte conceitual.
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 } " ) ;
} Cria um novo texto para a tarefa de textura e os relatórios progridem até que a tarefa seja concluída.
Passe em um GameObject pré-fabricado ou cenário para ser novamente texturizado:
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 } " ) ; Se você precisar de mais controle sobre o processo de exportação GLB, também poderá passar em seu próprio objeto 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 } " ) ;Você também pode usar um URL público:
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 } " ) ;Gere rapidamente modelos 3D impressionantes usando os prompts de texto.
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 } " ) ;Transforme rapidamente suas imagens 2D em modelos 3D impressionantes e dê vida ao seu visual.
️ Atualmente não funciona com a versão atual da 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 } " ) ;