Fix : 포트폴리오 및 서비스 내용 업데이트 패치

This commit is contained in:
KINDNICK 2025-09-21 22:44:27 +09:00
parent d8febb68fb
commit dd6459955b
4 changed files with 1721 additions and 74 deletions

File diff suppressed because it is too large Load Diff

View File

@ -74,4 +74,150 @@ document.querySelectorAll('.services-table tbody tr').forEach(row => {
this.style.backgroundColor = '';
}
});
});
// ========================================
// 포트폴리오 팝업 기능
// ========================================
// 포트폴리오 팝업 열기
function openPortfolioPopup() {
const popup = document.getElementById('portfolioPopup');
if (popup) {
popup.classList.add('active');
document.body.style.overflow = 'hidden'; // 배경 스크롤 방지
// ESC 키로 닫기
document.addEventListener('keydown', handleEscapeKey);
// 애니메이션 효과
setTimeout(() => {
popup.style.opacity = '1';
}, 10);
}
}
// 포트폴리오 팝업 닫기
function closePortfolioPopup() {
const popup = document.getElementById('portfolioPopup');
if (popup) {
// 팝업 내 모든 iframe 정지
const iframes = popup.querySelectorAll('iframe');
iframes.forEach(iframe => {
const src = iframe.src;
iframe.src = '';
setTimeout(() => {
iframe.src = src;
}, 100);
});
popup.style.opacity = '0';
setTimeout(() => {
popup.classList.remove('active');
document.body.style.overflow = ''; // 스크롤 복원
}, 300);
// ESC 키 이벤트 제거
document.removeEventListener('keydown', handleEscapeKey);
}
}
// ESC 키 처리
function handleEscapeKey(event) {
if (event.key === 'Escape') {
closePortfolioPopup();
}
}
// ========================================
// 스트리밍 포트폴리오 팝업 기능
// ========================================
// 스트리밍 포트폴리오 팝업 열기
function openStreamingPortfolioPopup() {
const popup = document.getElementById('streamingPortfolioPopup');
if (popup) {
popup.classList.add('active');
document.body.style.overflow = 'hidden';
document.addEventListener('keydown', handleStreamingEscapeKey);
setTimeout(() => {
popup.style.opacity = '1';
}, 10);
}
}
// 스트리밍 포트폴리오 팝업 닫기
function closeStreamingPortfolioPopup() {
const popup = document.getElementById('streamingPortfolioPopup');
if (popup) {
// 팝업 내 모든 iframe 정지
const iframes = popup.querySelectorAll('iframe');
iframes.forEach(iframe => {
const src = iframe.src;
iframe.src = '';
setTimeout(() => {
iframe.src = src;
}, 100);
});
popup.style.opacity = '0';
setTimeout(() => {
popup.classList.remove('active');
document.body.style.overflow = '';
}, 300);
document.removeEventListener('keydown', handleStreamingEscapeKey);
}
}
// 스트리밍 팝업 ESC 키 처리
function handleStreamingEscapeKey(event) {
if (event.key === 'Escape') {
closeStreamingPortfolioPopup();
}
}
// 팝업 초기화
document.addEventListener('DOMContentLoaded', function() {
// 뮤비/숏폼 팝업 초기화
const popup = document.getElementById('portfolioPopup');
if (popup) {
popup.style.opacity = '0';
popup.style.transition = 'opacity 0.3s ease';
const overlay = popup.querySelector('.popup-overlay');
if (overlay) {
overlay.addEventListener('click', closePortfolioPopup);
}
const content = popup.querySelector('.popup-content');
if (content) {
content.addEventListener('click', function(event) {
event.stopPropagation();
});
}
}
// 스트리밍 팝업 초기화
const streamingPopup = document.getElementById('streamingPortfolioPopup');
if (streamingPopup) {
streamingPopup.style.opacity = '0';
streamingPopup.style.transition = 'opacity 0.3s ease';
const streamingOverlay = streamingPopup.querySelector('.popup-overlay');
if (streamingOverlay) {
streamingOverlay.addEventListener('click', closeStreamingPortfolioPopup);
}
const streamingContent = streamingPopup.querySelector('.popup-content');
if (streamingContent) {
streamingContent.addEventListener('click', function(event) {
event.stopPropagation();
});
}
}
});

View File

@ -227,6 +227,39 @@
</div>
</div>
<div class="video-card shorts">
<div class="video-wrapper shorts-wrapper">
<iframe data-src="https://www.youtube.com/embed/ZWftEFNlvVc"
title="일본 유행 챌린지 Shorts"
allowfullscreen loading="lazy"></iframe>
</div>
<div class="video-info">
<h4>🍓요즘 일본에서 유행하는 챌린지 #vtuber #shorts</h4>
</div>
</div>
<div class="video-card shorts">
<div class="video-wrapper shorts-wrapper">
<iframe data-src="https://www.youtube.com/embed/xZS1e465wjc"
title="Trouble 챌린지 Shorts"
allowfullscreen loading="lazy"></iframe>
</div>
<div class="video-info">
<h4>🍓trouble 챌린지 #trouble #challenge</h4>
</div>
</div>
<div class="video-card shorts">
<div class="video-wrapper shorts-wrapper">
<iframe data-src="https://www.youtube.com/embed/X3a_4GWU3V8"
title="그르르 챌린지 Shorts"
allowfullscreen loading="lazy"></iframe>
</div>
<div class="video-info">
<h4>🍓그르르 챌린지 grrr#shorts</h4>
</div>
</div>
</div>
</div>
</section>

View File

@ -76,80 +76,307 @@
<section class="section">
<div class="container">
<div class="section-header">
<h2>주요 서비스 소개</h2>
<h2>서비스 패키지</h2>
<p>용도와 규모에 맞는 최적의 모션캡처 서비스를 제공합니다</p>
</div>
<!-- 서비스 항목 테이블 -->
<div class="services-table-wrapper">
<div class="card">
<h3>서비스 항목 및 요금</h3>
<div class="table-responsive">
<table class="services-table">
<thead>
<tr>
<th>서비스 항목</th>
<th>설명</th>
<th>요금</th>
</tr>
</thead>
<tbody>
<tr class="main-service">
<td>
<div class="service-name">
<span class="service-icon">🎬</span>
<strong>모션캡쳐 스튜디오 대관</strong>
</div>
</td>
<td>
<ul class="service-features">
<li>28대의 광학식 카메라 시스템 (OptiTrack)</li>
<li>모션캡쳐 수트 및 장갑 지원 (Rokoko Glove)</li>
<li>스튜디오 면적: 8m(가로) x 7m(세로) x 2.6m(높이)</li>
<li>실시간 모니터링 장비 보유</li>
<li>전신 및 페이셜 모션캡쳐 가능</li>
<li>동시 이용가능 인원: 최대 4인</li>
<li>모션 녹화 파일 제공</li>
<li>실시간 오퍼레이팅 지원</li>
</ul>
</td>
<td class="pricing">
<div class="price-main">시간당 220,000원</div>
<div class="price-sub">(VAT 포함)</div>
<div class="price-detail">
<strong>최소 이용: 2시간</strong><br><br>
<strong>인원 요금:</strong><br>
• 기본 인원: 2인<br>
• 추가 인원: +110,000원/시간당
</div>
</td>
</tr>
<tr>
<td>
<div class="service-name">
<span class="service-icon">🔄</span>
<strong>모션 리타겟팅</strong>
</div>
</td>
<td>모션 데이터의 리타겟팅 지원</td>
<td class="pricing">
<div class="price-main">별도 문의</div>
<div class="price-sub">(프로젝트별 견적)</div>
</td>
</tr>
<tr>
<td>
<div class="service-name">
<span class="service-icon">📺</span>
<strong>실시간 스트리밍</strong>
</div>
</td>
<td>실시간 스트리밍 서비스</td>
<td class="pricing">
<div class="price-main">준비중</div>
</td>
</tr>
</tbody>
</table>
<!-- 서비스 1: 모션캡처 서비스 -->
<div class="service-package">
<div class="package-header">
<span class="package-icon">🎯</span>
<h3>서비스 1: 모션캡처 서비스</h3>
<span class="package-badge">기본형</span>
</div>
<!-- 가격 카드들 -->
<div class="pricing-cards-wrapper">
<div class="pricing-cards">
<div class="pricing-card basic">
<div class="card-header">
<span class="person-icon">👤</span>
<h4>1인 이용</h4>
</div>
<div class="price-display">
<span class="price-amount">150,000원</span>
<span class="price-unit">/시간</span>
</div>
<div class="card-features">
<ul>
<li>개인 프로젝트 최적화</li>
<li>VTuber 방송 준비</li>
<li>1인 콘텐츠 제작</li>
</ul>
</div>
</div>
<div class="pricing-card team">
<div class="card-header">
<span class="person-icon">👥</span>
<h4>2인 이용</h4>
<span class="popular-badge">인기</span>
</div>
<div class="price-display">
<span class="price-amount">200,000원</span>
<span class="price-unit">/시간</span>
</div>
<div class="card-features">
<ul>
<li>합방 콘텐츠 제작</li>
<li>상호작용 연출</li>
<li>팀 프로젝트</li>
</ul>
</div>
</div>
<div class="pricing-card extended">
<div class="card-header">
<span class="person-icon">👨‍👩‍👧‍👦</span>
<h4>추가 인원</h4>
</div>
<div class="price-display">
<span class="price-amount">+100,000원</span>
<span class="price-unit">/명/시간</span>
</div>
<div class="card-features">
<ul>
<li>최대 4인까지</li>
<li>대규모 콘텐츠</li>
<li>그룹 프로젝트</li>
</ul>
</div>
</div>
</div>
<div class="service-info">
<div class="info-card">
<span class="info-icon">⏱️</span>
<p><strong>최소 이용시간:</strong> 2시간</p>
</div>
<div class="info-card">
<span class="info-icon">👥</span>
<p><strong>최대 동시 이용:</strong> 4인</p>
</div>
</div>
</div>
<!-- 기술 사양 (컴팩트) -->
<div class="tech-specs-compact">
<h5>제공 기술 및 서비스</h5>
<div class="specs-list">
<div class="spec-tag"><span>📹</span> OptiTrack 28대 카메라</div>
<div class="spec-tag"><span>🤖</span> 실시간 아바타 녹화</div>
<div class="spec-tag"><span>👤</span> 전신/페이셜 캡처</div>
<div class="spec-tag"><span>📊</span> 실시간 모니터링</div>
<div class="spec-tag"><span>👨‍💻</span> 전문 오퍼레이터</div>
<div class="spec-tag"><span>💾</span> 모션 데이터 제공</div>
</div>
</div>
<div class="service-note">
<p><strong>참고:</strong> 아바타 리타게팅 서비스는 기본 제공되지 않으며, 후속 작업 연계 시 별도 상담을 통해 제공합니다.</p>
</div>
</div>
<!-- 결합상품 -->
<div class="service-package">
<div class="package-header">
<span class="package-icon">🎬</span>
<h3>결합상품</h3>
<span class="package-badge">특화서비스</span>
</div>
<div class="combo-services">
<div class="combo-card">
<h4>뮤직비디오/숏폼 영상 실시간 촬영</h4>
<div class="combo-pricing">
<span class="price">모션캡처와 동일 요금</span>
</div>
<div class="combo-features">
<h5>추가 요구사항</h5>
<ul>
<li>기획서 사전 협의 필수</li>
<li>캐릭터/배경/프랍 사전 협의</li>
<li>액터 섭외 필요 시: 100,000원 (1명당 시간당)</li>
</ul>
<div class="portfolio-preview">
<button class="portfolio-btn" onclick="openPortfolioPopup()">
📽️ 포트폴리오 보기
</button>
</div>
</div>
</div>
<div class="combo-card">
<h4>원격 촬영</h4>
<div class="combo-pricing">
<span class="price">모션캡처와 동일 요금</span>
</div>
<div class="combo-features">
<h5>서비스 내용</h5>
<ul>
<li>원격 실시간 촬영 지원</li>
<li>온라인 디렉션 가능</li>
<li>실시간 스트리밍 송출</li>
</ul>
<h5>추가 요금</h5>
<ul>
<li>액터 섭외비: 100,000원 (1명당 시간당)</li>
</ul>
</div>
</div>
</div>
</div>
<!-- 서비스 2: 스트리밍글 서비스 -->
<div class="service-package featured">
<div class="package-header">
<span class="package-icon">🌟</span>
<h3>서비스 2: 스트리밍글 서비스</h3>
<span class="package-badge featured">대표상품</span>
</div>
<div class="streaming-package">
<div class="package-overview">
<div class="package-price">
<span class="price-amount">2,000,000원</span>
<span class="price-unit">/ 2인 기준</span>
</div>
<div class="package-duration">
<h4>총 8시간 패키지</h4>
<p>대관 6시간 + 촬영 준비 2시간</p>
</div>
</div>
<div class="package-features">
<div class="feature-column">
<h5>포함 혜택</h5>
<ul>
<li>1인당 1벌 캐릭터 무료 세팅</li>
<li>기존 보유 배경 중 2개 무료 세팅</li>
<li>프랍 무료 세팅 (신규 프랍 최대 6개, 보유 프랍 무제한)</li>
<li>모션캡처 서비스</li>
<li>실시간 영상 촬영</li>
<li><strong>라이브 방송 서비스</strong></li>
</ul>
</div>
<div class="feature-column">
<h5>서비스 특징</h5>
<ul>
<li>대규모 프로젝트 지원</li>
<li>복합적 촬영 환경 제공</li>
<li>실시간 스트리밍 (스트리밍글 전용)</li>
<li>전문 스태프 풀 서비스</li>
<li>최대 4인까지 확장 가능</li>
</ul>
</div>
</div>
<div class="additional-pricing">
<p><strong>1인 추가시:</strong> +500,000원 (최대 4인)</p>
</div>
<div class="portfolio-preview">
<button class="portfolio-btn" onclick="openStreamingPortfolioPopup()">
🔴 라이브 방송 포트폴리오 보기
</button>
</div>
</div>
</div>
</div>
</section>
<!-- 추가 옵션 요금 -->
<section class="section bg-light">
<div class="container">
<div class="section-header">
<h2>추가 옵션 요금</h2>
<p>모든 서비스 패키지에 공통으로 적용되는 추가 옵션입니다</p>
</div>
<div class="options-grid">
<!-- 캐릭터 세팅 -->
<div class="option-card">
<div class="option-header">
<span class="option-icon">🎨</span>
<h3>캐릭터 세팅</h3>
</div>
<div class="option-pricing">
<div class="price">
<span class="price-amount">50,000원~</span>
<span class="price-unit">/ 1인 1벌</span>
</div>
<p class="option-description">신규 캐릭터 세팅 작업</p>
</div>
</div>
<!-- 배경 세팅 -->
<div class="option-card">
<div class="option-header">
<span class="option-icon">🏞️</span>
<h3>배경 세팅</h3>
</div>
<div class="option-content">
<div class="option-item">
<h4>기존 보유 배경 사용</h4>
<div class="price">
<span class="price-amount">30,000원~</span>
<span class="price-unit">/ 1개</span>
</div>
<p class="option-note">세팅비만 부과</p>
</div>
<div class="option-item">
<h4>신규 배경 제작</h4>
<div class="price">
<span class="price-amount">100,000원~</span>
<span class="price-unit">/ 1개</span>
</div>
<p class="option-note">세팅비 + 제작비/구입비 별도<br>
밍글스튜디오 또는 의뢰자 귀속 선택 가능합니다</p>
</div>
</div>
</div>
<!-- 프랍 세팅 -->
<div class="option-card">
<div class="option-header">
<span class="option-icon">🎪</span>
<h3>프랍 세팅</h3>
</div>
<div class="option-pricing">
<div class="price">
<span class="price-amount">20,000원</span>
<span class="price-unit">/ 1개</span>
</div>
<p class="option-description">프랍 세팅 작업<br>(스트리밍글 서비스: 신규 프랍 최대 6개, 보유 프랍 무제한 무료 제공)</p>
</div>
</div>
</div>
<!-- 이용 안내사항 -->
<div class="usage-notes">
<h3>이용 안내사항</h3>
<div class="notes-grid">
<div class="note-item">
<h4>운영 시간</h4>
<p>기본 운영 시간: 10:00 ~ 22:00<br>
야간 이용 시 요금 1.5배 적용</p>
</div>
<div class="note-item">
<h4>최소 이용 시간</h4>
<p>모든 서비스 최소 2시간<br>
(스트리밍글 서비스 제외)</p>
</div>
<div class="note-item">
<h4>사전 준비 사항</h4>
<p>뮤직비디오/숏폼 촬영 시<br>
기획서 및 준비물 사전 협의 필수</p>
</div>
<div class="note-item">
<h4>후속 서비스</h4>
<p>아바타 리타게팅은 후속 작업 연계 시에만<br>
제공됩니다 (별도 상담)</p>
</div>
</div>
</div>
@ -379,6 +606,175 @@
</div>
</footer>
<!-- 포트폴리오 팝업 -->
<div id="portfolioPopup" class="portfolio-popup">
<div class="popup-overlay" onclick="closePortfolioPopup()"></div>
<div class="popup-content">
<div class="popup-header">
<h3>뮤직비디오/숏폼 포트폴리오</h3>
<button class="popup-close" onclick="closePortfolioPopup()">×</button>
</div>
<div class="popup-body">
<div class="portfolio-section">
<h4>🎵 뮤직비디오 대표작</h4>
<div class="portfolio-grid">
<div class="portfolio-item">
<div class="video-wrapper">
<iframe src="https://www.youtube.com/embed/jQTi8adbvaM"
title="돌림판"
allowfullscreen></iframe>
</div>
<p>머쉬베놈 - 돌림판 (CROA COVER)</p>
</div>
<div class="portfolio-item">
<div class="video-wrapper">
<iframe src="https://www.youtube.com/embed/nH7IdgqhugQ"
title="내 이름 맑음"
allowfullscreen></iframe>
</div>
<p>QWER - 내 이름 맑음 (CROA COVER)</p>
</div>
</div>
</div>
<div class="portfolio-section">
<h4>🎬 숏폼 챌린지</h4>
<div class="portfolio-grid shorts-grid">
<div class="portfolio-item">
<div class="video-wrapper shorts-wrapper">
<iframe src="https://www.youtube.com/embed/ZWftEFNlvVc"
title="일본 유행 챌린지"
allowfullscreen></iframe>
</div>
<p>일본에서 유행하는 챌린지</p>
</div>
<div class="portfolio-item">
<div class="video-wrapper shorts-wrapper">
<iframe src="https://www.youtube.com/embed/xZS1e465wjc"
title="Trouble 챌린지"
allowfullscreen></iframe>
</div>
<p>Trouble 챌린지</p>
</div>
<div class="portfolio-item">
<div class="video-wrapper shorts-wrapper">
<iframe src="https://www.youtube.com/embed/X3a_4GWU3V8"
title="그르르 챌린지"
allowfullscreen></iframe>
</div>
<p>그르르 챌린지</p>
</div>
</div>
</div>
</div>
<div class="popup-footer">
<a href="portfolio.html" class="btn btn-primary">전체 포트폴리오 보기</a>
</div>
</div>
</div>
<!-- 스트리밍 포트폴리오 팝업 -->
<div id="streamingPortfolioPopup" class="portfolio-popup">
<div class="popup-overlay" onclick="closeStreamingPortfolioPopup()"></div>
<div class="popup-content">
<div class="popup-header">
<h3>스트리밍글 서비스 포트폴리오</h3>
<button class="popup-close" onclick="closeStreamingPortfolioPopup()">×</button>
</div>
<div class="popup-body">
<div class="portfolio-section">
<h4>🔴 실시간 모션캡처 방송</h4>
<div class="portfolio-grid streaming-grid">
<div class="portfolio-item">
<div class="video-wrapper">
<iframe src="https://vod.sooplive.co.kr/player/159808721"
title="미르 첫 모캡 방송"
allowfullscreen></iframe>
</div>
<div class="streaming-info">
<p><strong>미르 첫 모캡 방송</strong></p>
<div class="stream-details">
<span class="platform">SOOP</span>
<span class="streamer">미르</span>
</div>
</div>
</div>
<div class="portfolio-item">
<div class="video-wrapper">
<iframe src="https://vod.sooplive.co.kr/player/159683673"
title="춤짱자매즈 모캡 합방"
allowfullscreen></iframe>
</div>
<div class="streaming-info">
<p><strong>춤짱자매즈 모캡 합방</strong></p>
<div class="stream-details">
<span class="platform">SOOP</span>
<span class="streamer">춤짱자매즈 × 호발</span>
</div>
</div>
</div>
<div class="portfolio-item">
<div class="video-wrapper">
<iframe src="https://vod.sooplive.co.kr/player/159205533"
title="크로아 링피트 치요X마늘 3D 모션캡쳐 합방"
allowfullscreen></iframe>
</div>
<div class="streaming-info">
<p><strong>[크로아] 링피트 치요X마늘 3D 모션캡쳐 합방</strong></p>
<div class="stream-details">
<span class="platform">SOOP</span>
<span class="streamer">치요 & 마늘</span>
</div>
</div>
</div>
<div class="portfolio-item">
<div class="video-wrapper">
<iframe src="https://vod.sooplive.co.kr/player/169085307"
title="크로아 링피트 치요X마늘 3D 모션캡쳐 합방"
allowfullscreen></iframe>
</div>
<div class="streaming-info">
<p><strong>[크로아] 링피트 치요X마늘 3D 모션캡쳐 합방</strong></p>
<div class="stream-details">
<span class="platform">SOOP</span>
<span class="streamer">치요 & 마늘</span>
</div>
</div>
</div>
</div>
</div>
<div class="streaming-features">
<h4>✨ 스트리밍글 서비스 특징</h4>
<div class="features-grid">
<div class="feature-item">
<span class="feature-icon">🎥</span>
<p>실시간 모션캡처 스트리밍</p>
</div>
<div class="feature-item">
<span class="feature-icon">👥</span>
<p>최대 4인 동시 방송</p>
</div>
<div class="feature-item">
<span class="feature-icon"></span>
<p>8시간 풀 패키지</p>
</div>
<div class="feature-item">
<span class="feature-icon">🎭</span>
<p>캐릭터 & 배경 세팅</p>
</div>
</div>
</div>
</div>
<div class="popup-footer">
<a href="portfolio.html#individual" class="btn btn-primary">전체 포트폴리오 보기</a>
</div>
</div>
</div>
<!-- JavaScript -->
<script src="js/common.js"></script>
<script src="js/services.js"></script>