- DevLog(블로그) 인프라: build-blog.js (MD→HTML), devlog.css, devlog.js - DevLog 목록/포스트 페이지 4개 언어 (ko/en/ja/zh) - 글 2편 작성 + 번역: 관성식vs광학식, 광학식 파이프라인 - 전체 네비게이션에 DevLog 탭 추가 (37+ HTML) - 메인 팝업(요금제 변경 안내) 제거 (ko/en/ja/zh) - i18n.js: 언어별 페이지에서 번역 JSON 항상 로드하도록 수정 - 방문자 싸인 이미지 3장 추가 (webp 변환) - sitemap, i18n JSON, package.json 업데이트 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
669 lines
42 KiB
HTML
669 lines
42 KiB
HTML
<!DOCTYPE html><html lang="zh"><head>
|
||
<!-- Google Tag Manager -->
|
||
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||
})(window,document,'script','dataLayer','GTM-PPTNN6WD');</script>
|
||
<!-- End Google Tag Manager -->
|
||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-R0PBYHVQBS"></script>
|
||
<script>
|
||
window.dataLayer = window.dataLayer || [];
|
||
function gtag(){dataLayer.push(arguments);}
|
||
gtag('js', new Date());
|
||
gtag('config', 'G-R0PBYHVQBS');
|
||
</script>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>光学动作捕捉管线完全解析 — 从摄像头到动作数据 - 明格工作室 DevLog</title>
|
||
|
||
<link rel="icon" type="image/x-icon" href="/images/logo/mingle-logo.ico">
|
||
<link rel="shortcut icon" href="/images/logo/mingle-logo.ico">
|
||
<link rel="icon" type="image/webp" href="/images/logo/mingle-logo.webp">
|
||
<link rel="apple-touch-icon" href="/images/logo/mingle-logo.webp">
|
||
|
||
<link rel="canonical" href="https://minglestudio.co.kr/zh/devlog/optical-mocap-pipeline">
|
||
<meta name="theme-color" content="#ff8800">
|
||
|
||
<meta name="description" content="深入讲解光学动作捕捉的完整技术管线。涵盖摄像头安装、PoE网络、2D质心、标定、3D重建、骨骼解算、后处理以及现场实际问题,共10个详细步骤。">
|
||
<meta name="author" content="明格工作室">
|
||
|
||
<meta property="og:title" content="光学动作捕捉管线完全解析 — 从摄像头到动作数据">
|
||
<meta property="og:description" content="深入讲解光学动作捕捉的完整技术管线。涵盖摄像头安装、PoE网络、2D质心、标定、3D重建、骨骼解算、后处理以及现场实际问题,共10个详细步骤。">
|
||
<meta property="og:url" content="https://minglestudio.co.kr/zh/devlog/optical-mocap-pipeline">
|
||
<meta property="og:type" content="article">
|
||
<meta property="og:image" content="https://minglestudio.co.kr/blog/posts/optical-mocap-pipeline/images/thumbnail.webp">
|
||
<meta property="og:locale" content="zh_CN">
|
||
<meta property="og:site_name" content="明格工作室">
|
||
<meta property="article:published_time" content="2026-04-05">
|
||
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:title" content="光学动作捕捉管线完全解析 — 从摄像头到动作数据">
|
||
<meta name="twitter:description" content="深入讲解光学动作捕捉的完整技术管线。涵盖摄像头安装、PoE网络、2D质心、标定、3D重建、骨骼解算、后处理以及现场实际问题,共10个详细步骤。">
|
||
<meta name="twitter:image" content="https://minglestudio.co.kr/blog/posts/optical-mocap-pipeline/images/thumbnail.webp">
|
||
|
||
<link href="https://hangeul.pstatic.net/hangeul_static/css/nanum-square.css" rel="stylesheet">
|
||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet">
|
||
<link rel="stylesheet" href="/css/common.css?v=20260404">
|
||
<link rel="stylesheet" href="/css/devlog.css?v=20260404">
|
||
|
||
<link rel="alternate" hreflang="ko" href="https://minglestudio.co.kr/devlog/optical-mocap-pipeline">
|
||
<link rel="alternate" hreflang="en" href="https://minglestudio.co.kr/en/devlog/optical-mocap-pipeline">
|
||
<link rel="alternate" hreflang="ja" href="https://minglestudio.co.kr/ja/devlog/optical-mocap-pipeline">
|
||
<link rel="alternate" hreflang="zh" href="https://minglestudio.co.kr/zh/devlog/optical-mocap-pipeline">
|
||
<link rel="alternate" hreflang="x-default" href="https://minglestudio.co.kr/devlog/optical-mocap-pipeline">
|
||
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "BlogPosting",
|
||
"headline": "光学动作捕捉管线完全解析 — 从摄像头到动作数据",
|
||
"description": "深入讲解光学动作捕捉的完整技术管线。涵盖摄像头安装、PoE网络、2D质心、标定、3D重建、骨骼解算、后处理以及现场实际问题,共10个详细步骤。",
|
||
"datePublished": "2026-04-05",
|
||
"author": { "@type": "Organization", "name": "明格工作室" },
|
||
"publisher": { "@type": "Organization", "name": "明格工作室" },
|
||
"url": "https://minglestudio.co.kr/zh/devlog/optical-mocap-pipeline"
|
||
}
|
||
</script>
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "FAQPage",
|
||
"mainEntity": [
|
||
{
|
||
"@type": "Question",
|
||
"name": "光学动作捕捉摄像头和普通摄像头有什么区别?",
|
||
"acceptedAnswer": {
|
||
"@type": "Answer",
|
||
"text": "普通摄像头拍摄全彩视频,而动作捕捉摄像头专注于红外(IR)光谱。它们用IR LED照射标记点并仅检测反射光,在摄像头内部直接计算标记点的2D坐标,只向PC传输坐标数据。"
|
||
}
|
||
},
|
||
{
|
||
"@type": "Question",
|
||
"name": "PoE线缆长度有限制吗?",
|
||
"acceptedAnswer": {
|
||
"@type": "Answer",
|
||
"text": "根据以太网标准,PoE线缆最长支持**100m**。大多数动作捕捉工作室完全在此范围内。"
|
||
}
|
||
},
|
||
{
|
||
"@type": "Question",
|
||
"name": "摄像头帧率是不是越高越好?",
|
||
"acceptedAnswer": {
|
||
"@type": "Answer",
|
||
"text": "更高的帧率有利于快速动作追踪和降低延迟,但数据处理量会增加,摄像头分辨率可能会降低。通常VTuber直播和游戏动作捕捉120~240fps就已足够,而体育科学等超高速动作分析则使用360fps或更高。"
|
||
}
|
||
},
|
||
{
|
||
"@type": "Question",
|
||
"name": "标记点交换发生的频率有多高?",
|
||
"acceptedAnswer": {
|
||
"@type": "Answer",
|
||
"text": "如果标记点集设计良好且摄像头数量充足,实时拍摄中交换现象很少发生。但在快速动作或标记点间距较近的动作(如双手合十等)中概率会增加,这些区间在后处理中校正。"
|
||
}
|
||
},
|
||
{
|
||
"@type": "Question",
|
||
"name": "三角测量2台就够了,为什么要安装30台?",
|
||
"acceptedAnswer": {
|
||
"@type": "Answer",
|
||
"text": "2台只是理论最小值。实际上需要考虑遮挡(标记点被挡住)、不同摄像头角度导致的精度差异、冗余保障等因素。布置30台后,任何标记点都始终被多台摄像头观测,能够实现稳定精确的追踪。"
|
||
}
|
||
},
|
||
{
|
||
"@type": "Question",
|
||
"name": "多久需要进行一次标定?",
|
||
"acceptedAnswer": {
|
||
"@type": "Answer",
|
||
"text": "通常在每个拍摄日开始前进行一次。但长时间拍摄时,温度变化或摄像头微小移动可能导致标定偏移,因此4~6小时连续拍摄时建议中途重新标定。使用OptiTrack Motive的Continuous Calibration功能,即使在拍摄过程中也能进行实时校正。"
|
||
}
|
||
},
|
||
{
|
||
"@type": "Question",
|
||
"name": "不能穿闪亮的衣服吗?",
|
||
"acceptedAnswer": {
|
||
"@type": "Answer",
|
||
"text": "由于动作捕捉摄像头检测的是红外反射,闪亮材质(金属装饰、亮片、有光泽的合成纤维等)可能反射红外线并产生虚假标记点(Ghost Marker)。穿戴专用动捕服或哑光材质的舒适衣物是最佳选择。"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
</script>
|
||
</head>
|
||
<body>
|
||
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PPTNN6WD"
|
||
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||
<a href="#main-content" class="skip-to-content">Skip to content</a>
|
||
|
||
<div id="header-placeholder">
|
||
<nav class="navbar" aria-label="Navigation">
|
||
<div class="nav-container">
|
||
<div class="nav-logo">
|
||
<a href="/zh">
|
||
<img src="/images/logo/mingle-logo.webp" alt="밍글 스튜디오">
|
||
<span data-i18n="header.studioName">밍글 스튜디오</span>
|
||
</a>
|
||
</div>
|
||
<ul id="nav-menu" class="nav-menu">
|
||
<li><a href="/zh/about" class="nav-link" data-i18n="header.nav.about">About</a></li>
|
||
<li><a href="/zh/services" class="nav-link" data-i18n="header.nav.services">Services</a></li>
|
||
<li><a href="/zh/portfolio" class="nav-link" data-i18n="header.nav.portfolio">Portfolio</a></li>
|
||
<li><a href="/zh/gallery" class="nav-link" data-i18n="header.nav.gallery">Gallery</a></li>
|
||
<li><a href="/zh/schedule" class="nav-link" data-i18n="header.nav.schedule">Schedule</a></li>
|
||
<li><a href="/zh/devlog" class="nav-link active" data-i18n="header.nav.devlog">DevLog</a></li>
|
||
<li><a href="/zh/contact" class="nav-link" data-i18n="header.nav.contact">Contact</a></li>
|
||
<li><a href="/zh/qna" class="nav-link" data-i18n="header.nav.qna">Q&A</a></li>
|
||
</ul>
|
||
<div class="nav-actions">
|
||
<div class="lang-switcher">
|
||
<button class="lang-btn" aria-label="Language">
|
||
<span class="lang-current">ZH</span>
|
||
<svg class="lang-chevron" viewBox="0 0 10 6" width="10" height="6" aria-hidden="true">
|
||
<path d="M1 1l4 4 4-4" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"></path>
|
||
</svg>
|
||
</button>
|
||
<ul class="lang-dropdown">
|
||
<li><button data-lang="ko">🇰🇷 한국어</button></li>
|
||
<li><button data-lang="en">🇺🇸 English</button></li>
|
||
<li><button data-lang="zh">🇨🇳 中文</button></li>
|
||
<li><button data-lang="ja">🇯🇵 日本語</button></li>
|
||
</ul>
|
||
</div>
|
||
<button class="theme-toggle" id="themeToggle" aria-label="Toggle dark mode">
|
||
<div class="theme-toggle-thumb">
|
||
<svg class="theme-toggle-icon theme-toggle-icon--sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
||
<circle cx="12" cy="12" r="5"></circle>
|
||
<line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line>
|
||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||
<line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line>
|
||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||
</svg>
|
||
<svg class="theme-toggle-icon theme-toggle-icon--moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||
</svg>
|
||
</div>
|
||
</button>
|
||
<button class="hamburger" id="hamburger" aria-label="Menu" aria-expanded="false">
|
||
<span class="hamburger-line"></span>
|
||
<span class="hamburger-line"></span>
|
||
<span class="hamburger-line"></span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
</div>
|
||
|
||
<main id="main-content">
|
||
<article class="blog-post">
|
||
<div class="blog-post-header">
|
||
<div class="container">
|
||
<a href="/zh/devlog" class="blog-back-link">← 返回列表</a>
|
||
<span class="blog-category">动作捕捉技术</span>
|
||
<h1 class="blog-post-title">光学动作捕捉管线完全解析 — 从摄像头到动作数据</h1>
|
||
<div class="blog-post-meta">
|
||
<time datetime="2026-04-05">2026年4月5日</time>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="blog-post-body">
|
||
<div class="container">
|
||
<p>在动作捕捉工作室中,当演员穿上动捕服进行表演时,屏幕上的角色会实时跟随其动作。看起来很简单,但其背后运行着一条精密的技术管线:<strong>摄像头硬件 → 网络传输 → 2D图像处理 → 3D重建 → 骨骼解算 → 实时串流</strong>。</p>
|
||
<p>本文将逐步剖析光学动作捕捉(以OptiTrack为基准)的完整管线。</p>
|
||
<hr>
|
||
<h2>第1步:摄像头安装与布局策略</h2>
|
||
<p>光学动作捕捉的第一步是决定摄像头<strong>放在哪里、如何布置</strong>。</p>
|
||
<p><figure class="blog-figure"><img src="/images/studio/모션캡쳐%20공간%20001.webp" alt="明格工作室动作捕捉空间" loading="lazy"><figcaption>明格工作室动作捕捉空间</figcaption></figure></p>
|
||
<h3>布局原则</h3>
|
||
<ul>
|
||
<li><strong>高度</strong>:通常安装在2~3m高度,向下倾斜约30度</li>
|
||
<li><strong>布局形态</strong>:围绕捕捉体积(拍摄空间)呈环形(Ring)布置</li>
|
||
<li><strong>双层布局</strong>:在高位和低位交替放置摄像头,可提升垂直方向的覆盖范围</li>
|
||
<li><strong>重叠(Overlap)</strong>:捕捉体积内的每个点都必须同时被<strong>至少3台摄像头</strong>看到。三角测量最少需要2台,但3台以上能显著提升精度和遮挡应对能力</li>
|
||
</ul>
|
||
<h3>摄像头数量与精度的关系</h3>
|
||
<p>摄像头数量越多:</p>
|
||
<ul>
|
||
<li>盲区越少 → 遮挡发生概率降低</li>
|
||
<li>观测同一标记点的摄像头越多 → 三角测量精度提升</li>
|
||
<li>部分摄像头出现问题时其他摄像头可以补偿(冗余性)</li>
|
||
</ul>
|
||
<p>明格工作室配备了<strong>OptiTrack Prime 17 × 16台 + Prime 13 × 14台</strong>,共30台摄像头布置在8m × 7m的空间中,最大限度地减少了360度盲区。</p>
|
||
<h3>IR通过滤光片 — 只看红外线的眼睛</h3>
|
||
<p>每台动作捕捉摄像头的镜头前方都安装了<strong>IR通过滤光片(红外通过滤光片)</strong>。该滤光片阻挡可见光,仅允许红外线波长(约850nm)通过。因此,荧光灯、阳光、显示器光线等普通照明的干扰被从根本上消除,摄像头只能检测到<strong>IR LED反射的标记点光线</strong>。</p>
|
||
<p>这也是拍摄空间不需要完全关灯的原因。不过,直射阳光或含有强IR成分的照明仍可能造成干扰,因此工作室环境中使用IR干扰较小的照明设备。</p>
|
||
<h3>帧同步 — 30台摄像头如何同时拍摄</h3>
|
||
<p>要使三角测量准确,所有摄像头必须在<strong>完全相同的时刻</strong>按下快门。如果各台摄像头在不同时间拍摄,快速运动的标记点位置会因摄像头而异,导致3D重建不准确。</p>
|
||
<p>OptiTrack采用<strong>硬件同步(Hardware Sync)<strong>方式。一台摄像头被指定为</strong>Sync Master(同步主机)</strong>生成时序信号,其余摄像头根据该信号同时曝光。</p>
|
||
<ul>
|
||
<li><strong>以太网摄像头(Prime系列)</strong>:同步信号内嵌在以太网连接本身中,或通过OptiTrack的eSync集线器传输。无需单独的同步线缆。</li>
|
||
<li><strong>USB摄像头(Flex系列)</strong>:摄像头之间通过专用同步线缆以菊花链方式连接。</li>
|
||
</ul>
|
||
<p>该同步精度达到<strong>微秒(μs)级别</strong>,30台摄像头实际上在完全相同的时刻进行拍摄。</p>
|
||
<hr>
|
||
<h2>第2步:PoE — 一根线缆同时传输电力和数据</h2>
|
||
<h3>什么是PoE(Power over Ethernet)?</h3>
|
||
<p>OptiTrack Prime系列摄像头通过<strong>PoE(Power over Ethernet)</strong>方式连接。这是一种通过标准以太网线缆(Cat5e/Cat6)<strong>同时提供电力和传输数据</strong>的技术。</p>
|
||
<p><figure class="blog-figure"><img src="optical-mocap-pipeline/images/poe-switch.png" alt="PoE交换机与摄像头连接" loading="lazy"><figcaption>PoE交换机与摄像头连接</figcaption></figure></p>
|
||
<h3>技术标准</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>标准</th>
|
||
<th>最大功率</th>
|
||
<th>备注</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody><tr>
|
||
<td><strong>IEEE 802.3af (PoE)</strong></td>
|
||
<td>每端口15.4W</td>
|
||
<td>足以满足基本动作捕捉摄像头</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>IEEE 802.3at (PoE+)</strong></td>
|
||
<td>每端口25.5W</td>
|
||
<td>适用于高帧率摄像头或IR LED输出较高的情况</td>
|
||
</tr>
|
||
</tbody></table>
|
||
<p>OptiTrack摄像头通常功耗约<strong>5~12W</strong>,完全在PoE标准范围内。</p>
|
||
<h3>网络拓扑</h3>
|
||
<p>摄像头以<strong>星型(Star)拓扑</strong>方式连接。每台摄像头1对1连接到PoE交换机的独立端口。不使用菊花链(串行连接)。</p>
|
||
<div class="network-diagram">
|
||
<div class="network-cameras">
|
||
<div class="network-cam"><div class="network-cam-icon">CAM 1</div></div>
|
||
<div class="network-cam"><div class="network-cam-icon">CAM 2</div></div>
|
||
<div class="network-cam"><div class="network-cam-icon">CAM 3</div></div>
|
||
<div class="network-cam"><div class="network-cam-icon">···</div></div>
|
||
<div class="network-cam"><div class="network-cam-icon">CAM N</div></div>
|
||
</div>
|
||
<svg class="network-lines" viewBox="0 0 100 200" preserveAspectRatio="none">
|
||
<line x1="0" y1="20" x2="100" y2="45" />
|
||
<line x1="0" y1="55" x2="100" y2="45" />
|
||
<line x1="0" y1="90" x2="100" y2="45" />
|
||
<line x1="0" y1="125" x2="100" y2="45" />
|
||
<line x1="0" y1="160" x2="100" y2="45" />
|
||
</svg>
|
||
<div class="network-center">
|
||
<div class="network-switch">PoE交换机</div>
|
||
<div class="network-link"></div>
|
||
<div class="network-pc">主机PC</div>
|
||
</div>
|
||
</div>
|
||
|
||
<p>如果有30台摄像头,可以组合使用24端口 + 8端口的PoE+交换机,或使用48端口交换机。选择交换机时必须确认<strong>PoE总功率预算</strong>(例如:30台 × 12W = 360W)。</p>
|
||
<h3>PoE的优势</h3>
|
||
<ul>
|
||
<li><strong>一根线缆搞定</strong> — 无需为安装在天花板上的每台摄像头单独连接电源适配器</li>
|
||
<li><strong>整洁的施工</strong> — 线缆数量减半,安装和管理更加简便</li>
|
||
<li><strong>集中电源管理</strong> — 可从交换机统一控制摄像头的开关</li>
|
||
</ul>
|
||
<hr>
|
||
<h2>第3步:摄像头发送的数据 — 2D质心</h2>
|
||
<p>理解摄像头向PC发送的数据内容是管线的核心。</p>
|
||
<p><figure class="blog-figure"><img src="optical-mocap-pipeline/images/motive-2d-centroid.png" alt="Motive摄像头2D视图 — 标记点显示为明亮的点" loading="lazy"><figcaption>Motive摄像头2D视图 — 标记点显示为明亮的点</figcaption></figure></p>
|
||
<h3>摄像头内部处理过程</h3>
|
||
<p>每台OptiTrack摄像头的镜头周围都安装了<strong>红外(IR)LED环</strong>。这些LED发射红外线,演员身上的<strong>逆反射标记点</strong>将光线反射回摄像头方向。摄像头传感器将这些反射光拍摄为灰度IR图像。</p>
|
||
<p>这里的关键是,摄像头<strong>并不会将这张图像直接发送给PC</strong>。摄像头内部处理器会先进行处理:</p>
|
||
<p><strong>1. 阈值处理(Thresholding)</strong>
|
||
只保留亮度超过一定阈值的像素,其余全部去除。由于只有反射红外线的标记点会发出明亮的光,这个过程实现了标记点与背景的分离。</p>
|
||
<p><strong>2. 斑点检测(Blob Detection)</strong>
|
||
将明亮像素聚集的区域(斑点)识别为单个标记点候选。</p>
|
||
<p><strong>3. 2D质心计算</strong>
|
||
以亚像素精度(约0.1像素)计算每个斑点的<strong>精确中心点(质心)</strong>。采用加权平均方法,以斑点内各像素的亮度作为权重。</p>
|
||
<h3>发送给PC的数据</h3>
|
||
<p>在默认追踪模式下,摄像头发送给PC的是<strong>2D质心数据</strong>:</p>
|
||
<ul>
|
||
<li>每个标记点候选的<strong>(x, y)坐标</strong> + 大小信息</li>
|
||
<li>每台摄像头每帧仅数百字节的极小数据量</li>
|
||
</ul>
|
||
<p>正因为数据量如此之小,<strong>40台以上的摄像头仅需一条千兆以太网即可满足需求</strong>。也可以传输原始灰度图像(用于调试/可视化),但这种情况下每台摄像头需要数MB/s,因此在正常追踪中不使用。</p>
|
||
<blockquote>
|
||
<p>也就是说,摄像头并不是"拍摄并发送视频的设备",更接近于<strong>"计算标记点位置并仅发送坐标的传感器"</strong>。</p>
|
||
</blockquote>
|
||
<p>这里可能会产生一个疑问——为什么动作捕捉摄像头比普通摄像头贵那么多?原因就在于上面描述的处理过程。普通摄像头只需将拍摄的视频原样发送即可,而动作捕捉摄像头<strong>内置了专用处理器</strong>,能以每秒240~360帧的速度实时执行阈值处理、斑点检测和亚像素质心计算。每台摄像头实际上就是一台<strong>专门用于图像处理的小型计算机</strong>。</p>
|
||
<hr>
|
||
<h2>第4步:标定 — 对齐摄像头的视线</h2>
|
||
<p>在进行3D重建之前,有一个必须经历的过程。软件需要了解每台摄像头的<strong>精确位置、方向和镜头特性</strong> — 这就是<strong>标定(Calibration)</strong>。</p>
|
||
<p><figure class="blog-figure"><img src="optical-mocap-pipeline/images/calibration-tools.webp" alt="标定棒(左)和地面参考框架(右)" loading="lazy"><figcaption>标定棒(左)和地面参考框架(右)</figcaption></figure></p>
|
||
<h3>挥棒(Wanding) — 扫描空间</h3>
|
||
<p>操作员手持装有LED或标记点的<strong>标定棒(Wand)</strong>,在整个捕捉体积范围内走动并挥舞。由于棒上标记点之间的距离是精确已知的,当各台摄像头拍摄标定棒数千帧后,软件可以计算出:</p>
|
||
<ul>
|
||
<li><strong>内参(Intrinsic Parameters)</strong> — 焦距、镜头畸变系数等摄像头镜头固有的特性</li>
|
||
<li><strong>外参(Extrinsic Parameters)</strong> — 摄像头在3D空间中的精确位置和方向</li>
|
||
</ul>
|
||
<p>该计算使用一种名为<strong>光束法平差(Bundle Adjustment)</strong>的优化算法。基于数千个2D观测数据,同时优化所有摄像头的参数。</p>
|
||
<h3>地面参考设置</h3>
|
||
<p>挥棒完成后,在地板上放置一个<strong>L形标定框架(Ground Plane)</strong>。该框架上的3个或更多标记点定义了地面和坐标原点:</p>
|
||
<ul>
|
||
<li>哪里是(0, 0, 0)(原点)</li>
|
||
<li>哪个方向是X、Y、Z轴</li>
|
||
<li>地面的高度基准</li>
|
||
</ul>
|
||
<p>标定完成后,软件就能将任何摄像头的2D坐标转换为精确的3D射线。</p>
|
||
<h3>标定质量</h3>
|
||
<p>Motive软件在标定后会显示每台摄像头的<strong>重投影误差(Reprojection Error)</strong>。该值越小(通常0.5像素以下),表示标定越精确。误差较大的摄像头需要调整位置或重新标定。</p>
|
||
<hr>
|
||
<h2>第5步:2D → 3D重建(三角测量)</h2>
|
||
<p>让我们看看到达PC的2D质心是如何转换为3D坐标的。</p>
|
||
<h3>三角测量(Triangulation)原理</h3>
|
||
<ol>
|
||
<li>利用标定获得的每台摄像头的<strong>精确3D位置、方向和镜头特性</strong></li>
|
||
<li>从摄像头的2D质心坐标发射一条<strong>射线(Ray)</strong> — 从摄像头位置沿质心方向延伸到3D空间的直线</li>
|
||
<li>观测同一标记点的<strong>2台或更多摄像头发射的射线交汇之处</strong>即为标记点的3D坐标</li>
|
||
</ol>
|
||
<p><video src="optical-mocap-pipeline/images/continuous-calibration-web.mp4" autoplay loop muted playsinline style="width:100%;border-radius:12px;margin:1.5rem 0;"></video></p>
|
||
<h3>实际上射线并不会完美交汇</h3>
|
||
<p>由于噪声、镜头畸变、标定误差等因素,射线几乎不可能精确交于一点。因此使用<strong>最小二乘法(Least Squares Optimization)</strong>:</p>
|
||
<ul>
|
||
<li>计算到所有射线距离之和最小的3D坐标</li>
|
||
<li>此时每条射线与重建的3D点之间的距离称为<strong>残差(Residual)</strong></li>
|
||
<li>残差越小,重建质量越好 — 在标定良好的OptiTrack系统中,可以期望<strong>亚毫米级(0.5mm以下)的残差</strong></li>
|
||
</ul>
|
||
<h3>摄像头数量的影响</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>观测该标记点的摄像头数</th>
|
||
<th>效果</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody><tr>
|
||
<td><strong>2台</strong></td>
|
||
<td>可以进行3D重建(最低条件)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>3台</strong></td>
|
||
<td>精度提升 + 即使1台被遮挡也能维持追踪</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>4台以上</strong></td>
|
||
<td>高精度 + 强遮挡抗性</td>
|
||
</tr>
|
||
</tbody></table>
|
||
<hr>
|
||
<h2>第6步:标记点识别与标注</h2>
|
||
<h3>标记点服装与标记点布置</h3>
|
||
<p>要将3D重建转化为有意义的动作数据,标记点必须贴在身体的<strong>精确位置</strong>上。</p>
|
||
<p><strong>标记点规格</strong></p>
|
||
<ul>
|
||
<li>直径:通常使用<strong>12~19mm</strong>的球形逆反射标记点</li>
|
||
<li>材质:覆有3M逆反射胶带的泡沫/塑料球</li>
|
||
<li>固定方式:魔术贴、双面胶带,或预装在专用标记点服上</li>
|
||
</ul>
|
||
<p><strong>标记点集规格</strong>
|
||
标记点贴在哪里、贴几个,遵循标准化的<strong>标记点集(Markerset)</strong>规格:</p>
|
||
<ul>
|
||
<li><strong>Baseline(37个标记点)</strong> — OptiTrack默认全身标记点集。覆盖上半身、下半身和头部,是游戏/影视动作捕捉中最常用的</li>
|
||
<li><strong>Baseline + Fingers(约57个标记点)</strong> — 在上述基础上增加约20个手指标记点的扩展版</li>
|
||
<li><strong>Helen Hayes(约15~19个标记点)</strong> — 医学/步态分析标准。以下半身为中心的最小标记点集</li>
|
||
</ul>
|
||
<p>标记点贴在<strong>骨骼突出的解剖学标志点</strong>(肩峰、外侧上髁、髂前上棘等)。这些位置在皮肤上最能准确反映骨骼运动,且皮肤滑移(Skin Artifact)最小。</p>
|
||
<p>3D重建完成后,每一帧都会产生一团<strong>无名称的3D点云(Point Cloud)</strong>。判断"这个点是左膝标记点还是右肩标记点"的过程就是<strong>标注(Labeling)</strong>。</p>
|
||
<p><figure class="blog-figure"><img src="optical-mocap-pipeline/images/marker-labeling.png" alt="Motive中标记点被标注的样子" loading="lazy"><figcaption>Motive中标记点被标注的样子</figcaption></figure></p>
|
||
<h3>标注算法</h3>
|
||
<p><strong>模板匹配(Template Matching)</strong>
|
||
以标定时定义的标记点集的几何布局(如膝盖与踝关节标记点之间的距离)为基准,将当前帧的3D点与模板进行对照。</p>
|
||
<p><strong>预测追踪(Predictive Tracking)</strong>
|
||
基于前一帧的速度和加速度,预测下一帧各标记点的位置,并与最近的3D点进行匹配。</p>
|
||
<h3>标记点交换(Swap)问题</h3>
|
||
<p>当两个标记点非常接近地经过彼此时,软件可能会<strong>交换两个标记点的标签</strong> — 即标签互换现象。这是光学动捕中最常见的伪影之一。</p>
|
||
<p>解决方法:</p>
|
||
<ul>
|
||
<li>在后处理中手动纠正标签</li>
|
||
<li>将标记点布置设计为<strong>不对称</strong>以便于区分</li>
|
||
<li>使用<strong>主动标记点(Active Marker)</strong> — 每个标记点发射独特的红外模式,在硬件层面实现识别,从根本上杜绝交换</li>
|
||
</ul>
|
||
<h3>被动标记点 vs 主动标记点</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>类别</th>
|
||
<th>被动标记点(反射型)</th>
|
||
<th>主动标记点(发光型)</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody><tr>
|
||
<td><strong>原理</strong></td>
|
||
<td>反射摄像头IR LED的光</td>
|
||
<td>标记点自身发射独特的IR模式</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>识别</strong></td>
|
||
<td>基于软件(可能发生交换)</td>
|
||
<td>基于硬件(无交换)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>优点</strong></td>
|
||
<td>轻便、便宜、易于安装</td>
|
||
<td>自动识别、无标注错误</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>缺点</strong></td>
|
||
<td>可能需要后处理标注</td>
|
||
<td>较重,需要电池/电源</td>
|
||
</tr>
|
||
</tbody></table>
|
||
<p>在大多数娱乐/VTuber制作现场,主要使用<strong>被动标记点</strong>。因为它们轻便舒适,而且软件性能足够好,在大多数情况下自动标注都能良好运作。</p>
|
||
<hr>
|
||
<h2>第7步:骨骼解算 — 从点到骨架</h2>
|
||
<p>将标注好的3D标记点映射到人体<strong>骨骼(Skeleton)</strong>结构的步骤。</p>
|
||
<h3>预标定</h3>
|
||
<p>拍摄前,演员摆出<strong>T-Pose</strong>(双臂展开的姿势),软件根据标记点位置计算各骨骼长度(臂长、腿长等)和关节位置。</p>
|
||
<p>接着进行<strong>ROM(Range of Motion)捕捉</strong>。</p>
|
||
<p><figure class="blog-figure"><img src="optical-mocap-pipeline/images/rom-grid.webp" alt="ROM捕捉 — 通过各种动作校准关节范围的过程" loading="lazy"><figcaption>ROM捕捉 — 通过各种动作校准关节范围的过程</figcaption></figure>
|
||
通过旋转手臂、弯曲膝盖、扭转上身等各种动作,软件精确校准<strong>关节中心点和旋转轴</strong>。</p>
|
||
<h3>实时解算</h3>
|
||
<p>拍摄过程中,每一帧都会:</p>
|
||
<ol>
|
||
<li>接收标注后的3D标记点坐标</li>
|
||
<li>根据标记点位置计算各关节的<strong>3D位置和旋转值(Rotation)</strong></li>
|
||
<li>通过<strong>逆运动学(Inverse Kinematics)</strong>等算法计算自然的骨骼姿态</li>
|
||
<li>结果:时间轴上所有关节的<strong>位置(Translation)+ 旋转(Rotation)</strong>数据</li>
|
||
</ol>
|
||
<h3>刚体追踪(道具追踪)</h3>
|
||
<p>在刀、枪、摄像机等道具上<strong>不对称地贴上3个或更多标记点</strong>后,软件会将该标记点集群识别为一个刚体(Rigid Body),实现<strong>6DOF(3轴位置 + 3轴旋转)</strong>追踪。</p>
|
||
<hr>
|
||
<h2>第8步:实时串流与数据输出</h2>
|
||
<h3>实时串流</h3>
|
||
<p><figure class="blog-figure"><img src="optical-mocap-pipeline/images/realtime-streaming.png" alt="实时串流 — 从Motive向游戏引擎发送动作数据" loading="lazy"><figcaption>实时串流 — 从Motive向游戏引擎发送动作数据</figcaption></figure></p>
|
||
<p>OptiTrack Motive将解算后的数据实时传递给外部软件:</p>
|
||
<ul>
|
||
<li><strong>NatNet SDK</strong> — OptiTrack自有协议,基于UDP的低延迟传输</li>
|
||
<li><strong>VRPN</strong> — VR/动捕领域的标准协议</li>
|
||
</ul>
|
||
<p>通过这些协议,可以在<strong>Unity、Unreal Engine、MotionBuilder</strong>等软件中实时驱动角色。VTuber直播之所以成为可能,也正是得益于这种实时串流。</p>
|
||
<h3>录制数据输出格式</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>格式</th>
|
||
<th>用途</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody><tr>
|
||
<td><strong>FBX</strong></td>
|
||
<td>骨骼 + 动画数据,兼容游戏引擎/DCC工具</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>BVH</strong></td>
|
||
<td>层级动作数据,主要用于重定向</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>C3D</strong></td>
|
||
<td>原始3D标记点数据,生物力学/研究标准</td>
|
||
</tr>
|
||
</tbody></table>
|
||
<hr>
|
||
<h2>第9步:后处理 — 打磨数据的过程</h2>
|
||
<p><figure class="blog-figure"><img src="optical-mocap-pipeline/images/post-processing.png" alt="后处理工作 — 在Motive中整理动作数据的过程" loading="lazy"><figcaption>后处理工作 — 在Motive中整理动作数据的过程</figcaption></figure></p>
|
||
<p>实时捕捉获取的数据有时可以直接使用,但大多数专业工作需要经过<strong>后处理(Post-Processing)</strong>阶段。</p>
|
||
<h3>间隙填充(Gap Filling)</h3>
|
||
<p>用<strong>插值(Interpolation)</strong>填补因遮挡导致标记点暂时消失的区间。</p>
|
||
<ul>
|
||
<li><strong>线性插值(Linear)</strong> — 简单地用直线连接前后帧。适用于短间隙</li>
|
||
<li><strong>样条插值(Spline)</strong> — 用曲线平滑填充。有利于保持自然运动</li>
|
||
<li><strong>基于模式的插值</strong> — 参考重复相同动作的其他拍摄数据来填充</li>
|
||
</ul>
|
||
<p>间隙越长,插值精度越低,因此拍摄时最大限度地减少遮挡才是最重要的。</p>
|
||
<h3>平滑(Smoothing)与滤波</h3>
|
||
<p>捕捉到的数据可能包含细微抖动(高频噪声)。为去除这些噪声:</p>
|
||
<ul>
|
||
<li><strong>巴特沃斯滤波器(Butterworth Filter)</strong> — 去除指定频率以上噪声的低通滤波器</li>
|
||
<li><strong>高斯平滑</strong> — 通过周围帧的加权平均来缓解抖动</li>
|
||
</ul>
|
||
<p>但过度平滑会导致动作的<strong>细节和冲击力</strong>丧失,因此必须设置适当的强度,避免将挥剑瞬间的锐利动作也模糊掉。</p>
|
||
<h3>标记点交换校正</h3>
|
||
<p>找到第6步中描述的标记点交换发生的区间,手动纠正标签。在Motive中,可以在时间线上直观地查看和校正标记点轨迹。</p>
|
||
<h3>重定向(Retargeting)</h3>
|
||
<p>将捕捉到的骨骼数据应用于<strong>不同体型比例的角色</strong>的过程。例如,要将170cm演员的动作数据应用于3m的巨人角色或150cm的儿童角色,需要在保持关节旋转的同时,根据目标角色重新计算骨骼长度。MotionBuilder、Maya、Unreal Engine等提供重定向功能。</p>
|
||
<hr>
|
||
<h2>第10步:现场常见问题及应对方法</h2>
|
||
<p>即便看似技术完美的光学动捕,在实际现场也会遇到各种问题。</p>
|
||
<h3>杂散反射(Stray Reflections)</h3>
|
||
<p>红外线从标记点以外的物体反射,产生<strong>虚假标记点(Ghost Marker)</strong>的现象。</p>
|
||
<ul>
|
||
<li>原因:金属表面、闪亮的衣服、眼镜、手表、地板反射等</li>
|
||
<li>应对:用哑光胶带覆盖反射表面,或在Motive中对该区域进行<strong>遮罩(Masking)</strong>处理,使软件忽略该区域</li>
|
||
</ul>
|
||
<h3>标记点脱落</h3>
|
||
<p>剧烈运动中标记点从服装上脱落或位置偏移。</p>
|
||
<ul>
|
||
<li>应对:拍摄前仔细检查标记点的粘贴状态;进行剧烈动作捕捉时,同时使用魔术贴 + 双面胶带增强固定力</li>
|
||
<li>中途监控标记点状态也很重要</li>
|
||
</ul>
|
||
<h3>服装限制</h3>
|
||
<p>拍摄时演员穿的衣服理想选择是<strong>浅色、哑光材质</strong>。黑色不影响标记点反射,但闪亮材质或宽松衣物会导致标记点位置不稳定或产生杂散反射。穿戴专用动捕服是最稳定的选择。</p>
|
||
<h3>标定维护</h3>
|
||
<p>捕捉体积内的温度变化、摄像头振动、三脚架微小移动等因素可能导致标定逐渐偏移。长时间拍摄时,建议中途进行<strong>重新标定</strong>,或使用Motive的<strong>Continuous Calibration(持续标定)</strong>功能进行实时校正。</p>
|
||
<hr>
|
||
<h2>延迟 — 从动作到屏幕需要多久?</h2>
|
||
<p>管线各阶段的耗时如下。</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>阶段</th>
|
||
<th>耗时</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody><tr>
|
||
<td>摄像头曝光(以240fps为基准)</td>
|
||
<td>约4.2ms</td>
|
||
</tr>
|
||
<tr>
|
||
<td>摄像头内部处理(质心计算)</td>
|
||
<td>约0.5~1ms</td>
|
||
</tr>
|
||
<tr>
|
||
<td>网络传输(PoE → PC)</td>
|
||
<td>< 1ms</td>
|
||
</tr>
|
||
<tr>
|
||
<td>3D重建 + 标注</td>
|
||
<td>约1~2ms</td>
|
||
</tr>
|
||
<tr>
|
||
<td>骨骼解算</td>
|
||
<td>约0.5~1ms</td>
|
||
</tr>
|
||
<tr>
|
||
<td>串流输出(NatNet)</td>
|
||
<td>< 1ms</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>总端到端延迟</strong></td>
|
||
<td><strong>约8~14ms(以240fps为基准)</strong></td>
|
||
</tr>
|
||
</tbody></table>
|
||
<p>在360fps下,曝光时间缩短,延迟可降至<strong>7ms以下</strong>。这样的延迟水平人类几乎无法感知,即使在VTuber直播中也能实现自然的实时响应。</p>
|
||
<blockquote>
|
||
<p>注:延迟的大部分来自<strong>摄像头曝光时间(帧周期)</strong>。这就是帧率越高延迟越低的原因。</p>
|
||
</blockquote>
|
||
<hr>
|
||
<h2>完整管线总结</h2>
|
||
<div class="pipeline-flow">
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-step-title">1. 摄像头安装 · IR滤光片 · 帧同步</div>
|
||
<p class="pipeline-step-desc">30台摄像头环形布置,IR通过滤光片仅检测红外线,硬件同步实现μs级精度</p>
|
||
</div>
|
||
<div class="pipeline-arrow">↓</div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-step-title">2. PoE网络</div>
|
||
<p class="pipeline-step-desc">一根Cat6线缆同时传输电力和数据,以星型拓扑连接至交换机</p>
|
||
</div>
|
||
<div class="pipeline-arrow">↓</div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-step-title">3. 摄像头板载处理 → 2D质心</div>
|
||
<p class="pipeline-step-desc">IR LED发射 → 接收标记点反射光 → 阈值处理 → 斑点检测 → 亚像素质心计算 → 仅传输坐标</p>
|
||
</div>
|
||
<div class="pipeline-arrow">↓</div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-step-title">4. 标定</div>
|
||
<p class="pipeline-step-desc">通过挥棒获取摄像头内参/外参,通过地面参考定义坐标系</p>
|
||
</div>
|
||
<div class="pipeline-arrow">↓</div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-step-title">5. 2D → 3D三角测量</div>
|
||
<p class="pipeline-step-desc">从多台摄像头的2D坐标射出射线交叉 + 最小二乘法重建3D坐标</p>
|
||
</div>
|
||
<div class="pipeline-arrow">↓</div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-step-title">6. 标记点标注</div>
|
||
<p class="pipeline-step-desc">模板匹配 + 预测追踪为每个3D点分配标记点名称</p>
|
||
</div>
|
||
<div class="pipeline-arrow">↓</div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-step-title">7. 骨骼解算</div>
|
||
<p class="pipeline-step-desc">基于T-Pose + ROM标定,通过逆运动学计算关节位置与旋转</p>
|
||
</div>
|
||
<div class="pipeline-arrow">↓</div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-step-title">8. 实时串流 · 数据输出</div>
|
||
<p class="pipeline-step-desc">通过NatNet/VRPN实时传输至Unity/Unreal/MotionBuilder,录制为FBX/BVH/C3D</p>
|
||
</div>
|
||
<div class="pipeline-arrow">↓</div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-step-title">9. 后处理</div>
|
||
<p class="pipeline-step-desc">间隙填充 · 平滑 · 标记点交换校正 · 重定向</p>
|
||
</div>
|
||
<div class="pipeline-arrow">↓</div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-step-title">最终成果</div>
|
||
<p class="pipeline-step-desc">应用于游戏过场动画 · VTuber直播 · 视频内容(总延迟约8~14ms)</p>
|
||
</div>
|
||
</div>
|
||
|
||
<p>摄像头拍摄的图像并不是直接发送到PC的——而是由摄像头自行计算标记点坐标后发送,PC将这些坐标重建为3D并映射到骨骼上。这就是光学动作捕捉的核心原理。</p>
|
||
<hr>
|
||
<h2>常见问题(FAQ)</h2>
|
||
<p><strong>Q. 光学动作捕捉摄像头和普通摄像头有什么区别?</strong></p>
|
||
<p>普通摄像头拍摄全彩视频,而动作捕捉摄像头专注于红外(IR)光谱。它们用IR LED照射标记点并仅检测反射光,在摄像头内部直接计算标记点的2D坐标,只向PC传输坐标数据。</p>
|
||
<p><strong>Q. PoE线缆长度有限制吗?</strong></p>
|
||
<p>根据以太网标准,PoE线缆最长支持<strong>100m</strong>。大多数动作捕捉工作室完全在此范围内。</p>
|
||
<p><strong>Q. 摄像头帧率是不是越高越好?</strong></p>
|
||
<p>更高的帧率有利于快速动作追踪和降低延迟,但数据处理量会增加,摄像头分辨率可能会降低。通常VTuber直播和游戏动作捕捉120~240fps就已足够,而体育科学等超高速动作分析则使用360fps或更高。</p>
|
||
<p><strong>Q. 标记点交换发生的频率有多高?</strong></p>
|
||
<p>如果标记点集设计良好且摄像头数量充足,实时拍摄中交换现象很少发生。但在快速动作或标记点间距较近的动作(如双手合十等)中概率会增加,这些区间在后处理中校正。</p>
|
||
<p><strong>Q. 三角测量2台就够了,为什么要安装30台?</strong></p>
|
||
<p>2台只是理论最小值。实际上需要考虑遮挡(标记点被挡住)、不同摄像头角度导致的精度差异、冗余保障等因素。布置30台后,任何标记点都始终被多台摄像头观测,能够实现稳定精确的追踪。</p>
|
||
<p><strong>Q. 多久需要进行一次标定?</strong></p>
|
||
<p>通常在每个拍摄日开始前进行一次。但长时间拍摄时,温度变化或摄像头微小移动可能导致标定偏移,因此4~6小时连续拍摄时建议中途重新标定。使用OptiTrack Motive的Continuous Calibration功能,即使在拍摄过程中也能进行实时校正。</p>
|
||
<p><strong>Q. 不能穿闪亮的衣服吗?</strong></p>
|
||
<p>由于动作捕捉摄像头检测的是红外反射,闪亮材质(金属装饰、亮片、有光泽的合成纤维等)可能反射红外线并产生虚假标记点(Ghost Marker)。穿戴专用动捕服或哑光材质的舒适衣物是最佳选择。</p>
|
||
<hr>
|
||
<p>如果您对光学动作捕捉的技术结构有更多疑问,欢迎在<a href="/contact">联系页面</a>随时提问。如果您想在明格工作室亲身体验,请查看<a href="/services">服务介绍</a>。</p>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="blog-post-footer">
|
||
<div class="container">
|
||
<a href="/zh/devlog" class="blog-back-btn"><i class="fas fa-arrow-left"></i> ← 返回列表</a>
|
||
</div>
|
||
</div>
|
||
</article>
|
||
</main>
|
||
|
||
<div id="footer-placeholder"></div>
|
||
|
||
<script src="/js/i18n.js"></script>
|
||
<script src="/js/common.js"></script>
|
||
</body>
|
||
</html> |