首页 > 其他分享 >Animation

Animation

时间:2024-04-06 22:12:25浏览次数:13  
标签:质点 粒子 一个 位置 运动学 弹簧 Animation

基本概念、质点弹簧系统、运动学、求解常微分方程、刚体与流体

质点弹簧系统

现在我们模拟一个弹簧系统。
首先弹簧:

但是这样的话,没有能量损失,弹簧就会一直运动下去。所以增添摩擦力。
符号定义:

这样的问题是,摩擦力和速度方向相关,比如b围绕a转?
所以,摩擦力发生在弹簧内部,也就是说:

质点弹簧可以组合成多种结构。

想象模拟一个布料,来建立质点弹簧质点之间的关系。
对抗沿着角拉开的力,增加了蓝色线。对抗对折的力,增加了A-B,AB中间间隔一个的红色线。但是布料是可以被对折的,所以红色线很微弱。

粒子系统

粒子系统包含大量粒子。每一个粒子的运动被一个集合的力所定义。


对一个新的帧来说:

  • 创建粒子
  • 计算每一个粒子上的力
  • 更新每一个粒子的位置和速度
  • 移除粒子
  • 渲染粒子

常见粒子系统的力

速度场

定义一个位置和时间,可以得到这个点下速度。

可以列出方程:

但是因为根据采样\(\delta t\)不同,得到的最终位置也不同。但是最终都会偏离,因为\(\delta t\)还是会有一个积累误差在里面。

这里有一些方法减少不确定度:

  • 中点法
  • 自适应步长法
  • 隐式方法(使用下一时刻的速度)
  • 基于位置的方法(不考虑运动了,我只考虑位置)

中点法


中点法误差小的原因,多展开了一项(感觉有点像泰勒展开):

自适应步长

  • 计算\(x_{T/2}\),直到\(X_T\)和\(X_{T/2}\)的差别大过阈值。【这里很奇怪,也可能到最后都大不过阈值,应该再设置一个出口】

隐式


是一种叫RK的算法

Position-Based / Verlet Integration

不使用对速度的约束了,直接使用对位置的约束。很快很简单,但是可能不符合能量损失函数。

将水模拟为刚体小球的运动。定义与粒子位置相关的密度(density)误差,然后使用梯度下降法优化。

质点和网格法

质点法以每一个质点为关注点,网格法可以认为以固定的网格流水的质点。

运动学

前向运动学

常见的运动学结构

前向运动学指的是给定每一关节的运动角度然后就可以计算出位置。

逆向运动学

根据位置求解每个关节之间的运动角度。这样的话可能会有多解和不存在解的现象。
求解的过程是一个很适合用机器学习做优化的过程。选一个初始点、定义误差、计算优化方向、沿着优化方向做优化。

标签:质点,粒子,一个,位置,运动学,弹簧,Animation
From: https://www.cnblogs.com/code-fun/p/18117999

相关文章

  • CSS Animation example
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title>......
  • Wpf Beginstoryboard Storyboard DoubleAnimation Storyboart.TargetName,Storyboary.
    <Windowx:Class="WpfApp32.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • WPF Storyboary DoubleAnimationUsingPath PathGeometry
    <Windowx:Class="WpfApp30.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • WPF中动画教程(DoubleAnimation的基本使用)
    实现效果今天以一个交互式小球的例子跟大家分享一下wpf动画中DoubleAnimation的基本使用。该小球会移动到我们鼠标左键或右键点击的地方。该示例的实现效果如下所示:页面设计xaml如下所示:<Windowx:Class="AnimationDemo.MainWindow"xmlns="http://schemas.microsof......
  • requestAnimationFrame
    requestAnimationFrame 是一个用于请求浏览器执行动画的方法。它告诉浏览器您希望执行动画,并请求浏览器在下一次重绘之前调用指定的回调函数来更新动画。相比于使用setTimeout或setInterval来执行动画,requestAnimationFrame具有更好的性能表现。它会根据浏览器的刷新频率来优化......
  • Angular 17+ 高级教程 – Animation
    前言            目录上一篇 Angular17+高级教程–HttpClient下一篇 Angular17+高级教程–ReactiveForms想查看目录,请移步 Angular17+高级教程–目录......
  • Unity3D 多人战场Animation优化详解
    在多人战场游戏中,动画的优化是非常重要的,因为动画是游戏中的核心元素之一,直接影响玩家的游戏体验。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。在本文中,我们将详细介绍如何在Unity3D中优化多人战......
  • Unity3D 多人战场Animation优化详解
    在多人战场游戏中,动画的优化是非常重要的,因为动画是游戏中的核心元素之一,直接影响玩家的游戏体验。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。在本文中,我们将详细介绍如何在Unity3D中优化多人战......
  • Unity Animation动画系统概述
    一、UnityAnimation动画系统基本介绍unity提供了一套非常强大灵活且成熟的动画系统,不论是2d还是3d动画都有相应的组件和接口提供给开发者使用,不过这篇文章主要还是讲解3D部分的动画系统。我们在游戏开发时时常需要角色动起来,除了位置上的移动之外,我们还需要匹配角色的行为或玩......
  • Delphi Animation
     AnimateFloat是Delphi中用于创建简单动画效果的一个函数,它可以让你平滑地改变控件的属性值,例如位置、大小、透明度等。通过指定起始值和目标值,以及动画持续时间,AnimateFloat函数可以实现属性值的过渡动画效果。下面是AnimateFloat函数的语法:procedureAnimateFloat(co......