OpenCASCADE动画功能

eryar@163.com

1.Introduction

OpenCASCADE提供了类AIS_Animation等来实现简单的动画功能。

从其类图可以看出,动画功能有两种:一种是相机的动画AnimationCamera,一种是模型的动画AnimationObject。因为OpenCASCADE不像OpenSceneGraph那样是专门做仿真动画的,内置多线程,OpenCASCADE中的动画可以理解为一个while(true) {update();},即在动画时间内对相机或模型的起始位置和终止位置进行插值并更新来实现动画。对于简单的动画效果,这种方式是够用了。

2. Examples

在OpenCASCADE的源码文件夹中提供了动画用法的示例,分别演示了模型变换、视图变换及将动画保存成视频文件,当然这个功能需要引入第三方库FFmpeg:

OpenCASCADE中动画中间位置的生成采用了类gp_TrsfNLerp进行插值。

根据其注释是对一个变换的三个部分分别进行线性插值,旋转部分采用四元数类进行插值。这种插值方式不可能满足复杂动画的要求,不过可以把这个类当成一个插值的例子。

在Draw
Test Harness中输入以下命令:

source
tests/v3d/anim/propeller

vanim anim
-play -playSpeed 0.1

即可以让一个螺旋桨动起来了:

其实这个螺旋桨动画是个复杂的例子,包含了视图动画和模型动画。对于简单的示例,可以参考另外几个文件,里面的例子是相对简单的。

3. Conclusion

OpenCASCADE7.3版本中引入了简单动画的功能,结合其测试案例,找到其实现源码,可以方便地在程序中实现简单的动画功能。其中动画支持两种方式:一种是视图支画,一种是模型动画。视图动画一般用于两个视图之间的动画过渡,如从主视图切换到仰视图中间加一个动画过渡;模型动画可用于简单的动画仿真。

OpenCASCADE动画功能的更多相关文章

  1. OpenCASCADE动画功能2

    OpenCASCADE动画功能2 eryar@163.com OpenCASCADE是一个开发平台,主要提供三维曲面和实体建模.CAD数据交换及可视化等功能.OCCT最适用于开发三维建模CAD软件.加 ...

  2. CSS3中的动画功能(一)

    css3中的动画功能分为transitions功能和animations功能,这两种功能都可以通过改变css属性值来产生动画效果.今天带大家一起来看看css3动画功能中的transitions的用法. ...

  3. CSS3基础(2)—— 文字与字体相关样式、盒子类型、背景与边框相关样式、变形处理、动画功能

    一. CSS3 文字与字体相关样式 1. 给文字添加阴影 text-shadow: length length length ccolor; 属性适用于文本阴影,指定了水平阴影,垂直阴影,模糊的距离, ...

  4. css3动画功能介绍

    一:过渡动画---Transitions 含义:在css3中,Transitions功能通过将元素的某个属性从一个属性值在指定的时间内平滑过渡到另一个属性值来实现动画功能. Transitions属性 ...

  5. UE4动画功能整理

    转自:http://blog.ch-wind.com/ue4%E5%8A%A8%E7%94%BB%E5%8A%9F%E8%83%BD%E6%95%B4%E7%90%86/ 工欲善其事必先利其器,最近一 ...

  6. (六)Unity5.0新特性------新动画功能

     unity 5.0 中的新动画功能 这里是你能够期待的新动画功能高速概述 ! State Machine Behaviours状态机行为 在Unity 5 中,你会能够将StateMachine ...

  7. CSS3的transition动画功能

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. iOS:Gif动画功能(显示gif动画、获取gif动画时长、获取gif动画执行次数)

    一.简单介绍 gif动画是iOS开发中很常用的一个功能,有的是为了显示加载视频的过程,更多的是为了显示一个结果状态(动画更直观). 那么如何执行gif动画,方法有很多.(这里只写一下方法三,前两种之前 ...

  9. CSS3动画功能

    1.transition功能 transition属性的使用方法:transition:property duration timing-function; 其中property表示对哪个属性进行平滑 ...

随机推荐

  1. HTML基本案列

    <html> <head> <!-- meta :告诉浏览器,如何翻译汉字 http-equiv :content-type 内容类型 详细内容有后面的值指定 conte ...

  2. 正则表达式r和re

    # coding:utf-8 import re print 'a\ws' print r'a\nb' # r'': 一般用在正则表达式中,称为原始字符串,作用是将Python语法中的反斜杠转义给 取 ...

  3. 2018-8-10-如何删除错误提交的-git-大文件

    title author date CreateTime categories 如何删除错误提交的 git 大文件 lindexi 2018-08-10 19:16:51 +0800 2018-2-1 ...

  4. 创建 linuxrc 文件

    创建 linuxrc,加入如下内容: [arm@localhost my_rootfs]#vi linuxrc #!/bin/sh #挂载/etc 为 ramfs, 并从/mnt/etc 下拷贝文件到 ...

  5. 用 Docker 搭建Sha--dow--sock--s 笔记

    首先得找一台海外服务器,该服务器一定要在海外. 一.在https://my.vultr.com/购买一台海外服务器,亲测选美国Miami速度最稳: 二.系统我选了CentOS 7 x64,在CentO ...

  6. 阿里云OSS简单上传本地文件

    上传本地文件 # -*- coding: utf-8 -*- import oss2 # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高.强烈建议您创建并使用RAM账号进行API访问 ...

  7. SpringCloud搭建分布式配置中心(基于git)

    1.简介 Spring Cloud Config.它用来为分布式系统中的基础设施和微服务提供集中化的外部配置支持,分为服务端和客户端两个部分. 其中服务端也称为分布式配置中心,他是独立的微服务应用,用 ...

  8. JavaScript中数组的基础知识和相关方法

      数组基础 数组是大多数语言里面最常见的一种数据结构,它是一个有序的值列表. 创建数组 1.创建字面量数组 let arr=[]; 2.创建构造函数数组 let arr=new Array(); 注 ...

  9. CentOS 编译golang

    CentOS 安装Mercurial http://hi.baidu.com/lang2858/item/cda8f6026cd522e0f45ba67f 获取代码 $ hg clone -u rel ...

  10. 《DSP using MATLAB》Problem 8.21

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...