实现3D动画

Posted 七小山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现3D动画相关的知识,希望对你有一定的参考价值。

一、transform

Transform是形变的意思(通常也叫变换),transformer就是变形金刚
常见的函数transform function有:
平移:translate(x, y)
缩放:scale(x, y)
旋转:rotate(deg)
倾斜:skew(deg, deg

二、rotate(旋转)

该CSS函数定义一个变换,它将元素围绕固定轴旋转。旋转量由指定的角度确定; 为正,旋转将为顺时针,为负,则为逆时针。

只有一个值,表示旋转的角度(单位deg)

三、translate(平移)

translateX(x)、translateY(y)、translateZ(z)
该函数表示在二、三维平面上移动元素

四、scale(缩放)

scaleX、scaleY、scaleZ
函数指定了一个沿 x、y 、z轴调整元素缩放比例因子

 1:保持不变
 2:放大一倍
0.5:缩小一半

五、transform-style(选择3D) 

transform-style

该CSS属性用于设置元素的子元素是定位在 3D 空间中还是平展在元素的2D平面中

flat:指示元素的子元素位于元素本身的平面内。

preserve-3d:指示元素的子元素应位于 3D 空间中

 六、制作一个正方体

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <style>
    body 
      margin: 0;
      padding: 100px;
      background-color: aqua;
    
    .box 
      position: relative;
      width: 100px;
      height: 100px;
      background-color: red;
      /* 在父元素中添加 transform-style来启用3D空间 */
      transform-style: preserve-3d;
      transform: rotateX(-33.5deg) rotateY(45deg);
    
    .item 
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    
    .top 
      /* translateZ(50px)向上平移 */
      transform: rotateX(90deg) translateZ(50px);
      background-color: antiquewhite;
    
    .bottom 
      background-color: rgba(190, 216, 76, 0.712);
      transform: rotateX(-90deg) translateZ(50px);
    

    .front 
      background-color: rgba(100, 100, 100, 0.4);
      transform: rotateY(0deg) translateZ(50px);
    

    .back 
      background-color: rgba(0, 255, 255, 0.4);
      transform: rotateY(-180deg) translateZ(50px);
    

    .left 
      background-color: rgba(221, 103, 182, 0.4);
      transform: rotateY(-90deg) translateZ(50px);
    
    .right 
      background-color: rgba(0, 0, 255, 0.4);
      transform: rotateY(90deg) translateZ(50px);
    
  </style>
  <body>
    <div class="box">
      div
      <!-- 子元素 -->
      <div class="item top">1</div>
      <div class="item bottom">2</div>
      <div class="item front">3</div>
      <div class="item back">4</div>
      <div class="item left">5</div>
      <div class="item right">6</div>
    </div>
  </body>
</html>

 

WPF 利用后台C#代码实现一个平移动画。!!!

用后台C#实现。。。传入个参数 ,然后根据参数值向左平移响应的数值
例如传入10 Image就向左平移10.。。。

参考技术A 很简单的,只需要把位置改变下就好了,动画的话,就要用动画元素了。 参考技术B 这个简单
Storyboard s = new Storyboard();
DoubleAnimationUsingKeyFrames d = new DoubleAnimationUsingKeyFrames();
d.KeyFrames.Add(new LinearDoubleKeyFrame(30,KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0.6))));
d.KeyFrames.Add(new LinearDoubleKeyFrame(变动终值, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0.8))));
s.Children.Add(d);
Storyboard.SetTargetName(d, 目标名);
Storyboard.SetTargetProperty(d, new PropertyPath(Canvas.LeftProperty));
s.Begin(bor);

中间那个d是加了关键帧了,我就不摘出来了,不喜欢关键帧去点就行了本回答被提问者采纳

以上是关于实现3D动画的主要内容,如果未能解决你的问题,请参考以下文章

如何制作css3的3d动画——以骰子旋转为例,详解css3动画属性

WPF实现3D翻转的动画效果

cesium czml 3d模型动画

奇思妙想 CSS 3D 动画 | 仅使用 CSS 能制作出多惊艳的动画?

CSS3实现炫酷游戏3D翻转动画制作

基于babylon3D模型研究3D骨骼动画