Skip to content

Feat/clean mesh fbx#200

Merged
yyuneu merged 2 commits into
developfrom
feat/clean-mesh-fbx
Jun 4, 2026
Merged

Feat/clean mesh fbx#200
yyuneu merged 2 commits into
developfrom
feat/clean-mesh-fbx

Conversation

@yyuneu

@yyuneu yyuneu commented Jun 4, 2026

Copy link
Copy Markdown
Member

Summary

  • Tripo rig GLB를 Mixamo에 업로드하면 "unable to map your existing skeleton" 에러가 발생하던 문제 해결을 위한 신규 파이프 라인 추가
  • mesh-processor /strip-rig 엔드포인트 추가 — 스켈레톤·스킨 제거 후 T-포즈 FBX 자동 생성.
  • rig 완료 시 자동 실행, tb_mascot.clean_mesh_url에 저장 → GET /mascot/clean-mesh로 조회 가능.

Tasks

  • [ ]
  • [ ]

To Reviewer

Screenshot

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 마스코트 clean mesh (스켈레톤 제거된 T-포즈 모델) 조회 기능 추가
    • 마스코트 생성 파이프라인에 자동 clean mesh 생성 기능 통합
    • clean mesh 상태 확인 API 엔드포인트 추가
  • 개선

    • 마스코트 모델 처리 성능 향상으로 더 빠른 변환 속도 실현

@yyuneu yyuneu merged commit 201881f into develop Jun 4, 2026
1 of 2 checks passed
@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 1314028f-f714-4d73-8a6d-d1c7ae486008

📥 Commits

Reviewing files that changed from the base of the PR and between d1b6d21 and 2a13cfd.

📒 Files selected for processing (13)
  • guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/controller/MascotController.java
  • guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/dto/CleanMeshResponse.java
  • guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/dto/MascotResponse.java
  • guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/service/MascotAnimationMergeService.java
  • guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/service/MascotGenerationService.java
  • guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/service/MascotService.java
  • guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/service/MeshProcessorClient.java
  • guideon-core/src/main/java/com/guideon/core/domain/mascot/entity/Mascot.java
  • guideon-core/src/main/java/com/guideon/core/dto/mascot/MascotDto.java
  • infra/init.sql
  • mesh-processor/Dockerfile
  • mesh-processor/src/index.js
  • mesh-processor/src/stripRig.js

Walkthrough

이 PR은 마스코트의 스켈레톤 제거 T-포즈 FBX(clean-mesh) 생성 및 조회 기능을 추가합니다. 데이터 모델 확장, 조회 API, 비동기 생성 파이프라인, 메시 처리 미들웨어를 통합하여 Mixamo 애니메이션 업로드를 지원합니다.

Changes

Clean Mesh 생성 및 조회 파이프라인

Layer / File(s) Summary
데이터 모델 및 엔티티 확장
infra/init.sql, guideon-core/src/main/java/com/guideon/core/domain/mascot/entity/Mascot.java, guideon-core/src/main/java/com/guideon/core/dto/mascot/MascotDto.java
tb_mascot 테이블에 clean_mesh_url 컬럼을 추가하고, Mascot 엔티티에 cleanMeshUrl 필드, updateCleanMeshUrl() 메서드, clearAnimation() 정리 로직을 확장합니다. MascotDto에서 매핑 흐름을 갖춥니다.
조회 응답 계약 및 HTTP 엔드포인트
guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/dto/CleanMeshResponse.java, guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/dto/MascotResponse.java, guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/service/MascotService.java, guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/controller/MascotController.java
CleanMeshResponse DTO를 신규 생성하고 MascotResponsecleanMeshUrl 필드를 추가합니다. MascotService.getCleanMesh()는 플랫폼 관리자 검증 후 코어에서 마스코트를 조회해 상태를 판정하고, MascotControllerGET /api/v1/admin/sites/{siteId}/mascot/clean-mesh 엔드포인트로 공개합니다.
비동기 생성 파이프라인 및 메시 프로세서 통합
guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/service/MascotAnimationMergeService.java, guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/service/MascotGenerationService.java, guideon-admin-bff/src/main/java/com/guideon/guideonbackend/domain/mascot/service/MeshProcessorClient.java
MascotAnimationMergeService.stripRigAsync()를 추가하여 CompletableFuture.runAsync()로 clean-mesh 생성을 비동기 수행합니다. MascotGenerationService.pollStatus()의 rigging 완료 이후에 호출을 연결하고, MeshProcessorClient.stripRig()로 메시-프로세서 서비스와 통신하며, 예외는 로그만 남기고 정상 반환합니다.
메시 프로세서 서비스 구현
mesh-processor/Dockerfile, mesh-processor/src/index.js, mesh-processor/src/stripRig.js
메시-프로세서 마이크로서비스에 POST /strip-rig 엔드포인트를 추가합니다. stripRig.js에서 rigged GLB를 읽어 스켈레톤, 애니메이션, Skin을 제거하고, 고아 뼈대 노드를 정리한 뒤, assimp CLI로 임시 GLB를 FBX로 변환합니다. Dockerfile에 assimp 의존성을 추가하고, 임시 파일은 try/finally로 정리합니다.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Project-Guideon/guideon-backend#183: 두 PR 모두 MascotGenerationService.pollStatus() 후처리 파이프라인을 확장하는데, #183은 retarget 단계와 애니메이션 클립 저장을 추가하고 본 PR은 stripRigAsync로 clean-mesh FBX 생성을 트리거하므로 같은 생성 플로우의 인접 구간입니다.
  • Project-Guideon/guideon-backend#189: 두 PR 모두 MascotGenerationService.pollStatus의 후처리 로직을 수정하는데, #189는 retarget 단계 제거 및 완료 판정을 변경하고 본 PR은 stripRigAsync 호출을 추가하므로 같은 생성 플로우 상의 관련 변경입니다.
  • Project-Guideon/guideon-backend#196: 두 PR 모두 MascotAnimationMergeService와 그 호출 연결을 수정하는데, 본 PR은 stripRigAsync로 clean-mesh 생성을, #196은 mergeIfRiggedMascotExists로 animModelUrl 병합을 추가하므로 같은 오케스트레이션 계층의 관련 기능입니다.

🐰 Meshes stripped and clean,
Skeletons cast away so lean,
T-pose ready, poised to pose,
Mixamo awaits in pose!
Clean mesh dreams realized

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/clean-mesh-fbx

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yyuneu yyuneu deleted the feat/clean-mesh-fbx branch June 4, 2026 18:49
@coderabbitai coderabbitai Bot mentioned this pull request Jun 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant