@manycore/aholo-sdk-lux3d
v1.8.0
Published
Aholo Lux3D generation, material transfer, part split, articulation, humanoid animation, export, and task history client
Downloads
301
Keywords
Readme
@manycore/aholo-sdk-lux3d
Official TypeScript/Node.js SDK for Aholo Lux3D generation, material transfer, multi-format export, and task history.
Requirements: Node.js ≥ 18
Installation
npm install @manycore/aholo-sdk-lux3dimport { createLux3dClient } from '@manycore/aholo-sdk-lux3d';
const lux3d = createLux3dClient({ region: 'com' }); // or 'cn'Set AHOLO_API_KEY, or pass apiKey in the client config.
Multimodal to image
Create a single image from a prompt, a reference image, or both:
await lux3d.multimodalToImage.create({ prompt: 'A light wood dining chair on a white background' });
await lux3d.multimodalToImage.createFromFile('./object.jpg', { prompt: 'Keep the viewpoint' });Image to four views
img and/or prompt are accepted. Prompt-only generation is valid:
const taskId = await lux3d.imageToFourView.create({
img: 'https://example.com/object.jpg',
});
await lux3d.imageToFourView.create({ prompt: 'A light wood dining chair' });
await lux3d.imageToFourView.createFromFile('./object.jpg');Image to 3D
const taskId = await lux3d.imgTo3d.create({
img: 'https://example.com/object.jpg',
version: 'G1', // or G1-Turbo
faceCount: 200_000,
outputFormat: ['zip', 'glb', 'ply'],
enablePbr: true,
aiPredictSize: true,
});For local files, the required version is passed separately:
await lux3d.imgTo3d.createFromFile('./object.jpg', { version: 'G1' });
await lux3d.imgTo3d.createFromFiles(
['./view1.png', './view2.png'],
{ version: 'G1-Turbo', outputFormat: ['glb'] },
);Text to 3D
await lux3d.textTo3d.create({
prompt: 'A wooden chair with carved legs',
version: 'G1-Turbo',
outputFormat: ['glb'],
});Material transfer
await lux3d.materialTransfer.create({
img: 'https://example.com/material.jpg',
meshUrl: 'https://example.com/model.glb',
version: 'v3.0-standard',
outputFormat: ['zip', 'glb', 'usdz'],
aiPredictSize: false,
customSize: 120,
});Part split, articulation, rig, and retarget
await lux3d.partSplit.create({ glbUrl: 'https://example.com/model.glb' });
await lux3d.articulationAnimation.create({
glbUrl: 'https://example.com/model.glb',
prompt: 'The lid opens upward',
});
await lux3d.humanoidAutoRig.create({ modelUrl: 'https://example.com/human.glb' });
await lux3d.humanoidAnimationRetarget.create({
rigModelUrl: 'https://example.com/rig.glb',
animationIds: ['Idle_Loop', 'Walk_Loop'],
animationOutputMode: 'separate',
outFormat: 'glb',
});animationIds accepts 1–10 unique preset ids. animationOutputMode is separate or combined; outFormat is glb or fbx.
Multi-format export
await lux3d.multiFormatExport.create({
modelUrl: 'https://example.com/model.glb',
outputFormat: ['usdz', 'obj_zip', 'fbx_zip', 'stl', '3mf'],
});Tasks
const result = await lux3d.tasks.retrieve(taskId);
const page = await lux3d.tasks.list({ status: 3 });
const completed = await lux3d.tasks.waitFor(taskId);List filters accept 0 init, 1 running, 3 success, and 4 failed. Result items may still have 6 canceled. Polling rejects on failed or canceled tasks.
