Ця сторінка ще не перекладена українською. Показано англійську версію. Переглянути англійською

Трансляція 3D-ресурсів

Обробка поширених 3D-форматів (FBX, OBJ, glTF) для перегляду у веббраузері.

Огляд робочого процесу

3D-формати
FBX
OBJ + MTL
glTF/GLB
3DS
DAE
Завантаження RAPS
raps object upload
Сховище APS
OSS-бакет
Model Derivative
Трансляція SVF2
Результати
Веб-перегляд
Мініатюри
Метадані

Підхід CLI

Крок 1: Створення бакету для ресурсів

raps bucket create --key media-assets --policy persistent --region US

Крок 2: Завантаження 3D-файлів

# FBX file
raps object upload media-assets character.fbx

# OBJ file
raps object upload media-assets environment.obj

# glTF file
raps object upload media-assets props.gltf

# GLB (binary glTF)
raps object upload media-assets vehicle.glb

Крок 3: Трансляція в SVF2

# Get URN and translate
URN=$(raps object urn media-assets character.fbx --output plain)
raps translate start "$URN" --format svf2 --wait

# Check translation result
raps translate manifest "$URN"

Крок 4: Перевірка результату

# Get available views
raps derivative views "$URN" --output json

# Get thumbnail
raps derivative thumbnail "$URN" --output ./preview.png

# Get metadata
raps derivative metadata "$URN" --output json

Підтримувані формати

ФорматРозширенняПримітки
FBX.fbxФормат Autodesk, анімації
OBJ.objЗ матеріалами .mtl
glTF.gltfJSON + окремі ресурси
GLB.glbБінарний glTF
3DS.3dsСпадковий формат 3D Studio
DAE.daeФормат Collada

Конвеєр CI/CD

# .github/workflows/asset-translation.yml
name: 3D Asset Translation

on:
  push:
    paths:
      - 'assets/**/*.fbx'
      - 'assets/**/*.obj'
      - 'assets/**/*.gltf'
      - 'assets/**/*.glb'

env:
  BUCKET: media-assets-${{ github.repository_id }}

jobs:
  translate-assets:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install RAPS
        run: cargo install raps

      - name: Setup bucket
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
        run: |
          raps bucket create --key "$BUCKET" --policy persistent --region US 2>/dev/null || true

      - name: Upload and translate
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
        run: |
          for file in $(git diff --name-only HEAD~1 HEAD -- 'assets/**'); do
            [ -f "$file" ] || continue

            ext="${file##*.}"
            case "$ext" in
              fbx|obj|gltf|glb|3ds|dae)
                echo "Processing: $file"
                raps object upload "$BUCKET" "$file"

                key=$(basename "$file")
                URN=$(raps object urn "$BUCKET" "$key" --output plain)
                raps translate start "$URN" --format svf2 --wait

                echo "Translated: $key"
                ;;
            esac
          done

      - name: Generate thumbnails
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
        run: |
          mkdir -p ./thumbnails

          raps object list "$BUCKET" --output json | jq -r '.[].key' | while read key; do
            URN=$(raps object urn "$BUCKET" "$key" --output plain)
            STATUS=$(raps translate manifest "$URN" 2>/dev/null | jq -r '.status // "pending"')

            if [ "$STATUS" = "success" ]; then
              name=$(echo "$key" | sed 's/\.[^.]*$//')
              raps derivative thumbnail "$URN" --output "./thumbnails/${name}.png" 2>/dev/null || true
            fi
          done

      - name: Upload thumbnails
        uses: actions/upload-artifact@v4
        with:
          name: asset-thumbnails
          path: ./thumbnails/

Потік конвеєра

Git Push
Змінено 3D-файли
Обробка
Завантаження ресурсів
Трансляція в SVF2
Генерація мініатюр
Артефакти
thumbnails/

Інтеграція MCP

Трансляція окремого ресурсу

User: "Upload and translate the new character model for web viewing"
Користувач
AI-асистент
RAPS MCP
APS Cloud
Користувач→AIТранслювати character.fbx
AI→MCPaps_object_upload(bucket, file)
MCP→APSЗавантаження FBX
APS←MCPЗавершено
AI→MCPaps_object_urn(bucket, key)
MCP←AIURN
AI→MCPaps_translate_start(urn, format=“svf2”)
MCP→APSЗапуск трансляції
loopAI→MCPaps_translate_manifest(urn)
AI→MCPaps_derivative_thumbnail(urn)
MCP←AIМініатюра
AI→КористувачРесурс готовий з попереднім переглядом

Відповідь AI:

character.fbx завантажено та транслювано:

Деталі ресурсу:

  • Розмір файлу: 12.4 MB
  • Полігони: 45,000
  • Матеріали: 8
  • Кістки: 65
  • Анімаційні кліпи: 3

Трансляція: Завершено (45 секунд)

Переглянути в браузері

Попередній перегляд збережено у preview.png — відкрийте локально або завантажте в об’єктне сховище для швидкої візуальної перевірки.

Пакетна трансляція

User: "Process all the props in the environment folder"

Відповідь AI:

Обробка 12 файлів з папки environment:

ФайлФорматСтатусПолігони
tree_01.fbxFBXЗавершено8,200
rock_large.objOBJЗавершено2,100
fence.gltfglTFЗавершено1,450
lamp_post.fbxFBXОбробка-
…………

Прогрес: 9/12 завершено


Поради для конкретних форматів

FBX з анімаціями

# FBX animations are preserved
URN=$(raps object urn media-assets animated-character.fbx --output plain)
raps translate start "$URN" --format svf2 --wait

# Check animation data in metadata
raps derivative metadata "$URN" --output json | jq '.animations'

OBJ із зовнішніми матеріалами

# Package OBJ with MTL and textures
zip -r model-package.zip model.obj model.mtl textures/

raps object upload media-assets model-package.zip

# Specify root file
URN=$(raps object urn media-assets model-package.zip --output plain)
raps translate start "$URN" --format svf2 --root "model.obj" --wait

Варіанти glTF

# glTF (JSON + binary + textures)
# Upload all files together or as a zip

# GLB is self-contained
raps object upload media-assets model.glb
URN=$(raps object urn media-assets model.glb --output plain)
raps translate start "$URN" --format svf2 --wait

Пов’язане