草庐IT

NOKOV度量光学动作捕捉系统工作流程

您家豆子 2023-03-28 原文

如果你对影视、动画或者游戏有一定关注,相信你一定听说过“动作捕捉”。事实上,无论是屏幕中的战场,还是真实的军事领域,从2K游戏中的虚拟球员,到医疗、康复、运动领域的专业研究;从机器人/无人机的研发设计,到海底隧道的测量工作;科研、工业、教育、娱乐、军事等各个领域中,光学动作捕捉都在提供无比精准的数据支持。那么问题来了,一套光学动作捕捉系统是如何工作的呢?

一套光学动作捕捉系统由红外动作捕捉镜头、反光标识点、POE连接器、动作捕捉软件和若干配件组成(如标定工具和镜头云台等)。其工作原理是:通过镜头发射红外线,红外线照射到标识点上会被反射,镜头上的感应矩阵可接收到反射回来的红外线,两个镜头同时工作,就可以确定标识点在三维空间内的坐标;大量坐标数据通过POE连接器传输给动作捕捉软件,便可以解算出目标在空间中的位置、方向和运动轨迹等信息,实现对目标的追踪。

下面我们会探索光学动作捕捉系统的具体工作流程,以及它是如何在不同领域的应用中发挥作用的。

校准

虽然理论上两个镜头就可以确定目标在三维空间中的坐标,但在实际应用中,目标身上的部分标记点有被遮挡住的可能,因此一套光学动作捕捉系统会配备多个镜头。校准的过程就是使用标定工具,让动作捕捉软件计算出镜头的准确空间位置和角度,建立三维空间坐标(XYZ轴),为精确的动作捕捉做好准备。

NOKOV度量光学三维动作捕捉系统在校准时使用的标定工具,通过L型标定工具确定空间中的X、Y、Z三个坐标轴的方向和原点位置

采集和跟踪

在光学动作捕捉系统中,每个红外动作捕捉镜头上都有红外(长波)发射器,镜头会发射出红外光;被捕捉的目标上附着了能够反射红外光线的标识点(Marker),标识点反射的红外光会被多个镜头上的感应器矩阵接收。

NOKOV度量光学三维动作捕捉系统在工作状态时,高性能红外动作捕捉镜头会发射红外光线。

不同位置的镜头采集到标识点的位置后,就可以计算出这个点在空间中的三维坐标,通过这种原理,动作捕捉系统可以同时采集到目标上多个标识点的一系列三维坐标。

动作捕捉的主要目的是跟踪并还原目标的运动信息,在一段时间轴上,多个镜头持续采集标记点的位置,就可以跟踪到标记点的运动轨迹和动作信息。

在采集过程中,动作捕捉镜头的分辨率和频率非常重要,这直接决定了动作捕捉的精度。无论是娱乐产业,还是科研、工业、军事等领域,对动作捕捉的精度要求都非常严格。目前,世界顶级的动作捕捉镜头的分辨率可达1200万像素,频率可达340Hz,精度可以达到亚毫米级。

反光标识点是动作捕捉中应用最广的传感器,因为它轻便、小巧、成本低,不易损坏,无论捕捉目标是演员、动物、无人机、机器人,还是残障病患、职业运动员,这种标识点都不会对目标的动作造成干扰,从而达到最真实、精准的动作捕捉。

识别目标

在光学动作捕捉系统完成采集和跟踪后,还有一项重要的任务:识别。

无论动作捕捉的目标是表演者、机器人/无人机、还是船舶、车辆模型,都需要分析出各个标识点之间的相互位置关系。因此,在动作捕捉系统第一次工作时,系统需要为每个标识点编码,从而建立目标整体的参考模板(比如目标是人,这个模板就是人的骨骼模型),之后,动作捕捉系统就会根据这个模板完成识别工作。

NOKOV度量光学三维动作捕捉系统用于步态分析测试实验,系统将目标身上的各个标识点建立成整体的腿部模型

实时数据传输/二次处理

光学动作捕捉在众多动作采集、追踪的解决方案中,最显著的优势其一是精准性,其二便是实时性。而实时输出可用数据,也是光学动作捕捉工作的最后一个环节。

例如NOKOV度量光学三维动作捕捉系统在获取目标的位置、方向、关节6自由度等数据后,其动作捕捉软件通过编写底层代码,可实时生成SDK广播,并向多种第三方软件传输,其同步误差达到亚毫秒级,从而帮助使用者实现对目标的实时监测、定位、追踪、测量或渲染。

通过动作捕捉系统对无人机的姿态进行实时监测

 

更多相关案例及动作捕捉资讯,请关注服务号【NOKOV度量动作捕捉】

 

有关NOKOV度量光学动作捕捉系统工作流程的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  3. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  4. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

  5. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  6. ruby - JetBrains RubyMine 3.2.4 调试器不工作 - 2

    使用Ruby1.9.2运行IDE提示说需要gemruby​​-debug-base19x并提供安装它。但是,在尝试安装它时会显示消息Failedtoinstallgems.Followinggemswerenotinstalled:C:/ProgramFiles(x86)/JetBrains/RubyMine3.2.4/rb/gems/ruby-debug-base19x-0.11.30.pre2.gem:Errorinstallingruby-debug-base19x-0.11.30.pre2.gem:The'linecache19'nativegemrequiresinstall

  7. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  8. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  9. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  10. ruby - `rescue $!` 是如何工作的? - 2

    我知道全局变量$!包含最新的异常对象,但我对下面的语法感到困惑。谁能帮助我理解以下语法?rescue$! 最佳答案 此构造可防止异常停止您的程序并使堆栈跟踪冒泡。它还会将该异常作为值返回,这很有用。a=get_me_datarescue$!在此行之后,a将保存请求的数据或异常。然后您可以分析该异常并采取相应措施。defget_me_dataraise'Nodataforyou'enda=get_me_datarescue$!puts"Executioncarrieson"pa#>>Executioncarrieson#>>#更现实的

随机推荐