1 简介

机械运动在物理学中,把一个物体相对于另一个物体位置的变化称作为机械运动,简称运动。机械运动是指一个物体相对于其他物体的位置发生改变,是自然界中最简单,最基本的运动形态.

自然界中一切物体都在运动。我们利用计算机建立的几何模型怎么能静止不动?

在计算机图形学中,我们可以使用矩阵变换来描述物体位置的变化(包括位移、旋转、缩放、镜面等)。在显示每一帧的序列中不断更改物体的位置,就可以实现运动模拟,或者动画。可以用一个时间函数来描述:

      N = f(t, M)

给定一个初始的矩阵M,随着时间t的变化,产生新的矩阵N。至于函数f是匀速直线运动还是曲线运动,完全由你掌控。俗话说的好,牛顿三大定律在手,运动模拟不愁~

2 动画模拟入门

匀速直线运动太简单了,一般图形学的课程都会介绍稍微复杂点的例子:月亮、地球、太阳的运动模拟,涉及到星体的公转和自转,即相对运动、旋转。如何使用矩阵来实现,在《图形学基础:向量与矩阵》和《矩阵应用之运动轨迹模拟》两篇文章中有比较详细的说明。具体的代码可以参考AnyCAD Rapid示例: Graphics_Motion[1]

上面的示例比较“原始”,因为直接设置SceneNode的矩阵。直接操作矩阵你可以随心所欲组合任意的变换,但缺点也很明显:当动画多了以后,动画序列的管理就成问题。比如实现一个六轴机器人关节模拟,代码逻辑写起来就很复杂了。好消息是,AnyCAD Rapid内置了关节运动模拟,请参考示例Simulation_Robot[2]和示例Simulation_Skeleton[3]

AnyCAD Rapid SDK目前提供了两类动画序列管理的方法:刚体动画和关节动画。基于这两个辅助类可以很容易实现连续动画,多段动画前后连着播放。

3 刚体动画

刚体运动(rigid motion): 对几何物体只作旋转, 平移的运动。

RigidAnimation用于管理刚体运动的动画片段。

RigidAnimationClip是动画片段的基类,具体的动画片段有:

•匀速旋转运动RotateAnimationClip•匀速直线运动MoveAnimationClip•复合运动MatrixAnimationClip

每一段动画片段定义了起始时间和结束时间,在这段时间内需要完成的匀速运动。这里的时间都是相对RigidAnimation开始播放的开始的,单位为秒。若在中间有段时间是静止的,则在两段序列之间空出一段时间即可。

示例代码实现:Simulation_DynamicRay[4]

 

4 关节动画

关节动画主要用于N轴机械臂模拟。RobotArm用于构建机器关节模型,RobotAnimation则用于管理关节运动序列。RobotAnimationClip代表了一段关节运动序列。

RobotAnimationClip控制的是在一段时间内,某个关节的参数的变化区间。如果是转动关节,则表示的是角度参数的运动区间;如果是位移关节,则表示的是距离参数的区间。

Animation与Clip的关系与刚体动画的一致。

示例:代码实现: Simulation_Robot[5]

5 小结

动画模拟是个复杂的课题。本文从简单的匀速运动出发,一览AnyCAD Rapid SDK的动画系统的使用。若对形变动画感兴趣,可以参考往期的文章《一种快速钣金折弯动画模拟实现方法

若你有复杂的机械运动模拟需求,欢迎与我们联系交流。

生命在于运动,机械在于运动!让我们一起动起来~

References

[1] Graphics_Motion: https://gitee.com/anycad/anycad.rapid.net.sample/blob/master/AnyCAD.WinForms/Graphics/Graphics_Motion.cs
[2] Simulation_Robot: https://gitee.com/anycad/anycad.rapid.net.sample/blob/master/AnyCAD.WinForms/Simulation/Simulation_Robot.cs
[3] Simulation_Skeleton: https://gitee.com/anycad/anycad.rapid.net.sample/blob/master/AnyCAD.WinForms/Simulation/Simulation_Skeleton.cs
[4] Simulation_DynamicRay: https://gitee.com/anycad/anycad.rapid.net.sample/blob/master/AnyCAD.WinForms/Simulation/Simulation_DynamicRay.cs
[5] Simulation_Robot: https://gitee.com/anycad/anycad.rapid.net.sample/blob/master/AnyCAD.WinForms/Simulation/Simulation_Robot.cs

基于.NET的机械运动模拟应用开发的更多相关文章

  1. 基于C#和Asp.NET MVC开发GPS部标监控平台

    基于交通部796标准开发部标监控平台,选择开发语言和技术也是团队要思考的因素,其实这由团队自己擅长的技术来决定,如果擅长C#和Asp.NET, 当然开发效率就高很多.当然了技术选型一定要选用当前主流的 ...

  2. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统

    qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...

  3. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统【转】

    转自:http://www.cnblogs.com/riskyer/p/3366001.html qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和l ...

  4. 【记录】尝试用QEMU模拟ARM开发板去加载并运行Uboot,kernel,rootfs【转】

    转自:https://www.crifan.com/try_use_qemu_emulate_arm_board_to_load_and_run_uboot_kernel_rootfs/ [背景] 手 ...

  5. 基于C#和Asp.NET MVC开发GPS部标视频监控平台

    基于C#和Asp.NET MVC开发GPS部标监控平台 目前整理了基于.NET技术的部标平台开发文章,可以参考: 1.部标Jt808协议模拟终端的设计和开发 2.C#版的808GPS服务器开发-> ...

  6. 转: 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端

    from: http://ybak.iteye.com/blog/1853335 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端 游戏服 ...

  7. cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(二)

    cWeb是基于微软的.Net Framework 4框架,数据库是sql server 2008 r2. cWeb开发框架下载,点击这里去下载. cWeb开发框架借鉴三层架构理论分为三层,分别是:cD ...

  8. cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(一)

    cWeb开发框架是基于asp.net的B/S应用开发平台,采用三层架构理论,应用简单.代码简洁.运行快速. cWeb是bubufx提供,是分享资源,无任何版权限制,bubufx继续传承互联网精神,可随 ...

  9. 基于Netty的私有协议栈的开发

    基于Netty的私有协议栈的开发 书是人类进步的阶梯,每读一本书都使自己得以提升,以前看书都是看了就看了,当时感觉受益匪浅,时间一长就又还回到书本了!所以说,好记性不如烂笔头,以后每次看完一本书都写一 ...

  10. 基于微软平台IIS/ASP.NET开发的大型网站有哪些呢?

    首先说明一下,本文绝不是要说Microsoft平台多么好,多么牛.只是要提醒一些LAMP/JAVA平台下的同志们,微软平台不至于像你们说的,和想象的那么不堪!只是你们自己不知道而已.同时,也希望广大M ...

随机推荐

  1. OS | 进程和线程基础知识全家桶图文详解✨

    前言 先来看看一则小故事 我们写好的一行行代码,为了让其工作起来,我们还得把它送进城(进程)里,那既然进了城里,那肯定不能胡作非为了. 城里人有城里人的规矩,城中有个专门管辖你们的城管(操作系统),人 ...

  2. C++正则表达式的初步使用

    正则表达式(Regular Expressions),又被称为regex.regexp 或 RE,是一种十分简便.灵活的文本处理工具.它可以用来精确地找出某文本中匹配某种指定规则的内容.从C++11开 ...

  3. 为什么很多候选人投出去的简历石沉大海(面向Java方向)

    我最近在帮上海某培训学校里的毕业生做面试辅导,普遍发现很多候选人不是没能力,或者说能力没有差到没有面试机会的程度,但这些同学投出去的简历大多石沉大海,即使有回应,也大多是些外包外派公司或者小公司. 而 ...

  4. 深度学习(三)——Transforms的使用

    一.Transforms的结构及用法 导入transforms from torchvision import transforms 作用:图片输入transforms后,可以得到一些预期的变换 1. ...

  5. P5731

    https://www.luogu.com.cn/problem/P5731 这道题被标为红题,真实难度应该介于红题和橙题之间,问题在于我高估了它的难度,以为至少有橙题的难度,一般不打表的我毫不犹豫选 ...

  6. feign接口自动生成工具

    最近发现开发spring cloud时,编写feign接口是一件痛苦的事,不仅要编写feign接口,还有fallback.请求参数和返回值等,大量重复工作,很浪费时间. 于是便想到可以编写工具自动生成 ...

  7. 使用WTM框架创建博客系统后台并在云服务器发布

    阅读导航 关于lqclass.com 博客后台前后端部署 2.1 已部署访问链接 2.2 nginx 部署 2.2.1 后台后端发布 2.2.2 后台前端发布 2.2.3 云服务器部署 下次分享 1. ...

  8. 【TouchGFX 】使用 CubeMX 创建 TouchGFX 工程时 LCD 显示为雪花屏

    经几个晚上折腾,修改大量的LTDC时钟.时序,FMC时序等,结果还是一样,耐心与好使的工程仔细对比,发现是时钟源配置问题,真是冤,聊以此以示纪念 实质上是没有分清有源和无源晶振 无源晶振又被叫做 谐振 ...

  9. [转帖]美国出口管制法律制度及中国企业风险防范——EAR核心内容解读

    http://bzy.scjg.jl.gov.cn/wto/zszc/myxgzs/202202/t20220221_636006.html 发布时间:2022-01-18 一.<美国出口管理条 ...

  10. tempfs 的再学习

    tempfs 的再学习 背景 最近学习研究linux的内存buffer 和 cache相关的知识. 发现对linux的VFS的理解其实非常不到位. 再验证内存的使用的page caches和 drop ...