Klien AI Restful AI yang tidak resmi untuk mesin game Unity.
Semua hak cipta, merek dagang, logo, dan aset adalah milik pemiliknya masing -masing.
Repositori ini tersedia untuk ditransfer ke organisasi Meshy jika mereka memilih untuk menerimanya.
Membutuhkan persatuan 2021.3 LTS atau lebih tinggi.
Metode instalasi yang disarankan adalah meskipun Unity Package Manager dan OpenUpm.
Package Manager 
OpenUPMhttps://package.openupm.comcom.rest.meshyMy RegistriesMeshyhttps://github.com/RageAgainstThePixel/com.rest.meshy.git#upmCatatan: Repo ini memiliki dependensi pada repositori lain! Anda bertanggung jawab untuk menambahkan ini sendiri.
Ada 4 cara untuk memberikan kunci API Anda, dalam urutan prioritas:
Anda menggunakan MeshyAuthentication saat Anda menginisialisasi API seperti yang ditunjukkan:
var api = new MeshyClient ( " msy_apikey123 " ) ; Atau membuat objek MeshyAuthentication secara manual
var api = new MeshyClient ( new MeshyAuthentication ( " msy_apikey123 " ) ) ; Anda dapat menyimpan kunci langsung ke objek skrip yang terletak di folder Assets/Resources .
Anda dapat membuat yang baru dengan menggunakan menu konteks panel proyek dan membuat objek skrip MeshyConfiguration baru.

Upaya untuk memuat tombol API dari file konfigurasi, secara default .meshy di direktori saat ini, secara opsional melintasi pohon direktori atau di direktori home pengguna.
Untuk membuat file konfigurasi, buat file teks baru bernama .meshy dan berisi baris:
Entri organisasi adalah opsional.
{
"apiKey" : " msy_apikey123 "
} Anda juga dapat memuat file konfigurasi secara langsung dengan jalur yang diketahui dengan memanggil metode statis di MeshyAuthentication :
.meshy default di direktori yang ditentukan: var api = new MeshyClient ( new MeshyAuthentication ( ) . LoadFromDirectory ( " path/to/your/directory " ) ) ;.meshy selama itu sesuai dengan format JSON: var api = new MeshyClient ( new MeshyAuthentication ( ) . LoadFromPath ( " path/to/your/file.json " ) ) ; Gunakan variabel lingkungan sistem Anda Tentukan kunci API dan organisasi untuk digunakan.
MESHY_API_KEY untuk kunci API Anda. var api = new MeshyClient ( new MeshyAuthentication ( ) . LoadFromEnvironment ( ) ) ;Anda dapat melakukan tugas yang sama di dasbor seperti yang Anda lakukan di Webapp.
Pro-Tip: Anda juga dapat menggunakan jendela konteks untuk mengakses dengan cepat dalam opsi editor untuk prefab dan objek pemandangan!
Akses dasbor melalui Window/Dashboards/Meshy




Hasil tekstur berkualitas tinggi dengan cepat untuk model 3D Anda yang ada menggunakan petunjuk teks dan seni konsep.
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 } " ) ;
} Membuat Teks Teks Baru untuk Tekstur, dan Laporan Kemajuan sampai Tugas selesai.
Lulus dalam prefab atau scene GameObject untuk ditekstur ulang:
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 } " ) ; Jika Anda membutuhkan lebih banyak kontrol atas proses ekspor GLB, Anda juga dapat meneruskan objek GLTFast.Export.GameObjectExport Anda sendiri:
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 } " ) ;Anda juga dapat menggunakan URL publik:
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 } " ) ;Hasilkan model 3D yang mengesankan dengan cepat menggunakan prompt teks.
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 } " ) ;Ubah dengan cepat gambar 2D Anda menjadi model 3D yang menakjubkan dan menghidupkan visual Anda.
️ Saat ini tidak berfungsi dengan versi API saat ini.
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 } " ) ;