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. selenium python bindings 写测试用例

    这章总结selenium在UI测试方面的用法 import unittest from selenium import webdriver from selenium.webdriver.common ...

  2. sessionStorage 和 localStorage的区别

    sessionStorage.setItem('userName',userName) // 存 sessionStorage.getItem('userName') // 取 sessionStor ...

  3. day 61 Django基础之django分页

      Django基础之django分页 一.Django的内置分页器(paginator) view   from django.shortcuts import render,HttpRespons ...

  4. 面试系列18 rediscluster 原理

    一.节点间的内部通信机制 1.基础通信原理 (1)redis cluster节点间采取gossip协议进行通信 跟集中式不同,不是将集群元数据(节点信息,故障,等等)集中存储在某个节点上,而是互相之间 ...

  5. 【左偏树】 [JLOI2015]城池攻占

    原来左偏树还可以打tag,get了 和线段树打tag一样,时不时Push_Down就好了 然后这里显然也是要先乘法后加法的 tag打上了之后还是其他一般左偏树差不多,有些细节注意一下 然后开 long ...

  6. Codeforces 388D Fox and Perfect Sets

    链接:CF388D 题目大意 给定一个数\(n\),求选择\(0 \sim n\)中任意个数的数字组成的集合\(S\)中,有多少满足若\(a\in S,b\in S\),则\(a \bigoplus ...

  7. Java虚拟机性能管理神器 - VisualVM(2) 入门【转】

    Java虚拟机性能管理神器 - VisualVM(2) 入门[转] 标签: java插件jvm监控工具入门 2015-03-11 16:54 955人阅读 评论(0) 收藏 举报  分类: Visua ...

  8. Xstream 解析xml文件内容

    刚刚接手的一个项目,接到一个对接用户数据的需求,对方使用的是xml格式来传输文件,特此记下解析该类文件的方法 public interface XmlResolver<T> { XStre ...

  9. pure-Python PDF library

    # -*- coding: utf-8 -*- # # vim: sw=4:expandtab:foldmethod=marker # # Copyright (c) 2006, Mathieu Fe ...

  10. leetcode-137-只出现一次的数字②

    题目描述: 方法一:数学 class Solution: def singleNumber(self, nums: List[int]) -> int: return (sum(set(nums ...