- 변경 로그
변경 로그
STP 파일 뷰어의 새로운 기능과 개선사항 추적
주요 버그 수정 및 성능 개선
v1-0-7중대한 가져오기 및 측정 문제를 수정하고 파일 로딩 성능을 최대 95% 최적화
2025/09/02
🔧 크리티컬한 시스템 수정 및 성능 돌파구
플랫폼 안정성 달성 - 최종 통합 문제를 해결하고 주목할 만한 성능 향상 실현:
이번 릴리스는 사용자 경験에 큰 영향을 미쳤던 여러 심각한 문제들을 해결합니다:
가져오기 기능 수정
해결된 문제: "첫 번째는 작동하지만, 이후에는 실패하는" 문제를 완전히 해결
- 근본 원인: 글로벌
window.OV
객체가 컴포넌트 정리 중에 부적절하게 지워짐 - 솔루션: 글로벌 라이브러리 객체를 유지하기 위한 리소스 관리 수정
- 영향: 가져오기 및 새 파일 기능이 매번 일관되게 작동
- 사용자 경헙: 진행 표시기를 포함한 완전한 업로드 흐름 복원
측정 도구 수정
해결된 문제: 3D 모델에 측정 마커가 표시되지 않음
- 근본 원인: 키보드 이벤트 리스너가 측정 도구 상태와 충돌
- 솔루션:
window.OV
글로벌 객체를 사용한 직접적인 공식 API 호출 구현 - 영향: 첫 번째 클릭에서 측정 마커 정확히 표시
- 기술적 세부사항: 키보드 단축키와 도구 활성화 간의 상태 관리 충돌 제거
모바일 추가 메뉴 수정
해결된 문제: 전체 화면 모드에서 모바일 기기의 추가 메뉴 버튼이 반응하지 않음
- 근본 원인: 전체 화면 컨테이너와의 z-index 레이어링 충돌
- 솔루션: 드롭다운 메뉴의 z-index를 적절한 층(z-10000)으로 상승
- 영향: 모바일 사용자가 모든 도구 모음 기능에 접근 가능
- 추가 개선: 모바일 화면의 버튼 레이아웃 및 텍스트 레이블 최적화
🚨 상세 개발 프로세스 및 디버깅 기록
최종 기술적 교훈
디버깅 전략 개선:
- 기본 검사 우선: 먼저 가장 기본적인 문제(객체 존재, API 사용 가능성)를 확인해야 함
- 복잡한 가설 피하기: 처음부터 복잡한 원인을 가정하지 말고, 대부분 가장 단순한 이유가 진실임
- 단계적 조사: 한 번에 한 변수만 변경하여 문제의 근본 원인 파악
- 의존성에 대한 깊은 이해: 서드파티 라이브러리의 로딩 메커니즘과 초기화 프로세스를 주의 깊게 읽기
개발 모범 사례:
- 공식 API 최우선: 공식 API를 우선시하고 기존 기능의 재구현 방지
- KISS 원칙: 단순하고 직접적인 솔루션이 가장 효과적. 3줄의 코드가 300줄의 복잡한 구현보다 우수
- 점진적 개발: 먼저 가장 단순한 버전으로 실현 가능성 검증 후 점진적 최적화
- 문제 문서화: 디버깅의 각 시도 결과를 상세히 기록하여 동일한 실수 반복 방지
성능 최적화
파일 로딩에서 주목할 만한 성능 개선 달성:
파일 로딩 속도
결과: 모든 파일 크기에서 60-95% 성능 개선
파일 크기 | 이전 | 현재 | 개선율 |
---|---|---|---|
1MB | 840ms | 39ms | 95.4% 빠름 |
10MB | 1,380ms | 255ms | 81.5% 빠름 |
100MB | 6,780ms | 2,415ms | 64.4% 빠름 |
최적화 기법
- I/O 감소: 3개의 파일 읽기 작업을 1개로 통합
- Promise 최적화: 불필요한 Promise.resolve 래퍼 제거
- 진행 계산: 매핑 로직 단순화
- 메모리 관리: 여러 메모리 누수 소스 수정
사용자 경헙 개선
- 통합된 경헙: 전체 화면 및 일반 모드의 동작 일치
- 일관된 UI 흐름: 가져오기 및 새 파일의 완전한 업로드 경헙 제공
- 더 나은 오류 메시지: 오류 분류 및 사용자 친화적 설명 개선
- 모바일 최적화: 터치 장치용 반응형 디자인 강화
📱 공유 기능의 완전한 개발 히스토리와 아키텍처 진화
FloatingShareBar 3버전 아키텍처 진화 실무
배경: 사용자 요구사항을 바탕으로 왼쪽에 떠있는 공유 도구 모음을 설립하여 3버전에 걸친 핵심 아키텍처 진화를 경험
v1.0: 기본 플로팅 공유 바 아키텍처 (35분 구현)
디자인 결정 과정:
- 위치 선택: 페이지 좌측 가장자리에 고정, 수직 중앙 배치 - UX 트레이드오프
- 플랫폼 선택: 사용자 그룹 분석을 바탕으로 7개 핵심 소셜 플랫폼 결정
- 반응형 전략: 데스크톱 표시(
lg:block
)/모바일 숨김 - 디자인 트레이드오프
기술 구현 도전 과제:
/* 고정 위치 지정 및 레이어 관리 */
.floating-share-bar {
position: fixed;
left: 1rem;
top: 50%;
transform: translateY(-50%);
z-index: 40; /* 중요한 레이어 디자인 */
}
핵심 기술 결정사항:
- React-Share 통합: 자체 공유 기능 대신 검증된 라이브러리 선택
- 아이콘 디자인: 40px 원형 소셜 아이콘의 사용성 최적화
- 호버 효과:
scale(1.1)
상호작용 피드백 디자인
v1.1: More 버튼 및 대화상자 통합 (35분 빠른 대응)
사용자 니즈 주도:
- 문제: 기본 7개 플랫폼으로는 사용자의 다양한 공유 니즈를 만족시킬 수 없음
- 해결 방안: 완전한 공유 대화상자에 연결되는 "More" 버튼 추가
- 사용자 경험 플로우: 빠른 공유 + 완전한 선택의 이중 경험
기술 구현 복잡성:
// 상태 관리 도전
const [showMoreDialog, setShowMoreDialog] = useState(false);
// More 버튼의 특별한 처리
const platforms = [
// ... 기존 7개 플랫폼
{
name: 'More',
isMore: true,
onClick: () => setShowMoreDialog(true)
}
];
통합 도전 과제:
- 컴포넌트 통신: FloatingShareBar와 SimpleShareDialog 간 상태 동기화
- 시각적 일관성: More 버튼과 소셜 아이콘의 통일된 디자인
- z-index 관리: 대화상자의 올바른 레이어 표시 보장
v1.2: 아키텍처 레이어 문제의 근본 해결 (30분 수정)
문제 진단 과정:
문제 증상: FloatingShareBar가 메인 페이지에 표시되지 않음
아키텍처 분석: FloatingShareBar가 ViewerView 내부에 배치됨
상태 의존성: ViewerView는 loading/viewing 상태에서만 렌더링
메인 페이지 상태: STPViewer 기본값은 upload 상태, UploadView 표시
근본 원인: FloatingShareBar가 잘못된 컴포넌트 레이어에 위치
현재 아키텍처 문제:
메인 페이지 → HeroSection → HeroStpViewer → STPViewer
├── upload 상태 → UploadView (FloatingShareBar 없음) ❌
├── loading 상태 → ViewerView (FloatingShareBar 있음) ✅
└── viewing 상태 → ViewerView (FloatingShareBar 있음) ✅
해결 아키텍처:
STPViewer (새로운 FloatingShareBar 레이어)
├── upload 상태 → UploadView + FloatingShareBar ✅
├── loading 상태 → ViewerView + FloatingShareBar ✅
└── viewing 상태 → ViewerView + FloatingShareBar ✅
중요한 코드 수정:
// src/components/stp-viewer/stp-viewer.tsx
return (
<div className={cn('stp-viewer-container', className)}>
{/* 상태 관련 주요 콘텐츠 */}
{renderContent()}
{/* 글로벌 플로팅 공유 도구 모음 */}
<FloatingShareBar file={viewerState.file} />
</div>
);
SimpleShareDialog의 실용적 개발 지혜
UI 일관성 문제의 체계적 발견
비교 분석 방법: 메인 페이지 모드 vs 전체화면 모드 간 체계적 비교를 통해 기능 불일치 발견:
기능 | 메인 페이지 모드 | 전체화면 모드 | 상태 |
---|---|---|---|
New File | ✅ | ✅ | 일관됨 |
Screenshot | ✅ | ✅ | 일관됨 |
Share | ❌ 누락 | ✅ | 불일치 |
코드 레벨 분석:
// viewer-view.tsx:730-766 - 메인 페이지 도구 모음
const toolbarButtons: ToolbarButton[] = [
{ id: 'new-file', /* ... */ },
{ id: 'screenshot', /* ... */ },
// ❌ Share 버튼 누락
];
// FullscreenToolbar.tsx:132-139 - 전체화면 모드 도구 모음
const secondaryTools: ToolbarButton[] = [
{
id: 'share',
label: t('toolbar.share'),
// ✅ 존재하지만 기능 미구현
},
];
React-Share 기술 조사의 현실주의
기술 한계의 깊은 발견:
// ✅ React-Share 실제 능력
- 링크 공유: 모든 플랫폼이 URL 공유 지원
- 텍스트 콘텐츠: 제목, 설명 등 텍스트 매개변수 지원
- 소셜 플랫폼 리다이렉트: 플랫폼의 공식 공유 페이지 열기
- 외부 의존성 제로: 서드파티 SDK 로딩 불필요
// ❌ React-Share 기술 제약
- 로컬 파일 공유 지원 없음: 스크린샷, 문서 직접 공유 불가
- 이미지 업로드 지원 없음: 주류 플랫폼은 직접 이미지 업로드 미지원
- 공개 이미지 URL만 지원: 소수 플랫폼이 공개 접근 가능한 이미지 링크 요구
- 백엔드 기능 없음: 파일 업로드, 단축 링크 생성 처리 불가
개발 계획의 현실적 조정:
- 이상적 계획: 5일, 복잡한 아키텍처, 다중 컴포넌트 디자인
- 현실적 조정: 1.5일, 단일 컴포넌트 디자인, 기술 위험 제로
- 핵심 결정: 비현실적 기능 환상 포기, 실현 가능한 솔루션에 집중
- 아키텍처 단순화: SimpleShareDialog 컴포넌트만 생성
최소 아키텍처의 설계 지혜
컴포넌트 전략:
src/components/stp-viewer/
├── shared/
│ └── SimpleShareDialog.tsx # 통합 공유 대화상자 (유일한 컴포넌트)
├── viewer-view.tsx # Share 버튼 추가
└── fullscreen/
└── FullscreenToolbar.tsx # 실제 공유 기능 연결
설계 원칙의 실천:
- 단일 컴포넌트 생성: 과도한 엔지니어링 방지
- 새 Hook 생성 안함: 컴포넌트 내에서 직접 로직 구현
- 기존 상태 재사용: 글로벌 스토어 확장 대신 로컬 상태 사용
- 플랫폼 우선순위: Tier1/2/3 현실적 계층 전략
공유 기능 45분 빠른 향상 실습
문제의 정밀한 진단
문제 1: disabled 버튼 로직 오류
// 잘못된 로직
{
id: 'share',
disabled: !isViewerReady, // ❌ 페이지 링크 공유는 모델 로딩을 기다릴 필요 없음
}
// 올바른 로직
{
id: 'share',
disabled: false, // ✅ 페이지 공유 기능은 항상 사용 가능해야 함
}
근본 원인 분석:
- 기술적 오류: 모델 로딩 전
isViewerReady
가false
- 논리적 오류: 페이지 링크 공유 기능은 3D 모델 상태에 의존하지 않아야 함
- 사용자 영향: 메인 페이지에서 공유 기능을 전혀 사용할 수 없음
문제 2: 불충분한 플랫폼 지원에 대한 빠른 대응
- 사용자 피드백: 4개 플랫폼만 지원 (Twitter, Facebook, LinkedIn, Email)
- 확장 요구: 더 많은 인기 소셜 및 커뮤니케이션 플랫폼 지원 희망
- 기술적 실현 가능성: react-share 라이브러리가 20+ 플랫폼 지원
45분 3단계 구현 플로우
1단계: 기본 수정 (15분)
// src/components/stp-viewer/viewer-view.tsx:754
- disabled: !isViewerReady,
+ disabled: false,
2단계: 플랫폼 확장 (20분)
// 6개의 새로운 주류 플랫폼 추가
const newPlatforms = [
'WhatsApp', // 세계 최대 인스턴트 메시징 앱
'Telegram', // 기술 사용자 그룹 선호
'Reddit', // 기술 커뮤니티 주요 공유 플랫폼
'Pinterest', // 시각적 콘텐츠 공유, 3D 모델에 적합
'Weibo', // 중국 사용자 주요 소셜 플랫폼
'Line', // 아시아 지역 인기 커뮤니케이션 앱
];
3단계: 경험 최적화 (10분)
- 레이아웃 조정: 2x2 그리드에서 3x3 그리드로 확장
- 국제화 지원: 새 플랫폼의 중영 표시 이름
- 모바일 적응: 소형 화면 장치에서의 표시 효과 보장
중요한 개발 경험 요약
아키텍처 진화의 중요성:
- 레이어 선택: 올바른 레이어에 컴포넌트를 배치하는 것이 특정 기능 최적화보다 중요
- 상태 의존성: 과도한 상태 의존성은 예상치 못한 기능 제약을 초래
- 점진적 향상: 기본 기능에서 완전 기능으로의 단계적 개발이 더 안정적
현실적 기술 선택:
- 능력 경계: 서드파티 라이브러리의 실제 능력과 제약에 대한 깊은 이해
- 계획 조정: 기술적 현실에 기반한 개발 계획 조정이 이상적 솔루션 고수보다 현명
- 아키텍처 단순화: 단일 컴포넌트 디자인이 복잡한 아키텍처보다 효과적인 경우가 많음
빠른 대응 개발 능력:
- 문제 진단: 문제의 근본 원인을 정확하게 찾아내는 것의 중요성
- 시간 관리: 합리적인 단계 분할이 개발 효율성을 향상시킴
- 사용자 지향: 사용자 피드백에 기반한 빠른 반복의 가치
이 공유 기능 개발 히스토리는 아키텍처 진화부터 기술 선택까지, 문제 진단부터 빠른 수정까지의 완전한 개발 지혜를 보여주며 팀에게 소중한 실무 경험을 축적하였다.
다음 단계
- 성능 메트릭 지속적 모니터링
- 개선된 워크플로에 대한 사용자 피드백 수집
- 추가 모바일 최적화 계획
- 대용량 파일의 점진적 로딩 탐색
성능 최적화
v1.0.6주요 코드 정리 및 성능 개선, 18초 로딩 성능 유지
2025/08/28
🧹 코드 품질 및 아키텍처 개선
장기적 안정성을 위한 기반 강화 - 포괄적인 기능 세트 최적화:
유지 보수성과 성능 향상을 위한 포괄적인 정리 및 최적화:
- 데드 코드 제거: 모바일 도구 모음.tsx를 포함한 사용되지 않는 코드 약 400줄 삭제
- 가져오기 정리: 여러 구성 요소에서 사용되지 않는 가져오기 수정
- 메모리 누수 수정: 이벤트 리스너, 타이머, WebGL 리소스 누수 해결
- 상태 관리: 불필요한 재렌더링을 줄이기 위한 스마트 그룹화
오류 처리 강화
- 지능형 오류 분류: 더 나은 사용자 피드백을 위한 categorizeError 함수 추가
- 구체적인 오류 유형: 메모리 오류, WebGL 오류, 파일 검증 오류
- 사용자 친화적인 메시지: 영어와 중국어로 명확한 오류 설명
성능 결과
- 로딩 시간: 14.6MB STEP 파일에 대해 18초의 로딩 성능 유지
- 코드 감소: 약 400줄의 코드 삭제
- 메모리 최적화: 여러 메모리 누수 소스 수정
- 안정성: 오류 처리 및 리소스 정리 강화
기술적 구현
- 스마트 상태 그룹화: 최적의 렌더링을 위한 핵심 상태와 UI 상태 분리
- 리소스 관리: WebGL 리소스 정리 및 Object URL 처리 개선
- 타입 안전성: 적절한 분류를 통한 TypeScript 오류 처리 강화
- KISS 원칙: 더 나은 유지 보수성을 위한 구현 단순화
진행 콜백 조사
- 연구 완성: Online3DViewer 소스 코드의 진행 콜백 분석
- 구현 시도: 메서드 오버라이드 접근 방식이 심각한 성능 저하 유발 (18초 → 60초 이상)
- 상태: 성능 영향으로 인해 연기 - 사용자 경験 우선
- 학습: 제3자 라이브러리의 내부 메서드를 재정의하지 않음
개발 가이드라인
- 기능 추가보다 성능 우선
- 제3자 라이브러리의 내부 메서드 재정의 금지
- KISS 원칙: 단순한 구현이 더 안정적
- 18초의 로딩 시간이 주요 성능 지표
최적화 철학
성능 우선 접근 방식
-
불필요한 코드 제거
- 사용되지 않는 가져오기 및 함수의 철저한 삭제
- 코드 베이스 경량화
-
리소스 관리 최적화
- WebGL 리소스의 효율적인 정리
- 메모리 누수의 적극적인 방지
-
상태 관리 재설계
- 불필요한 재렌더링 최소화
- 구성 요소의 상태 라이프사이클 효율적 관리
향후 최적화 방향
- 더 상세한 성능 프로파일링
- WebGL 렌더링의 지속적인 최적화
- 사용자 경験을 저해하지 않는 효율적인 코드 구현
모델 구조 탐색기 + 스마트 모바일 인터페이스
v1.0.4전문적인 모델 트리 탐색과 장치별 작동 가이드
2025/08/27
🌲 모델 구조 탐색기
복잡한 STEP 어셈블리를 관리 가능하고 탐색 가능한 구성 요소로 변환하는 계층적 모델 탐색의 혁명.
대화형 모델 트리
- 계층적 탐색: 확장/축소 가능한 노드가 있는 완전한 어셈블리 구조
- 구성 요소 격리: 클릭하여 특정 부품 또는 어셈블리에 초점
- 가시성 제어: 개별 구성 요소 또는 전체 하위 어셈블리 표시/숨기기
- 스마트 필터링: 이름, 유형 또는 속성으로 구성 요소 검색 및 필터링
전문가용 기능
- 어셈블리 분석: 복잡한 다중 부품 STEP 파일 구조 이해
- 구성 요소 속성: 각 모델 구성 요소에 대한 자세한 정보 보기
- 선택 동기화: 트리 선택에 따른 3D 지오메트리 강조
- 구성 요소별 내보내기: 개별 부품 또는 선택된 어셈블리 내보내기
고급 탐색
- 구성 요소에 확대/축소: 선택한 구성 요소를 3D 뷰에 자동으로 프레이밍
- 강조 시스템: 호버/선택된 구성 요소의 시각적 강조
- 중첩 어셈블리 지원: 깊이 중첩된 어셈블리 계층 처리
- 성능 최적화: 복잡한 모델에서도 부드러운 상호작용
📱 스마트 작동 가이드 적응
지능형 장치 인식 인터페이스로 상황에 맞는 작동 가이드 제공:
- 장치 감지: 터치 장치를 자동 감지하고 작동 가이드 전환
- 모바일 제스처: 한 손가락 회전, 핀치 확대/축소, 두 손가락 팬
- 데스크톱 작동: 마우스 드래그, 스크롤 휠 확대/축소, 키보드 단축키
- 아이콘 최적화: 모바일용 터치 아이콘, 데스크톱용 마우스 아이콘
기술적 구현
- 반응형 감지:
useResponsive
훅을 사용한 장치 감지 - 네이티브 지원: Online3DViewer 터치 상호작용 기반
- 국제화: 중국어 및 영어 힌트 지원
- 구성 요소 분리: 독립적인 작동 가이드 구성 요소
사용자 경験 개선
- 모바일에서 더 이상 무관한 "왼쪽 마우스 버튼" 힌트 표시 안 함
- 모바일 장치 작동에 맞는 터치 제스처 설명
- 수동 전환 없이 인터페이스 자동 적응
- 소형 화면 장치에 최적화된 디스플레이
버그 수정
- 모바일 사용자의 데스크톱 작동 힌트 혼란 해결
- 터치 장치 상호작용 경験 개선
- 다른 장치 간 사용자 인터페이스 스타일 통일
(以下略)
모바일 도구 모음 최적화
v1.0.5긴 파일 이름 압축 문제 해결 및 모바일 레이아웃 개선
2025/08/27
📱 모바일 레이아웃 향상
터치 장치에서 고급 기능을 완벽하게 작동시키기 위한 전문적인 모바일 경験 최적화:
긴 파일 이름으로 인해 도구 버튼이 압축되는 문제 해결:
- 반응형 파일 이름: 모바일에서 120px 제한, 데스크톱에서 200px 유지
- 정보 간소화: 모바일에서 파일 확장자 숨기기, 핵심 정보만 표시
- 버튼 최적화: 공간을 확보하기 위해 필수적이지 않은 버튼 숨기기
- 간격 조정: 컴팩트한 버튼 간격으로 모든 기능 버튼 적절히 표시
사용자 경験 개선
- 긴 파일 이름 처리: 호버 시 전체 이름을 표시하는 자동 자르기
- 확장된 툴팁: 모바일 장치에서 자세한 버튼 설명 표시
- 공간 활용: 3D 보기 영역 최대화, 도구 모음 공간 최소화
- 반응형 디자인: 다양한 화면 크기에 최적화된 레이아웃 자동 적응
기술적 구현
- Tailwind CSS: 정확한 반응형 중단점 제어
- 점진적 확장: 모바일에서 데스크톱으로의 계층적 디자인
- 공간 관리: 지능형 표시/숨기기 전략
- 기능 유지: 모든 핵심 기능을 장치 간 접근 가능하게 유지
해결된 문제점
- 긴 파일 이름으로 인한 전체 화면 표시 버튼 잘림 문제 해결
- 소형 화면 장치의 도구 모음 레이아웃 개선
- 터치 장치의 버튼 간격 및 사용성 향상
- 중요한 기능 버튼의 표시 및 조작 보장
레이아웃 최적화의 기술적 세부 사항
모바일 디스플레이의 과제
- 화면 너비 제약: 제한된 공간에서의 정보 표시
- 터치 조작 요구사항: 작은 버튼에서도 정확한 탭 가능
구현 전략
-
동적 공간 할당
- 파일 이름 길이에 따라 동적으로 버튼 크기 조정
- 중요한 기능 버튼의 우선순위 지정
-
지능형 정보 표시
- 축약 표시와 전체 표시 전환
- 컨텍스트에 따른 정보 세부 수준 조정
-
성능 최적화
- CSS Grid 및 Flexbox를 활용한 반응형 레이아웃
- 최소한의 CSS 오버헤드
- 리플로우(재배치) 비용 최소화
모바일 대응의 미래 방향
- 추가 제스처 지원 확장
- 더욱 고급화된 적응형 UI 구성 요소
- 장치 특성 기반 동적 최적화
가져오기/내보내기 시스템 + 재질 편집기 + 테마 수정
v1.0.317개의 가져오기/10개의 내보내기 형식을 통한 범용 파일 변환 및 고급 재질 편집
2025/08/26
💾 범용 가져오기/내보내기 시스템
가장 포괄적인 온라인 3D 파일 변환기를 설립하는 혁신적인 파일 형식 지원.
광범위한 가져오기 지원 (17개 형식)
CAD 형식: STEP, IGES, BREP, OCCT
메시 형식: STL, OBJ, OFF, PLY, 3DS
현대 형식: GLTF/GLB, FBX, DAE, 3DM
산업 형식: IFC, BIM, FCStd, SVG
전문 내보내기 옵션 (10개 형식)
- STL 내보내기: ASCII 및 바이너리 형식의 3D 프린팅 지원
- OBJ 내보내기: MTL 재질 파일과 범용 호환성
- GLTF/GLB: 현대적인 웹 최적화 3D 형식
- PLY/OFF: 연구 및 과학 응용 프로그램
- 3DM/BIM: 전문 CAD 및 건축 워크플로우
내보내기 우수성
- 형식별 옵션: 각 내보내기 형식의 사용자 정의 가능한 설정
- 품질 관리: 정밀도 설정 및 최적화 옵션
- 일괄 처리: 단일 가져오기에서 여러 형식 내보내기
- 모바일 지원: 모든 장치에서 완전한 내보내기 기능
🎨 고급 재질 시스템
전문적인 재질 편집 및 시각화 기능:
재질 편집기
- 색상 사용자 정의: RGB 색상 선택기와 실시간 미리보기
- 투명도 제어: 정밀한 불투명도 조정
- 재질 속성: 금속성, 거칠기, 표면 마감 제어
- 실시간 미리보기: 재질 편집 중 즉각적인 시각적 피드백
환경 시스템
- 6개 환경 맵: 전문 HDRI 조명 프리셋
- 배경 제어: 사용자 정의 배경색 및 그라데이션
- 조명 제어: 고급 앰비언트 및 방향성 조명
- 렌더링 품질: 성능 최적화를 위한 여러 품질 프리셋
🌈 테마 통합 수정
중요한 사용자 경験 문제 해결:
- 3D 뷰어 테마 동기화: 웹사이트 테마 전환과 3D 뷰어 배경의 동기화 문제 해결
- 시각적 일관성: 모든 인터페이스 요소에서 라이트/다크 모드 일관성 확보
- SetBackgroundColor API: Online3DViewer 배경색 설정 메서드 최적화
- 타입 안전성: TypeScript 호환성 문제를 타입 어설션으로 해결
브랜드 업데이트
- 새 로고 적용: 모든 웹사이트 위치에 새로운 STP 뷰어 브랜드 아이덴티티 적용
- 아이콘 통일: 파비콘, 앱 아이콘 및 소셜 미디어 아이콘 업데이트
- PWA 아이콘: 프로그레시브 웹 앱 아이콘 구성 개선
기능 표시 최적화
- 실제 스크린샷: 기능 구성 요소가 실제 STP 뷰어 기능 스크린샷 사용
- 제품 시연: 3D 보기 및 파일 처리 기능의 더 나은 쇼케이스
- 사용자 신뢰: 실제 인터페이스 스크린샷을 통한 사용자 신뢰 향상
기술 개선
- API 호출 최적화: SetBackgroundColor 메서드 호출 접근 방식 개선
- RGBAColor 객체: 배경 설정을 위한 RGBAColor 객체의 적절한 생성 및 사용
- 강제 렌더링: 테마 전환 후 즉시 3D 뷰어 표시 업데이트 보장
버그 수정
- 다크 모드에서 3D 뷰어 배경이 검은색으로 남아있는 문제 해결
- 테마 전환 지연 또는 실패 문제 해결
- 타입 검사 및 컴파일 호환성 개선
- 다양한 장치에서 테마 표시 효과 최적화
(以下略)
풀스크린 아키텍처 기반
v0.1.0혁신적인 풀스크린 모드 프레임워크 - STP 뷰어를 전문 3D CAD 플랫폼으로 변환
2025/08/25
🚀 혁신적인 아키텍처 출시
이 마일스톤은 STP 뷰어를 단순한 파일 뷰어에서 전문 수준의 3D CAD 시각화 플랫폼으로 전환하는 시작점입니다. 온라인에서 가장 포괄적인 STEP 파일 보기 경験을 만들었습니다.
🏗️ 풀스크린 모드 프레임워크
코어 아키텍처 구현
점진적 기능 전략: 2계층 경験 설계
- 일반 모드: 사랑받는 단순성 유지 (업로드, 보기, 스크린샷, 풀스크린)
- 풀스크린 모드: 전문 CAD 수준의 기능 잠금 해제
인프라 구성 요소
- ✅ 모듈식 컴포넌트 아키텍처: 간단한 기능과 고급 기능의 명확한 분리
- ✅ 상태 관리 시스템: 풀스크린 전용 기능을 위한 Zustand 기반 저장소
- ✅ 반응형 레이아웃 엔진: 모든 장치에서 원활하게 작동하는 적응형 UI
- ✅ 도구 시스템 기반: 전문 CAD 도구를 위한 확장 가능한 프레임워크
기술적 기반
// 새로운 컴포넌트 구조
src/components/stp-viewer/
├── fullscreen/ # 전문 도구 (지연 로딩)
├── panels/ # 접을 수 있는 탐색 패널
└── hooks/ # 3D 뷰어 통합을 위한 사용자 정의 훅
🎯 설계 철학
"기본적으로 간단하고, 선택에 따라 강력하게"
경験 수준 | 인터페이스 | 사용 사례 |
---|---|---|
일반 사용자 | 깨끗하고 최소한의 도구 모음 | 빠른 파일 미리보기, 기본 보기 |
전문가 | 전체 CAD 도구 모음 | 자세한 분석, 측정, 내보내기 |
🔧 기술적 성과
성능 최적화
- 영향 없음: 일반 모드 성능에 완전히 영향을 미치지 않음
- 지연 로딩: 필요할 때만 전문 기능 로드
- 메모리 효율성: 대용량 STEP 파일을 위한 지능형 리소스 관리
- 모바일 우선: 모든 화면 크기에 최적화된 터치 컨트롤
개발자 경験
- 깨끗한 아키텍처: SOLID 원칙을 따르는 모듈식 설계
- 유형 안전성: 새로운 컴포넌트에 대한 완전한 TypeScript 적용
- 테스트 준비: 포괄적인 테스트를 위해 설계된 컴포넌트 구조
- 확장성: 향후 전문 기능을 위한 프레임워크 준비
(以下略)
전문 측정 시스템 + 인터페이스 최적화
v1.0.2혁신적인 정밀 측정 도구 - 거리, 각도, 평행면 측정
2025/08/20
📏 전문 측정 혁명
산업 수준의 측정 기능을 도입하여 STP 뷰어를 정밀 분석 도구로 변환합니다. 이번 릴리스는 브라우저 기반 3D 시각화에 산업 표준 CAD 측정 정확도를 제공합니다.
포괄적 측정 스위트
- 점 간 거리: 임의의 두 점 사이의 정밀한 직선 거리 측정
- 평행면 거리: 평행면 사이의 정확한 거리 계산
- 각도 측정: 모서리, 면, 벡터 간 각도 측정
- 다중 단위 지원: mm, cm, m, 인치 단위와 지능형 변환
전문가용 기능
- 실시간 결과: 부동 패널에 즉시 측정 결과 표시
- 측정 이력: 저장 및 내보내기 가능한 완전한 측정 기록
- 시각적 마커: 측정 명확성을 위한 3D 마커 및 치수선
- 정밀도 제어: 전문 CAD 도구에 필적하는 서브밀리미터 정확도
모바일 최적화
- 터치 최적화: 모바일 측정 워크플로우에 최적화된 터치 인터랙션
- 반응형 인터페이스: 모든 화면 크기에 적응하는 측정 UI
- 제스처 지원: 핀치 줌 및 자연스러운 터치 측정 상호작용
🎯 제품 최적화
측정 시스템과 함께 초점을 맞춘 개선:
- STEP 형식에 집중: IGES 형식 지원 제거, STEP (.stp/.step) 파일 최적화에 집중
- 사용자 리뷰 시스템: 사용자 추천 표시 및 피드백 시스템 추가
- 사용 가이드: 신규 사용자를 위한 3단계 사용 가이드 추가
- 기술 사양: 상세한 기술 사양 및 성능 지표 추가
인터페이스 개선
- 홈페이지 재설계: SaaS 모범 사례에 따른 페이지 레이아웃 최적화
- 반응형 강화: 모바일 및 태블릿에서의 사용자 경験 개선
- 브라우저 호환성: 브라우저 호환성 정보 페이지 추가
- 국제화 개선: 중국어와 영어 버전 간 번역 일관성 향상
기능 개선
- 통계 표시: 사용자 사용량, 파일 처리 볼륨 등 운영 데이터 표시
- FAQ 섹션: 일반적인 사용자 질문에 답하는 FAQ 섹션 개선
- 피드백 채널: 다양한 사용자 피드백 및 연락 방법 추가
버그 수정
- 국제화 관련 누락 문제 해결
- 구성 요소 표시 불일치 문제 해결
- 모바일 레이아웃 문제 수정
- 페이지 로딩 성능 개선
(以下略)
전문 뷰 컨트롤 시스템 + 성능 부스트
v1.0.1혁명적인 3D 내비게이션 - 6개의 사전 설정 뷰포인트, 투영 모드, 30% 빠른 로딩
2025/08/15
🎯 전문 뷰 컨트롤 혁명
3D 내비게이션을 기본적인 이동과 확대에서 전문 CAD 수준의 뷰 컨트롤로 변환합니다. 이번 릴리스는 데스크톱 CAD 애플리케이션에 필적하는 산업 표준 뷰포인트 관리 기능을 제공합니다.
6개의 표준 뷰포인트
- 정면/배면/좌면/우면: 정밀한 입면 분석을 위한 완벽한 정렬
- 상면/하면: 평면 및 하단 검사 기능
- 원클릭 접근: 각 뷰포인트에 최적의 카메라 위치와 적절한 상향 벡터 방향 설정
고급 투영 시스템
원근 투영(기본값)
- 자연스러운 깊이 인식과 사실적인 단축
- 프레젠테이션 및 일반 시각화에 이상적
직교 투영(전문가)
- 원근감 없는 정확한 축척의 기술 도면
- 측정 및 기술 분석에 완벽
- 엔지니어링 문서의 산업 표준
스마트 카메라 내비게이션
- 창에 맞추기: 최적의 확대/축소 및 위치 자동 계산
- 상향 벡터 관리: Y축 또는 Z축 상향 방향 전환
- 내비게이션 모드: 고정 궤도 vs 자유 내비게이션 옵션
- 모바일 우수성: 터치 최적화 제스처 컨트롤
🚀 성능 개선
새로운 뷰 시스템과 함께 중요한 최적화:
- 파일 크기 제한 증가: 50MB에서 100MB로 확장, 대형 STEP 파일 지원
- 대용량 파일 최적화: 대형 파일 로딩 및 렌더링 성능 향상
- 메모리 관리: 최적화된 메모리 사용, 충돌 위险 감소
- 로딩 시간: 중형 및 대형 파일 로딩 시간 30% 단축
(以下略)
STP Viewer 초기 릴리스
v1.0.0STEP 형식 3D 미리보기 기능을 갖춘 온라인 STP 파일 뷰어의 첫 번째 버전
2025/08/01
핵심 기능
다음과 같은 핵심 기능을 갖춘 STP Viewer의 첫 번째 버전을 출시하게 되어 기쁩니다:
- STEP 파일 지원: .stp 및 .step 형식 파일 업로드 및 파싱
- 실시간 3D 미리보기: WebGL 기반 고성능 3D 모델 렌더링
- 파일 검증: 스마트 파일 형식 감지 및 무결성 검증
- 반응형 디자인: 모바일 및 데스크톱 기기에 완벽한 적응
- 테마 전환: 라이트 및 다크 테마 모드 지원
기술적 특징
- 우수한 성능을 위한 Next.js 15 및 React 18로 구축
- 복잡한 CAD 모델을 지원하는 Online3DViewer 엔진 통합
- 완전한 국제화 지원 (중국어/영어)
- 주요 모던 브라우저에 대한 호환성 최적화
성능 사양
- 지원 파일 크기: 1KB - 50MB
- 로딩 시간: 작은 파일 < 1.5초
- 메모리 사용량: 기본 < 50MB